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