工業控制常見的通訊——Modbus 通訊協議

工業控制常見的通訊——Modbus 通訊協議

Modbus協議可以說是工業自動化領域應用最為廣泛的通訊協議,因為他的開放性、可擴充性和標準化使它成為一個通用工業標準。有了它,不同廠商的產品可以簡單可靠的接入網絡,實現系統的集中監控,分散控制功能。

目前Modbus規約主要使用的是ASCII, RTU, TCP等,並沒有規定物理層。目前Modbus常用的接口形式主要有RS-232C,RS485,RS422,也有使用RJ45接口的,ModBus的ASCII, RTU協議則在此基礎上規定了消息、數據的結構、命令和應答的方式。ModBus數據通信採用Master/Slave方式(主/從),即Master端發出數據請求消息,Slave端接收到正確消息後就可以發送數據到Master端以響應請求;Master端也可以直接發消息修改Slave端的數據,實現雙向讀寫。

工業控制常見的通訊——Modbus 通訊協議

在串行通信中,用“波特率”來描述數據的傳輸速率。國際上規定了一個標準波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。例如:9600bps,指每秒傳送9600位,包含字符的數位和其它必須的數位,如起始位、停止位和奇偶校驗位等。

在自動化領域我們常用RTU模式,RTU 模式中每個字節的格式:

編碼系統:8 位二進制,十六進制 0-9,A-F

數據位: 1 起始位

8 位數據,低位先送

奇/偶校驗時 1 位;無奇偶校驗時 0 位

帶校驗時 1 位停止位;無校驗時 2 位停止位

錯誤校驗區:循環冗餘校驗(CRC)

從站地址設置:信息地址包括 2 個字符(ASCII)或 8 位(RTU),有效的從機設備地址範圍 0-247(十進制)。

功能碼設置:信息幀功能代碼包括字符(ASCII)或 8 位(RTU)。有效碼範圍 1-225(十進制);

數據區的內容:數據區有 2 個 16 進制的數據位,數據範圍為 00-FF(16 進制),根據網絡串行傳輸的方式,數據區可由一對 ASCII 字符組成或由一個 RTU 字符組成。

RTU方式的消息幀:

工業控制常見的通訊——Modbus 通訊協議

Modbus的功能碼:

工業控制常見的通訊——Modbus 通訊協議

ModBus 功能碼與數據類型對應表:

工業控制常見的通訊——Modbus 通訊協議

RTU 方式讀取整數據的例子:

工業控制常見的通訊——Modbus 通訊協議

解析一下:主機發送指令,訪問從站地址為1,使用功能碼03(讀保持寄存器),起始地址高8位、低8位:表示想讀取的模擬量的起始地址(起始地址為0)。比如例子中的起始地址為38,十進制為:56。寄存器數量高8位、低8位:表示從起始地址開始讀多少個模擬量。例子中為1個模擬量。注意,在返回的信息中一個模擬量需要返回兩個字節。錯誤校驗為CRC校驗。

從站應答:設備地址和命令號和上面的相同。返回的字節數:表示數據的字節個數,也就是數據1,2...n中的n的值。例子中返回了1個模擬量的數據,因為一個模擬量需要2個字節所以共2個字節。數據高低字節:41和24代表返回的1個模擬量的值,即十進制的16676。錯誤校驗為CRC校驗。


分享到:


相關文章: