張建奇 李墨翰 張建鋒 王安民
(西安航天自動化股份有限公司1,陜西 西安 710065;中國市政工程西北設計研究院有限公司2,陜西 西安 730000)
隨著物聯網技術的興起,無線技術開始越來越受到人們的重視。ZigBee是一種新興的近距離、低復雜度、低功耗、低數據速率、低成本的無線網絡技術,主要用于近距離無線連接。它依據IEEE 802.15.4標準,能夠在數千個微小的傳感器之間相互協調實現通信。這些傳感器只需要很少的能量,以接力的方式通過無線電波將數據從一個網絡節點傳到另一個節點,具有非常高的通信效率,應用前景廣泛。Profibus是現在應用最廣泛的開放工業現場總線之一。將ZigBee無線通信技術接入Profibus現場總線,可以方便地將無線技術融入到工業控制當中,如電力系統自動化等行業[1],從而實現無線生產過程控制以及監控等功能[2-3]。
Profibus總線的無線網網關能夠將Profibus總線及帶路由功能的無線采集模塊(即路由I/O模塊)透明連接到一起,通過PLC可以實現對每一個路由I/O的配置以及數據的采集、指令的下發和報警的處理。整個無線采集系統如圖1所示。

圖1 系統結構圖Fig.1 Structure of the system
Profibus總線無線網網關可以劃分為ZigBee模塊、協議轉換模塊、Profibus總線協議模塊和供電模塊4個部分。ZigBee模塊核心采用TI公司的CC2530芯片,主要完成無線網絡的組網管理以及數據采集的工作。協議轉換模塊使用ATMEL公司的8位單片機Atmega128A。Profibus總線協議及接口模塊通過使用PROFICHIP公司的VPC3+C和ADI公司的ADM2486來實現。電源模塊采用NI的LM25575芯片,其將24 V的輸入電壓轉換成5 V電壓供系統使用。
系統協議轉換單元Atmega128A起到承上啟下的作用,它既可以對VPC3+C進行配置管理,與Profibus總線進行數據交換,又可以通過串口和網絡協調器CC2530通信,采集終端數據,并將PLC發送的數據傳送給CC2530,最終傳送到指定的路由 I/O。其中,CC2530使用了TI的 Z-STACK協議棧[4]。
系統協議轉換單元Atmega128A在傳輸數據的同時對數據進行校檢,從而保證數據的可靠性,實現Profibus總線到無線網絡數據的無縫交換[5]。
系統無線網絡協調器采用TI的CC2530實現。CC2530 是用于 2.4 GHz IEEE 802.15.4 的片上系統解決方案,它結合了領先的RF收發器的優良性能,是業界標準的增強型8051 CPU。系統內具有8 kB RAM和最大256 kB閃存,以及許多其他強大的功能,最高通信速度可達250 kbit/s。CC2530具有不同的運行模式,使得它尤其適用于超低功耗要求的系統。
網關中的CC2530作為無線網絡的網絡協調器,是整個無線網絡的中心,它負責自組網管理以及I/O數據的采集、傳輸、路由、匯聚、下發等多種工作。給CC2530加入射頻前端CC2591,可以大幅提高無線網絡覆蓋范圍。
無線網絡協調器電路如圖2所示。

圖2 無線網絡協調器電路Fig.2 Circuit of wireless network coordinator
系統采用VPC3+C實現Profibus-DP的從站功能,與Profibus總線的接口芯片使用Profibus兼容芯片ADM2486。Profibus接口電路原理圖如圖3所示。

圖3 Profibus接口電路Fig.3 Interface circuit of Profibus
VPC3+C集成了全部的Profibus協議,可以方便地實現各種 Profibus總線功能[6],最高速度可達 12 Mbit/s。VPC3+C支持4種通信模式,這里Atmega128A采用同步Intel模式與VPC3+C通信。ADM2486為半雙工隔離式的RS-485收發器,具有25 kV/μs的高共模瞬變抗擾度及熱關斷保護功能[7]。
系統軟件分為網關協議轉換和ZigBee無線網絡兩個部分。
在本方案的設計中,網關軟件的協議轉換子程序為主程序模塊/中斷處理模塊的形式。Atmega128A單片機使用同步Intel模式與VPC3+C芯片通信。主程序模塊主要負責系統初始化和寄存器狀態查詢,并根據寄存器狀態進行相應操作[8]。
①初始化
在VPC3+C芯片正常工作之前,首先需要對其進行初始化,對寄存器進行配置。這包括設置協議芯片的中斷允許,寫入從站識別號和地址,設置VPC3+C方式寄存器,設置診斷緩沖區、參數緩沖區、配置緩沖區、地址緩沖區、初始化長度等;并根據以上初始值得出各個緩沖區的指針和輔助緩沖區的指針;根據傳輸的數據長度,確定輸出緩沖區以及輸入緩沖區和指針。
VPC3+C初始化流程圖如圖4所示。

圖4 VPC3+C初始化流程圖Fig.4 Flowchart of VPC3+C initialization
②外部存儲器映射
VPC3+C芯片的內部RAM作為Atmega128A單片機的外部擴展存儲器,因此,Atmega128A可以直接以訪存的形式訪問VPC3+C芯片上的存儲器。按照硬件設計,Atmega128A單片機的PA0~PA7引腳作為外部8位數據總線,PC0~PC7引腳作為外部8位地址總線,且地址最高位通過取反后接到VPC3+C芯片上,形成片選信號。當地址最高位為1時,表示訪問外部存儲器,即VPC3+C芯片內部的存儲器;反之訪問Atmega128A內部存儲器。
③產品識別ID號及從站地址的設置
產品識別ID號在從站設備描述文件(general station device,GSD)中加以設置。程序在初始化VPC3+C芯片時,同樣要設置產品識別ID號,且必須與GSD文件里描述的一致。從站地址在PLC配置程序里設定。考慮到一個Profibus總線上可以同時掛接多個網關,因此,網關的從站地址必須方便用戶修改。

