ModBus是什么?干什么用的?我們一起來(lái)了解下吧。
作為一些大型工業(yè)商,其實(shí)需要不同廠商提供的控制設(shè)備來(lái)組成一個(gè)工業(yè)網(wǎng)路,有了網(wǎng)絡(luò)是不是需要監(jiān)控?。烤拖衲愕钠?chē)一樣,其實(shí)有一個(gè)總的控制系統(tǒng)在監(jiān)控著油箱,行駛安全等等很多信息,所以才呈現(xiàn)給我們一個(gè)安全的駕駛體驗(yàn)。那么開(kāi)發(fā)總的控制系統(tǒng)如果那么多的設(shè)備都各自有一套通信方案,開(kāi)發(fā)難度可想而知了吧?這個(gè)時(shí)候就需要有一個(gè)標(biāo)準(zhǔn)了,那么這個(gè)modbus就是自動(dòng)控制業(yè)界的標(biāo)準(zhǔn),其實(shí)可以理解為我們交互的一個(gè)標(biāo)準(zhǔn)協(xié)議。這樣對(duì)開(kāi)發(fā)進(jìn)度提升了,對(duì)通信安全提升了,還方便多個(gè)鏈路之間的通信,集中監(jiān)控也更加方便了。
既然是通信的標(biāo)準(zhǔn),也就是規(guī)范了通信的應(yīng)用層。根據(jù)這個(gè)標(biāo)準(zhǔn)我們各自去進(jìn)行工作就好了。
這個(gè)協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)的使用的消息結(jié)構(gòu),而不管是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。
我們看到網(wǎng)絡(luò)中每種設(shè)備(PLC、HMI、控制面板、驅(qū)動(dòng)程序、動(dòng)作控制、輸入/輸出設(shè)備)都能使用modbus協(xié)議來(lái)啟動(dòng)遠(yuǎn)程操作。
通常我們?cè)诖型ㄐ胖杏玫絤odbus都是主從結(jié)構(gòu),總線上有一個(gè)主節(jié)點(diǎn),一個(gè)或多個(gè)從節(jié)點(diǎn)。從節(jié)點(diǎn)地址是唯一的,通信模式是主節(jié)點(diǎn)發(fā)起請(qǐng)求,子節(jié)點(diǎn)沒(méi)有收到來(lái)自主節(jié)點(diǎn)的請(qǐng)求時(shí),從不會(huì)發(fā)送數(shù)據(jù),子節(jié)點(diǎn)之間從不會(huì)互相通信。主節(jié)點(diǎn)在同一時(shí)刻只會(huì)發(fā)起一個(gè)modbus事物處理。
我們說(shuō)到這種協(xié)議是主從協(xié)議模式,主節(jié)點(diǎn)可以廣播給所有節(jié)點(diǎn)請(qǐng)求,這就是廣播模式,這種模式就是從節(jié)點(diǎn)不需要應(yīng)答,接收到處理就可以了,地址0是專(zhuān)門(mén)用于表示廣播數(shù)據(jù)的。
還有一種是單播模式,就是主節(jié)點(diǎn)以特定地址訪問(wèn)子節(jié)點(diǎn),子節(jié)點(diǎn)接到并處理完請(qǐng)求后,子節(jié)點(diǎn)向主節(jié)點(diǎn)返回一個(gè)應(yīng)答。
那我們一起看下協(xié)議描述:
首先我們看兩個(gè)概念,ADU:應(yīng)用數(shù)據(jù)單元;PDU:協(xié)議數(shù)據(jù)單元??梢岳斫鉃镻DU就是我們的應(yīng)用層協(xié)議解析需要的。
其實(shí)簡(jiǎn)單來(lái)看就是這樣的一個(gè)結(jié)構(gòu),地址域只針對(duì)于從節(jié)點(diǎn)而言,也有規(guī)定(0是廣播地址,1~247是從節(jié)點(diǎn)地址,248-255預(yù)留)其實(shí)就是一個(gè)字節(jié)的分配了。
那么功能碼就是指明要執(zhí)行的動(dòng)作。
功能碼后面的數(shù)據(jù)域就很容易理解了,是表示含有請(qǐng)求和響應(yīng)參數(shù)的數(shù)據(jù)域。數(shù)據(jù)域雖然給了長(zhǎng)度范圍,也可以是沒(méi)有的,功能碼就能代表操作了。
后面還有一個(gè)校驗(yàn),就是做過(guò)通信的都知道校驗(yàn)是必須要的。否則怎么確保數(shù)據(jù)的正確性。
對(duì)于ADU的長(zhǎng)度也是有限制的,最大ADU是256個(gè)字節(jié),具體在什么物理層上通信對(duì)于PDU就有區(qū)別了,比如RS232/RS485 ADU = 地址域(1字節(jié))+ PDU(253字節(jié))+CRC(2字節(jié))=256字節(jié);還支持以太網(wǎng)口,也就是在TCP/IP協(xié)議層上封裝了一層modbus協(xié)議,這樣應(yīng)用范圍更廣了。那么TCP MODBUS ADU = 249字節(jié) + MBAP(7字節(jié)) =256字節(jié)。
到這里我們就可以知道了協(xié)議結(jié)構(gòu)、協(xié)議模型、協(xié)議規(guī)則。簡(jiǎn)單來(lái)說(shuō)就是主機(jī)是老大,它說(shuō)了算,它想設(shè)置或者讀取哪個(gè)從機(jī),從機(jī)才能做出響應(yīng),所以說(shuō)從機(jī)是被動(dòng)的。當(dāng)廣播發(fā)送的時(shí)候無(wú)需應(yīng)答,這就是定義的規(guī)則,有了規(guī)則做事就方便多了啊。
具體的還詳細(xì)做了主機(jī)的處理模型,從機(jī)的處理模型,所有正常的和異常的處理都在規(guī)則里面了,是不是很貼心?;旧习堰壿嬯P(guān)系都考慮到了,只要按照邏輯關(guān)系圖去寫(xiě)程序就好了。那么對(duì)于解析而言,主要還是對(duì)于功能碼和數(shù)據(jù)域的值了。也就是到了上層應(yīng)用了。
對(duì)于串行傳輸還有兩種模式,RTU模式和ASCII模式。
我們先來(lái)了解一下RTU模式
對(duì)于報(bào)文格式就是上面這樣的,子節(jié)點(diǎn)收到信息先解析是否是自己節(jié)點(diǎn),然后對(duì)校驗(yàn)做出比對(duì)處理。然后就是上層的功能碼和數(shù)據(jù)的處理了。除了數(shù)據(jù)解析還有一個(gè)超時(shí)處理,總不能一直接收吧,有個(gè)超時(shí)的要求,兩個(gè)字節(jié)之間間隔大于1.5個(gè)字符時(shí)間,報(bào)文幀就被認(rèn)為不完整應(yīng)該被接收節(jié)點(diǎn)丟棄。兩幀數(shù)據(jù)之間也有時(shí)間間隔要求,最小間隔是3.5個(gè)字符時(shí)間。
這個(gè)模式也是我們?cè)?a target="_blank">工業(yè)控制中通用的模式,協(xié)議緊湊。
還有一個(gè)ASCII模式
我們都知道ASCII碼是一個(gè)字符一個(gè)字符發(fā)送的,也就是表示0-9,A-F;那么就是說(shuō)一個(gè)字符表示四位二進(jìn)制,也就是我們前面說(shuō)的一個(gè)字節(jié)需要兩個(gè)ASCII字符表示,所以這個(gè)相對(duì)RTU模式時(shí)序要求不高,自然應(yīng)用場(chǎng)合也是有區(qū)別的。
跟RTU不同的是還增加了一個(gè)起始字符和結(jié)束字符,校驗(yàn)方式是LRC校驗(yàn)方式,校驗(yàn)不包含起始字符和結(jié)束字符的。對(duì)比而言,我們看到是一個(gè)字節(jié)由兩個(gè)字符表示的。字符間隔最大可以達(dá)到1S,相對(duì)寬松。
結(jié)構(gòu)清晰了,規(guī)則有了就是可以去解析了,主要還是對(duì)功能碼和數(shù)據(jù)域的規(guī)則解析了,不同的功能碼要處理什么功能的數(shù)據(jù)區(qū),這個(gè)都是要根據(jù)規(guī)則去解析處理。
解析這種標(biāo)準(zhǔn)協(xié)議首先就是要分好層,邏輯關(guān)系要處理清楚,模塊處理要結(jié)合實(shí)際應(yīng)用映射關(guān)系,對(duì)于從節(jié)點(diǎn)有接收有應(yīng)答,就是一個(gè)完整的閉環(huán)。你對(duì)modbus了解了嗎?
責(zé)任編輯:haq
-
協(xié)議
+關(guān)注
關(guān)注
2文章
619瀏覽量
41119 -
MODBUS
+關(guān)注
關(guān)注
28文章
2464瀏覽量
83399
原文標(biāo)題:白話文講解ModBus協(xié)議
文章出處:【微信號(hào):CanaanTech,微信公眾號(hào):嘉楠科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
PROFIBUS轉(zhuǎn)MODBUS協(xié)議轉(zhuǎn)換網(wǎng)關(guān):玻璃制造“智能熔爐”的數(shù)據(jù)紐帶
Modbus協(xié)議的深度剖析
Modbus協(xié)議轉(zhuǎn)HTTP協(xié)議,實(shí)現(xiàn)JSON格式對(duì)接MES等系統(tǒng)平臺(tái)
邁向工業(yè)4.0的第一步:從Modbus無(wú)線傳輸開(kāi)始
【RA4M2-SENSOR】—— 10.實(shí)現(xiàn)modbus從站協(xié)議棧
什么是Modbus TCP協(xié)議
Modbus協(xié)議轉(zhuǎn)換:讓工業(yè)設(shè)備輕松“對(duì)話”
Modbus轉(zhuǎn)Profinet網(wǎng)關(guān):工控機(jī)的“逆襲神器”
告別協(xié)議沖突!Modbus轉(zhuǎn)Profinet助力風(fēng)速風(fēng)向儀無(wú)縫對(duì)接
工業(yè)通信界“黑科技”來(lái)襲Modbus轉(zhuǎn)Profinet,主打一個(gè) “泰酷辣”
DLT645協(xié)議和Modbus協(xié)議有什么區(qū)別
西門(mén)子200smart ST20與三菱FX5U-64MT/ES的Modbus TCP通信
從"聾啞設(shè)備"到超級(jí)工廠:EtherCAT轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)正在重構(gòu)工業(yè)未來(lái)
ModBus協(xié)議是什么以及作用
評(píng)論