《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于Modbus與ZigBee的通信冗余過程控制系統(tǒng)開發(fā)
基于Modbus與ZigBee的通信冗余過程控制系統(tǒng)開發(fā)
2016年電子技術(shù)應(yīng)用第1期
宋振鵬,孟祥印,徐鑫凱,谷翠軍
西南交通大學(xué) 機(jī)械工程學(xué)院,四川 成都610031
摘要: 針對(duì)傳統(tǒng)的工業(yè)現(xiàn)場(chǎng)過程控制系統(tǒng)布線量大、成本高和維護(hù)困難等問題,提出了一種采用Modbus總線技術(shù)、ZigBee無線技術(shù)和STM32技術(shù)的通信冗余監(jiān)控系統(tǒng)。該系統(tǒng)可實(shí)現(xiàn)兩種形式的通信:Modbus總線通信和作為通信冗余的ZigBee無線通信,提高了系統(tǒng)的穩(wěn)定性。下位機(jī)將工業(yè)現(xiàn)場(chǎng)儀器儀表采集的數(shù)據(jù)信息集中傳輸給上位機(jī),便于對(duì)現(xiàn)場(chǎng)進(jìn)行監(jiān)測(cè)。系統(tǒng)具有一定的隔離、抗干擾和防雷擊保護(hù)措施,適用于工業(yè)現(xiàn)場(chǎng)。
關(guān)鍵詞: Modbus ZigBee 通信冗余 過程控制
中圖分類號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: 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.
Development of redundant communication process control system based on Modbus and ZigBee
Song Zhenpeng,Meng Xiangyin,Xu Xinkai,Gu Cuijun
School of Mechanical Engineering, Southwest Jiaotong University, Chengdu, 610031
Abstract: To solve problems of the traditional industrial field process control system such as too much amount of wiring, high cost, difficult maintenance, this paper proposes a redundancy monitoring system based on Modbus, ZigBee and STM32. This system has two means of communication: Modbus bus communication and ZigBee wireless communication for redundant communication, which improves the reliability of the system. It can intentionally transmit data collected by instruments in the industrial field to PC. Meanwhile, the system has a certain degree of measures of isolation, interference and lightning protection for applying in the industrial field.
Key words : Modbus; ZigBee;redundant communication;process control

0 引言

    在傳統(tǒng)的過程控制系統(tǒng)中,對(duì)系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)和控制是最重要的兩個(gè)環(huán)節(jié),但是現(xiàn)場(chǎng)設(shè)備的分布式布局造成了布線量大、設(shè)備維護(hù)困難以及可靠性低等缺點(diǎn),特別是數(shù)據(jù)的傳輸存在很大的安全隱患。根據(jù)上述現(xiàn)狀,筆者以STM32F103RCT6芯片和CC2530芯片作為系統(tǒng)控制器,設(shè)計(jì)了一套基于ModbusZigBee通信冗余過程監(jiān)控系統(tǒng)替代傳統(tǒng)的過程控制系統(tǒng)。

1 通信冗余過程控制系統(tǒng)架構(gòu)

    基于Modbus和ZigBee的通信冗余過程控制系統(tǒng)主要分為現(xiàn)場(chǎng)設(shè)備、STM32處理器模塊、ZigBee無線通信模塊和上位機(jī)四個(gè)部分,系統(tǒng)整體架構(gòu)如圖1所示。通過圖1可以看出,現(xiàn)場(chǎng)電氣設(shè)備通過I/O口連接到現(xiàn)場(chǎng)的終端模塊,由終端模塊負(fù)責(zé)采集現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)以及對(duì)現(xiàn)場(chǎng)設(shè)備輸出控制指令。終端模塊通過基于Modbus協(xié)議的RS-485總線或ZigBee無線的方式與網(wǎng)關(guān)模塊進(jìn)行通信,實(shí)現(xiàn)了通信冗余的功能。網(wǎng)關(guān)模塊通過RS-485總線與上位機(jī)通信。上位機(jī)監(jiān)控系統(tǒng)是由Microsoft Visual Studio 2010編寫的界面監(jiān)控軟件,數(shù)據(jù)傳輸以RS-485總線通信為核心,實(shí)現(xiàn)了采集數(shù)據(jù)信息的顯示、人機(jī)交互以及溢出報(bào)警等功能。

