LTE-669P 4G邊緣網(wǎng)關系列 阿里云平臺連接教程
今天介紹物聯(lián)設備 LTE-669P 4G邊緣網(wǎng)關如何接入阿里云平臺系列。
LTE-669P是一款工業(yè)級4G JSON無線邊緣解析網(wǎng)關,支持RS485/232采集上報,支持TCP/UDP/HTTP/MQTT協(xié)議,支持Modbus RTU轉(zhuǎn)JSON輪詢上報功能,支持本地、遠程參數(shù)配置,支持移動、聯(lián)通、電信4G網(wǎng)絡,支持連接自建服務器和阿里云IOT物聯(lián)云平臺,JSON網(wǎng)關內(nèi)部自動解析Modbus報文轉(zhuǎn)為JSON格式,支持JSON網(wǎng)關切換為DTU工作模式,雙向底層報文透傳。
硬件準備
1) LTE-669P 4G邊緣網(wǎng)關一套,包含4G主機、4G天線、12V電源。
2) 4G 數(shù)據(jù)卡一張,移動,聯(lián)通,電信均可。
3) USB轉(zhuǎn)232/485串口線配件,用于連接電 腦和設備。
電源和串口接線說明:
電源紅線接VIN,白線接GND,232接口和USB轉(zhuǎn)232轉(zhuǎn)接頭交叉接,RX-TX,TX-RX,GND-GND。
軟件準備
1) CONFIG參數(shù)配置軟件,用于配置設備串口參數(shù),及MQTT參數(shù)等
2) MODBUS轉(zhuǎn)換寄存器參數(shù)配置軟件,用于配置現(xiàn)場傳感器MODBUS寄存器表
接下來分別描述以下幾個方面:
網(wǎng)關工作流程
MODBUS參數(shù)說明
阿里云IoT平臺接入
NTP時間和GPS數(shù)據(jù)獲取
自定義json模板
其他特殊關鍵字(服務器下發(fā)json指令)
SHELL指令
Reg1-Reg10本地化參數(shù)
Modbus轉(zhuǎn)json功能主要用于采集Modbus RTU傳感器數(shù)據(jù),將采集的數(shù)據(jù)按配置的數(shù)據(jù)類型解析,并且打包成key-value的json格式上報到服務器,支持服務器下發(fā)json格式命令,省去了用戶自己解析數(shù)據(jù)和轉(zhuǎn)換格式的麻煩。支持連接自建服務器和阿里云IoT平臺。
1.2 網(wǎng)關工作流程
json網(wǎng)關DTU通過配置Modbus相關參數(shù)往串口發(fā)送相應的Modbus指令,485設備收到指令以后會返回采集的數(shù)據(jù),網(wǎng)關DTU通過數(shù)據(jù)類型進行解析,并將解析以后的數(shù)值以key-value的格式打包成json發(fā)送到服務器。流程如下:
(1)配置服務器IP地址/域名和端口號,如果是MQTT協(xié)議還需要配置ClinetID、usernam e、password、發(fā)布主題和訂閱主題等參數(shù),配置輪詢周期和上報周期、json數(shù)據(jù)格式。
(2)配置Modbus相關參數(shù),Modbus子站地址、寄存器地址、數(shù)據(jù)類型、計算公式。
(3)如果是阿里云IoT平臺,需要在服務器上創(chuàng)建設備;如果是自建服務器,需要在服務器端打開相應的上位機軟件。
(4)服務器接收到打包的json數(shù)據(jù)。
二、MODBUS參數(shù)說明
參數(shù)項
說明
功能標識符
用戶自定義,只能是數(shù)字或者英文字符
描述
對標簽的描述
數(shù)據(jù)區(qū)
Modbus RTU功能碼:0X-01, 1X-02, 3X-04, 4X-03
Modbus 子站地址
Modbus RTU子站地址
Modbus 寄存器地址
Modbus RTU寄存器地址
采集數(shù)據(jù)類型
共7種數(shù)據(jù)類型,上傳的報文根據(jù)數(shù)據(jù)類型進行解析
int16: 兩字節(jié),有符號
uint16: 兩字節(jié),無符號
int32: 四字節(jié),有符號
uint32: 四字節(jié),無符號
float: 單精度浮點數(shù),四字節(jié)
bool: bool類型值,只有0,1兩種類型,一般用于開關量
BCD-2: 兩字節(jié)BCD碼
BCD-4: 四字節(jié)BCD碼
BCD-8: 八字節(jié)BCD碼
字節(jié)序
int32/uint32/float類型數(shù)據(jù)才有字節(jié)序,其他類型此參數(shù)無效
公式
采集數(shù)據(jù)的計算公式,格式為valuey=valuex*a+b,valuex為原始值,valuey為經(jīng)過公式計算后的值,上報的數(shù)據(jù)為valuey,如果此項為空則取原始值上報。注:bool類型不支持公式運算
保存文件
保存json配置文件
調(diào)入文件
調(diào)入保存的json配置文件
添加
添加功能標識符(采集指令)
刪除
刪除功能標識符(采集指令)
清空
清空所有配置的參數(shù)
讀取Modbus參數(shù)
讀取配置的Modbus參數(shù)
配置Modbus參數(shù)
配置Modbus參數(shù)
三、使用說明
3.1 阿里云IoT平臺接入
3.1.1 進入阿里云IoT平臺官網(wǎng)https://www.aliyun.com,登錄賬號,然后點擊右上角的控制臺。
3.1.2 進入控制臺后選擇產(chǎn)品與服務-物聯(lián)網(wǎng)平臺。
注:第一次使用阿里云IoT平臺物聯(lián)網(wǎng)服務器需要先開通服務才能使用。
3.1.3 選擇產(chǎn)品-創(chuàng)建產(chǎn)品。
3.1.4 創(chuàng)建產(chǎn)品,產(chǎn)品名稱可以自己定義,其他參數(shù)按圖片上的配置即可。
3.1.5 創(chuàng)建產(chǎn)品成功以后添加設備。
3.1.6 添加好設備后會彈出設備鑒權(quán)證書,新建一個文本文檔,點擊一鍵復制,將信息復制到一個TXT文檔里。
3.1.7配置連接阿里云IoT平臺的相關參數(shù)。
打開參數(shù)配置軟件左下角的MQTT客戶端,選擇阿里云登錄信息合成器,將信息復制到粘貼區(qū),點擊生成登錄信息,將相關信息填入?yún)?shù)配置軟件對應的位置。
打開“DTUCFG-V1.1.5”,將生成的阿里云IoT平臺MQTT相關參數(shù)配置進對應的參數(shù)項。發(fā)布號配置“屬性上報”內(nèi)容
/sys/a1XSBRUBMXW/866262044304197/thing/event/property/post
訂閱號配置“設置設備屬性”內(nèi)容:
/sys/a1XSBRUBMXW/866262044304197/thing/service/property/set
阿里云IoT平臺相關參數(shù)配置完以后需要配置“變化周期”和“固定上傳周期”,變化周期表示發(fā)送Modbus指令的時間間隔,固定上傳周期表示將json包發(fā)送到服務器的周期,單位都為毫秒。
注:除了連接阿里云IoT平臺的必要參數(shù),還需要將Modbus轉(zhuǎn)json開關打開,json格式設置為阿里云IoT平臺。
3.1.8切換到Modbus RTU參數(shù),根據(jù)實際需要采集的Modbus RTU設備配置相應的參數(shù),本手冊用一個溫濕度-光照度傳感器示例,Modbus RTU地址及寄存器定義如下:
可以看出溫度和濕度為兩個字節(jié),溫度有符號,數(shù)據(jù)類型是int16;濕度無符號,數(shù)據(jù)類型是uint16,轉(zhuǎn)換為十進制以后都需要除以10,公式配置為valuey=valuex/10。光照度為四個字節(jié),無符號,數(shù)據(jù)類型為uint32,字節(jié)序為1234,無公式,取原始值。參數(shù)配置如下:
點擊工具-Modbus參數(shù)配置可以進入Modbus配置界面
注:點擊添加按鈕添加功能標識符,刪除按鈕刪除功能標識符。
參數(shù)配置成功以后需要點復位設備,參數(shù)才會生效
3.1.9阿里云IoT平臺物理模型配置
在阿里云IoT平臺的產(chǎn)品-功能定義里面設置每個功能標識符的定義(根據(jù)每個寄存器的實際類型定義,不然阿里云IoT平臺平臺會提示參數(shù)類型錯誤),定義好以后點發(fā)布。當DTU采集數(shù)據(jù)上報后可以在設備-物理模型里面看數(shù)據(jù),數(shù)據(jù)是Modbus RTU協(xié)議解析后的數(shù)據(jù)。
注:雖然實際溫度是int16類型,濕度是uint16類型,但經(jīng)過公式計算以后有小數(shù),所以阿里云IoT平臺平臺上定義溫度和濕度的數(shù)據(jù)類型為float浮點數(shù)類型才能正確解析;光照度不需要通過公式計算,上報的值為原始值,類型為uint32。
點擊產(chǎn)品-功能定義,選擇編輯草稿。
點擊添加自定義功能
按照采集數(shù)據(jù)的類型添加功能。
注:標識符需要和Modbus RTU參數(shù)中的功能標識符保持一致,這樣阿里云IoT平臺平臺才能正確解析物理模型
(4)功能定義完以后點左下角發(fā)布
3.1.10當設備采集數(shù)據(jù)并上報到阿里云IoT平臺,可以在設備-物理模型數(shù)據(jù)查看。現(xiàn)在就實現(xiàn)了Modbus RTU轉(zhuǎn)json并上報到阿里云IoT平臺的功能。
3.1.11 阿里云下發(fā)設置
如果配置了可讀可寫的開關量類型,比如繼電器,可以使用阿里云設置功能。先在阿里云IoT平臺物理模型添加一個繼電器。
3.1.12 在Modbus參數(shù)配置軟件配置IO口的Modbus RTU相關參數(shù)(以眾山RTU為例,默認Modbus RTU地址為100,DI1、DI2的寄存器地址分別為17、18;DO1、DO2的寄存器地址分別為20、21,數(shù)據(jù)類型為bool)
3.1.13 從阿里云IoT平臺的在線調(diào)試功能下發(fā)控制繼電器的指令
阿里云IoT平臺下發(fā)的原始指令為json格式,網(wǎng)關DTU會轉(zhuǎn)換為相應的Modbus指令控制繼電器,RTU返回的Modbus指令也會打包成json然后立即上報,這樣可以實時控制和獲取繼電器狀態(tài)。
3.2.3 json指令下發(fā)
4G網(wǎng)關支持中心服務器端下發(fā)json格式的數(shù)據(jù)讀寫指令,然后自動轉(zhuǎn)換為本地Modbus RTU串口讀寫寄存器的指令,讀取指令格式為{"key1":"?","key2":"?",...};也支持下發(fā)寄存器設置指令,設置指令格式為{"key1":0,"key2":100,...}。可以讀取/設置一個key或多個key,也可以同時讀取和設置key,比如{"key1":"?","key2":1,...},key必須為已經(jīng)在Modbus參數(shù)里配置好的功能標識符名稱,或者是系統(tǒng)關鍵字(第六章有詳細說明),對順序沒要求。響應的Modbus RTU指令或者系統(tǒng)關鍵字參數(shù)也會立即打包成key-value的json格式并上報,value值為獲取的實時數(shù)據(jù)或者配置的數(shù)據(jù)。
四、Lua本地控制代碼說明
用戶可以配置Lua代碼來判斷獲取數(shù)據(jù)的大小,并根據(jù)上下限閾值執(zhí)行不同的操作,實現(xiàn)本地控制。
示例:采集一個溫濕度、光照度傳感器數(shù)據(jù),并根據(jù)傳感器閾值控制繼電器動作進行本地報警或控制。
按照2.2節(jié)說明配置好相應的參數(shù)
配置的Lua代碼:
local temp=data.illumination if temp>1000 then ModbusTojson.count=ModbusTojson.count+1 count_str=tostring(ModbusTojson.count) SHELL="@CS=count:"..count_str if ModbusTojson.count==5 then ModbusTojson.count=0 SHELL="@CS=High illumination warning!@D=1@DO1=1" end else SHELL="@CS=illumination normal@D=1@DO1=0@PUB=1" end
注:如果Lua代碼太長,配置的對話框也很長,可以直接點Enter回車配置
正常模式Lua代碼為(方便閱讀):
Lua代碼實現(xiàn)效果:
當光照度小于或等于1000時,串口打印illumination normal,關閉DO1,并且不往服務器上報數(shù)據(jù);當光照度大于1000時,先判斷次數(shù),串口打印count數(shù)量,如果Lua腳本連續(xù)執(zhí)行5次光照度都大于1000,串口打印High illumination warning!,DO1打開,并且將采集的數(shù)據(jù)立即上報到服務器。
賦值語句為local y=data.x, 其中x為功能標識符(必須為英文),y為獲取的標識符值,后面就是判斷變量的大小和執(zhí)行相應的操作。所有操作可以通過SHELL腳本執(zhí)行,具體請參考腳本編程手冊。ModbusTojson.count表示計數(shù),如果采集很頻繁告警以后就會一直上報數(shù)據(jù),通過ModbusTojson.count計數(shù)可以設置上傳周期。
說明:
①data.x為獲取功能標識符的值,標識符只能配置為英文
②count為計數(shù)的個數(shù),初始為0,可以通過判斷count數(shù)量設置告警周期
③@PUB指令表示是否立即發(fā)布數(shù)據(jù)到服務器,@PUB=1表示發(fā)送,@PUB=0或者不配置表示不發(fā)送,只有等到了上報周期才發(fā)送。
④“SHELL=”后面可以是所有支持的腳本指令,具體請參考《LTE-xxx腳本編程手冊》
⑤當最后一條功能標識符的指令發(fā)送完成執(zhí)行一次Lua代碼,執(zhí)行周期=變化周期*標識符數(shù)量
一般流程為:先定義一個變量獲取標識符值,設定變量閾值,判斷大小,(bool值則判斷真假,0為假,1為真),然后根據(jù)判斷執(zhí)行具體的操作,所有操作可以通過SHELL腳本執(zhí)行,比如打印信息,上報數(shù)據(jù),開/關繼電器等。
五、NTP時間和GPS數(shù)據(jù)獲取
5.1 NTP時間獲取
當把功能標識符設置為TS時,表示獲取NTP時間,其他Modbus RTU相關參數(shù)可以不用設置(無效),上報的json包里面會獲取NTP時間,格式為年/月/日,星期,時:分:秒,比如獲取的TS時間為2020/12/02,03,14:17:10,表示2020年12月02日,星期三,14:17:10。
注:如果想使用NTP時間功能,需要先把NTP時間開關打開
參數(shù)配置
2)TS時間上報
5.2 GPS數(shù)據(jù)采集
注:GPS版本才支持此指令,否則指令無效
5.2.1采集指令
如果是帶GPS版本,可以將功能標識符配置為GPS_xx來獲取GPS數(shù)據(jù),xx可以是以下內(nèi)容,不同的指令獲取的GPS格式也不同。
參數(shù)配置:
只需要將功能標識符配置為GPS_GGA,其他參數(shù)不用配置。
服務器接收的數(shù)據(jù)如下:
注:設備支持阿里IOT平臺空間可視化GPS位置數(shù)據(jù)接口,設置GPS格式參數(shù)選項為。為"GPS_Aliyun"即可。
5.2.2 報文解析
示例:
1)配置標識符為GPS_GGA,采集的GPS數(shù)據(jù)為標準的GGA數(shù)據(jù),格式解析如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx
<1> UTC 時間,格式為hhmmss.sss;
<2> 緯度,格式為ddmm.mmmm(第一位是零也將傳送);
<3> 緯度半球,N 或S(北緯或南緯)
<4> 經(jīng)度,格式為dddmm.mmmm(第一位零也將傳送);
<5> 經(jīng)度半球,E 或W(東經(jīng)或西經(jīng))
<6> 定位質(zhì)量指示,0=定位無效,1=定位有效;
<7>使用衛(wèi)星數(shù)量,從00到12(第一個零也將傳送)
<8>水平精確度,0.5到99.9
<9天線離海平面的高度,-9999.9到9999.9米M指單位米
<10>大地水準面高度,-9999.9到9999.9米M指單位米
<11>差分GPS數(shù)據(jù)期限(RTCMSC-104),最后設立RTCM傳送的秒數(shù)量
<12>差分參考基站標號,從0000到1023(首位0也將傳送)。
2)配置標識符為GPS_JW,則只返回經(jīng)緯度信息,比如104.10194,30.65984。104.10194為經(jīng)度,30.65984為緯度,可以用此經(jīng)緯度在地圖上定位。
六、用戶自定義json模板
用戶可以自定義json格式,通過用戶json模板參數(shù)可以在json包里添加一些自定義標識符,比如DTU ID,Device name,Location,ts時間戳等信息。自定義json內(nèi)容可以直接添加到原始json包內(nèi),也可以添加到原始的json包外,或者添加多重json。
注:"ts":"?1"返回UNIX格式的時間戳;"ts":"?2"返回年/月/日,星期,時:分:秒格式的時間戳
采集溫濕度、光照度數(shù)據(jù),原始json包為:
{
"illuminance" : 300,
"humidity" : 65.7,
"temperature" : 19.7
}
例1:添加到原始的json包內(nèi)
配置json模板為:
{"DTU ID":"0001","Device name":"test01","Location":"chengdu","ts":"?2"}
上報到服務器的json包為:
例2:添加到原始的json包外
配置json模板為:
{"DTU ID":"0001","Device name":"test01","Location":"chengdu","ts":"?1","params":{}}
上報到服務器的json包為:
例3:添加到原始的json包內(nèi)部和外部
配置json模板為:
{"Device name":"test01","Location":"chengdu","params":{"DTU ID":"0001","ts":"?1"}}
上報到服務器的json包為:
例4:添加多重json包
{"Devicename":"test01","DTU ID":"0001","Location":"chengdu",
"params":[{"property":"?1","value":"?2"}]}
注:紅色的"?1"和"?2"是固定的格式,不能修改。"?1"表示獲取標識符名稱,"?2"表示獲取標識符對應的值。
上報到服務器的json包為:
七、其他特殊關鍵字(服務器下發(fā)json指令)
7.1 SHELL
可以從服務器下發(fā)json格式的SHELL腳本,DTU會臨時執(zhí)行一次腳本。
7.1.1 阿里云IoT平臺下發(fā)SHELL腳本
(1)在阿里云IoT平臺定義物理模型功能標識符為SHELL,數(shù)據(jù)類型為text,長度為1024。
(2)切換到在線調(diào)試,從標識符“SHELL”下發(fā)腳本,就可以實現(xiàn)阿里云IoT平臺下發(fā)SHELL腳本,執(zhí)行完畢后會返回腳本內(nèi)容。腳本的內(nèi)容為所有支持的腳本指令,具體請參考《LTE-XXX 4G DTU腳本編程手冊》。
7.1.2 自建服務器下發(fā)SHELL腳本
連接上服務器以后,直接從服務器下發(fā){"SHELL":"@C=010300000001V1@D=1"}
7.2 luaCode
可以從服務器下發(fā)json報文配置用戶Lua代碼。
7.2.1 阿里云IoT平臺配置用戶Lua代碼
(1)在阿里云IoT平臺定義物理模型功能標識符為luaCode,數(shù)據(jù)類型為text,長度為2048。
(2)切換到在線調(diào)試,從標識符“l(fā)uaCode”下發(fā)用戶Lua代碼。例如采集溫濕度傳感器數(shù)據(jù),可以在lua代碼里面獲取溫度值,然后在做相應的操作,Lua代碼設置成功以后會返回到服務器。
7.2.2 自建服務器配置用戶Lua代碼
連接上服務器以后,直接從服務器下發(fā){"luaCode":"local temp=data.temperature ...(some thing you do)"}
7.3 Reg1-Reg10
LTE-xxx網(wǎng)關版本有10個可讀可寫的寄存器供用戶調(diào)用,可以用做閾值判斷。用戶可以自己配置Reg參數(shù)的值,只能是數(shù)字(可以是小數(shù))。
7.3.1 阿里云IoT平臺配置Reg
(1)在阿里云IoT平臺定義物理模型功能標識符為Reg1~Reg10,數(shù)據(jù)類型為int32,取值范圍為0~int32最大范圍,這里定義的1000。
切換到在線調(diào)試,從標識符“Reg1”下發(fā)設置的值。
7.3.2 自建服務器配置Reg
連接上服務器以后,直接從服務器下發(fā){"Reg1":100}
設置成功后,DTU會立即上報配置的Reg值。
審核編輯:湯梓紅
-
4G
+關注
關注
15文章
5479瀏覽量
118647 -
MODBUS
+關注
關注
28文章
1748瀏覽量
76689 -
網(wǎng)關
+關注
關注
9文章
4196瀏覽量
50774 -
阿里云
+關注
關注
3文章
928瀏覽量
42876 -
IOT
+關注
關注
186文章
4140瀏覽量
195695
發(fā)布評論請先 登錄
相關推薦
評論