1、Modbus 協(xié)議簡(jiǎn)介
Modbus 是開(kāi)放標(biāo)準(zhǔn)的 RTU,該協(xié)議被認(rèn)為是最普遍的通信協(xié)議,并且通常可以作為鏈接工程電子設(shè)備的一種手段來(lái)訪(fǎng)問(wèn)。詳細(xì)地說(shuō),這是用于通過(guò)串行線(xiàn)路或以太網(wǎng)連接在電子設(shè)備之間進(jìn)行信息傳輸?shù)耐ㄐ艆f(xié)議。在開(kāi)放標(biāo)準(zhǔn)條件下,任何人都可以實(shí)施。這可能用于連接電源域使用SCADA中的RTU 進(jìn)行控制的系統(tǒng)。
Modbus 的協(xié)議被明確定義為主從協(xié)議,這意味著作為主設(shè)備的工具將使一個(gè)或多個(gè)工具作為從設(shè)備。只能由主機(jī)(PC,HMI等)通過(guò)唯一從機(jī)地址發(fā)起請(qǐng)求,從機(jī)(終端設(shè)備)根據(jù)主機(jī)請(qǐng)求進(jìn)行響應(yīng),即半雙工通訊。該協(xié)議只允許主機(jī)發(fā)起請(qǐng)求,從機(jī)進(jìn)行被動(dòng)響應(yīng),因此從機(jī)不會(huì)主動(dòng)占用通訊線(xiàn)路造成數(shù)據(jù)沖突。
2、Modbus 的通訊方式
2.1、Modbus三種通訊方式
Modbus有下列三種通信方式:
(1)、以太網(wǎng):對(duì)應(yīng)的通信模式是Modbus TCP/IP
(2)、異步串行傳輸(各種介質(zhì)如有線(xiàn)RS-232-/422/485/;光纖、無(wú)線(xiàn)等):對(duì)應(yīng)的通信模式是Modbus RTU或Modbus ASCII
(3)、高速令牌傳遞網(wǎng)絡(luò):對(duì)應(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è)備)能初始化傳輸(查詢(xún))。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢(xún)提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。
典型的主設(shè)備:主機(jī)和可編程儀表。
典型的從設(shè)備:可編程控制器。
主設(shè)備可單獨(dú)和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果單獨(dú)通信,從設(shè)備返回一消息作為回應(yīng),如果是以廣播方式查詢(xún)的,則不作任何回應(yīng)。
Modbus協(xié)議建立了主設(shè)備查詢(xún)的格式:設(shè)備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯(cuò)誤檢測(cè)域。
從設(shè)備回應(yīng)消息也由Modbus協(xié)議構(gòu)成,包括確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。如果在消息接收過(guò)程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。
2.3、在其它類(lèi)型網(wǎng)絡(luò)上轉(zhuǎn)輸
在其它網(wǎng)絡(luò)上,控制器使用對(duì)等技術(shù)通信,故任何控制都能初始和其它控制器的通信。這樣在單獨(dú)的通信過(guò)程中,控制器既可作為主設(shè)備也可作為從設(shè)備。提供的多個(gè)內(nèi)部通道可允許同時(shí)發(fā)生的傳輸進(jìn)程。
在消息位,Modbus協(xié)議仍提供了主/從原則,盡管網(wǎng)絡(luò)通信方法是“對(duì)等”。如果一控制器發(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ū)在不同類(lèi)型的網(wǎng)絡(luò)都是固定不變的,表頭和校驗(yàn)碼則因網(wǎng)絡(luò)底層的實(shí)現(xiàn)方式不同而有所區(qū)別。表頭包含了從站的地址,功能碼告訴從站要執(zhí)行何種功能,數(shù)據(jù)區(qū)是具體的信息。
對(duì)于不同類(lèi)型的網(wǎng)絡(luò),Modbus的協(xié)議層實(shí)現(xiàn)是一樣的,區(qū)別在于下層的實(shí)現(xiàn)方式,常見(jià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)
對(duì)于Modbus TCP而言,主站通常稱(chēng)為Client,從站稱(chēng)為Server;而對(duì)于Modbus RTU和Modbus ASCII來(lái)說(shuō),主站是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ò)通信。用戶(hù)選擇想要的模式,包括串口通信參數(shù)(波特率、校驗(yàn)方式等),在配置每個(gè)控制器的時(shí)候,在一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。
3.2.1、ASCII模式
當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以ASCII(美國(guó)標(biāo)準(zhǔn)信息交換代碼)模式通信,在消息中的每個(gè)8Bit字節(jié)都作為兩個(gè)ASCII字符發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達(dá)到1秒而不產(chǎn)生錯(cuò)誤。
代碼系統(tǒng):
- 十六進(jìn)制,ASCII字符0...9,A...F
- 消息中的每個(gè)ASCII字符都是一個(gè)十六進(jìn)制字符組成
- 每個(gè)字節(jié)的位:1個(gè)起始位、7個(gè)數(shù)據(jù)位(最小的有效位先發(fā)送)、1個(gè)奇偶校驗(yàn)位(無(wú)校驗(yàn)則無(wú))、1個(gè)停止位(有校驗(yàn)時(shí))、2個(gè)Bit(無(wú)校驗(yàn)時(shí))
- 錯(cuò)誤檢測(cè)域:LRC(縱向冗長(zhǎng)檢測(cè))
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):
- 8位二進(jìn)制,十六進(jìn)制數(shù)0...9,A...F
- 消息中的每個(gè)8位域都是兩個(gè)十六進(jìn)制字符組成
- 每個(gè)字節(jié)的位:1個(gè)起始位、8個(gè)數(shù)據(jù)位(最小的有效位先發(fā)送)、1個(gè)奇偶校驗(yàn)位(無(wú)校驗(yàn)則無(wú))、1個(gè)停止位(有校驗(yàn)時(shí)),2個(gè)Bit(無(wú)校驗(yàn)時(shí))
- 錯(cuò)誤檢測(cè)域:CRC(循環(huán)冗長(zhǎng)檢測(cè))
3.2.3、RTU和ASCII的區(qū)別
(1)、RTU模式下,一個(gè)字節(jié)的數(shù)據(jù),傳輸?shù)木褪且粋€(gè)字節(jié)。ASCII模式下,同樣一個(gè)字節(jié)數(shù)據(jù)用了兩個(gè)字節(jié)來(lái)傳輸。例如,要傳輸數(shù)字0x5B,RTU傳輸?shù)氖?101 1011(二進(jìn)制),而ASCII傳輸?shù)氖?0110101和01000010。可見(jiàn),ASCII傳輸?shù)乃俾适荝TU的一半。
(2)、ASCII模式采用LRC校驗(yàn),RTU模式采用16位CRC校驗(yàn)。
(3)、ASCII有開(kāi)始標(biāo)記和結(jié)束標(biāo)記,RTU沒(méi)有。
帝晶串口屏滿(mǎn)足您的所有尺寸需求
-
ModBus協(xié)議
+關(guān)注
關(guān)注
3文章
177瀏覽量
33416 -
串口協(xié)議
+關(guān)注
關(guān)注
0文章
14瀏覽量
8121 -
串口屏
+關(guān)注
關(guān)注
8文章
532瀏覽量
37422
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論