我是Modbus-RTU協(xié)議,我有兩個兄弟
我是Modbus RTU協(xié)議,我來自Modbus大家庭。早在1971年,Modicon公司首次推出了Modbus協(xié)議,我和我大哥——Modbus ASCII 都誕生在這里。后來施耐德電氣(Schneider Electric)收購了Modicon公司,并在1997年推出了Modbus TCP協(xié)議,這就是我的三弟。2004年,中國國家標準委員會正式把Modbus作為了國家標準,開啟了我們?yōu)橹袊I(yè)通信做貢獻的新篇章。

我們?nèi)值茉诠I(yè)通信中應用廣泛,我和我大哥(Modbus ASCII)主要活躍在串行通信領域,而我三弟(Modbus TCP)則擅長以太網(wǎng)通信。你可以看看下面這張圖:

在串行鏈路中,我們(Modbus)使用一種簡單的主從協(xié)議(客戶機/服務器協(xié)議)進行通信。客戶機作為主站,向服務器發(fā)送請求;服務器(從站)接到請求后,對請求進行分析并作出應答。我和小伙伴的通信幀被稱為應用數(shù)據(jù)單元(Application Data Unit,ADU),它包括通信地址段、功能代碼段、數(shù)據(jù)段和校驗段,如下圖:

其中,功能代碼段和數(shù)據(jù)段組合稱為協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)。功能代碼段占用一個字節(jié),取值范圍為1~255,其中128~255為保留值,用于異常消息應答報文。1~127為功能代碼編號,其中65~72和100~110為用戶自定義編碼,具體請看下面這張圖片:

通用功能編碼(Public function code)是已經(jīng)公布的功能代碼,有確定的功能,用戶不能修改。比如:0x01表示讀取線圈,0x02表示讀取離散量的輸入等等。下圖是一些常用的功能代碼的描述:

早期在RS485串行通信中規(guī)定ADU的最大長度為256個字節(jié),其中:通信地址占用1個字節(jié),校驗段占用2個字節(jié),所以協(xié)議數(shù)據(jù)單元(PDU)的最大長度為256-1-2=253 字節(jié)。而我三弟(Modbus TCP)因為要增加一個7個字節(jié)的MBAP(MODBUS Application Protocol)的報文頭,所以他的ADU的長度=253+7=260 字節(jié)。
下面這張圖是我(Modbus -RTU)的通信數(shù)據(jù)單元(ADU)的結構:

我可以使用不同功能代碼來完成不同的功能,比如下面表格左邊的請求(request)指令使用0x05功能來使線圈173變?yōu)镺N狀態(tài):

該PDU指令中,第一個字節(jié)表示功能號“05”表示對單獨線圈進行寫操作(write single coil);第二個字節(jié)表示線圈地址的高字節(jié)位,第三個字節(jié)表示線圈地址的低字節(jié)位(線圈的編號從0開始)。本例程中,第173號線圈的序號為172(0x00AC);第四個字節(jié)表示輸出值得高字節(jié)位,第五個字節(jié)表示輸出值的低字節(jié)位。對于單獨線圈操作,0xFF00表示置位(ON),0x0000表示復位(OFF);不同的功能代碼,其參數(shù)的字節(jié)的定義不同,使用時要參考下手冊哦。
由于我(Modbus RTU)的報文格式?jīng)]有定義幀的起始與結束字符,因此對于幀識別有時間上的要求:幀與幀之間的時間間隔要大于3.5個字符(字節(jié))的時間;而幀內(nèi)部的字符之間的間隔不能大于1.5個字符的時間,如下圖:

我大哥(Modbus - ASCII)的幀的起始和停止有明確的字符定義;而我三弟(Modbus TCP)在傳輸過程中要增加一個報文頭—MBAP,以后有時間我再給你們介紹;
好了,有空去官網(wǎng)看看吧,可以下載PDF版本:
-
Origin(Pro):學習版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
OriginPro:學習版申請及過期激活方法【數(shù)據(jù)繪圖】 2020-08-06
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復制到另一張圖中? 2020-07-03
