第一篇 串行鏈路上MODBUS協(xié)議應(yīng)用簡(jiǎn)介
Modbus 是由Modicon(現(xiàn)在的施耐德電氣公司)在 1979 年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議。Modbus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過(guò)公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、也包括軟件。Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通信語(yǔ)言。通過(guò)此協(xié)議,控制器互相之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
Modbus可以在基于串行鏈路和以太TCP/IP網(wǎng)絡(luò)上進(jìn)行通信。串行鏈路和 TCP/IP 上的 Modbus 是根據(jù)相應(yīng) ISO 層模型說(shuō)明的兩個(gè)通信規(guī)程。
下圖強(qiáng)調(diào)指出了該標(biāo)準(zhǔn)的主要部分。綠色方框表示規(guī)范。灰色方框表示已有的國(guó)際標(biāo)準(zhǔn)。
01 傳輸模式
本文主要介紹在基于串行鏈路上常用的兩種傳輸模式(ASCII和RTU),Modbus 串行鏈路協(xié)議是一個(gè)主-從協(xié)議,在同一時(shí)刻,只有一個(gè)主節(jié)點(diǎn),一個(gè)或多個(gè)子節(jié)點(diǎn)連接于同一串行總線。子節(jié)點(diǎn)不會(huì)主動(dòng)發(fā)送數(shù)據(jù),只有在收到來(lái)自主節(jié)點(diǎn)的請(qǐng)求時(shí)才會(huì)發(fā)送,主節(jié)點(diǎn)在同一時(shí)刻只會(huì)發(fā)起一個(gè)Modbus事務(wù)處理。
為了方便理解,我們將主節(jié)點(diǎn)以及子節(jié)點(diǎn)分別稱為主設(shè)備和從設(shè)備。
主設(shè)備可單獨(dú)與從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果是單獨(dú)通信,從設(shè)備返回消息作為回應(yīng);如果是廣播方式查詢的,則不作任何回應(yīng)。
當(dāng)數(shù)據(jù)幀到達(dá)終端設(shè)備(從設(shè)備)時(shí),它通過(guò)一個(gè)簡(jiǎn)單的“端口”進(jìn)入被尋址到的設(shè)備,該設(shè)備去掉數(shù)據(jù)幀的“信封”(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒(méi)有錯(cuò)誤,就執(zhí)行數(shù)據(jù)所請(qǐng)求的任務(wù),然后將自己生成的數(shù)據(jù)加入到取得的“信封”中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址、被執(zhí)行了的命令、執(zhí)行命令生成的被請(qǐng)求數(shù)據(jù)和一個(gè)校驗(yàn)碼。發(fā)生任何錯(cuò)誤都不會(huì)有成功的響應(yīng),或者返回一個(gè)錯(cuò)誤指示幀。
Modbus總線拓?fù)浣Y(jié)構(gòu)
02 MODBUS消息幀
Modbus 協(xié)議定義了一個(gè)與基礎(chǔ)通信層無(wú)關(guān)的簡(jiǎn)單協(xié)議數(shù)據(jù)單元(PDU)。特定總線或網(wǎng)絡(luò)上的 Modbus 協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域。
通用MODBUS幀
用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗(yàn)方式等),在配置每個(gè)控制器的時(shí)候,在一個(gè) Modbus 網(wǎng)絡(luò)上所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。
兩種模式分類
ASCII消息幀結(jié)構(gòu)
RTU消息幀結(jié)構(gòu)
所選的 ASCII 或 RTU 方式僅適用于標(biāo)準(zhǔn)的 Modbus 網(wǎng)絡(luò),它定義了在這些網(wǎng)絡(luò)上連續(xù)傳輸?shù)南⒍蔚拿恳晃?,以及決定怎樣將信息打包成消息域和如何解碼。
地址域在幀的開(kāi)始部分,由一個(gè)字節(jié)(8 位二進(jìn)制)組成,十進(jìn)制位 0255,在我們系統(tǒng)中只使用 1147,其它地址保留。這些位標(biāo)明了用戶指定的從設(shè)備的地址,該設(shè)備將接受來(lái)自與之相連主設(shè)備數(shù)據(jù)。每個(gè)從設(shè)備的地址必須是唯一的,僅僅被尋址到的從設(shè)備會(huì)響應(yīng)包含了該地址的查詢。當(dāng)從設(shè)備發(fā)送回一個(gè)響應(yīng),響應(yīng)中的從設(shè)備地址數(shù)據(jù)便告訴了主設(shè)備是哪臺(tái)設(shè)備與之進(jìn)行通信。
功能碼的作用是指明從設(shè)備要執(zhí)行的動(dòng)作。
數(shù)據(jù)域包括附加信息,從設(shè)備使用這個(gè)信息執(zhí)行功能碼定義的操作。這個(gè)域還包括離散項(xiàng)目和寄存器地址、處理的項(xiàng)目數(shù)量以及域中的實(shí)際數(shù)據(jù)字節(jié)數(shù)。在某種請(qǐng)求中,數(shù)據(jù)域可以是不存在的(0 長(zhǎng)度),在此情況下服務(wù)器不需要任何附加信息,功能碼僅說(shuō)明操作。
錯(cuò)誤校驗(yàn)域是對(duì)報(bào)文內(nèi)容執(zhí)行“冗余校驗(yàn)”的計(jì)算結(jié)果。根據(jù)不同的傳輸模式(RTU 或 ASCII)使用兩種不同的計(jì)算方法。
-
控制器
+關(guān)注
關(guān)注
112文章
16367瀏覽量
178112 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7494瀏覽量
87979 -
MODBUS
+關(guān)注
關(guān)注
28文章
1805瀏覽量
77011 -
RTU
+關(guān)注
關(guān)注
0文章
413瀏覽量
28681 -
總線協(xié)議
+關(guān)注
關(guān)注
0文章
115瀏覽量
14852
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論