王瓊玫,翁慧輝 (長江大學電子信息學院,湖北 荊州434023)
徐仁佐 (北京龍鼎源科技有限公司,北京101500)
Modbus/TCP協議是目前發展迅猛、廣泛應用于幾乎所有領域的開放的TCP/IP技術,應用層采用工業控制領域標準的、開放的Modbus協議,使用戶徹底擺脫了非標準的、封閉的專用工業控制網絡和現場總線技術的束縛,實現了遠程分布式的實時監控和在線數據分析。遠程監控中心可以通過以太網實時的讀取現場設備或儀表的數據,監控現場的運行狀況,并且能夠根據讀取的現場參數對現場情況進行分析[1]。為此,筆者提出了基于Modbus/TCP協議的遠程控制系統。
Modbus現場總線協議是Modicon公司于1978年開發的一種工業控制器的網絡協議,通過該協議,控制器相互之間、控制器和其他設備之間可以進行通信。它是一個請求/應答協議。Modbus和TCP/IP協議結合成為Modbus/TCP協議,是OSI模型上的應用層報文傳輸協議,采用了客戶機/服務器通信模型。在客戶端,負責把來自用戶的信息封裝成Modbus幀;在服務器端,負責解釋來自客戶端的 Modbus幀,執行相應的請求。Modbus/TCP幀的格式如圖1所示。

圖1 Modbus/TCP幀的格式
MBAP是Modbus協議在TCP/IP上的專用報文頭,用來識別 Modbus的應用數據單元。MBAP報文頭共7個字節,分為事件處理標識符 (2bytes)、協議標識符 (2bytes)、長度域 (2bytes)、單元標識符 (1bytes)。功能碼規定了服務器和客戶端所要執行的操作,典型的有讀線圈 (0x01)、寫單個 線圈 (0x05)、讀輸入寄存器 (0x04)、讀多個寄存器(0x03)等。通過 Modbus/TCP協議將TCP/IP網絡上的客戶機和服務器設備連接起來,組成Modbus/TCP通信系統[2]。

圖2 Modbus/TCP通信結構
該系統利用網橋、路由器或網關可以連接Modbus串行鏈路客戶機和服務器終端設備,其通信結構如圖2所示。
隨著現代通信技術和計算機網絡技術迅速發展,信息技術已逐步進入工業自動化領域。以太網技術以其開發性好、通信速率高、價格低廉、兼容性好以及應用廣泛等優勢,促進了它在工業控制領域中的大規模應用,形成了當前的工業以太網技術。由于Modbus協議和TCP協議比較方便實現互聯,使得Modbus/TCP這一應用層協議廣泛應用于電力、水利、冶金、化工、機械、制造等監控系統中。
ENC424J600是Microchip公司推出的快速以太網控制器,可為嵌入式系統提供遠程通訊服務。該芯片是帶有行業標準串行外設接口 (Serial Peripheral Interface,SPI)或柔性并行接口的獨立快速以太網控制器,可用作任何配備有SPI或標準并行端口的單片機的以太網網絡接口。ENC424J600器件符合IEEE 802.3中適用于10Base-TX和100Base-TX以太網的全部規范,采用了一系列數據包過濾機制以對傳入數據包進行限制。該器件還提供了一個16位寬的內部DMA,以實現快速數據吞吐和硬件IP校驗和計算支持。
芯片內置PHY物理層及MAC媒體訪問控制層。安全引擎模塊可執行 RSA、Diffie-Hellman、AES、MD5和SHA-1算法計算,以縮短代碼大小、加快連接的建立和吞吐,并減少固件開發的工作量。該芯片還提供了一個通用的24Kb片內SRAM Buffer,用于執行發送和接收操作,基本不需要外接SRAM。通過SPI或并行接口與單片機通信,數據傳輸速率為14Mbit/s(基于SPI)至140Mbit/s(基于并行接口)。ENC424J600提供了專用于活動指示的LED接口以及發送/接收/DMA中斷的引腳[3]。

