MODBUS--TCP/IP
一、簡介
1、MODBUS是與基礎通信層無關的通信協議。
2、MODBUS-TCP/IP通信協議中,串行鏈路通信中的主從模式的概念演變為客戶端與服務器。客戶端相當於主站,服務器相當於從站。串行鏈路的一主多從架構演變為多客戶端多服務器的架構。
3、MODBUS在TCP/IP協議族的實現是處於TCP/IP協議族的最上層應用,它的實現需要操作系統的TCP/IP協議棧的支撐。
4、MBUS-TCP/IP服務端通常采用502作為端口。
二、數據幀格式
2.1、為了便於傳輸和提取報文、保證報文的完整性,MODBUS數據幀在APU的數據幀中加入了
附加字段
,也就是在Modbus /TCP協議中引入的MBAP (modbus applacation header)報頭。
2.2、Modbus串行與TCP數據幀比對
1、MODBUS_TCP數據幀在APU的數據幀中加入了`附加字段`。
2、Modbus串行鏈路,為保證數據收發正確性引入了CRC/LRC校驗,但Modbus_TCP中並沒有之類的校驗問題,這是因為下述原因。
2.3、MBAP報文頭部解析--7字節
2.3.1、傳輸事務元標識符
為了識別是請求還是響應而設置的事務元標識符(2個字節,通常為0,客戶端發出的檢驗信息,服務器端只是需要將這兩個字節的內容復制以后再放到回復報文的相應位置就可以)。
2.3.2、協議標識符: 判斷協議類型設置(2個字節,0=MODBUS協議)。
2.3.3、長度信息:(從下一個字節起至結束的長度,2個字節),也就是說單元標識符 -- 幀尾數據的總長度。
2.3.4、單元標識符:還有用於標識從站地址的單元標識符(1個字節,即從站地址),
//注意點
1、MODBUS_TCP協議中MBAP頭部2個字節數據的話默認都是大端對齊(高字節、低字節)。
2、Modbus TCP/IP默認端口為502
三、報文交互舉例
3.1、從設備地址為9的設備中讀保持4005寄存器的數據。
3.2、更多示例待補充
三、參考文檔
《MODBUS軟件開發指南—楊更更》
https://blog.csdn.net/byxdaz/article/details/77892778
https://wenku.baidu.com/view/2791746b302b3169a45177232f60ddccda38e62d.html
https://blog.csdn.net/lakerszhy/article/details/68927178?locationNum=4&fps=1 //功能碼