串行線路或以太網(wǎng)連接中Modbus 協(xié)議簡介
1、Modbus 協(xié)議簡介
Modbus 是開放標準的 RTU,該協(xié)議被認為是最普遍的通信協(xié)議,并且通??梢宰鳛殒溄庸こ屉娮釉O備的一種手段來訪問。詳細地說,這是用于通過串行線路或以太網(wǎng)連接在電子設備之間進行信息傳輸?shù)耐ㄐ艆f(xié)議。在開放標準條件下,任何人都可以實施。這可能用于連接電源域使用SCADA中的RTU 進行控制的系統(tǒng)。
Modbus 的協(xié)議被明確定義為主從協(xié)議,這意味著作為主設備的工具將使一個或多個工具作為從設備。只能由主機(PC,HMI等)通過唯一從機地址發(fā)起請求,從機(終端設備)根據(jù)主機請求進行響應,即半雙工通訊。該協(xié)議只允許主機發(fā)起請求,從機進行被動響應,因此從機不會主動占用通訊線路造成數(shù)據(jù)沖突。
2、Modbus 的通訊方式
2.1、Modbus三種通訊方式
Modbus有下列三種通信方式:
(1)、以太網(wǎng):對應的通信模式是Modbus TCP/IP
(2)、異步串行傳輸(各種介質如有線RS-232-/422/485/;光纖、無線等):對應的通信模式是Modbus RTU或Modbus ASCII
(3)、高速令牌傳遞網(wǎng)絡:對應的通信模式是Modbus PLUS
Modbus RTU和Modbus ASCII協(xié)議應用于串口鏈接(RS232、RS485、RS422),Modbus tcp/ip協(xié)議應用于以太網(wǎng)鏈接。
2.2、在Modbus網(wǎng)絡上傳輸
標準的Modbus口是使用RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗??刂破髂苤苯踊蚪浻蒑odem組網(wǎng)。
控制器通信使用主/從技術,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)根據(jù)主設備查詢提供的數(shù)據(jù)作出相應反應。
典型的主設備:主機和可編程儀表。
典型的從設備:可編程控制器。
主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢的,則不作任何回應。
Modbus協(xié)議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯誤檢測域。
從設備回應消息也由Modbus協(xié)議構成,包括確認要行動的域、任何要返回的數(shù)據(jù)、和一錯誤檢測域。如果在消息接收過程中發(fā)生一錯誤,或從設備不能執(zhí)行其命令,從設備將建立一錯誤消息并把它作為回應發(fā)送出去。
2.3、在其它類型網(wǎng)絡上轉輸
在其它網(wǎng)絡上,控制器使用對等技術通信,故任何控制都能初始和其它控制器的通信。這樣在單獨的通信過程中,控制器既可作為主設備也可作為從設備。提供的多個內部通道可允許同時發(fā)生的傳輸進程。
在消息位,Modbus協(xié)議仍提供了主/從原則,盡管網(wǎng)絡通信方法是“對等”。如果一控制器發(fā)送一消息,它只是作為主設備,并期望從從設備得到回應。同樣,當控制器接收到一消息,它將建立一從設備回應格式并返回給發(fā)送的控制器。
3、三種通訊方式的報文格式
Modbus協(xié)議的報文(或幀)的基本格式是:表頭 + 功能碼 + 數(shù)據(jù)區(qū) + 校驗碼
功能碼和數(shù)據(jù)區(qū)在不同類型的網(wǎng)絡都是固定不變的,表頭和校驗碼則因網(wǎng)絡底層的實現(xiàn)方式不同而有所區(qū)別。表頭包含了從站的地址,功能碼告訴從站要執(zhí)行何種功能,數(shù)據(jù)區(qū)是具體的信息。
對于不同類型的網(wǎng)絡,Modbus的協(xié)議層實現(xiàn)是一樣的,區(qū)別在于下層的實現(xiàn)方式,常見的有TCP/IP和串行通訊兩種。
Modbus TCP基于以太網(wǎng)和TCP/IP協(xié)議,Modbus RTU和Modbus ASCII則是使用異步串行傳輸(通常是RS-232/422/485)。
3.1、以太網(wǎng)(modbus tcp/ip)
對于Modbus TCP而言,主站通常稱為Client,從站稱為Server;而對于Modbus RTU和Modbus ASCII來說,主站是Master,從站是Slave。
ModbusTCP的數(shù)據(jù)幀可分為兩部分:ADU=MBAP+PDU = MBAP + 功能碼 + 數(shù)據(jù)域,MBAP 7byte,功能碼1byte,數(shù)據(jù)域不確定,由具體功能決定。
3.2、異步串行傳輸?shù)膬煞N傳輸方式(modbus RTU和modbus ASCII)
異步串行傳輸時,控制器可以設置為兩種傳輸模式(ASCII或RTU)中的任何一種在標準的Modbus網(wǎng)絡通信。用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗方式等),在配置每個控制器的時候,在一個Modbus網(wǎng)絡上的所有設備都必須選擇相同的傳輸模式和串口參數(shù)。
3.2.1、ASCII模式
當控制器設為在Modbus網(wǎng)絡上以ASCII(美國標準信息交換代碼)模式通信,在消息中的每個8Bit字節(jié)都作為兩個ASCII字符發(fā)送。這種方式的主要優(yōu)點是字符發(fā)送的時間間隔可達到1秒而不產生錯誤。
代碼系統(tǒng):
3.2.2、RTU模式
當控制器設為在Modbus網(wǎng)絡上以RTU(遠程終端單元)模式通信,在消息中的每個8Bit字節(jié)包含兩個4Bit的十六進制字符。這種方式的主要優(yōu)點是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。
代碼系統(tǒng):
3.2.3、RTU和ASCII的區(qū)別
(1)、RTU模式下,一個字節(jié)的數(shù)據(jù),傳輸?shù)木褪且粋€字節(jié)。ASCII模式下,同樣一個字節(jié)數(shù)據(jù)用了兩個字節(jié)來傳輸。例如,要傳輸數(shù)字0x5B,RTU傳輸?shù)氖?101 1011(二進制),而ASCII傳輸?shù)氖?0110101和01000010??梢?,ASCII傳輸?shù)乃俾适荝TU的一半。
(2)、ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗。
(3)、ASCII有開始標記和結束標記,RTU沒有。