現代工業控制系統的架構早已網絡化,隨著工業控制系統性能的提升,網絡化需求也在不斷演進,其主要特征表現為:各類控制系統的網絡互連與互操作;控制器或控制站與遠程I/O的通信連接;現場總線應用的日趨廣泛;與管理信息系統的數據集成。因此,建立不同控制系統之間的通信,已成為自動化工程實施中的常態化需求,而MODBUS則是最為常用的通信方式之一。
MODBUS通信協議
1、MODBUS協議簡介
MODBUS通信協議是Modicon公司1979年提出的一種報文傳輸協議,它在工業控制領域中得到了廣泛的應用,已成為一種事實上的工業標準。不同廠商生產的控制設備通過MODBUS協議可以進行數據傳輸,實現集中監控。許多工控產品,例如:DCS,PLC,變頻器,人機界面和自動化儀表等,大都支持MODBUS協議。MODBUS網絡體系結構如圖1所示。
圖1 MODBUS網絡體系結構示意
MODBUS通信協議包括3類、4個子協議,分別是:
①基于串行鏈路的MODBUS RTU與MODBUS ASCII通信協議。
②基于TCP/IP網絡的MODBUS TCP通信協議。
③基于令牌環網的MODBUS Plus通信協議。事實上,MODBUS協議只定義了OSI模型的第2和7層,即:應用層和數據鏈路層。它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信,并將串行鏈路上的協議標準化,以便在1個主站和1個或多個從站之間交換MODBUS請求。
④MODBUS應用層報文傳輸協議。提供了連接于總線或網絡的設備之間的客戶機/服務器通信。
⑤MODBUS串行鏈路協議。提供了連接于串行鏈路的設備之間的主/從通信,在MODBUS串行鏈路上,客戶機的功能由主節點提供,而服務器功能由從節點實現。
對于不同類型的MODBUS協議,其應用層基本相同,但其他層各不相同。MODBUS RTU與MODBUS ASCII通信協議只有OSI模型的第1,2和7層,各層使用的協議分別為:物理層采用RS485或RS232協議;數據鏈路層采用MODBUS串行鏈路協議;應用層采用MODBUS應用層報文傳輸協議。MODBUS TCP通信協議擁有OSI模型的第1,2,3,4和7層,各層使用的協議分別為:物理層采用以太網物理層協議;數據鏈路層采用以太網IEEE802.3協議;網絡層采用IP協議;運輸層采用TCP協議;應用層采用MODBUS應用層報文傳輸協議。
2、MODBUS協議描述
通用MODBUS幀的結構如圖2所示。MODBUS協議定義了1個與基礎通信層無關的簡單協議數據單元(PDU),特定總線或網絡上的MODBUS協議映射可以引入一些附加域,從而構成應用數據單元(ADU)。
圖2 通用MODBUS幀結構示意
MODBUS是1個請求/應答協議,并且提供功能碼規定的服務。MODBUS功能碼是MODBUS請求/應答PDU的關鍵元素。有三類MODBUS功能碼,分別是:公共功能碼、用戶定義功能碼和保留功能碼,其取值為1-127的十進制整數。常用公共功能碼定義見表1所列。
表1 常用公共功能碼定義
①公共功能碼是由MODBUS組織確認的、被確切定義的、唯一的功能碼,包含已被定義的公共功能碼和保留給未來使用的功能碼。
②用戶定義功能碼。MODBUS分配有2個用戶定義功能碼的區域,即:65-72和100-110的十進制數。用戶可以自行選擇和實現的1個功能碼,但不能保證被選功能碼的使用是唯一的。
③保留功能碼。某些公司在傳統產品上現行使用的功能碼,不作為公共使用。
對于MODBUS的4種通信子協議而言,MODBUS Plus僅用于Modicon公司的PLC中,MODBUS ASCII用于串行通信鏈路不穩定的情況下,而MODBUS RTU與MODBUS TCP則是最為常用的子協議。MODBUS通信協議是一種公開的協議,這也是它得到廣泛應用的原因之一。目前,MODBUS通信協議已有國家標準(GB/T 19582—2008),而MODBUSTCP通信子協議,已被發布為國際標準(IEC 61158)。
MODBUS通信的實施
1、基于工程角度的協議理解
盡管MODBUS通信協議是公開的,但由于協議的描述主要是面向產品研發人員,故內容繁多、術語深奧,非通信專業出身的控制工程師很難理解。因此,基于工程角度的協議理解至關重要,也非常實用。
①功能碼的有限性
功能碼具有唯一性,選定了功能碼就意味著確定了要執行的操作及數據對象。例如:功能碼02,就是對離散變量輸入(DI)的存儲區進行讀操作。
現行的公共功能碼共21個,但常用的功能碼只有8個(參見表1),大多數工業控制系統只支持有限的功能碼。例如:Siemens S7-200 PLC支持表1中的全部8種功能碼;國核自儀系統工程有限公司的NuCON-P DCS支持01,02,03,04,15和16共6種功能碼;而UPS一般只支持02和04兩種功能碼。極端情況下,有些工業控制系統只支持03和06兩種功能碼,但只要有布爾量的打包指令,仍可以實現2個控制系統之間的雙向MODBUS通信。
②MODBUS通信的可讀化
MODBUS通信幀比較抽象,還要指定數據讀/寫的地址,直接使用比較困難。為解決該問題,工業控制系統都提供了相應的MODBUS通信指令,以支持MODBUS通信的可讀化。MODBUS通信指令形態各異,但核心功能只有兩點:
a)以可讀的形態提供給編程者,定義地址、功能、數據類型、傳輸速率、差錯校驗方式等通信要素。
b)根據控制系統自身的指令體系,給出數據讀/寫的內存地址。實質上,MODBUS通信指令建立了一種映射,提供了標準MODBUS通信幀與控制系統自身的指令體系以及內存地址之間的對應關系。
③不違反MODBUS通信協議的個性化約束
在不違反MODBUS通信協議的前提下,一些工業控制系統規定了自己的通信個性化約束。例如:只有在支持01功能碼的情況下,才能使用05功能碼,在實施過程中,有必要了解該類個性化約束。
④功能碼數制導致的二義性
功能碼具有唯一性,但它允許使用十進制或十六進制來表示,在應用中有時會產生二義性。因此,當通信雙方論及功能碼時,要說明使用何種數制來表征功能碼,以避免誤導,造成交流困難。
2、通信介質與通信設備的選擇
MODBUS RTU和MODBUS ASCII的物理層主要采用RS485協議,通信介質為有屏蔽的兩芯雙絞線,也支持光纖連接。MODBUS TCP的底層協議為以太網協議,通信介質為無屏蔽的八芯雙絞線,也支持光纖連接。
MODBUS的通信設備主要有以下3類:
①RS485集線器
RS485集線器又稱485HUB,是支持RS485物理層協議的通信設備,使用它可以構成MODBUS RTU,MODBUS ASCⅡ或Profibus-DP通信網絡。RS485集線器的基本結構:設備側多個RS485端口,監控側1個RS485/RS232端口進行信號的轉發,無協議轉換功能。RS485集線器的核心功能是:將設備側MODBUS從站的手牽手連接方式變換成星型連接方式,方便布線,并提高了通信鏈路的可靠性。
②串口服務器
串口服務器是一側支持RS485物理層協議、另一側支持以太網協議的通信設備,使用它可以將串口通信設備方便地接入TCP/IP網絡,實現數據的雙向透明傳輸,進而構成長距離的MODBUS RTU,MODBUS ASCⅡ或Profibus-DP通信網絡。串口服務器的基本結構:設備側多個RS485端口,監控側1個以太網端口,內置CPU、實時操作系統、支持RS485和TCP/IP協議。串口服務器的核心功能是:將設備側485從站的手牽手連接方式變換成星型連接方式,方便布線,并提高通信鏈路的可靠性;將485總線的數據幀和TCP/IP網絡的數據報文進行雙向轉換,借助TCP/IP網絡進行數據傳輸,構成長距離的485總線,實現MODBUS RTU,MODBUS ASCⅡ或Profibus-DP的遠程通信。特別地,當設置成Real COM模式時,可以將監控計算機側的以太網口仿真成虛擬串口,建立虛擬串口對現場串口設備的透明映射。
③MODBUS通信網關
MODBUS通信網關是一側支持MODBUS RTU或MODBUS ASCⅡ協議,另一側支持以太網協議的通信設備,使用它可以將MODBUS串口通信設備方便地接入TCP/IP網絡,實現數據的雙向透明傳輸。MODBUS通信網關的基本結構:設備側多個RS485端口,監控側1個以太網端口,內置CPU、實時操作系統、支持MODBUS RTU/ASCⅡ和MODBUS TCP協議。MODBUS通信網關的核心功能是:將設備側MODBUS從站的手牽手連接方式變換成星型連接方式,方便布線,并提高通信鏈路的可靠性;完成MODBUS RTU/ASCⅡ和MODBUS TCP之間的協議轉換;當MODBUS通信網關設置為MODBUS TCP服務器時,可以支持多達16個MODBUS TCP客戶端的連接。
在建立MODBUS通信時,通信設備的選擇需要綜合考慮布線方式、通信距離、監控側應用程序的接口方式以及設備成本等因素。例如:如果監控側應用程序只提供了MODBUS RTU接口,就應當選擇串口服務器作為通信設備。
3、MODBUS的調試工具
Modscan32是一款第三方的MODBUS調試軟件,它免安裝、已漢化、小巧(2.2M)、運行在Windous環境下,可以將個人電腦模擬成MODBUS主站,使用MODBUS RTU或MODBUS ASCII協議,與MODBUS從站通信。該調試軟件的主要功能是:排除故障,可以直接檢驗通信鏈路的連接和MODBUS從站側的狀態;核對數據,可以直觀地觀察一段連續的寄存器地址,檢查核對數據點;確定配置,調試無誤后直接將配置參數轉移到工業控制系統里。
MODBUS應用實例
在某垃圾發電項目中,需要建立國核自儀系統工程有限公司的NuCON-P DCS(主站)與Siemens公司的S7-200PLC(從站)之間的雙向MODBUS通信,這屬于異構控制系統的通信問題,需要在不同的控制平臺里分別進行配置和測試。MODBUS通信方式如圖3所示。
圖3 MODBUS通信方式示意
在該實例中,用于旋轉噴霧器控制的從站為S-200 CPU224XP,雙RS485端口,采用自由端口通信協議,支持MODBUS通信;主站為NuCON-P配置的MODBUS通信卡,4通道,它與旋轉噴霧器PLC之間的通信獨占1個通道。盡管DCS與PLC兩側的通信組態和通信指令形式上大相徑庭,但本質上是一致的,基本包括以下幾個部分:
①通信參數。從站側:從站地址26,波特率9600bit/s,奇偶校驗方式(偶校驗)等;主站側:9600bit/s,奇偶校驗方式(偶校驗)等。
②操作參數。主站側:隱含給出功能碼,本例中:“只讀:3區”意味著使用功能碼04。
③存儲地址。從站側:給出寄存器區起始地址(間接尋址方式&VB1000);主站側:給出寄存器區間(00000-00015)、寄存器數量(16)和映像區位置(AI:155-170)。
④輔助參數。主要在從站側:模式選擇參數、限值參數、執行標志、完成標志、錯誤代碼等。
結束語
建立異構控制系統之間的MODBUS通信是自動化工程中常見的案例,也是技術難點之一。因此,操作工程師不僅要對MODBUS通信協議的基本原理有較深理解,還要熟悉通信兩端控制系統的硬件結構與指令系統,這些經驗均需要在實踐中不斷積累與提升。
作者:黃達(國核自儀系統工程有限公司)
相關閱讀
RS485和MODBUS的區別與聯系
談談MODBUS協議數據模型和地址模型