ck4-t1.gif

2 下位機(jī)硬件電路設(shè)計(jì)

    下位機(jī)硬件電路主控芯片采用基于ARM內(nèi)核Cortex-M3的STM32F10x系列F103RCT6芯片。該芯片擁有256 KB的Flash存儲(chǔ)器和48 KB RAM,具有多路定時(shí)器以及輸入輸出端口,并且具有功耗低、多線程等優(yōu)點(diǎn),滿足工業(yè)現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)采集性能要求。ZigBee無線通信模塊采用的主控芯片是TI公司生產(chǎn)的CC2530芯片。CC2530內(nèi)部搭載了增強(qiáng)型8051CPU,內(nèi)置德州儀器的ZigBee協(xié)議棧(Z-Stack-TM),并且具有優(yōu)良的RF性能,適用于ZigBee無線通信的解決方案[1]。

    下位機(jī)硬件電路示意圖如圖2所示,整個(gè)系統(tǒng)的正常工作都由STM32芯片控制。在下位機(jī)硬件電路中,要保證系統(tǒng)的正常運(yùn)行,除去STM32和CC2530芯片基本的外圍電路,還需要其他電路模塊,如電源模塊、RS485收發(fā)模塊、數(shù)據(jù)采集模塊等。

ck4-t2.gif

    電池冗余備用電路如圖3所示。為保證系統(tǒng)在工業(yè)現(xiàn)場(chǎng)的連續(xù)穩(wěn)定工作,設(shè)計(jì)了電池冗余的備用電路,即外部掉電時(shí)使用電池供電,外部未掉電時(shí)電路給電池充電。電池采用可反復(fù)充電的AAA鋰電池,其中TP4075為電源充電芯片,A3401為P溝道MOS管,當(dāng)外部未掉電時(shí)處于截?cái)酄顟B(tài);當(dāng)外部掉電時(shí),MOS管處于導(dǎo)通狀態(tài),電池開始工作。

ck4-t3.gif

    電源防雷擊保護(hù)電路如圖4所示。外部24 V電源經(jīng)過電源防雷擊保護(hù)電路后才可以進(jìn)入系統(tǒng)電路,這一部分有效防止了因雷擊產(chǎn)生的高浪涌、快速脈沖以及靜電對(duì)系統(tǒng)電路的損壞。

ck4-t4.gif

    光耦隔離電路如圖5所示。應(yīng)對(duì)工業(yè)現(xiàn)場(chǎng)惡劣的環(huán)境,信號(hào)的輸入和輸出需要經(jīng)過隔離,否則會(huì)產(chǎn)生很大的干擾,影響系統(tǒng)數(shù)據(jù)采集和控制的準(zhǔn)確性。數(shù)字信號(hào)的隔離采用光耦隔離器PS2801進(jìn)行信號(hào)的隔離。電路中的下拉電阻R43確保在沒有信號(hào)輸入時(shí)過濾由引腳自身引起的信號(hào)干擾。

ck4-t5.gif

3 下位機(jī)通信軟件設(shè)計(jì)

