, ,
(西安航天自動(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)之間采用無線ZigBee協(xié)議。網(wǎng)關(guān)硬件基于STM32F107控制芯片和CC2530 ZigBee芯片,軟件基于Keil uVision4開發(fā)編譯環(huán)境和μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)。經(jīng)過試驗(yàn)測試及現(xiàn)場應(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)勢,可以替代傳統(tǒng)通訊網(wǎng)絡(luò),具有很好的應(yīng)用前景。
Modbus TCP;工業(yè)以太網(wǎng);ZigBee;網(wǎng)關(guān)設(shè)計(jì)
近年來,隨著工業(yè)自動(dòng)化領(lǐng)域的發(fā)展,工業(yè)現(xiàn)場對網(wǎng)絡(luò)的可靠性及成本有極高的要求[1]。傳統(tǒng)基于串口的工業(yè)網(wǎng)關(guān)可以滿足工業(yè)現(xiàn)場的應(yīng)用,但在工業(yè)線纜上付出了高額成本[2]。市場上設(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)場布線難題,節(jié)約了工業(yè)現(xiàn)場的線纜成本。
基于工業(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)場總線可靠性與低成本的要求,且設(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ī)通訊。主控模塊通過串口與ZigBee模塊通訊。
b.ZigBee模塊。ZigBee模塊的無線網(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)先級及數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
工業(yè)網(wǎng)關(guān)并發(fā)地接收Modbus協(xié)議幀與ZigBee協(xié)議幀,并根據(jù)協(xié)議幀的類型做出相應(yīng)的處理。在網(wǎng)關(guān)內(nèi)部設(shè)置接收處理優(yōu)先級,當(dāng)Modbus協(xié)議幀與ZigBee協(xié)議幀同時(shí)達(dá)到網(wǎng)關(guān)時(shí),由嵌入式操作系統(tǒng)μC/OS-Ⅱ根據(jù)優(yōu)先級進(jìn)行選擇性接收處理。如表1所示,Modbus協(xié)議幀接收、處理優(yōu)先級高于Zigbee協(xié)議幀接收、處理的優(yōu)先級,網(wǎng)關(guān)數(shù)據(jù)映射表的操作優(yōu)先級高于協(xié)議幀的接收、處理,TCP/IP連接建立的優(yōu)先級處于用戶任務(wù)優(yōu)先級最高。在網(wǎng)關(guān)運(yùn)行過程中,由μC/OS-Ⅱ操作系統(tǒng)嚴(yán)格按照優(yōu)先級對任務(wù)次序進(jìn)行調(diào)度。
按照表1所示優(yōu)先級,僅次于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)先級
任務(wù)名稱任務(wù)ID優(yōu)先級TCP/IP建立連接112數(shù)據(jù)映射表操作214Modbus協(xié)議幀接收、處理316ZigBee協(xié)議幀接收、處理418
Modbus協(xié)議幀接收、處理主要是工業(yè)網(wǎng)關(guān)通過工業(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;//長度,2字節(jié)
uint8_t UnitId;//單元標(biāo)識(shí),1字節(jié)
uint8_t FunCode;//功能碼,1字節(jié)
uint16_t StartAdd;//起始地址,2字節(jié)
uint16_t Num;//訪問數(shù)量,2字節(jié)
}ModbusFrm;
ZigBee協(xié)議幀接收、處理主要是工業(yè)網(wǎng)關(guān)通過串口接收ZigBee節(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; //幀類型,1字節(jié)
uint16_t Length;//長度,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ù)域,不定長
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)對上位機(jī)提供的服務(wù)就是為上位機(jī)查詢或修改網(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ù)同步的過程。工業(yè)網(wǎng)關(guān)為上位機(jī)提供的服務(wù)包括對離散量的操作、對線圈的操作和對寄存器的操作[5],對應(yīng)ZigBee網(wǎng)絡(luò)設(shè)備則由數(shù)字量設(shè)備和模擬量設(shè)備向網(wǎng)關(guān)內(nèi)嵌數(shù)據(jù)庫提供數(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)之間對象的交互情況。設(shè)計(jì)將網(wǎng)關(guān)分為4個(gè)對象描述,分別是上位機(jī)PLC、工業(yè)網(wǎng)關(guān)、工業(yè)網(wǎng)關(guān)數(shù)據(jù)映射庫和工業(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)開始運(yùn)行,工業(yè)網(wǎng)關(guān)完成初始化之后,啟動(dòng)ZigBee網(wǎng)絡(luò)設(shè)備,并初始化映射數(shù)據(jù)庫。ZigBee網(wǎng)絡(luò)設(shè)備啟動(dòng)后進(jìn)行設(shè)備的查詢,即ZigBee節(jié)點(diǎn)的信息查詢。網(wǎng)關(guān)待ZigBee網(wǎng)絡(luò)設(shè)備就緒后,對ZigBee網(wǎng)絡(luò)設(shè)備信息進(jìn)行查詢,ZigBee返回設(shè)備信息并更新映射數(shù)據(jù)庫。映射數(shù)據(jù)庫第一次更新完畢后,網(wǎng)關(guān)處于等待狀態(tài),等待上位機(jī)PLC的連接。在網(wǎng)關(guān)等待連接的過程中,ZigBee設(shè)備按一定的時(shí)間間隔對映射數(shù)據(jù)庫進(jìn)行數(shù)據(jù)更新。上位機(jī)PLC發(fā)起連接后,網(wǎng)關(guān)與PLC建立連接,等待PLC發(fā)送Modbus協(xié)議幀,網(wǎng)關(guān)接收協(xié)議幀后對協(xié)議幀進(jìn)行解析,根據(jù)協(xié)議幀執(zhí)行相應(yīng)的操作。在網(wǎng)關(guān)執(zhí)行完協(xié)議幀所制定的操作之后,按照Modbus協(xié)議組幀,并向PLC回傳協(xié)議回復(fù)幀。之后如無其他協(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ī)對節(jié)點(diǎn)設(shè)備信息訪問的實(shí)時(shí)性;采用嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ設(shè)計(jì)了不同的優(yōu)先級,保證了上位機(jī)訪問信息的實(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è)備對工業(yè)網(wǎng)關(guān)進(jìn)行測試。PLC主站連接工業(yè)網(wǎng)關(guān),3臺(tái)電腦分別連接3種ZigBee節(jié)點(diǎn)。測試結(jié)果如表2所示。
表2 工業(yè)網(wǎng)關(guān)測試結(jié)果
測試點(diǎn)測試報(bào)文測試結(jié)果數(shù)字量輸出設(shè)備網(wǎng)關(guān)控制命令及時(shí)接收到輸出指令數(shù)字量輸入設(shè)備網(wǎng)關(guān)查詢命令能夠查詢到設(shè)備最新信息模擬量輸入設(shè)備網(wǎng)關(guān)查詢命令能夠查詢到設(shè)備最新信息
污水廠現(xiàn)場應(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)布置在控制柜中,通過工業(yè)以太網(wǎng)連接工業(yè)網(wǎng)關(guān)與上位機(jī),通過上位機(jī)訪問現(xiàn)場數(shù)據(jù)。經(jīng)過現(xiàn)場長期應(yīng)用,工業(yè)網(wǎng)關(guān)性能穩(wěn)定、可靠。
經(jīng)過試驗(yàn)測試與現(xiàn)場應(yīng)用,結(jié)果顯示,基于Modbus TCP的工業(yè)網(wǎng)關(guān)在工業(yè)現(xiàn)場可以進(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ā)展趨勢;基于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ǎ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ǎ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-),男,陜西西安人,高級工程師,研究方向?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ù)。