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