張建奇 李墨翰 張建鋒 王安民
(西安航天自動化股份有限公司1,陜西 西安 710065;中國市政工程西北設(shè)計(jì)研究院有限公司2,陜西 西安 730000)
隨著物聯(lián)網(wǎng)技術(shù)的興起,無線技術(shù)開始越來越受到人們的重視。ZigBee是一種新興的近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的無線網(wǎng)絡(luò)技術(shù),主要用于近距離無線連接。它依據(jù)IEEE 802.15.4標(biāo)準(zhǔn),能夠在數(shù)千個微小的傳感器之間相互協(xié)調(diào)實(shí)現(xiàn)通信。這些傳感器只需要很少的能量,以接力的方式通過無線電波將數(shù)據(jù)從一個網(wǎng)絡(luò)節(jié)點(diǎn)傳到另一個節(jié)點(diǎn),具有非常高的通信效率,應(yīng)用前景廣泛。Profibus是現(xiàn)在應(yīng)用最廣泛的開放工業(yè)現(xiàn)場總線之一。將ZigBee無線通信技術(shù)接入Profibus現(xiàn)場總線,可以方便地將無線技術(shù)融入到工業(yè)控制當(dāng)中,如電力系統(tǒng)自動化等行業(yè)[1],從而實(shí)現(xiàn)無線生產(chǎn)過程控制以及監(jiān)控等功能[2-3]。
Profibus總線的無線網(wǎng)網(wǎng)關(guān)能夠?qū)rofibus總線及帶路由功能的無線采集模塊(即路由I/O模塊)透明連接到一起,通過PLC可以實(shí)現(xiàn)對每一個路由I/O的配置以及數(shù)據(jù)的采集、指令的下發(fā)和報(bào)警的處理。整個無線采集系統(tǒng)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure of the system
Profibus總線無線網(wǎng)網(wǎng)關(guān)可以劃分為ZigBee模塊、協(xié)議轉(zhuǎn)換模塊、Profibus總線協(xié)議模塊和供電模塊4個部分。ZigBee模塊核心采用TI公司的CC2530芯片,主要完成無線網(wǎng)絡(luò)的組網(wǎng)管理以及數(shù)據(jù)采集的工作。協(xié)議轉(zhuǎn)換模塊使用ATMEL公司的8位單片機(jī)Atmega128A。Profibus總線協(xié)議及接口模塊通過使用PROFICHIP公司的VPC3+C和ADI公司的ADM2486來實(shí)現(xiàn)。電源模塊采用NI的LM25575芯片,其將24 V的輸入電壓轉(zhuǎn)換成5 V電壓供系統(tǒng)使用。
系統(tǒng)協(xié)議轉(zhuǎn)換單元Atmega128A起到承上啟下的作用,它既可以對VPC3+C進(jìn)行配置管理,與Profibus總線進(jìn)行數(shù)據(jù)交換,又可以通過串口和網(wǎng)絡(luò)協(xié)調(diào)器CC2530通信,采集終端數(shù)據(jù),并將PLC發(fā)送的數(shù)據(jù)傳送給CC2530,最終傳送到指定的路由 I/O。其中,CC2530使用了TI的 Z-STACK協(xié)議棧[4]。
系統(tǒng)協(xié)議轉(zhuǎn)換單元Atmega128A在傳輸數(shù)據(jù)的同時對數(shù)據(jù)進(jìn)行校檢,從而保證數(shù)據(jù)的可靠性,實(shí)現(xiàn)Profibus總線到無線網(wǎng)絡(luò)數(shù)據(jù)的無縫交換[5]。
系統(tǒng)無線網(wǎng)絡(luò)協(xié)調(diào)器采用TI的CC2530實(shí)現(xiàn)。CC2530 是用于 2.4 GHz IEEE 802.15.4 的片上系統(tǒng)解決方案,它結(jié)合了領(lǐng)先的RF收發(fā)器的優(yōu)良性能,是業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051 CPU。系統(tǒng)內(nèi)具有8 kB RAM和最大256 kB閃存,以及許多其他強(qiáng)大的功能,最高通信速度可達(dá)250 kbit/s。CC2530具有不同的運(yùn)行模式,使得它尤其適用于超低功耗要求的系統(tǒng)。
網(wǎng)關(guān)中的CC2530作為無線網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)調(diào)器,是整個無線網(wǎng)絡(luò)的中心,它負(fù)責(zé)自組網(wǎng)管理以及I/O數(shù)據(jù)的采集、傳輸、路由、匯聚、下發(fā)等多種工作。給CC2530加入射頻前端CC2591,可以大幅提高無線網(wǎng)絡(luò)覆蓋范圍。
無線網(wǎng)絡(luò)協(xié)調(diào)器電路如圖2所示。
圖2 無線網(wǎng)絡(luò)協(xié)調(diào)器電路Fig.2 Circuit of wireless network coordinator
系統(tǒng)采用VPC3+C實(shí)現(xiàn)Profibus-DP的從站功能,與Profibus總線的接口芯片使用Profibus兼容芯片ADM2486。Profibus接口電路原理圖如圖3所示。
圖3 Profibus接口電路Fig.3 Interface circuit of Profibus
VPC3+C集成了全部的Profibus協(xié)議,可以方便地實(shí)現(xiàn)各種 Profibus總線功能[6],最高速度可達(dá) 12 Mbit/s。VPC3+C支持4種通信模式,這里Atmega128A采用同步Intel模式與VPC3+C通信。ADM2486為半雙工隔離式的RS-485收發(fā)器,具有25 kV/μs的高共模瞬變抗擾度及熱關(guān)斷保護(hù)功能[7]。
系統(tǒng)軟件分為網(wǎng)關(guān)協(xié)議轉(zhuǎn)換和ZigBee無線網(wǎng)絡(luò)兩個部分。
在本方案的設(shè)計(jì)中,網(wǎng)關(guān)軟件的協(xié)議轉(zhuǎn)換子程序?yàn)橹鞒绦蚰K/中斷處理模塊的形式。Atmega128A單片機(jī)使用同步Intel模式與VPC3+C芯片通信。主程序模塊主要負(fù)責(zé)系統(tǒng)初始化和寄存器狀態(tài)查詢,并根據(jù)寄存器狀態(tài)進(jìn)行相應(yīng)操作[8]。
①初始化
在VPC3+C芯片正常工作之前,首先需要對其進(jìn)行初始化,對寄存器進(jìn)行配置。這包括設(shè)置協(xié)議芯片的中斷允許,寫入從站識別號和地址,設(shè)置VPC3+C方式寄存器,設(shè)置診斷緩沖區(qū)、參數(shù)緩沖區(qū)、配置緩沖區(qū)、地址緩沖區(qū)、初始化長度等;并根據(jù)以上初始值得出各個緩沖區(qū)的指針和輔助緩沖區(qū)的指針;根據(jù)傳輸?shù)臄?shù)據(jù)長度,確定輸出緩沖區(qū)以及輸入緩沖區(qū)和指針。
VPC3+C初始化流程圖如圖4所示。
圖4 VPC3+C初始化流程圖Fig.4 Flowchart of VPC3+C initialization
②外部存儲器映射
VPC3+C芯片的內(nèi)部RAM作為Atmega128A單片機(jī)的外部擴(kuò)展存儲器,因此,Atmega128A可以直接以訪存的形式訪問VPC3+C芯片上的存儲器。按照硬件設(shè)計(jì),Atmega128A單片機(jī)的PA0~PA7引腳作為外部8位數(shù)據(jù)總線,PC0~PC7引腳作為外部8位地址總線,且地址最高位通過取反后接到VPC3+C芯片上,形成片選信號。當(dāng)?shù)刂纷罡呶粸?時,表示訪問外部存儲器,即VPC3+C芯片內(nèi)部的存儲器;反之訪問Atmega128A內(nèi)部存儲器。
③產(chǎn)品識別ID號及從站地址的設(shè)置
產(chǎn)品識別ID號在從站設(shè)備描述文件(general station device,GSD)中加以設(shè)置。程序在初始化VPC3+C芯片時,同樣要設(shè)置產(chǎn)品識別ID號,且必須與GSD文件里描述的一致。從站地址在PLC配置程序里設(shè)定??紤]到一個Profibus總線上可以同時掛接多個網(wǎng)關(guān),因此,網(wǎng)關(guān)的從站地址必須方便用戶修改。
④設(shè)置VPC3+C芯片輸入輸出緩沖區(qū)大小
VPC3+C芯片內(nèi)部設(shè)有專門的用戶I/O數(shù)據(jù)緩沖區(qū),在使用前需要對其進(jìn)行配置。在配置VPC3+C芯片前,需要先對GSD文件輸入輸出大小的定義作修改,如:Module=“100 Byte In,40 Byte Out”0x6f,0x63,0x5f,0x5f,0x5f,0x51。
該設(shè)置表示從站輸入緩沖區(qū)為100 B、輸出緩沖區(qū)為40 B。接下來配置VPC3+C芯片。配置前,首先需取得其配置緩沖區(qū)指針,并依次把配置數(shù)據(jù)寫入配置緩沖區(qū)(需與GSD文件中的一致)。
然后根據(jù)緩沖區(qū)大小便可計(jì)算出輸入輸出緩沖區(qū)指針。對于該指針的讀寫操作,其會被VPC3+C芯片轉(zhuǎn)換成Profibus協(xié)議上傳到PLC中,實(shí)現(xiàn)數(shù)據(jù)的傳輸。
⑤ZigBee協(xié)議數(shù)據(jù)與Profibus協(xié)議數(shù)據(jù)映射轉(zhuǎn)換
當(dāng)Atmega128A接收到無線網(wǎng)絡(luò)協(xié)調(diào)器發(fā)送的數(shù)據(jù)時,需要根據(jù)數(shù)據(jù)中的幀類型、站號、站類型字段計(jì)算出VPC3+C中輸入緩沖區(qū)指針,并將數(shù)據(jù)按格式寫入輸入緩沖區(qū)中對應(yīng)的位置。
同樣當(dāng)接收到PLC從Profibus總線發(fā)送的數(shù)據(jù)時,需要根據(jù)開關(guān)量所在地址計(jì)算出實(shí)際對應(yīng)的站號與站類型,并且封裝成規(guī)定的幀結(jié)構(gòu),通過網(wǎng)絡(luò)協(xié)調(diào)器發(fā)送給對應(yīng)的路由I/O設(shè)備[9]。
ZigBee無線網(wǎng)絡(luò)協(xié)議通過TI的Z-STACK協(xié)議棧來實(shí)現(xiàn)。Z-STACK采用操作系統(tǒng)的思想來構(gòu)建,采用事件輪詢的方式來對事件進(jìn)行處理。當(dāng)各層完成初始化后,系統(tǒng)進(jìn)入低功耗模式,當(dāng)事件發(fā)生時,喚醒系統(tǒng),開始進(jìn)入中斷處理事件,結(jié)束后繼續(xù)進(jìn)入低功耗模式。如果同時有幾個事件發(fā)生,則判斷優(yōu)先級,逐次處理事件。這種軟件構(gòu)架可以極大地降低系統(tǒng)功耗[10]。此外,只需要編寫應(yīng)用層程序就可以實(shí)現(xiàn)ZigBee無線網(wǎng)絡(luò)的應(yīng)用開發(fā),不需要將過多的精力投入到網(wǎng)絡(luò)協(xié)議的具體細(xì)節(jié)當(dāng)中。
協(xié)調(diào)器與路由I/O通過以下數(shù)據(jù)結(jié)構(gòu)組織通信數(shù)據(jù)。
系統(tǒng)上電后,根據(jù)程序配置數(shù)據(jù),在指定的信道中建立網(wǎng)絡(luò)號為PANID的網(wǎng)絡(luò)。部分源代碼如下。
此時,只要網(wǎng)絡(luò)中有路由I/O設(shè)備上電,由于有相同的信道號與網(wǎng)絡(luò)標(biāo)志號,路由I/O設(shè)備會自動加入到該網(wǎng)絡(luò)。若加入網(wǎng)絡(luò)成功,則會觸發(fā)協(xié)議棧中的ZDO_STATE_CHANGE消息,應(yīng)用程序在應(yīng)用層接收到該消息并確認(rèn)后,便可以正式開始路由I/O的工作流程。
當(dāng)路由I/O設(shè)備加入網(wǎng)絡(luò)后,需要先與協(xié)調(diào)器實(shí)施綁定。綁定過程在協(xié)議棧應(yīng)用層實(shí)現(xiàn),路由I/O設(shè)備讀取自身的撥碼值與短地址,并按照上述協(xié)議數(shù)據(jù)結(jié)構(gòu),封裝成命令幀發(fā)送給協(xié)調(diào)器。部分源代碼如下。
協(xié)調(diào)器接收到命令幀,經(jīng)確認(rèn)無誤后,在本地RAM中記錄站號與短地址的對應(yīng)關(guān)系,并回復(fù)命令應(yīng)答幀給相應(yīng)的路由I/O設(shè)備。至此,路由I/O設(shè)備的綁定過程結(jié)束。如當(dāng)協(xié)調(diào)器有控制數(shù)據(jù)需要下發(fā)時,只需要先查表,根據(jù)站號查出對應(yīng)的短地址,便可發(fā)送至目的路由I/O設(shè)備。
對西門子S7-300 PLC進(jìn)行編程。實(shí)際運(yùn)行測試結(jié)果表明,無線模塊的發(fā)射功率、接收靈敏度、通信距離、誤包率和速度均滿足工業(yè)應(yīng)用的實(shí)時性和安全性要求。網(wǎng)關(guān)可以通過工業(yè)現(xiàn)場總線Profibus加入到工業(yè)應(yīng)用當(dāng)中,具有功耗低、布置方便、編程使用簡單可靠等優(yōu)點(diǎn),可以替代原來有線傳輸?shù)姆绞健kS著工業(yè)物聯(lián)網(wǎng)技術(shù)的興起和發(fā)展,此無線模塊具有良好的應(yīng)用前景。
[1]張高群.電力系統(tǒng)應(yīng)用ZigBee技術(shù)初步研究[J].電子測量技術(shù),2008(11):20-22.
[2]梁湖輝,張峰,常沖,等.基于ZigBee的變電站監(jiān)測報(bào)警系統(tǒng)[J].電力系統(tǒng)保護(hù)與控制,2010(12):33-34.
[3]何杏宇,張浩,彭道剛.ZigBee技術(shù)在工業(yè)環(huán)境監(jiān)測系統(tǒng)中的應(yīng)用研究[J].機(jī)電一體化,2008(7):111-112.
[4]杜煥軍,張維勇,劉國田.ZigBee網(wǎng)絡(luò)的路由協(xié)議研究[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008(10):79-80.
[5]楊順,章毅,陶康.基于ZigBee和以太網(wǎng)的無線網(wǎng)關(guān)設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010(1):43-45.
[6]王保永,汪鵬,盧宏軍.基于PROFIBUS的智能接口芯片SPC3及其應(yīng)用[J].國外電子元器件,2005(3):23-25.
[7]張婕,王征,郭天樂.SPC3在現(xiàn)場總線智能從站設(shè)計(jì)中的應(yīng)用[J].現(xiàn)代電子技術(shù),2008(3):5-7.
[8]李孝輝,張慧慧,孫樹文.基于C8051和SPC3的PROFIBUS智能從站設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(26):120-123.
[9]王學(xué)偉.PROFIBUS-DP現(xiàn)場總線智能節(jié)點(diǎn)的設(shè)計(jì)[D].哈爾濱:哈爾濱理工大學(xué),2008.
[10]胡鴻豪,林程,宋麗平.基于S3C2410的ZIGBEE無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)的設(shè)計(jì)[J].大眾科技,2008(12):43 -45.