一、Modbus TCP通信概述
MODBUS/TCP是簡單的、中立廠商的用於(yu) 管理和控製自動化設備的MODBUS係列通訊協議的派生產(chan) 品,顯而易見,它覆蓋了使用TCP/IP協議的“Intranet”和“Internet”環境中MODBUS報文的用途。協議的最通用用途是為(wei) 諸如PLC,I/O模塊,以及連接其它簡單域總線或I/O模塊的網關(guan) 服務的。
Modbus TCP協議是在RTU協議前麵添加MBAP報文頭,由於(yu) TCP是基於(yu) 可靠連接的服務,RTU協議中的CRC校驗碼就不再需要,所以在Modbus TCP協議中是沒有CRC校驗碼。(使用上的主要區別)。MBAP報文頭:
事務處理標識 ( 2字節 ) 協議標識( 2字節 ) 長度( 2字節 ) 單元標識符(1字節 )
二. 通訊所使用的以太網參考模型
Modbus TCP傳(chuan) 輸過程中使用了TCP/IP以太網參考模型的5層:
第一層:物理層,提供設備物理接口,與(yu) 市售介質/網絡適配器相兼容
第二層:數據鏈路層,格式化信號到源/目硬件址數據幀
第三層:網絡層,實現帶有32位IP址IP報文包
第四層:傳(chuan) 輸層,實現可靠性連接、傳(chuan) 輸、查錯、重發、端口服務、傳(chuan) 輸調度
第五層:應用層,Modbus協議報文
三. Modbus TCP數據幀
由於(yu) 使用以太網TCP/IP數據鏈路層的校驗機製而保證了數據的完整性,MODBUS TCP 報文中不再帶有數據校驗”CHECKSUM”,原有報文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS應用協議報文頭中。
由MBAP 頭和PDU 構成, MBAP= Modbus Application Protocol Header(Modbus應用協議) 頭部
PDU = Protocol Data Unit (數據單元)
ADU:Application Data Unit
四. Modbus TCP使用的通訊資源端口號
在Modbus服務器中按缺省協議使用Port 502 通信端口,在Modbus客戶器程序中設置任意通信端口,為(wei) 避免與(yu) 其他通訊協議的衝(chong) 突一般建議2000開始可以使用。
五. Modbus TCP使用的功能代碼
按照使用的通途區分,共有3種類型分別為(wei) :
1) 公共功能代碼:已定義(yi) 好功能碼,保證其唯一性,由Modbus.org認可;
2) 用戶自定義(yi) 功能代碼有兩(liang) 組,分別為(wei) 65~72和100~110,無需認可,但不保證代碼使用唯一性,如變為(wei) 公共代碼,需交RFC認可;
3) 保留功能代碼,由某些公司使用某些傳(chuan) 統設備代碼,不可作為(wei) 公共用途。
modbus的操作對象有四種:線圈、離散輸入、輸入寄存器、保持寄存器
線圈:PLC的輸出位,開關(guan) 量,在MODBUS中可讀可寫(xie)
離散量:PLC的輸入位,開關(guan) 量,在MODBUS中隻讀
輸入寄存器:PLC中隻能從(cong) 模擬量輸入端改變的寄存器,在MODBUS中隻讀
保持寄存器:PLC中用於(yu) 輸出模擬量信號的寄存器,在MODBUS中可讀可寫(xie)
根據對象的不同,modbus的功能碼有:
0x01:讀線圈
0x02:讀離散量輸入
0x03:讀保持寄存器
0x04:讀輸入寄存器
0x05:寫(xie) 單個(ge) 線圈
0x06:寫(xie) 單個(ge) 保持寄存器
0x10:寫(xie) 多個(ge) 保持寄存器
0x0F:寫(xie) 多個(ge) 線圈
按照應用深淺,可分為(wei) 3個(ge) 類別:
1) 類別0,客戶機/服務器最小可用子集:讀多個(ge) 保持寄存器(fc.3);寫(xie) 多個(ge) 保持寄存器(fc.16)。
2) 類別1,可實現基本互易操作常用代碼:讀線圈(fc.1);讀開關(guan) 量輸入(fc.2);讀輸入寄存器(fc.4);寫(xie) 線圈(fc.5);寫(xie) 單一寄存器(fc.6)。
3) 類別2,用於(yu) 人機界麵、監控係統例行操作和數據傳(chuan) 送功能:強製多個(ge) 線圈(fc.15);讀通用寄存器(fc.20);寫(xie) 通用寄存器(fc.21);屏蔽寫(xie) 寄存器(fc.22);讀寫(xie) 寄存器(fc.23)。
六. Modbus TCP通訊應用舉(ju) 例
在讀寄存器的過程中,以Modbus TCP請求報文為(wei) 例,具體(ti) 的數據傳(chuan) 輸過程如下:
1) Modbus TCP客戶端實況,用Connect()命令建立目標設備TCP 502端口連接數據通信過程;
2) 準備Modbus報文,包括7個(ge) 字節MBAP內(nei) 請求;
3) 使用send()命令發送;
4) 同一連接等待應答;
5) 同recv()讀報文,完成一次數據交換過程;
6) 當通信任務結束時,關(guan) 閉TCP連接,使服務器可以為(wei) 其他服務。
七. Modbus TCP相比較Modbus RTU的優(you) 勢
1) 當多個(ge) 網關(guan) 共同接一個(ge) 後台服務器,而一個(ge) 網關(guan) 下掛接多個(ge) 485設備時,如果不同的網關(guan) 掛接同樣地址號的485設備時那麽(me) 後台服務器無法區分是哪個(ge) 485從(cong) 設備,並且最多隻能限製485設備個(ge) 數254個(ge) ,而modbus-tcp協議包含自定義(yi) 報文頭4個(ge) 字節和數據長度,我們(men) 可以通過報文頭標識不同的網關(guan) 或者通過數據長度區分,從(cong) 而增加了可拓展的485設備個(ge) 數,很好的解決(jue) 了問題。
2) 目前Modbus TCP/IP協議主要應用領域Internet或Intranet中,而以太網傳(chuan) 輸距離遠、傳(chuan) 輸速度快,使得應用範圍廣泛傳(chuan) 輸距離遠、傳(chuan) 輸速度快,使得應用範圍廣泛。