④設置VPC3+C芯片輸入輸出緩沖區大小
VPC3+C芯片內部設有專門的用戶I/O數據緩沖區,在使用前需要對其進行配置。在配置VPC3+C芯片前,需要先對GSD文件輸入輸出大小的定義作修改,如:Module=“100 Byte In,40 Byte Out”0x6f,0x63,0x5f,0x5f,0x5f,0x51。
該設置表示從站輸入緩沖區為100 B、輸出緩沖區為40 B。接下來配置VPC3+C芯片。配置前,首先需取得其配置緩沖區指針,并依次把配置數據寫入配置緩沖區(需與GSD文件中的一致)。

然后根據緩沖區大小便可計算出輸入輸出緩沖區指針。對于該指針的讀寫操作,其會被VPC3+C芯片轉換成Profibus協議上傳到PLC中,實現數據的傳輸。
⑤ZigBee協議數據與Profibus協議數據映射轉換
當Atmega128A接收到無線網絡協調器發送的數據時,需要根據數據中的幀類型、站號、站類型字段計算出VPC3+C中輸入緩沖區指針,并將數據按格式寫入輸入緩沖區中對應的位置。
同樣當接收到PLC從Profibus總線發送的數據時,需要根據開關量所在地址計算出實際對應的站號與站類型,并且封裝成規定的幀結構,通過網絡協調器發送給對應的路由I/O設備[9]。
ZigBee無線網絡協議通過TI的Z-STACK協議棧來實現。Z-STACK采用操作系統的思想來構建,采用事件輪詢的方式來對事件進行處理。當各層完成初始化后,系統進入低功耗模式,當事件發生時,喚醒系統,開始進入中斷處理事件,結束后繼續進入低功耗模式。如果同時有幾個事件發生,則判斷優先級,逐次處理事件。這種軟件構架可以極大地降低系統功耗[10]。此外,只需要編寫應用層程序就可以實現ZigBee無線網絡的應用開發,不需要將過多的精力投入到網絡協議的具體細節當中。
協調器與路由I/O通過以下數據結構組織通信數據。

系統上電后,根據程序配置數據,在指定的信道中建立網絡號為PANID的網絡。部分源代碼如下。

此時,只要網絡中有路由I/O設備上電,由于有相同的信道號與網絡標志號,路由I/O設備會自動加入到該網絡。若加入網絡成功,則會觸發協議棧中的ZDO_STATE_CHANGE消息,應用程序在應用層接收到該消息并確認后,便可以正式開始路由I/O的工作流程。
當路由I/O設備加入網絡后,需要先與協調器實施綁定。綁定過程在協議棧應用層實現,路由I/O設備讀取自身的撥碼值與短地址,并按照上述協議數據結構,封裝成命令幀發送給協調器。部分源代碼如下。

協調器接收到命令幀,經確認無誤后,在本地RAM中記錄站號與短地址的對應關系,并回復命令應答幀給相應的路由I/O設備。至此,路由I/O設備的綁定過程結束。如當協調器有控制數據需要下發時,只需要先查表,根據站號查出對應的短地址,便可發送至目的路由I/O設備。
對西門子S7-300 PLC進行編程。實際運行測試結果表明,無線模塊的發射功率、接收靈敏度、通信距離、誤包率和速度均滿足工業應用的實時性和安全性要求。網關可以通過工業現場總線Profibus加入到工業應用當中,具有功耗低、布置方便、編程使用簡單可靠等優點,可以替代原來有線傳輸的方式。隨著工業物聯網技術的興起和發展,此無線模塊具有良好的應用前景。
[1]張高群.電力系統應用ZigBee技術初步研究[J].電子測量技術,2008(11):20-22.
[2]梁湖輝,張峰,常沖,等.基于ZigBee的變電站監測報警系統[J].電力系統保護與控制,2010(12):33-34.
[3]何杏宇,張浩,彭道剛.ZigBee技術在工業環境監測系統中的應用研究[J].機電一體化,2008(7):111-112.
[4]杜煥軍,張維勇,劉國田.ZigBee網絡的路由協議研究[J].合肥工業大學學報:自然科學版,2008(10):79-80.
[5]楊順,章毅,陶康.基于ZigBee和以太網的無線網關設計[J].計算機系統應用,2010(1):43-45.
[6]王保永,汪鵬,盧宏軍.基于PROFIBUS的智能接口芯片SPC3及其應用[J].國外電子元器件,2005(3):23-25.
[7]張婕,王征,郭天樂.SPC3在現場總線智能從站設計中的應用[J].現代電子技術,2008(3):5-7.
[8]李孝輝,張慧慧,孫樹文.基于C8051和SPC3的PROFIBUS智能從站設計[J].微計算機信息,2007(26):120-123.
[9]王學偉.PROFIBUS-DP現場總線智能節點的設計[D].哈爾濱:哈爾濱理工大學,2008.
[10]胡鴻豪,林程,宋麗平.基于S3C2410的ZIGBEE無線傳感器網絡網關的設計[J].大眾科技,2008(12):43 -45.