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