3.1 Modbus通信軟件設(shè)計(jì)

    下位機(jī)終端模塊與網(wǎng)關(guān)模塊之間的通信優(yōu)先使用基于Modbus協(xié)議的RS-485總線進(jìn)行傳輸。RS-485收發(fā)器收發(fā)數(shù)據(jù)的方式為平衡發(fā)送和差分接收,因此具有較好的抗共模干擾能力,即有較好的抗噪聲干擾能力,并且其靈敏度極高,所以RS-485總線在中長(zhǎng)距離的通信中備受歡迎。

    Modbus協(xié)議是一種通用的標(biāo)準(zhǔn)協(xié)議,它使得控制器與控制器之間的通信成為可能,并且使不同設(shè)備生產(chǎn)商的控制設(shè)備之間進(jìn)行通信、互相連接成網(wǎng)絡(luò)、實(shí)現(xiàn)集中監(jiān)控成為了現(xiàn)實(shí)[2]。Modbus協(xié)議定義了其工作方式為主從模式,在整個(gè)通信網(wǎng)絡(luò)中,只允許有一個(gè)主設(shè)備,其余則為從設(shè)備,該系統(tǒng)中網(wǎng)關(guān)模塊為主設(shè)備,終端模塊為從設(shè)備。

    該系統(tǒng)采用的通信方式是廣播方式,即網(wǎng)關(guān)模塊以廣播的方式對(duì)所有終端模塊發(fā)送查詢指令。在Modbus網(wǎng)絡(luò)中,每一個(gè)設(shè)備都有一個(gè)唯一的地址,終端模塊通過對(duì)比查詢指令中的設(shè)備地址和自己的地址是否相同來確定指令是否發(fā)送給自己[3]。

    系統(tǒng)信息傳輸方式采用Modbus RTU方式,在該模式中每8 bit字節(jié)被定義為兩個(gè)4 bit的十六進(jìn)制字符[4],其通信的格式幀如圖6所示。

ck4-t6.gif

    系統(tǒng)中Modbus協(xié)議是由移植的FreeModbus協(xié)議棧來實(shí)現(xiàn),F(xiàn)reeModbus協(xié)議棧實(shí)現(xiàn)了Modbus協(xié)議函數(shù)的封裝,開發(fā)時(shí)只需要調(diào)用相應(yīng)的API函數(shù),其所支持的協(xié)議功能碼完全滿足本系統(tǒng)的設(shè)計(jì)需求,該系統(tǒng)應(yīng)用到的功能碼有0x01(讀線圈)、0x02(讀開關(guān)量)、0x03(讀寫保持寄存器)、0x04(讀輸入寄存器)。協(xié)議功能碼通過對(duì)應(yīng)的處理函數(shù)和回調(diào)函數(shù)實(shí)現(xiàn)數(shù)據(jù)的讀或?qū)?。圖7所示為RS-485總線運(yùn)用Modbus協(xié)議棧進(jìn)行串口采集任務(wù)的流程圖。

ck4-t7.gif

3.2 ZigBee通信軟件設(shè)計(jì)

    作為系統(tǒng)冗余的通信方式,當(dāng)Modbus總線通信失效時(shí),ZigBee無線通信會(huì)被激活(空閑時(shí)進(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)點(diǎn),在無線數(shù)據(jù)傳輸方案中應(yīng)用廣泛。

    在ZigBee組網(wǎng)網(wǎng)絡(luò)中,設(shè)備根據(jù)其功能可以分為三種不同的角色:協(xié)調(diào)器節(jié)點(diǎn)、終端節(jié)點(diǎn)和路由器節(jié)點(diǎn)。協(xié)調(diào)器節(jié)點(diǎn)是ZigBee網(wǎng)絡(luò)不可缺少的一環(huán),在ZigBee網(wǎng)絡(luò)中有且僅有一個(gè),主要功能是網(wǎng)絡(luò)的建立和維護(hù)。終端節(jié)點(diǎn)主要負(fù)責(zé)接收協(xié)調(diào)器節(jié)點(diǎn)命令,并響應(yīng)相應(yīng)的數(shù)據(jù)信息。路由器節(jié)點(diǎn)主要負(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é)點(diǎn),因?yàn)榫W(wǎng)絡(luò)結(jié)構(gòu)比較簡(jiǎn)單,所以網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)為星型結(jié)構(gòu)。協(xié)調(diào)器組網(wǎng)方式為廣播,終端節(jié)點(diǎn)組網(wǎng)方式為點(diǎn)播。

    無論是協(xié)調(diào)器還是終端節(jié)點(diǎn),通信軟件的開發(fā)都是基于Z-Stack協(xié)議棧,協(xié)議棧已經(jīng)實(shí)現(xiàn)了ZigBee的通信協(xié)議,用戶可以使用其提供的API函數(shù)進(jìn)行應(yīng)用程序開發(fā)。圖8為Z-Stack協(xié)議棧的運(yùn)行流程圖。

