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