文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.016
中文引用格式: 宋振鵬,孟祥印,,徐鑫凱,,等. 基于Modbus與ZigBee的通信冗余過程控制系統(tǒng)開發(fā)[J].電子技術(shù)應(yīng)用,2016,,42(1):61-64.
英文引用格式: Song Zhenpeng,,Meng Xiangyin,Xu Xinkai,,et al. Development of redundant communication process control system based on Modbus and ZigBee[J].Application of Electronic Technique,,2016,42(1):61-64.
0 引言
在傳統(tǒng)的過程控制系統(tǒng)中,對系統(tǒng)的實時監(jiān)測和控制是最重要的兩個環(huán)節(jié),,但是現(xiàn)場設(shè)備的分布式布局造成了布線量大,、設(shè)備維護困難以及可靠性低等缺點,特別是數(shù)據(jù)的傳輸存在很大的安全隱患,。根據(jù)上述現(xiàn)狀,,筆者以STM32F103RCT6芯片和CC2530芯片作為系統(tǒng)控制器,設(shè)計了一套基于Modbus和ZigBee的通信冗余過程監(jiān)控系統(tǒng)替代傳統(tǒng)的過程控制系統(tǒng),。
1 通信冗余過程控制系統(tǒng)架構(gòu)
基于Modbus和ZigBee的通信冗余過程控制系統(tǒng)主要分為現(xiàn)場設(shè)備,、STM32處理器模塊、ZigBee無線通信模塊和上位機四個部分,,系統(tǒng)整體架構(gòu)如圖1所示,。通過圖1可以看出,,現(xiàn)場電氣設(shè)備通過I/O口連接到現(xiàn)場的終端模塊,由終端模塊負(fù)責(zé)采集現(xiàn)場設(shè)備的數(shù)據(jù)以及對現(xiàn)場設(shè)備輸出控制指令,。終端模塊通過基于Modbus協(xié)議的RS-485總線或ZigBee無線的方式與網(wǎng)關(guān)模塊進(jìn)行通信,實現(xiàn)了通信冗余的功能,。網(wǎng)關(guān)模塊通過RS-485總線與上位機通信,。上位機監(jiān)控系統(tǒng)是由Microsoft Visual Studio 2010編寫的界面監(jiān)控軟件,數(shù)據(jù)傳輸以RS-485總線通信為核心,,實現(xiàn)了采集數(shù)據(jù)信息的顯示,、人機交互以及溢出報警等功能。
2 下位機硬件電路設(shè)計
下位機硬件電路主控芯片采用基于ARM內(nèi)核Cortex-M3的STM32F10x系列F103RCT6芯片,。該芯片擁有256 KB的Flash存儲器和48 KB RAM,,具有多路定時器以及輸入輸出端口,并且具有功耗低,、多線程等優(yōu)點,,滿足工業(yè)現(xiàn)場設(shè)備的數(shù)據(jù)采集性能要求。ZigBee無線通信模塊采用的主控芯片是TI公司生產(chǎn)的CC2530芯片,。CC2530內(nèi)部搭載了增強型8051CPU,,內(nèi)置德州儀器的ZigBee協(xié)議棧(Z-Stack-TM),并且具有優(yōu)良的RF性能,,適用于ZigBee無線通信的解決方案[1],。
下位機硬件電路示意圖如圖2所示,整個系統(tǒng)的正常工作都由STM32芯片控制,。在下位機硬件電路中,,要保證系統(tǒng)的正常運行,除去STM32和CC2530芯片基本的外圍電路,,還需要其他電路模塊,,如電源模塊、RS485收發(fā)模塊,、數(shù)據(jù)采集模塊等,。
電池冗余備用電路如圖3所示。為保證系統(tǒng)在工業(yè)現(xiàn)場的連續(xù)穩(wěn)定工作,,設(shè)計了電池冗余的備用電路,,即外部掉電時使用電池供電,外部未掉電時電路給電池充電,。電池采用可反復(fù)充電的AAA鋰電池,,其中TP4075為電源充電芯片,A3401為P溝道MOS管,,當(dāng)外部未掉電時處于截斷狀態(tài),;當(dāng)外部掉電時,,MOS管處于導(dǎo)通狀態(tài),電池開始工作,。
電源防雷擊保護電路如圖4所示,。外部24 V電源經(jīng)過電源防雷擊保護電路后才可以進(jìn)入系統(tǒng)電路,這一部分有效防止了因雷擊產(chǎn)生的高浪涌,、快速脈沖以及靜電對系統(tǒng)電路的損壞,。
光耦隔離電路如圖5所示。應(yīng)對工業(yè)現(xiàn)場惡劣的環(huán)境,,信號的輸入和輸出需要經(jīng)過隔離,,否則會產(chǎn)生很大的干擾,影響系統(tǒng)數(shù)據(jù)采集和控制的準(zhǔn)確性,。數(shù)字信號的隔離采用光耦隔離器PS2801進(jìn)行信號的隔離,。電路中的下拉電阻R43確保在沒有信號輸入時過濾由引腳自身引起的信號干擾。
3 下位機通信軟件設(shè)計
3.1 Modbus通信軟件設(shè)計
下位機終端模塊與網(wǎng)關(guān)模塊之間的通信優(yōu)先使用基于Modbus協(xié)議的RS-485總線進(jìn)行傳輸,。RS-485收發(fā)器收發(fā)數(shù)據(jù)的方式為平衡發(fā)送和差分接收,,因此具有較好的抗共模干擾能力,即有較好的抗噪聲干擾能力,,并且其靈敏度極高,,所以RS-485總線在中長距離的通信中備受歡迎。
Modbus協(xié)議是一種通用的標(biāo)準(zhǔn)協(xié)議,,它使得控制器與控制器之間的通信成為可能,,并且使不同設(shè)備生產(chǎn)商的控制設(shè)備之間進(jìn)行通信、互相連接成網(wǎng)絡(luò),、實現(xiàn)集中監(jiān)控成為了現(xiàn)實[2],。Modbus協(xié)議定義了其工作方式為主從模式,在整個通信網(wǎng)絡(luò)中,,只允許有一個主設(shè)備,,其余則為從設(shè)備,該系統(tǒng)中網(wǎng)關(guān)模塊為主設(shè)備,,終端模塊為從設(shè)備,。
該系統(tǒng)采用的通信方式是廣播方式,即網(wǎng)關(guān)模塊以廣播的方式對所有終端模塊發(fā)送查詢指令,。在Modbus網(wǎng)絡(luò)中,,每一個設(shè)備都有一個唯一的地址,終端模塊通過對比查詢指令中的設(shè)備地址和自己的地址是否相同來確定指令是否發(fā)送給自己[3],。
系統(tǒng)信息傳輸方式采用Modbus RTU方式,,在該模式中每8 bit字節(jié)被定義為兩個4 bit的十六進(jìn)制字符[4],其通信的格式幀如圖6所示。
系統(tǒng)中Modbus協(xié)議是由移植的FreeModbus協(xié)議棧來實現(xiàn),,F(xiàn)reeModbus協(xié)議棧實現(xiàn)了Modbus協(xié)議函數(shù)的封裝,,開發(fā)時只需要調(diào)用相應(yīng)的API函數(shù),其所支持的協(xié)議功能碼完全滿足本系統(tǒng)的設(shè)計需求,,該系統(tǒng)應(yīng)用到的功能碼有0x01(讀線圈),、0x02(讀開關(guān)量)、0x03(讀寫保持寄存器),、0x04(讀輸入寄存器),。協(xié)議功能碼通過對應(yīng)的處理函數(shù)和回調(diào)函數(shù)實現(xiàn)數(shù)據(jù)的讀或?qū)憽D7所示為RS-485總線運用Modbus協(xié)議棧進(jìn)行串口采集任務(wù)的流程圖,。
3.2 ZigBee通信軟件設(shè)計
作為系統(tǒng)冗余的通信方式,當(dāng)Modbus總線通信失效時,,ZigBee無線通信會被激活(空閑時進(jìn)入休眠),,用來完成終端模塊與網(wǎng)關(guān)模塊之前的數(shù)據(jù)通信,網(wǎng)絡(luò)通信的切換由網(wǎng)關(guān)模塊控制,。
ZigBee是一種基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議,,其具有低成本、低功耗以及組網(wǎng)靈活等優(yōu)點,,在無線數(shù)據(jù)傳輸方案中應(yīng)用廣泛,。
在ZigBee組網(wǎng)網(wǎng)絡(luò)中,設(shè)備根據(jù)其功能可以分為三種不同的角色:協(xié)調(diào)器節(jié)點,、終端節(jié)點和路由器節(jié)點,。協(xié)調(diào)器節(jié)點是ZigBee網(wǎng)絡(luò)不可缺少的一環(huán),在ZigBee網(wǎng)絡(luò)中有且僅有一個,,主要功能是網(wǎng)絡(luò)的建立和維護,。終端節(jié)點主要負(fù)責(zé)接收協(xié)調(diào)器節(jié)點命令,并響應(yīng)相應(yīng)的數(shù)據(jù)信息,。路由器節(jié)點主要負(fù)責(zé)選取網(wǎng)絡(luò)通信信道以及轉(zhuǎn)發(fā)數(shù)據(jù),。ZigBee網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)主要有星型、網(wǎng)狀型和樹狀型三種[5],。
該系統(tǒng)中,,網(wǎng)關(guān)模塊作為協(xié)調(diào)器,終端模塊作為終端節(jié)點,,因為網(wǎng)絡(luò)結(jié)構(gòu)比較簡單,,所以網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)為星型結(jié)構(gòu)。協(xié)調(diào)器組網(wǎng)方式為廣播,,終端節(jié)點組網(wǎng)方式為點播,。
無論是協(xié)調(diào)器還是終端節(jié)點,通信軟件的開發(fā)都是基于Z-Stack協(xié)議棧,,協(xié)議棧已經(jīng)實現(xiàn)了ZigBee的通信協(xié)議,,用戶可以使用其提供的API函數(shù)進(jìn)行應(yīng)用程序開發(fā),。圖8為Z-Stack協(xié)議棧的運行流程圖。
協(xié)議棧設(shè)計了一個管理任務(wù)處理函數(shù)的數(shù)組taskArr[],,開發(fā)者需要將任務(wù)處理函數(shù)加入數(shù)組序列,。該數(shù)組簡化后定義如下:
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_ProcessEvent,
ZigBeeApp_ProcessEvent };
其中ZigBeeApp_ProcessEvent()為該系統(tǒng)設(shè)計的通信處理函數(shù)。
4 上位機軟件設(shè)計
上位機軟件的設(shè)計是在Microsoft Visual Studio 2010開發(fā)平臺下使用C#語言進(jìn)行的,,VS是目前最流行的Windows平臺應(yīng)用程序的集成開發(fā)環(huán)境,。C#語言集成了VB語言的可視化操作和C++的高運行效率,成為了當(dāng)前.NET開發(fā)的首選語言[6],。
上位機軟件主要實現(xiàn)數(shù)據(jù)的可視化和更好的人機交互,,下位機發(fā)送的數(shù)據(jù)很難直觀地表達(dá)出當(dāng)前系統(tǒng)的工作狀態(tài),利用VS2010軟件編寫上位機監(jiān)控界面,,使用Chart控件實現(xiàn)數(shù)據(jù)的圖表化顯示,,同時設(shè)置報警溢出閾值,及時發(fā)現(xiàn)系統(tǒng)異常進(jìn)而進(jìn)行維護,。上位機監(jiān)控界面功能框圖如圖9所示,。
5 結(jié)束語
本文采用Modbus總線技術(shù)和ZigBee無線技術(shù)設(shè)計了一種通信冗余過程控制系統(tǒng),下位機實現(xiàn)數(shù)據(jù)的采集和通信的冗余,,上位機實現(xiàn)數(shù)據(jù)的監(jiān)測和設(shè)備控制,。硬件電路具有一定的抗干擾、防雷擊能力,,以應(yīng)對復(fù)雜的工業(yè)現(xiàn)場環(huán)境,,該系統(tǒng)有一定的推廣價值,為解決傳統(tǒng)過程控制系統(tǒng)中的諸多難題提供了解決方案,。
參考文獻(xiàn)
[1] 李俊斌,,胡永忠.基于CC2530的ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計[J].電子設(shè)計工程,2011,,19(16):108-111.
[2] 朱懿,,蔣念平.Modbus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用[J].微計算機信息,2006(22):118-120.
[3] 盧文俊,,冷杉,,楊建軍.基于Modbus協(xié)議的控制器遠(yuǎn)程監(jiān)控系統(tǒng)[J].電力自動化設(shè)備,2003,,23(6):54-56.
[4] 薛海濤,,和衛(wèi)星,陳曉平.數(shù)據(jù)采集系統(tǒng)中Modbus協(xié)議的實現(xiàn)[J].微計算機信息,,2007,,23(10-1):68-69.
[5] 章偉聰,俞新武,李忠成.基于CC2530及ZigBee協(xié)議棧設(shè)計無線網(wǎng)絡(luò)傳感器節(jié)點[J].計算機系統(tǒng)應(yīng)用,,2011,,20(7):184-187.
[6] 劉奇,林崗.基于Visual Studio 2010的UG二次開發(fā)研究[J].計算機應(yīng)用,,2015,,34(1):40-41.