一、modbusTCP協議介紹
Modbus由MODICON公司于1979年開發,是一種工業現場總線協議標準。1996年施耐德公司推出基于以太網TCP/IP的Modbus協議: ModbusTCP 。
Modbus協議是一項應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。
標準的Modbus協議物理層接口有RS232、RS422、RS485和以太網接口,采用master/slave方式通信。
ModbusTCP數據幀
ModbusTCP的數據幀可分為兩部分: MBAP + PDU 。
報文頭MBAP
MBAP為報文頭,長度為7字節,組成如下:
事務處理標識 | 協議標識 | 長度 | 單元標識符 |
---|---|---|---|
2字節 | 2字節 | 2字節 | 1字節 |
內容 | 解釋 |
---|---|
事務處理標識 | 可以理解為報文的序列號,一般每次通信之后就要加1以區別不同的通信數據報文。 |
協議標識符 | 00 00表示ModbusTCP協議。 |
長度 | 表示接下來的數據長度,單位為字節。 |
單元標識符 | 可以理解為設備地址。 |
幀結構PDU
PDU由功能碼+數據組成。功能碼為1字節,數據長度不定,由具體功能決定。
功能碼
Modbus的操作對象有四種:線圈、離散輸入、保持寄存器、輸入寄存器。
對象 | 含義 |
---|---|
線圈 | PLC的輸出位,開關量,在Modbus中可讀可寫 |
離散量 | PLC的輸入位,開關量,在Modbus中只讀 |
輸入寄存器 | PLC中只能從模擬量輸入端改變的寄存器,在Modbus中只讀 |
保持寄存器 | PLC中用于輸出模擬量信號的寄存器,在Modbus中可讀可寫 |
根據對象的不同,Modbus的功能碼有:
功能碼 | 含義 |
---|---|
0x01 | 讀線圈 |
0x05 | 寫單個線圈 |
0x0F | 寫多個線圈 |
0x02 | 讀離散量輸入 |
0x04 | 讀輸入寄存器 |
0x03 | 讀保持寄存器 |
0x06 | 寫單個保持寄存器 |
0x10 | 寫多個保持寄存器 |
二、modbusTCP實測
ModbusTCP服務器(從站)
即使用SMART作為協議從站,可供上位機讀取,以下為實際測試程序:
需要注意的是,STEP 7-MicroWIN Smart2.4版本以下需要購買庫文件才可以,2.4版本以上程序已經集成了這個功能,因為日常工作習慣,我一直沒有更新新的編程軟件,所以大家如果需要庫文件作為學習使用,也可以私信我。
定義好以上的參數,就可以實現通訊了,本人使用的是modbusPoll調試軟件作為上位機與SMART完成了modbusTCP通訊。需要此調試軟件的同學也可以私信我。
以上參數中在測試時發現,IP地址可針對上位機地址設置,也可以全部設置為0,即代表只要端口號正缺,不判斷上位機IP地址。
ModbusTCP客戶端(主站)
SMART的主站通訊與modbusRTU十分相似,同樣采取輪詢的方式實現,以下為實測程序:
西門子SMART作為主站,同樣使用modbusSlave調試軟件作為協議從站。
-
MODBUS
+關注
關注
28文章
1804瀏覽量
76983 -
TCP
+關注
關注
8文章
1353瀏覽量
79066 -
ASCII
+關注
關注
5文章
172瀏覽量
35100 -
傳輸協議
+關注
關注
0文章
78瀏覽量
11449 -
RTU
+關注
關注
0文章
412瀏覽量
28676
發布評論請先 登錄
相關推薦
評論