-
您的位置:
- 網(wǎng)站首頁(yè)
- > 物聯(lián)百科
- > 產(chǎn)品百科
您的位置:
1. 10臺(tái)電磁流量計(jì),用于測(cè)量各生產(chǎn)環(huán)節(jié)的水流量,型號(hào)為L(zhǎng)DCK-25,支持Modbus RTU協(xié)議,RS485接口,波特率9600bps,數(shù)據(jù)位8位,無(wú)校驗(yàn)位,停止位1位。Modbus寄存器信息如下:
流量計(jì)地址 寄存器地址 數(shù)據(jù)類型 讀寫屬性 備注
1 0x0000 float 只讀 瞬時(shí)流量
1 0x0002 float 只讀 正累積流量
1 0x0004 float 只讀 負(fù)累積流量
...
10 0x0000 float 只讀 瞬時(shí)流量
10 0x0002 float 只讀 正累積流量
10 0x0004 float 只讀 負(fù)累積流量
2. 5臺(tái)電能質(zhì)量?jī)x表,用于測(cè)量各車間的電能質(zhì)量數(shù)據(jù),型號(hào)為CSPEM-96,支持Modbus RTU協(xié)議,RS485接口,波特率19200bps,數(shù)據(jù)位8位,偶校驗(yàn),停止位1位。Modbus寄存器信息如下:
儀表地址 寄存器地址 數(shù)據(jù)類型 讀寫屬性 備注
1 0x0000 float 只讀 A相電壓
1 0x0002 float 只讀 B相電壓
1 0x0004 float 只讀 C相電壓
1 0x0006 float 只讀 A相電流
...
5 0x0000 float 只讀 A相電壓
5 0x0002 float 只讀 B相電壓
5 0x0004 float 只讀 C相電壓
5 0x0006 float 只讀 A相電流
3. 1臺(tái)天然氣流量計(jì),用于測(cè)量總進(jìn)氣量,型號(hào)為FLOWSIC600-XT,支持Modbus TCP協(xié)議,以太網(wǎng)接口,Modbus TCP端口502。Modbus寄存器信息如下:
寄存器地址 數(shù)據(jù)類型 讀寫屬性 備注
0x0000 float 只讀 瞬時(shí)流量
0x0002 float 只讀 累積流量
0x0004 int 只讀 工作狀態(tài)字
數(shù)據(jù)中心使用的是MQTT協(xié)議,接入OneNET平臺(tái)。要求每5分鐘上傳一次數(shù)據(jù)。
1. 將10臺(tái)LDCK-25電磁流量計(jì)和5臺(tái)CSPEM-96電能質(zhì)量?jī)x表的RS485接口,通過(guò)RS485總線全部連接到SG500的RS485接口。注意要接120歐姆終端電阻。將FLOWSIC600-XT天然氣流量計(jì)的以太網(wǎng)口接到SG500的LAN口。
2. 在SG500上安裝Modbus RTU主站程序mbrtu,用于輪詢流量計(jì)和電表的數(shù)據(jù)。配置輪詢周期為5分鐘,從站等待響應(yīng)超時(shí)時(shí)間1秒,重發(fā)3次。配置Modbus TCP主站程序mbtcp,用于輪詢天然氣流量計(jì)數(shù)據(jù)。
3. 編寫數(shù)據(jù)解析程序parse_data,對(duì)輪詢回來(lái)的Modbus數(shù)據(jù)進(jìn)行解析,提取出各個(gè)測(cè)點(diǎn)的實(shí)際數(shù)值和單位。比如流量計(jì)的數(shù)據(jù)解析如下:
def parse_flow_data(data):
flow = struct.unpack('>f', data[0:4])[0]
pos_total = struct.unpack('>f', data[4:8])[0]
neg_total = struct.unpack('>f', data[8:12])[0]
return {
'flow': round(flow, 2),
'flow_unit': 'm3/h',
'pos_total': round(pos_total, 2),
'neg_total': round(neg_total, 2),
'total_unit': 'm3'
}
4. 編寫數(shù)據(jù)封裝程序pack_data,將解析后的數(shù)據(jù)封裝成統(tǒng)一的JSON格式。設(shè)備編號(hào)、時(shí)間戳、測(cè)點(diǎn)等信息都要包含在內(nèi)。例如:
{
'gateway_id': 'SG500_1',
'timestamp': 1634227200,
'devices': [
{
'device_id': 'LDCK-25-1',
'data': [
{'flow': 23.61, 'flow_unit': 'm3/h'},
{'pos_total': 1638.22, 'total_unit': 'm3'},
{'neg_total': 0.11, 'total_unit': 'm3'}
]
},
{
'device_id': 'CSPEM-96-1',
'data': [
{'ua': 380.5, 'ua_unit': 'V'},
{'ub': 378.1, 'ub_unit': 'V'},
{'uc': 379.6, 'uc_unit': 'V'},
{'ia': 62.5, 'ia_unit': 'A'}
]
},
{
'device_id': 'FLOWSIC600',
'data': [
{'flow': 899.32, 'flow_unit': 'm3/h'},
{'total': 123838.63, 'total_unit': 'm3'},
{'status': 1}
]
}
]
}
5. 在SG500上安裝MQTT客戶端程序mosquitto,使用4G網(wǎng)絡(luò)連接到OneNET的MQTT服務(wù)器。按照OneNET的設(shè)備接入要求,配置MQTT參數(shù):
- 服務(wù)器地址: iot-mqtts.heclouds.com
- 端口: 8883
- 證書文件: iot-mqtts-certificate.pem
- 用戶名: 設(shè)備ID
- 密碼: 鑒權(quán)信息
6. 編寫MQTT發(fā)布程序pub_data,將封裝好的JSON數(shù)據(jù),以5分鐘為周期,通過(guò)MQTT發(fā)布到OneNET平臺(tái)的設(shè)備數(shù)據(jù)流主題。
7. 使用SG500的RS485 DTU功能,將Modbus RTU數(shù)據(jù)透明傳輸?shù)綌?shù)據(jù)中心,作為數(shù)據(jù)校驗(yàn)。配置RS485的TCP服務(wù)器模式,本地端口號(hào)為502。這樣數(shù)據(jù)中心也可以直接通過(guò)Modbus TCP讀取設(shè)備的原始數(shù)據(jù)。
8. 考慮到工業(yè)環(huán)境的復(fù)雜性,在SG500本地使用SQLite數(shù)據(jù)庫(kù),對(duì)采集到的數(shù)據(jù)進(jìn)行本地存儲(chǔ),并記錄上傳狀態(tài)。每次存儲(chǔ)數(shù)據(jù)前,先檢查磁盤使用率,超過(guò)90%時(shí),刪除最早的數(shù)據(jù)。MQTT發(fā)布失敗時(shí),存儲(chǔ)發(fā)布失敗的數(shù)據(jù),等待網(wǎng)絡(luò)恢復(fù)后補(bǔ)發(fā)。
9. 配置SG500的看門狗功能,監(jiān)控Modbus采集程序mbrtu、mbtcp和MQTT發(fā)布程序pub_data。如果進(jìn)程異常退出,看門狗會(huì)自動(dòng)重啟進(jìn)程。同時(shí)通過(guò)MQTT發(fā)布一條異常告警信息到數(shù)據(jù)中心。
10. 對(duì)SG500的系統(tǒng)日志進(jìn)行配置,將系統(tǒng)日志發(fā)送到數(shù)據(jù)中心的日志服務(wù)器。日志等級(jí)為INFO,采用rsyslog格式,通過(guò)TCP協(xié)議發(fā)送。
11. 使用SG500提供的"星云"網(wǎng)管平臺(tái),對(duì)網(wǎng)關(guān)進(jìn)行批量配置、升級(jí)、監(jiān)控。比如修改輪詢周期、更新Modbus寄存器地址等參數(shù),都可以通過(guò)網(wǎng)管平臺(tái)遠(yuǎn)程操作。
12. 將以上開發(fā)的程序打包成SG500的固件,通過(guò)網(wǎng)管平臺(tái)進(jìn)行批量升級(jí)。升級(jí)時(shí)先將新固件上傳到SG500的TF卡中,再通過(guò)網(wǎng)管平臺(tái)下發(fā)升級(jí)指令,SG500本地完成固件更新和程序替換,實(shí)現(xiàn)零宕機(jī)升級(jí)。
以上就是一個(gè)比較完整的工業(yè)網(wǎng)關(guān)協(xié)議轉(zhuǎn)換項(xiàng)目的開發(fā)流程。涉及了多種工業(yè)協(xié)議解析、數(shù)據(jù)庫(kù)存儲(chǔ)、邊緣計(jì)算、網(wǎng)絡(luò)傳輸、網(wǎng)管平臺(tái)等方面的內(nèi)容。充分利用了SG500網(wǎng)關(guān)提供的軟硬件資源,可以高效地實(shí)現(xiàn)工業(yè)設(shè)備數(shù)據(jù)采集和上云。
本案例重點(diǎn)展示了SG500在工業(yè)協(xié)議轉(zhuǎn)換和邊緣計(jì)算方面的應(yīng)用。通過(guò)二次開發(fā),可以將SG500打造成一個(gè)功能強(qiáng)大的工業(yè)物聯(lián)網(wǎng)關(guān),適用于各種工業(yè)場(chǎng)景。
當(dāng)然,實(shí)際項(xiàng)目中還需要考慮更多的細(xì)節(jié),如數(shù)據(jù)安全、設(shè)備冗余、應(yīng)用集成等。這需要根據(jù)具體需求進(jìn)行定制化開發(fā)。SG500提供了完善的二次開發(fā)環(huán)境和技術(shù)支持,用戶可以基于此進(jìn)行深度定制,開發(fā)出滿足自己需求的應(yīng)用。
希望通過(guò)本案例,讓您對(duì)SG500能耗網(wǎng)關(guān)有一個(gè)更加直觀和深入的了解。如果您有任何問(wèn)題或需求,歡迎隨時(shí)聯(lián)系我們,我們將竭誠(chéng)為您服務(wù)!