時(shí)間:2021-04-16 作者:眾山科技
Modbus轉JSON功能主要用于采集Modbus Rtu傳感器數據,將采集的數據按配置的數據類(lèi)型解析,并且打包成key-value的JSON格式上報到服務(wù)器,支持服務(wù)器下發(fā)JSON格式命令,省去了用戶(hù)自己解析數據和轉換格式的麻煩。支持連接自建服務(wù)器和阿里云IoT平臺。
功能特點(diǎn)
·支持連接自建服務(wù)器和阿里云IoT平臺
·支持TCP-Client/UDP-Master/TCP-ZSD/UDP-ZSD/MQTT/HTTP協(xié)議
·支持Modbus Rtu轉JSON,支持采集多個(gè)寄存器數據打包成JSON上傳到服務(wù)器
·支持自定義JSON格式
·支持JSON轉Modbus,支持接收服務(wù)器JSON指令,轉換為Modbus Rtu輸出
·支持NTP時(shí)間
·支持本地、遠程參數配置
·支持公式運算,可以將原始數據按照一定公式轉換為需要的數據
·支持Lua代碼,用戶(hù)可以對采集的數據做判斷,并且執行不同的操作
一、網(wǎng)關(guān)工作流程
JSON網(wǎng)關(guān)DTU通過(guò)配置Modbus相關(guān)參數往串口發(fā)送相應的Modbus指令,485設備收到指令以后會(huì )返回采集的數據,網(wǎng)關(guān)DTU通過(guò)數據類(lèi)型進(jìn)行解析,并將解析以后的數值以key-value的格式打包成JSON發(fā)送到服務(wù)器。
流程如下:
1)配置服務(wù)器IP地址/域名和端口號,如果是MQTT協(xié)議還需要配置ClinetID、username、password、發(fā)布主題和訂閱主題等參數,配置輪詢(xún)周期和上報周期、JSON數據格式。
2)配置Modbus相關(guān)參數,Modbus子站地址、寄存器地址、數據類(lèi)型、計算公式。
3)如果是阿里云IoT平臺,需要在服務(wù)器上創(chuàng )建設備;如果是自建服務(wù)器,需要在服務(wù)器端打開(kāi)相應的上位機軟件。
4)服務(wù)器接收到打包的JSON數據。
二、參數說(shuō)明
三、使用說(shuō)明
3.1 阿里云IoT平臺接入
3.1.1 進(jìn)入阿里云IoT平臺官網(wǎng)https://www.aliyun.com,登錄賬號,然后點(diǎn)擊右上角的控制臺。
3.1.2 進(jìn)入控制臺后選擇產(chǎn)品與服務(wù)-物聯(lián)網(wǎng)平臺。
注:第一次使用阿里云IoT平臺物聯(lián)網(wǎng)服務(wù)器需要先開(kāi)通服務(wù)才能使用。
3.1.3 選擇產(chǎn)品-創(chuàng )建產(chǎn)品。
3.1.4 創(chuàng )建產(chǎn)品,產(chǎn)品名稱(chēng)可以自己定義,其他參數按圖片上的配置即可。
3.1.5 創(chuàng )建產(chǎn)品成功以后添加設備。
3.1.6 添加好設備后會(huì )彈出設備鑒權證書(shū),新建一個(gè)文本文檔,點(diǎn)擊一鍵復制,將信息復制到一個(gè)TXT文檔里。
3.1.7配置連接阿里云IoT平臺的相關(guān)參數。
打開(kāi)參數配置軟件左下角的MQTT客戶(hù)端,選擇阿里云登錄信息合成器,將信息復制到粘貼區,點(diǎn)擊生成登錄信息,將相關(guān)信息填入參數配置軟件對應的位置。
打開(kāi)“DTUCFG-V1.1.5”,將生成的阿里云IoT平臺MQTT相關(guān)參數配置進(jìn)對應的參數項。發(fā)布號配置“屬性上報”內容
/sys/a1XSBRUBMXW/866262044304197/thing/event/property/post
訂閱號配置“設置設備屬性”內容:
/sys/a1XSBRUBMXW/866262044304197/thing/service/property/set
阿里云IoT平臺相關(guān)參數配置完以后需要配置“變化周期”和“固定上傳周期”,變化周期表示發(fā)送Modbus指令的時(shí)間間隔,固定上傳周期表示將JSON包發(fā)送到服務(wù)器的周期,單位都為毫秒。
注:除了連接阿里云IoT平臺的必要參數,還需要將Modbus轉JSON開(kāi)關(guān)打開(kāi),JSON格式設置為阿里云IoT平臺。
3.1.8切換到Modbus Rtu參數,根據實(shí)際需要采集的Modbus Rtu設備配置相應的參數,本手冊用一個(gè)溫濕度-光照度傳感器示例,Modbus Rtu地址及寄存器定義如下:
可以看出溫度和濕度為兩個(gè)字節,溫度有符號,數據類(lèi)型是int16;濕度無(wú)符號,數據類(lèi)型是uint16,轉換為十進(jìn)制以后都需要除以10,公式配置為valuey=valuex/10。光照度為四個(gè)字節,無(wú)符號,數據類(lèi)型為uint32,字節序為1234,無(wú)公式,取原始值。參數配置如下:
點(diǎn)擊工具-Modbus參數配置可以進(jìn)入Modbus配置界面
注:點(diǎn)擊添加按鈕添加功能標識符,刪除按鈕刪除功能標識符。
參數配置成功以后需要點(diǎn)復位設備,參數才會(huì )生效
3.1.9阿里云IoT平臺物理模型配置
在阿里云IoT平臺的產(chǎn)品-功能定義里面設置每個(gè)功能標識符的定義(根據每個(gè)寄存器的實(shí)際類(lèi)型定義,不然阿里云IoT平臺平臺會(huì )提示參數類(lèi)型錯誤),定義好以后點(diǎn)發(fā)布。當DTU采集數據上報后可以在設備-物理模型里面看數據,數據是Modbus Rtu協(xié)議解析后的數據。
注:雖然實(shí)際溫度是int16類(lèi)型,濕度是uint16類(lèi)型,但經(jīng)過(guò)公式計算以后有小數,所以阿里云IoT平臺平臺上定義溫度和濕度的數據類(lèi)型為float浮點(diǎn)數類(lèi)型才能正確解析;光照度不需要通過(guò)公式計算,上報的值為原始值,類(lèi)型為uint32。
點(diǎn)擊產(chǎn)品-功能定義,選擇編輯草稿。
點(diǎn)擊添加自定義功能
按照采集數據的類(lèi)型添加功能。
注:標識符需要和Modbus Rtu參數中的功能標識符保持一致,這樣阿里云IoT平臺平臺才能正確解析物理模型
(4)功能定義完以后點(diǎn)左下角發(fā)布
3.1.10當設備采集數據并上報到阿里云IoT平臺,可以在設備-物理模型數據查看?,F在就實(shí)現了Modbus Rtu轉JSON并上報到阿里云IoT平臺的功能。
3.1.11 阿里云下發(fā)設置
如果配置了可讀可寫(xiě)的開(kāi)關(guān)量類(lèi)型,比如繼電器,可以使用阿里云設置功能。先在阿里云IoT平臺物理模型添加一個(gè)繼電器。
3.1.12 在Modbus參數配置軟件配置IO口的Modbus RTU相關(guān)參數(以眾山RTU為例,默認Modbus RTU地址為100,DI1、DI2的寄存器地址分別為17、18;DO1、DO2的寄存器地址分別為20、21,數據類(lèi)型為bool)
3.1.13 從阿里云IoT平臺的在線(xiàn)調試功能下發(fā)控制繼電器的指令
阿里云IoT平臺下發(fā)的原始指令為JSON格式,網(wǎng)關(guān)DTU會(huì )轉換為相應的Modbus指令控制繼電器,RTU返回的Modbus指令也會(huì )打包成JSON然后立即上報,這樣可以實(shí)時(shí)控制和獲取繼電器狀態(tài)。