多年工作經驗的工程師說MODBUS通訊

前面給大家介紹了工業自動化控制系統,以及其中的IO部分,今天繼續給大家介紹串列埠通訊部分。在工業自動化控制系統中現場最常用到的就是Modbus通訊,而學習Modbus相對來說是有點難度的,因此我計劃除了本文介紹以外,還將Modbus通訊國標的PDF版以及除錯Modbus必須用到的兩個工具分享給大家,並錄製一段影片給大家演示一下怎麼建立Modbus通訊連線。

1、 Modbus 協議由來及國標規範

Modbus是Modicon(莫迪康現為施耐德電氣公司的一個品牌)在1979年開發的一項在ISO模型第7層的應用層報文傳輸協議。Modbus應用於電子控制器上的一種通用語言。透過此協議,控制器相互之間、控制器經由網路(例如乙太網)和

其它裝置

之間可以通訊。它已經成為一通用工業標準。Modbus已經形成國家規範,主要分成三個部分:

基於Modbus協議的工業自動化網路規範:

GB/Z19582。1 第1部分:Modbus應用協議;

GB/Z19582。2 第2部分:Modbus協議在序列鏈路上的實現指南

GB/Z19582。3 第3部分:Modbus協議在TCP/IP上的實現指南

第1部分描述了Modbus事物處理;

第2部分提供了一個有助於開發者實現序列鏈路上的Modbus應用層的參考資訊;

第3部分提供了一個有助於開發者實現TCP/IP上的Modbus應用層的參考資訊;

以上是深入學習Modbus的重要資料,用於提高成為行業專家,不需要太深入瞭解,只是應用,看本文即可。

2、 Modbus通訊協議簡介

Modbus是主/從通訊協議。主站主動傳送報文, 只有與主站傳送報文中呼叫地址相同的從站才向主站傳送回答報文。具體資料結構見下圖。

多年工作經驗的工程師說MODBUS通訊

3、 Modbus通訊各個引數的設定簡介

我們經常做Modbus通訊的時候都有一些術語:RS-485,波特率9600(串列埠通訊時),站地址(裝置地址),模式,資料位,停止位,奇偶校驗。瞭解這些術語,並設定匹配是通訊是否成功的關鍵。

主要通訊介質:

Modbus 協議主要用於控制器之間的通訊。透過此協議,兩個控制器相互之間,或控制器透過網路和

其它裝置

之間進行通訊。其主要傳送介質有RS-232、RS-485、乙太網。從現場端來說,使用最多的是RS-485。從PLC到HMI使用最多的是乙太網。

波特率:

波特率是指資料訊號對載波的調製速率,它用單位時間內載波調製狀態改變的次數來表示。最常用的是9600。

站地址(裝置地址):

Modbus是主/從通訊協議。主站主動傳送報文, 只有與主站傳送報文中呼叫地址相同的從站才向主站傳送回答報文。Modbus 協議是主從站通訊協議,用非同步序列口完成通訊。理論上可接(定址)一臺主站和至多 247 臺從站。

模式:

Modbus規定了 2 種字元傳輸模式:ASCII 模式、RTU(二進位制)模式;兩種傳輸模式不能混用。RTU模式比較常見。

多年工作經驗的工程師說MODBUS通訊

只有Modbus的主從裝置,以上引數都設定一致,才能建立起物理通訊。具體資料怎麼獲取,需要先了解Modbus儲存區以及報文傳送接收規則。

4、 Modbus儲存區(資料段)儲存規則

主要定義MODBUS 涉及到的控制器(或 MODBUS 裝置)儲存區。用來存放資料,在工程實踐中為了方便,工程師一般會把資料放在可讀寫的兩個區。0XXXX放開關量資料,4XXXX放浮點量資料。如果是現場裝置,如閥門、泵、低壓配電櫃、UPS等485通訊裝置,需要工程師根據其提供的說明書進行組態。

多年工作經驗的工程師說MODBUS通訊

5、 Modbus資料報文解析

Modbus是主/從通訊協議。主站主動傳送報文, 只有與主站傳送報文中呼叫地址相同的從站才向主站傳送回答報文。具體資料結構見下圖。

(1) 讀取輸出狀態

功能碼:01H

Modbus主站詢問報文格式:

多年工作經驗的工程師說MODBUS通訊

本例:讀 11H 號從站輸出線圈,起始地=0013H=19,對應地址 00020;線圈數=0025H=37;末地址=00020+37-1=00056;(本例為16進位制)。因此,本詢問報文功能是:讀 17(11H)號從站輸出線圈 00020—00056,共 37 個線圈狀態;

從站應答格式:

多年工作經驗的工程師說MODBUS通訊

本例:11H 號從站回答請求報文,功能碼01,位元組5個;(本例為16進位制)。因此,本詢問報文功能是:回答17號從站線圈狀態,CD=11001101,6B=01101011,B2=10110010,0E=00001110,1B=00011011,;因此,本回答報文功能是:回答17(11H)號從站輸出線圈 00020—00056,共 37 個線圈狀態為11001101、01101011、10110010、00001110、00011。

其他功能碼作用類似,不在此逐一解釋,附上功能碼錶,有興趣的可以自己研究一下。注意我們比較常用的功能碼就4個。

多年工作經驗的工程師說MODBUS通訊

6、 總結

今天我們一起了解了一下Modbus通訊。在第一節、第二節主要簡單介紹了一下Modbus。第三節重點描述了Modbus通訊引數的設定。第四節描述了暫存器。第五節主要描述了Modbus資料報文解析的解析。如果你有一定的Modbus的基礎,這篇文章應該能幫你梳理一邊知識點。如果你沒有接觸過Modbus可能還需要我透過兩個軟體加影片的方式帶你入門。如果你已經有一定基礎了,建議看看Modbus的國標。可以提高升華,有需要Modbus國標的朋友可以關注並私聊我。