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