圖3 Modbus/TCP通訊的整體系統結構圖
系統采用dsPIC30F6014的高性能數字信號處理器的SPI總線通信方式,采用美國Microchip公司的ENC424J600芯片作為以太網控制器。Modbus/TCP通訊系統通過dsPIC30F6014控制器內置的異步收發器接收現場儀表或現場設備上傳的報文,將應用層數據存到dsPIC30F6014芯片的數據緩存區,將數據以Modbus消息幀的格式封裝成IP包通過以太網上傳給各閥室交換機,然后再通過網絡上傳給數據監控中心。Modbus/TCP通訊的整體系統結構圖如圖3所示。
Modbus/TCP總線接口電路如圖4所示。該電路中主要由以太網控制芯片ENC424J600和RJ45接口組成。ENC424J600通過SPI總線和中斷與dsPIC30f6014微控制器進行數據交互。其中,ENC424J600與RJ45接口之間選用的是漢仁公司的HR911103C網絡變壓器,消除了雙絞線上的干擾和部分諧波,實現了電氣隔離功能,提高了系統的抗干擾能力和收發的穩定性。

圖4 Modbus/TCP總線接口電路
以太網實現了一個差分對和電流模式發送器,它主要是當PHY發送時通過改變發送接口TX+和TX-的相對灌電流在電纜上產生差分電壓[3]。以太網的接收接口RX+和RX-工作原理與發送接口類似。4個傳輸匹配電阻 (阻值為49.9Ω、精度為1%)R1、R2、R3和R4分別連接在發送接口和接收接口上。2個電容 (電容值為6.8nF、精度為10%)C1和C2與電阻R3和R4在接收信號路徑上構成一個RC濾波器來降低基線漂移。C3和C4在防止直流電流的同時為2個差分對提供穩定的共模電壓。
ENC424J600與單片機dsPIC30F6014的連接可通過SPI實現,且ENC424J600僅支持SPI模式0,0。單片機dsPIC30F6014通過SPI接口發送命令,訪問ENC424J600的寄存器和讀寫接收/發送緩沖區,從而完成相關操作[3]。系統復位通過SPI接口由相關程序實現,其過程不影響通信接口電路中RESET引腳的狀態。此外,ENC424J600有2個中斷輸出,分別用于事件中斷觸發和網絡喚醒主機。
美國Microchip公司提供標準的TCP/IP協議棧模型,該模型結構如圖5所示。該協議棧采用模塊化設計,每個模塊只在使用的時候才被添加其中。各層實現代碼駐留在一個獨立的源文件里。此外,該協議棧使用協同式多任務處理技術。
協議棧在傳輸層采用TCP協議提供面向連接、可靠的字節流服務[4]。在應用層采用目前使用最為廣泛的 MODBUS TCP協議。通過該協議,不同廠商生產的控制設備可以連成一個工業網絡,以便進行集中監控[5]。
軟件部分主要包括ENC424J600的初始化和在主控程序循環體中輪流執行各個功能模塊,其中在主控程序循環體中輪流執行的各個模塊包括串口通信模塊、I/O數據處理模塊、以太網數據包收發模塊和應用層MODBUS協議的主從處理模塊。
ENC424J600的初始化流程設計如圖6所示。
Modbus/TCP協議規定了一種大多數工業設備都能識別的數據包格式,通過該數據包格式能更加容易地與各種廠家的系統實現無縫鏈接,協議廣泛用于實時監控網絡與現場設備的通信。筆者從開發的角度給出了一種基于Modbus/TCP協議的通訊控制系統的設計方案,在應用層上使用Modbus協議和工業現場實現數據之間的交互,從而可以達到遠程監控工業設備運行狀況的目的。筆者提出的方案已經成功應用于中石油長慶油田分公司某站的閥室中。實踐表明,Modbus/TCP協議可靠性高,配置靈活,適于工業控制領域應用。

圖5 Microchip公司的TCP/IP協議棧結構

圖6 ENC424J600的初始化流程圖
[1]陳志剛,張來斌,王朝暉 .基于Modbus/TCP的管道泄漏遠程檢測系統研究 [J].石油機械,2006,34(5):40-43.
[2]GB/Z 19582.3-2004,Modbus協議在 TCP IP上的實現指南 [S].
[3]Microchip.ENC424J600/624J600Stand-Alone 10/100Ethernet Controller with SPI or Parallel Interface[Z].Microchip Technology Inc,2010.
[4]謝希仁 .計算機網絡 [M].北京:電子工業出版社,2008.
[5]朱艾春,華鋼,高婷,等 .Modbus/TCP協議在監控分站中的實現 [J].媒礦安全,2011,42(4):79-81