, ,
(西安航天自動(dòng)化股份有限公司,陜西 西安 710065)
基于Modbus TCP的工業(yè)網(wǎng)關(guān)設(shè)計(jì)
張建奇,陶怡,李墨翰
(西安航天自動(dòng)化股份有限公司,陜西 西安 710065)
利用Modbus TCP技術(shù),設(shè)計(jì)一種工業(yè)網(wǎng)關(guān),實(shí)現(xiàn)了Modbus協(xié)議和ZigBee協(xié)議轉(zhuǎn)換功能。網(wǎng)關(guān)與上位機(jī)之間通訊采用了ModBus TCP協(xié)議、與各種IO節(jié)點(diǎn)之間采用無(wú)線ZigBee協(xié)議。網(wǎng)關(guān)硬件基于STM32F107控制芯片和CC2530 ZigBee芯片,軟件基于Keil uVision4開(kāi)發(fā)編譯環(huán)境和μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)。經(jīng)過(guò)試驗(yàn)測(cè)試及現(xiàn)場(chǎng)應(yīng)用,結(jié)果表明,該網(wǎng)關(guān)具有工業(yè)通訊實(shí)時(shí)性高、可靠性強(qiáng)和安全性高等優(yōu)點(diǎn),同時(shí)具有低成本、低能量和高容錯(cuò)性等特點(diǎn),可以滿足工業(yè)應(yīng)用實(shí)時(shí)性、可靠性和安全性的要求,在提升現(xiàn)有網(wǎng)絡(luò)性能方面具有很大優(yōu)勢(shì),可以替代傳統(tǒng)通訊網(wǎng)絡(luò),具有很好的應(yīng)用前景。
Modbus TCP;工業(yè)以太網(wǎng);ZigBee;網(wǎng)關(guān)設(shè)計(jì)
近年來(lái),隨著工業(yè)自動(dòng)化領(lǐng)域的發(fā)展,工業(yè)現(xiàn)場(chǎng)對(duì)網(wǎng)絡(luò)的可靠性及成本有極高的要求[1]。傳統(tǒng)基于串口的工業(yè)網(wǎng)關(guān)可以滿足工業(yè)現(xiàn)場(chǎng)的應(yīng)用,但在工業(yè)線纜上付出了高額成本[2]。市場(chǎng)上設(shè)計(jì)的基于Modbus TCP的工業(yè)Modbus網(wǎng)關(guān),大多采用單片機(jī)加以太網(wǎng)通訊模塊的形式,雖然節(jié)省了網(wǎng)絡(luò)線纜的成本,卻使網(wǎng)關(guān)設(shè)計(jì)煩瑣,可靠性難以保證。這里所述網(wǎng)關(guān)可靠性強(qiáng),穩(wěn)定性好,實(shí)時(shí)性高,解決了工業(yè)現(xiàn)場(chǎng)布線難題,節(jié)約了工業(yè)現(xiàn)場(chǎng)的線纜成本。
基于工業(yè)以太網(wǎng),硬件采用STM32F107控制芯片和CC2530 ZigBee芯片,軟件采用μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng),內(nèi)置軟件地址映射表,設(shè)計(jì)了一款新型工業(yè)網(wǎng)關(guān),滿足工業(yè)現(xiàn)場(chǎng)總線可靠性與低成本的要求,且設(shè)計(jì)集成度高,穩(wěn)定性和安全性得到了保證。
1.1 硬件架構(gòu)
硬件架構(gòu)如圖1所示。
圖1 硬件架構(gòu)
a.主控模塊。主控模塊采用ST公司的STM32F107互聯(lián)性芯片為主控芯片,采用16Mbit SPI串行閃存芯片SST25VF016B擴(kuò)充網(wǎng)關(guān)存儲(chǔ)空間,外接MAX3232串口芯片和DP83848CVV與上位機(jī)通訊。主控模塊通過(guò)串口與ZigBee模塊通訊。
b.ZigBee模塊。ZigBee模塊的無(wú)線網(wǎng)絡(luò)協(xié)調(diào)器采用TI公司的CC2530PA芯片,射頻前端采用TI公司的CC2591芯片。
c.電源模塊。設(shè)計(jì)采用12 V電源板供電。
此外,工業(yè)網(wǎng)關(guān)有3路工作指示燈,分別指示電源工作狀態(tài)、主控模塊工作狀態(tài)及ZigBee模塊工作狀態(tài)。
1.2 軟件設(shè)計(jì)
軟件部分主要實(shí)現(xiàn)了Modbus協(xié)議與ZigBee協(xié)議的轉(zhuǎn)換及節(jié)點(diǎn)信息存儲(chǔ)功能,如圖2所示。工業(yè)網(wǎng)關(guān)的核心軟件在應(yīng)用層之下的協(xié)議轉(zhuǎn)換和數(shù)據(jù)存儲(chǔ)。
圖2 軟件結(jié)構(gòu)
1.2.1 優(yōu)先級(jí)及數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
工業(yè)網(wǎng)關(guān)并發(fā)地接收Modbus協(xié)議幀與ZigBee協(xié)議幀,并根據(jù)協(xié)議幀的類(lèi)型做出相應(yīng)的處理。在網(wǎng)關(guān)內(nèi)部設(shè)置接收處理優(yōu)先級(jí),當(dāng)Modbus協(xié)議幀與ZigBee協(xié)議幀同時(shí)達(dá)到網(wǎng)關(guān)時(shí),由嵌入式操作系統(tǒng)μC/OS-Ⅱ根據(jù)優(yōu)先級(jí)進(jìn)行選擇性接收處理。如表1所示,Modbus協(xié)議幀接收、處理優(yōu)先級(jí)高于Zigbee協(xié)議幀接收、處理的優(yōu)先級(jí),網(wǎng)關(guān)數(shù)據(jù)映射表的操作優(yōu)先級(jí)高于協(xié)議幀的接收、處理,TCP/IP連接建立的優(yōu)先級(jí)處于用戶(hù)任務(wù)優(yōu)先級(jí)最高。在網(wǎng)關(guān)運(yùn)行過(guò)程中,由μC/OS-Ⅱ操作系統(tǒng)嚴(yán)格按照優(yōu)先級(jí)對(duì)任務(wù)次序進(jìn)行調(diào)度。
按照表1所示優(yōu)先級(jí),僅次于TCP/IP建立連接的是數(shù)據(jù)映射表操作。數(shù)據(jù)映射表是存儲(chǔ)在工業(yè)網(wǎng)關(guān)內(nèi)部用于存儲(chǔ)ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)信息的連續(xù)存儲(chǔ)塊。數(shù)據(jù)映射表向上位機(jī)提供ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)的信息,向ZigBee網(wǎng)絡(luò)記錄節(jié)點(diǎn)的信息。
表1 工業(yè)網(wǎng)關(guān)任務(wù)優(yōu)先級(jí)
任務(wù)名稱(chēng)任務(wù)ID優(yōu)先級(jí)TCP/IP建立連接112數(shù)據(jù)映射表操作214Modbus協(xié)議幀接收、處理316ZigBee協(xié)議幀接收、處理418
Modbus協(xié)議幀接收、處理主要是工業(yè)網(wǎng)關(guān)通過(guò)工業(yè)以太網(wǎng)接收上位機(jī)發(fā)出的Modbus協(xié)議幀,根據(jù)協(xié)議幀中的功能碼選擇相應(yīng)的操作。系統(tǒng)所述工業(yè)網(wǎng)關(guān)設(shè)計(jì)實(shí)現(xiàn)了Modbus協(xié)議中的8種功能。Modbus協(xié)議幀格式如圖3所示。
圖3 Modbus協(xié)議幀格式
依據(jù)圖3所示的Modbus協(xié)議幀,設(shè)計(jì)Modbus協(xié)議幀數(shù)據(jù)結(jié)構(gòu)為:
struct ModbusFrm
{
uint8_t ThingIdHi;//事物元標(biāo)識(shí)1,1字節(jié)
uint8_t ThingIdLo;//事物元標(biāo)識(shí)2,1字節(jié)
uint16_t AgreementId;//協(xié)議標(biāo)識(shí),2字節(jié)
uint16_t Length;//長(zhǎng)度,2字節(jié)
uint8_t UnitId;//單元標(biāo)識(shí),1字節(jié)
uint8_t FunCode;//功能碼,1字節(jié)
uint16_t StartAdd;//起始地址,2字節(jié)
uint16_t Num;//訪問(wèn)數(shù)量,2字節(jié)
}ModbusFrm;
ZigBee協(xié)議幀接收、處理主要是工業(yè)網(wǎng)關(guān)通過(guò)串口接收Z(yǔ)igBee節(jié)點(diǎn)信息,更新數(shù)據(jù)映射表內(nèi)的節(jié)點(diǎn)信息。ZigBee協(xié)議幀結(jié)構(gòu)如圖4所示。
圖4 ZigBee協(xié)議幀結(jié)構(gòu)
依據(jù)圖4 ZigBee協(xié)議幀結(jié)構(gòu),設(shè)計(jì)ZigBee協(xié)議幀數(shù)據(jù)結(jié)構(gòu)為:
struct Zmbap
{
uint8_t StartCode;//起始碼,1字節(jié)
uint8_t FrameType; //幀類(lèi)型,1字節(jié)
uint16_t Length;//長(zhǎng)度,2字節(jié)
}Zmbap;//ZigBee協(xié)議幀頭
struct Zend
{
uint8_t CheckNum;//校驗(yàn)和,1字節(jié)
uint8_t EndCode; //結(jié)束位,1字節(jié)
}Zend;//zigbee協(xié)議幀尾struct Zframe
{
struct Zmbap;//幀頭,4字節(jié)
uint8_t *DataDomain; //數(shù)據(jù)域,不定長(zhǎng)
struct Zend;//結(jié)束位,1字節(jié)
} Zframe;//ZigBee協(xié)議幀結(jié)構(gòu)
1.2.2 數(shù)據(jù)映射表設(shè)計(jì)
工業(yè)網(wǎng)關(guān)內(nèi)部采用嵌入式數(shù)據(jù)映射表。網(wǎng)關(guān)對(duì)上位機(jī)提供的服務(wù)就是為上位機(jī)查詢(xún)或修改網(wǎng)關(guān)內(nèi)嵌數(shù)據(jù)表的數(shù)據(jù),網(wǎng)關(guān)與ZigBee網(wǎng)絡(luò)的交互就是網(wǎng)關(guān)數(shù)據(jù)表與ZigBee網(wǎng)絡(luò)設(shè)備數(shù)據(jù)同步的過(guò)程。工業(yè)網(wǎng)關(guān)為上位機(jī)提供的服務(wù)包括對(duì)離散量的操作、對(duì)線圈的操作和對(duì)寄存器的操作[5],對(duì)應(yīng)ZigBee網(wǎng)絡(luò)設(shè)備則由數(shù)字量設(shè)備和模擬量設(shè)備向網(wǎng)關(guān)內(nèi)嵌數(shù)據(jù)庫(kù)提供數(shù)據(jù)。工業(yè)網(wǎng)關(guān)內(nèi)嵌映射數(shù)據(jù)模型如圖5所示。
圖5 工業(yè)網(wǎng)關(guān)數(shù)據(jù)映射模型
數(shù)字量設(shè)備與模擬量設(shè)備在網(wǎng)關(guān)中的存儲(chǔ)如圖6所示。
圖6 設(shè)備信息存儲(chǔ)模型
1.2.3 軟件流程設(shè)計(jì)
工業(yè)網(wǎng)關(guān)軟件流程設(shè)計(jì)描述整個(gè)系統(tǒng)之間對(duì)象的交互情況。設(shè)計(jì)將網(wǎng)關(guān)分為4個(gè)對(duì)象描述,分別是上位機(jī)PLC、工業(yè)網(wǎng)關(guān)、工業(yè)網(wǎng)關(guān)數(shù)據(jù)映射庫(kù)和工業(yè)網(wǎng)關(guān)ZigBee網(wǎng)絡(luò)。描述采用序列圖的形式,具體描述如圖7所示。
圖7 工業(yè)網(wǎng)關(guān)軟件序列
工業(yè)網(wǎng)關(guān)上電啟動(dòng),系統(tǒng)開(kāi)始運(yùn)行,工業(yè)網(wǎng)關(guān)完成初始化之后,啟動(dòng)ZigBee網(wǎng)絡(luò)設(shè)備,并初始化映射數(shù)據(jù)庫(kù)。ZigBee網(wǎng)絡(luò)設(shè)備啟動(dòng)后進(jìn)行設(shè)備的查詢(xún),即ZigBee節(jié)點(diǎn)的信息查詢(xún)。網(wǎng)關(guān)待ZigBee網(wǎng)絡(luò)設(shè)備就緒后,對(duì)ZigBee網(wǎng)絡(luò)設(shè)備信息進(jìn)行查詢(xún),ZigBee返回設(shè)備信息并更新映射數(shù)據(jù)庫(kù)。映射數(shù)據(jù)庫(kù)第一次更新完畢后,網(wǎng)關(guān)處于等待狀態(tài),等待上位機(jī)PLC的連接。在網(wǎng)關(guān)等待連接的過(guò)程中,ZigBee設(shè)備按一定的時(shí)間間隔對(duì)映射數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新。上位機(jī)PLC發(fā)起連接后,網(wǎng)關(guān)與PLC建立連接,等待PLC發(fā)送Modbus協(xié)議幀,網(wǎng)關(guān)接收協(xié)議幀后對(duì)協(xié)議幀進(jìn)行解析,根據(jù)協(xié)議幀執(zhí)行相應(yīng)的操作。在網(wǎng)關(guān)執(zhí)行完協(xié)議幀所制定的操作之后,按照Modbus協(xié)議組幀,并向PLC回傳協(xié)議回復(fù)幀。之后如無(wú)其他協(xié)議幀操作,則釋放連接,等待下一次連接或操作。工業(yè)網(wǎng)關(guān)軟件詳細(xì)流程如圖8所示。
圖8 工業(yè)網(wǎng)關(guān)詳細(xì)流程設(shè)計(jì)
基于工業(yè)以太網(wǎng)的工業(yè)網(wǎng)關(guān)設(shè)計(jì),在網(wǎng)關(guān)內(nèi)部設(shè)置了數(shù)據(jù)映射表,使ZigBee網(wǎng)絡(luò)設(shè)備信息及時(shí)存儲(chǔ)與更新,有效提高了上位機(jī)對(duì)節(jié)點(diǎn)設(shè)備信息訪問(wèn)的實(shí)時(shí)性;采用嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ設(shè)計(jì)了不同的優(yōu)先級(jí),保證了上位機(jī)訪問(wèn)信息的實(shí)時(shí)性與準(zhǔn)確性,同時(shí)也提高了上位機(jī)指令和ZigBee網(wǎng)絡(luò)命令執(zhí)行效率,縮短了命令執(zhí)行時(shí)間;硬件設(shè)計(jì)采用SPI閃存芯片,提高了信息存儲(chǔ)的容量及存儲(chǔ)效率;Modbus協(xié)議幀采用TCP/IP傳輸,傳輸穩(wěn)定可靠;網(wǎng)關(guān)與ZigBee網(wǎng)絡(luò)采用帶校驗(yàn)碼的協(xié)議幀進(jìn)行通訊,為網(wǎng)關(guān)與ZigBee網(wǎng)絡(luò)通訊的可靠性提供保證。
采用1臺(tái)PLC主站、3臺(tái)電腦、1個(gè)工業(yè)網(wǎng)關(guān)、3種ZigBee節(jié)點(diǎn)設(shè)備對(duì)工業(yè)網(wǎng)關(guān)進(jìn)行測(cè)試。PLC主站連接工業(yè)網(wǎng)關(guān),3臺(tái)電腦分別連接3種ZigBee節(jié)點(diǎn)。測(cè)試結(jié)果如表2所示。
表2 工業(yè)網(wǎng)關(guān)測(cè)試結(jié)果
測(cè)試點(diǎn)測(cè)試報(bào)文測(cè)試結(jié)果數(shù)字量輸出設(shè)備網(wǎng)關(guān)控制命令及時(shí)接收到輸出指令數(shù)字量輸入設(shè)備網(wǎng)關(guān)查詢(xún)命令能夠查詢(xún)到設(shè)備最新信息模擬量輸入設(shè)備網(wǎng)關(guān)查詢(xún)命令能夠查詢(xún)到設(shè)備最新信息
污水廠現(xiàn)場(chǎng)應(yīng)用,配置工業(yè)網(wǎng)關(guān)、數(shù)字量節(jié)點(diǎn)和模擬量節(jié)點(diǎn)各1臺(tái)。將數(shù)采設(shè)備布置在欲采集的設(shè)備附近,將工業(yè)網(wǎng)關(guān)布置在控制柜中,通過(guò)工業(yè)以太網(wǎng)連接工業(yè)網(wǎng)關(guān)與上位機(jī),通過(guò)上位機(jī)訪問(wèn)現(xiàn)場(chǎng)數(shù)據(jù)。經(jīng)過(guò)現(xiàn)場(chǎng)長(zhǎng)期應(yīng)用,工業(yè)網(wǎng)關(guān)性能穩(wěn)定、可靠。
經(jīng)過(guò)試驗(yàn)測(cè)試與現(xiàn)場(chǎng)應(yīng)用,結(jié)果顯示,基于Modbus TCP的工業(yè)網(wǎng)關(guān)在工業(yè)現(xiàn)場(chǎng)可以進(jìn)行安全、可靠和穩(wěn)定的數(shù)據(jù)處理與傳輸;ZigBee節(jié)點(diǎn)信息數(shù)據(jù)能實(shí)時(shí)上傳、更新和存儲(chǔ);網(wǎng)關(guān)與上位機(jī)采用工業(yè)以太網(wǎng)通訊符合工業(yè)自動(dòng)化發(fā)展趨勢(shì);基于Modbus TCP的工業(yè)網(wǎng)關(guān)設(shè)計(jì)合理、有效、實(shí)用,可以取代傳統(tǒng)通訊網(wǎng)絡(luò),并具有很好的應(yīng)用前景。
[1] Yu C B,Liu Y F,Wang C.Research on ZigBee wireless sensors network based on Modbus protocol[J].Wireless Sensor Network,2009,1(1):43-47.
[2] 邢偉偉,白瑞林,孟偉.ZigBee無(wú)線網(wǎng)關(guān)在MODBUS通信中的運(yùn)用[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(29):81-84.
[3] 李佳,謝琦,王慶華.基于網(wǎng)關(guān)的ZigBee網(wǎng)絡(luò)與Internet互聯(lián)框架[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(9):3332-3336.
[4] 涂煊,彭瑜,周怡颋,等.Modbus通信協(xié)議的紫蜂無(wú)線傳輸網(wǎng)絡(luò)的研究[J].自動(dòng)化儀表,2007,28(7):10-13.
[5] Willig A,Matheus K,Wolisz A.Wireless technology in industrial networks[J].Proceedings of the IEEE,2005,93(6):1130-1151.
Design of Industrial Gateway on Modbus TCP
ZHANGJianqi,TAOYi,LIMohan
( Xi’an Aerospace Automation Co.,Ltd.,Xi’an 710065,China)
Based on Modbus TCP,A new kind of Industrial gateway is designed in this paper.The communication between gateway and epigynous machine is based on TCP/IP protocol of network transport layer,the communication between gateway and various IO nodes is based on wireless ZigBee protocol.The Hardware of gateway is designed based on STM32F107 control unit and CC2530 ZigBee unit,software is based on Keil uVision4 compiler development environment and μC/OS-Ⅱreal-time operating system.The experimental results indicates: The ZigBee gateway based on industrial Ethernet shows some characteristics including industrial communication real-timed,reliability,safety,it also containing low cost,low energy consumption,high fault tolerance.The above results yield the advantage of gateway in the area of network performance,it can replace traditional communication network.
Modbus TCP; industrial ethernet; ZigBee; gateway design
2014-07-03
TP273.5
A
1001-2257(2014)12-0050-04
張建奇(1975-),男,陜西西安人,高級(jí)工程師,研究方向?yàn)槲锫?lián)網(wǎng)與自動(dòng)控制技術(shù);陶怡(1986-),男,陜西西安人,軟件工程師,研究方向?yàn)檐浖こ膛c物聯(lián)網(wǎng)技術(shù);李墨翰(1984-),男,陜西西安人,工程師,研究方向?yàn)殡娮泳€路板設(shè)計(jì)及物聯(lián)網(wǎng)技術(shù)。