ck4-t8.gif

    協(xié)議棧設(shè)計(jì)了一個(gè)管理任務(wù)處理函數(shù)的數(shù)組taskArr[],開發(fā)者需要將任務(wù)處理函數(shù)加入數(shù)組序列。該數(shù)組簡(jiǎn)化后定義如下:

const pTaskEventHandlerFn tasksArr[] = {

    macEventLoop,

    nwk_event_loop,

    Hal_ProcessEvent,

    ZigBeeApp_ProcessEvent   };

    其中ZigBeeApp_ProcessEvent()為該系統(tǒng)設(shè)計(jì)的通信處理函數(shù)。

4 上位機(jī)軟件設(shè)計(jì)ck4-t9.gif

    上位機(jī)軟件的設(shè)計(jì)是在Microsoft Visual Studio 2010開發(fā)平臺(tái)下使用C#語(yǔ)言進(jìn)行的,VS是目前最流行的Windows平臺(tái)應(yīng)用程序的集成開發(fā)環(huán)境。C#語(yǔ)言集成了VB語(yǔ)言的可視化操作和C++的高運(yùn)行效率,成為了當(dāng)前.NET開發(fā)的首選語(yǔ)言[6]。

    上位機(jī)軟件主要實(shí)現(xiàn)數(shù)據(jù)的可視化和更好的人機(jī)交互,下位機(jī)發(fā)送的數(shù)據(jù)很難直觀地表達(dá)出當(dāng)前系統(tǒng)的工作狀態(tài),利用VS2010軟件編寫上位機(jī)監(jiān)控界面,使用Chart控件實(shí)現(xiàn)數(shù)據(jù)的圖表化顯示,同時(shí)設(shè)置報(bào)警溢出閾值,及時(shí)發(fā)現(xiàn)系統(tǒng)異常進(jìn)而進(jìn)行維護(hù)。上位機(jī)監(jiān)控界面功能框圖如圖9所示。

5 結(jié)束語(yǔ)

    本文采用Modbus總線技術(shù)和ZigBee無線技術(shù)設(shè)計(jì)了一種通信冗余過程控制系統(tǒng),下位機(jī)實(shí)現(xiàn)數(shù)據(jù)的采集和通信的冗余,上位機(jī)實(shí)現(xiàn)數(shù)據(jù)的監(jiān)測(cè)和設(shè)備控制。硬件電路具有一定的抗干擾、防雷擊能力,以應(yīng)對(duì)復(fù)雜的工業(yè)現(xiàn)場(chǎng)環(huán)境,該系統(tǒng)有一定的推廣價(jià)值,為解決傳統(tǒng)過程控制系統(tǒng)中的諸多難題提供了解決方案。

參考文獻(xiàn)

[1] 李俊斌,胡永忠.基于CC2530的ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011,19(16):108-111.

[2] 朱懿,蔣念平.Modbus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2006(22):118-120.

[3] 盧文俊,冷杉,楊建軍.基于Modbus協(xié)議的控制器遠(yuǎn)程監(jiān)控系統(tǒng)[J].電力自動(dòng)化設(shè)備,2003,23(6):54-56.

[4] 薛海濤,和衛(wèi)星,陳曉平.數(shù)據(jù)采集系統(tǒng)中Modbus協(xié)議的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(10-1):68-69.

[5] 章偉聰,俞新武,李忠成.基于CC2530及ZigBee協(xié)議棧設(shè)計(jì)無線網(wǎng)絡(luò)傳感器節(jié)點(diǎn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(7):184-187.

[6] 劉奇,林崗.基于Visual Studio 2010的UG二次開發(fā)研究[J].計(jì)算機(jī)應(yīng)用,2015,34(1):40-41.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。