新聞中心
PRESS CENTERModbus是一種工業(yè)現(xiàn)場總線協(xié)議,通常運行于RS485總線,采用半雙工即一問一答的通信機制。Modbus分為Modbus RTU/Modbus TCP/Modbus ASCII三種通信模式,Modbus請求和Modbus解析節(jié)點只用于Modbus RTU通信。
Modbus請求節(jié)點:根據(jù)設置的參數(shù)(地址碼/功能碼/寄存器起始地址/寄存器數(shù)量等)生成Modbus指令。
Modbus解析節(jié)點:根據(jù)匹配的Modbus請求節(jié)點,解析響應數(shù)據(jù)。
Modbus解析節(jié)點使用時需指定匹配的Modbus請求節(jié)點,匹配完成就會按照Modbus請求節(jié)點的設置來解析數(shù)據(jù),因此Modbus請求和Modbus解析節(jié)點必須成對出現(xiàn)且必須一一匹配。
節(jié)點只對協(xié)議報文處理,并未指定相應的串口,因此一般配合串口節(jié)點一起使用。Modbus請求和Modbus解析不支持通過傳參來動態(tài)請求數(shù)據(jù)。
以下介紹主要針對Modbus請求節(jié)點,Modbus解析節(jié)點無任何設置項。
Modbus協(xié)議【完整版】-https://iotrouter.yuque.com/attachments/yuque/0/2023/pdf/38696274/1698721058459-2269824c-e5b8-49d9-b135-164ba88cd249.pdf
(如下源碼:https://iotrouter.yuque.com/zn3vdn/eg8000/xtbmo18kq05in9gm)
msg.payload
#設置的功能碼不同需要不同的參數(shù)
#FC 1:讀線圈(msg.payload無意義)
#FC 2:讀觸點(msg.payload無意義)
#FC 3:讀保持寄存器(msg.payload無意義)
#FC 4:讀輸入寄存器(msg.payload無意義)
#FC 5:寫單個線圈(msg.payload:1/0)
#FC 6:寫單個保持寄存器(msg.payload:0-65535)
#FC15:寫多個線圈(msg.payload:字節(jié)數(shù)組,每個字節(jié)表示8個線圈)
#FC16:寫多個保持寄存器(msg.payload:一個寄存器2個字節(jié),要寫入的具體字節(jié)數(shù)組,詳見示例)
msg.payload
#根據(jù)配置項生成的modbus rtu請求指令
功能
1. 配置項
地址碼:1-255 十進制輸入,請注意進制轉換
功能碼:FC 1讀線圈(功能碼:0x01)
FC 2讀觸點(功能碼:0x02)
FC 3讀保持寄存器(功能碼:0x03)
FC 4讀輸入寄存器(功能碼:0x04)
FC 5寫單個線圈(功能碼:0x05)
FC 6寫單個保持寄存器(功能碼:0x06)
FC 15寫多個線圈(功能碼:0x0F)
FC 16寫多個寄存器(功能碼:0x10)
起始地址:5位十進制數(shù)字,請注意進制轉換
最高位不清楚怎么寫可以填0,后4位是寄存器地址十六進制轉成十進制后加1
例如:0x0100-->002570x0000-->00001 0x0010-->00017
數(shù)量:根據(jù)實際情況填寫
寄存器解析:根據(jù)實際情況填寫
2. 節(jié)點匹配方法
1. 讀線圈
2. 讀觸點
3. 讀保持寄存器
4. 讀輸入寄存器
5. 寫單個線圈
6. 寫單個保持寄存器
7. 寫多個線圈
8. 寫多個保持寄存器
9. 輪訓采集
10. 同一個傳感器采集相同數(shù)量寄存器(防止誤解析)
Modbus請求節(jié)點參數(shù)有改動,對應的Modbus解析節(jié)點要重新搜索選中一下