【
儀表網(wǎng) 行業(yè)科普】Modbus協(xié)議與RS-485為工業(yè)物聯(lián)網(wǎng)應(yīng)用提供了簡單、可靠、低成本的通信方案,并使工業(yè)過程高效運行。
從最初的物聯(lián)網(wǎng)(IoT)發(fā)展到現(xiàn)在的工業(yè)4.0,在這個過程中,我們在工業(yè)物聯(lián)網(wǎng)(IIoT)中增加了一個額外的“I”,并將大數(shù)據(jù)、人工智能和機器學(xué)習(xí)(AI/ML)的概念引入到自動化與控制領(lǐng)域。在這些閃亮的新技術(shù)背后,潛藏著一個低調(diào)的協(xié)議:Modbus。
Modbus通信協(xié)議是最初由Modicon公司(后來被施耐德電氣收購)于1979年發(fā)布的,并迅速成為工業(yè)通信領(lǐng)域的業(yè)界
標(biāo)準(zhǔn)。其成功得益于以下特性:簡單、易于部署且開源;異步串行所需的處理資源最少;差分串行驅(qū)動,在惡劣環(huán)境中具有出色的抗噪性;以及支持長距離多點串行總線(1200米無需要
中繼器/交換機)。
經(jīng)過四十多年的快速發(fā)展,工業(yè)網(wǎng)絡(luò)的數(shù)據(jù)采集、通信和實時處理的規(guī)模已遠(yuǎn)超20世紀(jì)80年代的預(yù)期。然而,IIoT中仍存在大量幾十年都未發(fā)生根本性變化的小型設(shè)備。廣泛分布于系統(tǒng)中的邊緣設(shè)備和傳感器,需要一種可靠且低成本的方式向中央IIoT控制器傳輸數(shù)據(jù)。相比于部署加固型以太網(wǎng)方案僅傳輸少量字節(jié),Modbus RTU提供了一種可靠的通信手段,甚至可通過簡單的8位微控制器實現(xiàn)低成本部署。
Modbus協(xié)議概述和工作原理
Modbus采用客戶端-服務(wù)器架構(gòu)(此前稱為主從模式)。在每個Modbus網(wǎng)絡(luò)中,都會指定一個設(shè)備作為客戶端??蛻舳耸俏ㄒ豢梢灾鲃影l(fā)起通信的設(shè)備,而服務(wù)器(從設(shè)備)僅在收到客戶端請求后作出響應(yīng)。這種結(jié)構(gòu)確保了通信的有序性和穩(wěn)定性,適用于各種工業(yè)自動化應(yīng)用。
Modbus RTU是目前最常見的Modbus串行通信實現(xiàn)方式。所有Modbus設(shè)備都必須支持 RTU 模式,而部分設(shè)備還兼容 ASCII 模式,以滿足早期老舊應(yīng)用(如調(diào)制解調(diào)器通信)的需求。為了簡化討論,本文中所有涉及串行 Modbus 的內(nèi)容均默認(rèn)基于 RTU 實現(xiàn)。
在 Modbus網(wǎng)絡(luò)中,每個服務(wù)器設(shè)備都被分配一個唯一的地址,范圍從1到247??蛻舳送ㄟ^該地址,向特定服務(wù)器節(jié)點請求或發(fā)送數(shù)據(jù),從而實現(xiàn)高效的數(shù)據(jù)交換和設(shè)備控制。Modbus將服務(wù)器數(shù)據(jù)分為四組:離散線圈、離散輸入、輸入寄存器和保持寄存器。
如何將Modbus與工業(yè)控制結(jié)合使用?
當(dāng)使用工業(yè)控制設(shè)備,如PLC、人機界面(HMI)和變頻器時,Modbus幀通常在后臺處理,功能代碼對工程師來說是透明的(工程師只需從下拉列表中選擇“讀取寄存器”)。然而,對于高級故障排除,尤其是在部署自定義嵌入式傳感器或邊緣控制器硬件時,了解Modbus幀的結(jié)構(gòu)變得非常重要。通過在PC上使用串行總線監(jiān)控軟件,或使用具有協(xié)議解碼功能的數(shù)字示波器,工程師可以識別并監(jiān)控在Modbus串行網(wǎng)絡(luò)上傳輸?shù)拿總€請求和響應(yīng)消息的內(nèi)容。
讀取數(shù)據(jù)的請求(由客戶端發(fā)起)包含服務(wù)器設(shè)備的節(jié)點地址、讀取功能代碼、請求的數(shù)據(jù)地址以及要讀取的連續(xù)16位寄存器的數(shù)量。例如,要從服務(wù)器節(jié)點09讀取數(shù)據(jù)寄存器10和11,客戶端會發(fā)送包含8個字節(jié)的請求。串行總線上的每個服務(wù)器都會接收到此消息,但只有節(jié)點09會確認(rèn)它已收到命令。假設(shè)寄存器10的值為3243(0x0cab),寄存器11的值為4660(0x1234)。在這種情況下,服務(wù)器節(jié)點09將向客戶端發(fā)送響應(yīng),總共9個字節(jié)。 服務(wù)器會驗證響應(yīng)是否來自預(yù)期的節(jié)點(09),確保該節(jié)點已對預(yù)期的功能代碼做出響應(yīng),并檢查響應(yīng)的數(shù)據(jù)量是否符合要求。
每個串行幀以循環(huán)冗余校驗(CRC)結(jié)尾。CRC算法通過一系列異或和移位操作來計算兩字節(jié)值。在接收到串行傳輸時,接收端會重新計算CRC值。如果計算出的CRC值與傳輸中的值不匹配,則表明數(shù)據(jù)在傳輸過程中發(fā)生了損壞,此時請求將被忽略(通常會進(jìn)行重試)。
向服務(wù)器節(jié)點寫入數(shù)據(jù)的請求(由客戶端發(fā)起)與讀取請求非常相似。該請求包含服務(wù)器設(shè)備的節(jié)點地址、寫功能代碼、要寫的第一個寄存器的數(shù)據(jù)地址、要寫入的字節(jié)數(shù)以及要寫入的數(shù)據(jù)。例如,要將值4和256分別寫入設(shè)備節(jié)點09 上的數(shù)據(jù)寄存器10和11,客戶端會發(fā)送請求。網(wǎng)絡(luò)上的每臺服務(wù)器都會收到該消息,但只有節(jié)點 09 會處理該請求。完成請求的任務(wù)(將4寫入寄存器10,將256寫入寄存器11)后,節(jié)點09將向客戶端發(fā)送確認(rèn)消息,表明任務(wù)已成功完成。服務(wù)器將再次驗證是否完成了預(yù)期節(jié)點地址的寫入。如果出現(xiàn)異常錯誤或請求超時,服務(wù)器可以選擇重試操作或標(biāo)記客戶端節(jié)點為錯誤狀態(tài)。
讀取和寫入其它數(shù)據(jù)類型(如線圈和輸入)遵循類似格式。在所有情況下,客戶端都會發(fā)起請求,而被請求的服務(wù)器節(jié)點則會確認(rèn)任務(wù)的完成。
廣播消息是這種請求/確認(rèn)交換中的唯一例外。當(dāng)網(wǎng)絡(luò)中存在多個相同的服務(wù)器節(jié)點時,服務(wù)器可以向所有設(shè)備同時廣播消息??蛻舳送ㄟ^廣播地址00而不是節(jié)點地址發(fā)起請求。所有服務(wù)器節(jié)點都能識別并響應(yīng)該00請求,無論其節(jié)點地址如何。由于命令是同時發(fā)往所有節(jié)點,因此不會收到任何響應(yīng)。當(dāng)客戶端需要同步所有連接的服務(wù)器節(jié)點上的日期或時間時,廣播消息非常有用。廣播還可以幫助在多個邊緣節(jié)點中同步信號,而無需按順序逐一向每個節(jié)點發(fā)送消息。
采用RS-485的五個原因
Modbus協(xié)議可以在各種不同的物理層上實現(xiàn)。傳統(tǒng)的裝置通常使用TIA-422(RS-422)標(biāo)準(zhǔn),而TIA-232(RS-232)標(biāo)準(zhǔn)則可能用于一些特定的應(yīng)用。然而,這兩種標(biāo)準(zhǔn)在現(xiàn)代應(yīng)用中并不常見。
EIA/TIA-485(RS-485)是當(dāng)今最常見和最通用的串行接口。RS-485的五個關(guān)鍵特性使其非常適合工業(yè)控制通信應(yīng)用:
1.差分信號具有出色的抗信號噪聲性能;
2.多點線性總線拓?fù)湓试S連接多個節(jié)點;
3.無需額外硬件即可支持長達(dá)1200米的總線長度;
4.異步通信易于與低成本微控制器和工業(yè)無線發(fā)射機集成;
5.將收發(fā)器集成到嵌入式控制中的成本低廉。
Modbus中的信號傳輸機制
單端信號傳輸是數(shù)字信號從發(fā)射器傳輸?shù)浇邮掌鞯淖詈唵畏绞?例如RS-232)。在單端網(wǎng)絡(luò)中,發(fā)射器通過開關(guān)電壓源來發(fā)送信號,接收器則將信號與公共參考進(jìn)行比較,將電壓脈沖轉(zhuǎn)化為串行數(shù)據(jù)傳輸?shù)?和0。然而,單端信號容易受到電磁干擾(EMI)的影響,因為所有設(shè)備共享相同的公共參考。當(dāng)線路上引入噪聲時,信號和參考之間的電壓差可能變得難以區(qū)分,從而導(dǎo)致1和0的錯誤解讀。
差分信號傳輸通過主動驅(qū)動兩條傳輸線來傳輸數(shù)據(jù)(見圖1)。這種方法具有優(yōu)異的抗噪能力,因為接收器會比較非反相信號和反相信號。當(dāng)線路上發(fā)生干擾時,由于信號在兩條線路上的變化相同,接收器可以消除這種干擾,從而確保數(shù)據(jù)的準(zhǔn)確傳輸。這種設(shè)計有效地避免了外部噪聲的影響,提高了信號的可靠性。
在多點線性串行總線上,所有設(shè)備通常都連接到相同的兩條信號線。主母線電纜必須是線性的,這意味著所有設(shè)備都接入同一根總線電纜,而不是通過“Y”形或“星形”連接。為了確??偩€的信號質(zhì)量,設(shè)備的“分接”導(dǎo)體應(yīng)該盡可能短,以確??偩€看起來像單一線路。總線有兩個明確的終點,不能更多也不能更少。線路終端位于線性總線的兩端??蛻舳伺c服務(wù)器的物理位置或服務(wù)器節(jié)點地址的分配數(shù)量并不重要。圖2所示的四個設(shè)備可以按任何順序重新排列,而不會影響總線的操作或配置。
Modbus規(guī)范確保任何RS-485裝置至少支持32個設(shè)備(包括客戶端)。這些限制是由每個收發(fā)器對信號線施加的電壓降和串行總線的最大允許長度決定的。值得注意的是,32個設(shè)備并不是硬性上限。如果節(jié)點收發(fā)器的規(guī)格不明確,則通常需要將設(shè)備數(shù)量限制為32個。然而,現(xiàn)代高阻抗RS-485收發(fā)器的負(fù)載額定值通常非常低。例如,如果所有節(jié)點都使用1/8單位負(fù)載收發(fā)器,那么允許的設(shè)備總數(shù)將增加到256個。
此外,信號中繼器提供了一種經(jīng)濟高效的方式,以增加允許的節(jié)點數(shù)量。有源中繼器能夠?qū)蓚€滿載的總線段連接在一起,從而作為一個網(wǎng)絡(luò)運行。在定制的IoT傳感器網(wǎng)絡(luò)中,如果需要,充當(dāng)中繼器的第二個收發(fā)器可以輕松且低成本地嵌入到設(shè)備控制設(shè)計中。
Modus的部署和網(wǎng)絡(luò)規(guī)劃
RS-485安裝的最大總線長度(節(jié)點之間的所有電纜段的總和)通常限制為1200米。使用合適的電纜規(guī)格至關(guān)重要,因為不當(dāng)?shù)碾娎|是Modbus(RS-485)裝置失敗的主要原因之一。在RS-485之上的Modbus,要求使用屏蔽雙絞線(STP)電纜,通常為24 AWG。然而,并非所有STP電纜的性能都相同。為了確保最佳性能,電纜需要具有120Ω的標(biāo)稱特性阻抗和較低的導(dǎo)體電容(小于15pf/ft)。百通 9841通常被認(rèn)為是RS-485電纜的黃金標(biāo)準(zhǔn)。如果考慮使用替代電纜,請仔細(xì)比較規(guī)格。雖然在測試臺上,其它電纜結(jié)構(gòu)(如Cat5)可能工作正常,在現(xiàn)場也可能勉強運行數(shù)月,但它們無法提供專門設(shè)計的電纜那樣的長期可靠性。
Modbus實施指南要求在RS-485網(wǎng)絡(luò)上增加線路終端。在應(yīng)用終端時,網(wǎng)絡(luò)兩端的終端必須始終一致。在實踐中,與終端相關(guān)的權(quán)衡是不可避免的。終端的主要目的是抑制信號反射——防止信號從總線的終端反射并干擾后續(xù)的數(shù)據(jù)脈沖。每次信號到達(dá)總線終端時,都會發(fā)生反射并損失一部分能量。經(jīng)過3到6次反射后,信號通常會衰減到足以不再對系統(tǒng)造成風(fēng)險的程度。
影響終端的第二個變量是位寬。對于9600波特率,信號在采樣之前有大約50微秒的時間來穩(wěn)定,這為信號提供了更多的穩(wěn)定時間。然而,在115k波特率下,信號僅有大約4微秒的時間來穩(wěn)定,這使得信號更容易受到反射的干擾。隨著波特率的增加,信號的穩(wěn)定時間減少,因此信號反射的影響更為顯著,進(jìn)而增加了對終端的需求。
為簡單起見,許多設(shè)備制造商建議在所有網(wǎng)絡(luò)上使用120Ω終端,無論長度或比特率如何。然而,電阻終端在具有大量收發(fā)器裝置負(fù)載的短網(wǎng)絡(luò)上并不理想,因為電阻終端會在總線上引入電壓降。隨著電壓降的增加,反相和非反相信號之間的電壓差減小,使網(wǎng)絡(luò)更容易受到干擾。很少有制造商實施推薦的電阻電容器(RC)終端(120Ω電阻與1nF電容器串聯(lián))。添加串聯(lián)電容器消除了與通過終端電阻器的直流穩(wěn)態(tài)電流相關(guān)的電壓降,在不犧牲信號電壓裕度的情況下,提供了所需的反射信號衰減。增加電容的唯一潛在缺點是引入RC延遲,這可能會影響需要非常高比特率的應(yīng)用,超過Modbus RS-485應(yīng)用中通常使用的比特率。
線極化不是必須的。 如果要實現(xiàn),則它只能在網(wǎng)絡(luò)上實現(xiàn)一次 (通常集成到客戶端設(shè)備中)。極化電阻器的目的是在沒有設(shè)備傳輸時將信號線“上拉”和“下拉”到已知狀態(tài)。除非針對特定的應(yīng)用情況,否則通常不會實施極化。
在網(wǎng)絡(luò)規(guī)劃過程中,需要重點考慮以下三個關(guān)鍵因素:所需傳輸?shù)臄?shù)據(jù)寄存器數(shù)量、數(shù)據(jù)傳輸所需的時間,以及數(shù)據(jù)查詢的頻率要求。為了最大限度地降低電磁干擾和信號反射的影響,同時確保系統(tǒng)可靠性,建議初始波特率選擇9600或19200。只有在確實需要更高傳輸速率的情況下,才考慮采用更高的比特率設(shè)置。
Modbus(RS-485)能夠?qū)崿F(xiàn)長距離連接分布廣泛的節(jié)點,而無需中繼器和交換機,這對許多低帶寬物聯(lián)網(wǎng)監(jiān)控應(yīng)用非常有益。串行通信的異步特性和對延遲的容忍性,也使其易于創(chuàng)建混合無線網(wǎng)絡(luò)。如果鋪設(shè)1200米長的電纜不切實際,Modbus串行幀可以簡單地封裝在射頻(RF)幀中,通過空中發(fā)送并由接收無線電轉(zhuǎn)換回有線信號。使用這種方法,從有線到無線的切換,對網(wǎng)絡(luò)上的設(shè)備是透明的。通過使用900mhz工業(yè)網(wǎng)狀網(wǎng)絡(luò)技術(shù),Modbus設(shè)備的網(wǎng)絡(luò)可以很容易地擴展到幾平方英里,而不再局限于1200米的總線電纜距離。
Modbus何時適用于自動化應(yīng)用?
Modbus的應(yīng)用不僅局限于串行通信領(lǐng)域。Modbus-TCP作為一種廣泛采用的實現(xiàn)方式,它保留了與Modbus-RTU相同的數(shù)據(jù)類型和功能代碼體系,但通過將請求和響應(yīng)封裝在TCP/IP數(shù)據(jù)包中,實現(xiàn)了基于以太網(wǎng)的傳輸能力。
對于需要高速傳輸和大帶寬的應(yīng)用場景,TCP/IP無疑是理想的選擇。然而,在許多數(shù)據(jù)采集應(yīng)用中,基于RS-485的Modbus RTU仍然是一種極具吸引力且經(jīng)濟高效的替代方案。值得注意的是,這兩種硬件實現(xiàn)方式并非相互排斥——在典型的控制器系統(tǒng)中,通常會根據(jù)具體的數(shù)據(jù)傳輸需求,同時管理TCP/IP和RS-485設(shè)備網(wǎng)絡(luò)。Modbus在過去四十年中的發(fā)展細(xì)節(jié)似乎令人目不暇接,但就其核心而言,Modbus和RS-485提供了一種簡單可靠的通信解決方案,可將構(gòu)成工業(yè)物聯(lián)網(wǎng)的眾多 “物 ”連接起來,并使工業(yè)過程高效運行。
所有評論僅代表網(wǎng)友意見,與本站立場無關(guān)。