王瓊玫,翁慧輝 (長江大學電子信息學院,湖北 荊州434023)
徐仁佐 (北京龍鼎源科技有限公司,北京101500)
Modbus/TCP協(xié)議是目前發(fā)展迅猛、廣泛應用于幾乎所有領域的開放的TCP/IP技術,應用層采用工業(yè)控制領域標準的、開放的Modbus協(xié)議,使用戶徹底擺脫了非標準的、封閉的專用工業(yè)控制網(wǎng)絡和現(xiàn)場總線技術的束縛,實現(xiàn)了遠程分布式的實時監(jiān)控和在線數(shù)據(jù)分析。遠程監(jiān)控中心可以通過以太網(wǎng)實時的讀取現(xiàn)場設備或儀表的數(shù)據(jù),監(jiān)控現(xiàn)場的運行狀況,并且能夠根據(jù)讀取的現(xiàn)場參數(shù)對現(xiàn)場情況進行分析[1]。為此,筆者提出了基于Modbus/TCP協(xié)議的遠程控制系統(tǒng)。
Modbus現(xiàn)場總線協(xié)議是Modicon公司于1978年開發(fā)的一種工業(yè)控制器的網(wǎng)絡協(xié)議,通過該協(xié)議,控制器相互之間、控制器和其他設備之間可以進行通信。它是一個請求/應答協(xié)議。Modbus和TCP/IP協(xié)議結合成為Modbus/TCP協(xié)議,是OSI模型上的應用層報文傳輸協(xié)議,采用了客戶機/服務器通信模型。在客戶端,負責把來自用戶的信息封裝成Modbus幀;在服務器端,負責解釋來自客戶端的 Modbus幀,執(zhí)行相應的請求。Modbus/TCP幀的格式如圖1所示。
圖1 Modbus/TCP幀的格式
MBAP是Modbus協(xié)議在TCP/IP上的專用報文頭,用來識別 Modbus的應用數(shù)據(jù)單元。MBAP報文頭共7個字節(jié),分為事件處理標識符 (2bytes)、協(xié)議標識符 (2bytes)、長度域 (2bytes)、單元標識符 (1bytes)。功能碼規(guī)定了服務器和客戶端所要執(zhí)行的操作,典型的有讀線圈 (0x01)、寫單個 線圈 (0x05)、讀輸入寄存器 (0x04)、讀多個寄存器(0x03)等。通過 Modbus/TCP協(xié)議將TCP/IP網(wǎng)絡上的客戶機和服務器設備連接起來,組成Modbus/TCP通信系統(tǒng)[2]。
圖2 Modbus/TCP通信結構
該系統(tǒng)利用網(wǎng)橋、路由器或網(wǎng)關可以連接Modbus串行鏈路客戶機和服務器終端設備,其通信結構如圖2所示。
隨著現(xiàn)代通信技術和計算機網(wǎng)絡技術迅速發(fā)展,信息技術已逐步進入工業(yè)自動化領域。以太網(wǎng)技術以其開發(fā)性好、通信速率高、價格低廉、兼容性好以及應用廣泛等優(yōu)勢,促進了它在工業(yè)控制領域中的大規(guī)模應用,形成了當前的工業(yè)以太網(wǎng)技術。由于Modbus協(xié)議和TCP協(xié)議比較方便實現(xiàn)互聯(lián),使得Modbus/TCP這一應用層協(xié)議廣泛應用于電力、水利、冶金、化工、機械、制造等監(jiān)控系統(tǒng)中。
ENC424J600是Microchip公司推出的快速以太網(wǎng)控制器,可為嵌入式系統(tǒng)提供遠程通訊服務。該芯片是帶有行業(yè)標準串行外設接口 (Serial Peripheral Interface,SPI)或柔性并行接口的獨立快速以太網(wǎng)控制器,可用作任何配備有SPI或標準并行端口的單片機的以太網(wǎng)網(wǎng)絡接口。ENC424J600器件符合IEEE 802.3中適用于10Base-TX和100Base-TX以太網(wǎng)的全部規(guī)范,采用了一系列數(shù)據(jù)包過濾機制以對傳入數(shù)據(jù)包進行限制。該器件還提供了一個16位寬的內(nèi)部DMA,以實現(xiàn)快速數(shù)據(jù)吞吐和硬件IP校驗和計算支持。
芯片內(nèi)置PHY物理層及MAC媒體訪問控制層。安全引擎模塊可執(zhí)行 RSA、Diffie-Hellman、AES、MD5和SHA-1算法計算,以縮短代碼大小、加快連接的建立和吞吐,并減少固件開發(fā)的工作量。該芯片還提供了一個通用的24Kb片內(nèi)SRAM Buffer,用于執(zhí)行發(fā)送和接收操作,基本不需要外接SRAM。通過SPI或并行接口與單片機通信,數(shù)據(jù)傳輸速率為14Mbit/s(基于SPI)至140Mbit/s(基于并行接口)。ENC424J600提供了專用于活動指示的LED接口以及發(fā)送/接收/DMA中斷的引腳[3]。
圖3 Modbus/TCP通訊的整體系統(tǒng)結構圖
系統(tǒng)采用dsPIC30F6014的高性能數(shù)字信號處理器的SPI總線通信方式,采用美國Microchip公司的ENC424J600芯片作為以太網(wǎng)控制器。Modbus/TCP通訊系統(tǒng)通過dsPIC30F6014控制器內(nèi)置的異步收發(fā)器接收現(xiàn)場儀表或現(xiàn)場設備上傳的報文,將應用層數(shù)據(jù)存到dsPIC30F6014芯片的數(shù)據(jù)緩存區(qū),將數(shù)據(jù)以Modbus消息幀的格式封裝成IP包通過以太網(wǎng)上傳給各閥室交換機,然后再通過網(wǎng)絡上傳給數(shù)據(jù)監(jiān)控中心。Modbus/TCP通訊的整體系統(tǒng)結構圖如圖3所示。
Modbus/TCP總線接口電路如圖4所示。該電路中主要由以太網(wǎng)控制芯片ENC424J600和RJ45接口組成。ENC424J600通過SPI總線和中斷與dsPIC30f6014微控制器進行數(shù)據(jù)交互。其中,ENC424J600與RJ45接口之間選用的是漢仁公司的HR911103C網(wǎng)絡變壓器,消除了雙絞線上的干擾和部分諧波,實現(xiàn)了電氣隔離功能,提高了系統(tǒng)的抗干擾能力和收發(fā)的穩(wěn)定性。
圖4 Modbus/TCP總線接口電路
以太網(wǎng)實現(xiàn)了一個差分對和電流模式發(fā)送器,它主要是當PHY發(fā)送時通過改變發(fā)送接口TX+和TX-的相對灌電流在電纜上產(chǎn)生差分電壓[3]。以太網(wǎng)的接收接口RX+和RX-工作原理與發(fā)送接口類似。4個傳輸匹配電阻 (阻值為49.9Ω、精度為1%)R1、R2、R3和R4分別連接在發(fā)送接口和接收接口上。2個電容 (電容值為6.8nF、精度為10%)C1和C2與電阻R3和R4在接收信號路徑上構成一個RC濾波器來降低基線漂移。C3和C4在防止直流電流的同時為2個差分對提供穩(wěn)定的共模電壓。
ENC424J600與單片機dsPIC30F6014的連接可通過SPI實現(xiàn),且ENC424J600僅支持SPI模式0,0。單片機dsPIC30F6014通過SPI接口發(fā)送命令,訪問ENC424J600的寄存器和讀寫接收/發(fā)送緩沖區(qū),從而完成相關操作[3]。系統(tǒng)復位通過SPI接口由相關程序實現(xiàn),其過程不影響通信接口電路中RESET引腳的狀態(tài)。此外,ENC424J600有2個中斷輸出,分別用于事件中斷觸發(fā)和網(wǎng)絡喚醒主機。
美國Microchip公司提供標準的TCP/IP協(xié)議棧模型,該模型結構如圖5所示。該協(xié)議棧采用模塊化設計,每個模塊只在使用的時候才被添加其中。各層實現(xiàn)代碼駐留在一個獨立的源文件里。此外,該協(xié)議棧使用協(xié)同式多任務處理技術。
協(xié)議棧在傳輸層采用TCP協(xié)議提供面向連接、可靠的字節(jié)流服務[4]。在應用層采用目前使用最為廣泛的 MODBUS TCP協(xié)議。通過該協(xié)議,不同廠商生產(chǎn)的控制設備可以連成一個工業(yè)網(wǎng)絡,以便進行集中監(jiān)控[5]。
軟件部分主要包括ENC424J600的初始化和在主控程序循環(huán)體中輪流執(zhí)行各個功能模塊,其中在主控程序循環(huán)體中輪流執(zhí)行的各個模塊包括串口通信模塊、I/O數(shù)據(jù)處理模塊、以太網(wǎng)數(shù)據(jù)包收發(fā)模塊和應用層MODBUS協(xié)議的主從處理模塊。
ENC424J600的初始化流程設計如圖6所示。
Modbus/TCP協(xié)議規(guī)定了一種大多數(shù)工業(yè)設備都能識別的數(shù)據(jù)包格式,通過該數(shù)據(jù)包格式能更加容易地與各種廠家的系統(tǒng)實現(xiàn)無縫鏈接,協(xié)議廣泛用于實時監(jiān)控網(wǎng)絡與現(xiàn)場設備的通信。筆者從開發(fā)的角度給出了一種基于Modbus/TCP協(xié)議的通訊控制系統(tǒng)的設計方案,在應用層上使用Modbus協(xié)議和工業(yè)現(xiàn)場實現(xiàn)數(shù)據(jù)之間的交互,從而可以達到遠程監(jiān)控工業(yè)設備運行狀況的目的。筆者提出的方案已經(jīng)成功應用于中石油長慶油田分公司某站的閥室中。實踐表明,Modbus/TCP協(xié)議可靠性高,配置靈活,適于工業(yè)控制領域應用。
圖5 Microchip公司的TCP/IP協(xié)議棧結構
圖6 ENC424J600的初始化流程圖
[1]陳志剛,張來斌,王朝暉 .基于Modbus/TCP的管道泄漏遠程檢測系統(tǒng)研究 [J].石油機械,2006,34(5):40-43.
[2]GB/Z 19582.3-2004,Modbus協(xié)議在 TCP IP上的實現(xiàn)指南 [S].
[3]Microchip.ENC424J600/624J600Stand-Alone 10/100Ethernet Controller with SPI or Parallel Interface[Z].Microchip Technology Inc,2010.
[4]謝希仁 .計算機網(wǎng)絡 [M].北京:電子工業(yè)出版社,2008.
[5]朱艾春,華鋼,高婷,等 .Modbus/TCP協(xié)議在監(jiān)控分站中的實現(xiàn) [J].媒礦安全,2011,42(4):79-81