郭琪



摘要:該文深入分析了CAN總線技術和ZigBee網絡技術的技術特點,采用C8051F043和CC2430的雙MCU結構設計了CAN/ZigBee網關,使得 CAN總線和ZigBee網絡實現了并行交互數據的功能。CAN/ZigBee網關具有兩個接口模塊。CAN總線數據通訊使用C語言進行編程,完成通訊數據的發送和接收功能。ZigBee網絡接口模塊的軟件開發以ZigBee協議棧為基礎。根據ZigBee的技術特點,軟件編寫時設計了地址映射表,以解決ZigBee節點地址動態分配給通信帶來的問題并設計了緩沖區以保證在兩個不同傳輸速率的網絡之間進行數據傳輸。ZigBee網絡接口模塊的應用程序完成了ZigBee網絡內數據收發、SPI接口通信以及地址映射表的建立和管理。通過驗證,該文設計的網關實現了CAN總線與ZigBee無線網絡之間的雙向數據傳輸,并且數據傳輸不受ZigBee節點地址動態分配的影響。
關鍵詞:CAN總線;ZigBee;網關;數據傳輸;節點地址
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)35-0078-03
1 概述
CAN總線具有非常廣泛的應用范圍,具有效率高、可靠性強的特點。CAN總線通信采用數字信號代替了模擬信號,不僅節約了連線電纜的成本,而且可以傳遞更多的設備信息,如設備狀態、運行參數、故障信息等。本文設計的CAN/ZigBee網關能夠完成CAN總線和ZigBee網絡收發通信, CAN總線實現無線通訊的設計目標。在CAN總線應用最為廣泛的汽車電子領域,ZigBee技術的接入可以實現對轉動機械或發動機內部的數據監測,如汽車的輪胎壓力檢測等[1]。針對工業控制領域,CAN總線也有CANopen和DeviceNet兩個應用層協議并有廣泛的實際應用,ZigBee技術的引入同樣會為其在特殊情況下的應用帶來方便。一個高效可靠的CAN/ZigBee網關能夠彌補CAN總線的通訊限制,增加ZigBee無線網絡通訊的有效性,為我們的生產、生活帶來更多的便利[2]。
2 CAN/ZigBee網關硬件設計方案
本文設計的CAN與ZigBee網關采用的是CC2430和C8051F043的雙MCU結構,分別作為CAN協議和ZigBee協議的控制芯片,將兩個網絡的數據收發以及數據處理等操作分開進行[3]。CAN與ZigBee網關的數據通訊采用雙向并行模式,應用兩個單片機完成數據交互總體結構,網關由CAN總線和ZigBee接口模塊組成。CAN與ZigBee網關結構如圖1所示。
CAN總線網絡接口模塊主要完成CAN總線數據的收發,并與ZigBee網絡接口模塊實現雙向通信。該模塊選用的片上系統單片機C8051F043內部集成了Bosch CAN2.0B控制器,構成一個CAN總線節點,實現對總線數據的收發,單片機C8051F043負責接收和發送數據,由芯片TJA1050作為接口,同時該單片機還有晶振電路、電源電路、人機接口電路、USB接口擴展電路和JTAG接口電路。USB接口的擴展選用USB轉RS-232橋接芯片CP2102實現,該接口可用于與上位機進行通信,方便后期開發過程中對網關軟件進行調試。JTAG接口的擴展是為了后期的軟件調試[4]。
ZigBee網絡接口模塊的主要功能包括ZigBee網絡內數據的收發以及與CAN網絡接口模塊之間的雙向通信。ZigBee網絡接口模塊由單片機執行數據處理,單片機選型為CC2430。該型號是國外公司研制用來解決ZigBee芯片通信的問題。本文選擇的單片機型號具有射頻收發器和8051控制器,硬件方面具有CSMA/CA擴展功能。要實現無線收發功能,外圍晶振器通過射頻功能實現數據的接收和發送,并使用非平衡變壓器提高接收數據的有效性。CC2430的外圍電路包括晶振時鐘電路、人機接口電路、復位電路、EEPROM存儲器擴展電路以及調試接口電路等。CC2430單片機內部集成的接口可用于后期的軟件開發與調試。
3 CAN/ZigBee網關軟件設計方案
3.1 地址映射表的設計與實現
依據ZigBee無線通信協議棧的規定,ZigBee網絡的數據傳輸通過PAN網內的短地址實現,該短地址在節點加入網絡的時候由協調器節點進行分配[5-6]。ZigBee可以采用兩種地址分配技術,分別是:
(1)Distributed Address Assignment Mechanism分布式地址分配技術
(2)Stochastic Address Assignment Mechanism隨機地址分配技術
無論采用哪一種地址分配技術,ZigBee子節點每次加入網絡分配到的短地址都不同。因此,在ZigBee網絡中除了協調器的短地址固定為0x0000,其他節點的地址都不固定。這就導致出現類似下面的問題:
(1)ZigBee網絡中,節點A的短地址為0x1699,節點B的短地址為0x1697,兩個節點分別利用短地址在網絡中進行通信。
(2)ZigBee網絡重建,節點A和節點B再次加入網絡并被分配短地址,節點A的短地址為0x1697,節點B的短地址為0x1699。
這樣,節點A和節點B在網絡中的通信就會因前后兩次地址的不同而出現問題。
為了使ZigBee網絡中向指定節點的信息發送正確,在網關軟件設計中利用節點的長地址、短地址和節點代碼建立一種映射關系,以實現ZigBee節點短地址變化后網絡通信的正確進行。在協議轉換中所建立的地址映射關系如表1所示。
作為現場總線網絡中接收數據的報文,網關之后對接收到的報文進行解包、有效數據提取等操作,并將其重新打包發送至ZigBee網絡。
3.2 CAN總線接口模塊軟件設計
CAN總線接口模塊的程序設計利用C51語言編程實現,編程使用Silicon Laboratories IDE集成開發環境。該軟件具有良好的人機界面,可以生成高效的目標代碼。
3.2.1 CAN總線接口模塊初始化程序
初始化通過調用單片機配置子程序config()、CAN初始化子程序canini()和SPI配置子程序spi_cfg(uchar spicfg,uchar spickr,uchar spicn)完成。單片機配置子程序中完成對C8051F043內部看門狗定時器的設置、I/O口交叉配置及系統工作時鐘設置。SPI配置子程序完成SPI通信的時鐘相位和極性的選擇、串行時鐘的設置以及串行通信中使用到的INT0和SPI中斷的設置。
所有CAN消息對象初始化完成后,對寄存器CAN Control Register和Bit TimingRegister(波特率控制寄存器)賦值,寄存器CAN Control Register用來設置CAN的工作模式,Bit TimingRegister設置CAN的工作時鐘頻率。
3.2.2 CAN總線接口模塊數據收發程序
CAN接口模塊的數據收發分兩部分完成:CAN總線數據的接收與轉發和SPI數據的接收與轉發。現場總線通過中斷數據的方式進行數據的接收。網關識別到CAN報文后,將其存入接收緩沖區,再從緩沖區中讀出數據進行SPI轉發。
SPI數據的接收與轉發通過外部中斷INT0的中斷服務程序完成。由于C8051F043作為SPI主機工作,SPI接口必須由主機啟動進行數據收發。CC2430向C8051F043發送數據時,通過I/O口給C8051F043一個中斷信號,再由C8051F043啟動數據傳輸過程。
3.3 ZigBee網絡接口模塊軟件設計
ZigBee網絡接口模塊軟件設計采用協議棧的技術,通過參考標準的OSI/ISO網絡模型,設計協議棧的網絡結構。OSI/ISO網絡模型分為七層網絡構架。通過優化OSI/ISO網絡模型,修改并重新命名了網絡模型,協議棧的每一層網絡完成不同的任務,任意兩層之間通過網絡接口為上一層提供服務。
3.3.1 ZigBee網絡接口模塊初始化程序
ZigBee接口模塊的初始化程序主要完成對芯片寄存器、芯片硬件接口、液晶屏和協議棧的初始化操作。
初始化程序段執行后,網關即完成對CC2430內外部資源及的配置,然后使用aplFormNetwork()函數搭建網絡。網絡搭建完成后,執行程序進入循環模式,來完成ZigBee網絡通信功能。
3.3.2 ZigBee網絡接口模塊數據收發程序
ZigBee接口模塊的數據收發程序可分為SPI數據收發和ZigBee數據收發兩部分。SPI接口的數據接收以中斷方式進行。中斷服務程序每次將收到的數據存入緩沖區,收到完整的SPI數據包后W_Point指向緩沖區下一數據塊。SPI接口的數據發送通過I/O口來控制C8051F043單片機實現。
ZigBee數據的收發通過協議棧中特定函數完成。協議棧運行過程中,程序的循環執行部分會首先選取狀態機中的通訊數據,檢查能否接收ZigBee數據,收到相關數據后調用ZigBee接收子程序。
4 網關通信的試驗驗證
4.1 試驗方案設計
本文設計的CAN/ZigBee網關所要實現的是在CAN網絡與ZigBee網絡之間的雙向通信,以驗證本文設計的網關方案在實現協議轉換方面的可行性。根據網關的設計原理,試驗中ZigBee采用星形網絡拓撲,同時在星形網絡內有3個RFD節點作為網關的子節點。CAN總線網絡設計采用2+1的模式,即兩個節點和一個物理總線,網關作為總線上的一個節點,另一個設計為具有收發能力的CAN節點。驗證過程采用的試驗網絡如圖2所示。其中構成CAN節點的主要芯片為C8051F043單片機和CAN收發器TJA1050,ZigBee節點采用的芯片為無線單片機CC2430。
4.2 試驗結果分析
進行網關通訊性能測試之前,要利用軟件SmartRF?04 Flash Programmer對ZigBee節點寫入不同的物理地址,之后按前面所述的實驗步驟 1進行ZigBee星形網絡的組網過程。ZigBee網絡組建后,利用CAN節點和ZigBee終端節點通過網關進行相互的數據發送。CAN節點的數據檢驗是經過查看Silicon Laboratories IDE的 CAN相關寄存器實現,CAN節點接收到數據0xAA445566778899F1,與ZigBee節點發送的數據一致。通過查看調試軟件中的數據,ZigBee節點接收到數據0xA10xA20x150x160x170x18,與CAN節點發送的數據相同。
試驗結果表明,CAN/ZigBee網關具有接收和發送節點數據的功能,同時,網關的協議轉換完全正確,不存在數據轉換錯誤,下一步將驗證ZigBee網絡重組后,節點短地址的重新分配是否對網關的工作造成影響。通過網關通信試驗可以看出,CAN/ZigBee網關能夠完成數據傳輸過程中的協議轉換,成功解決不同網絡間數據轉換問題,處理因不同網絡節點地址分配的問題,可實現數據的100%準確轉換,消除潛在影響。
5 結論
本文設計的CAN/ZigBee網關具有高效的數據傳輸能力,能同時發送和接收相關數據,解決了協議之間數據轉換的問題。由于研究時間限制,本文采用簡化方案對CAN/ZigBee網關進行設計。在后期的工作中,應對網關軟件程序進一步優化,提高網關數據傳輸的性能和通信可靠性,使其完全滿足實際應用的需要。
參考文獻:
[1] 羅回彬,吳方.基于ZigBee的無線傳感網絡網關的研究與設計[J].電子設計工程,2017,25(12):182-185.
[2] 姜有光,杜亞江,齊金平,等.嵌入式無線傳感網絡網關設計與遠程維護[J].測控技術,2017,36(3):94-97,106.
[3] 陳可偉,張金成,王鈺,等.基于Modbus協議的無線傳感器網絡網關設計[J].測控技術,2016,35(2):99-103.
[4] 邵芹文.無線傳感器網絡與無線局域網絡網關設計與應用[D].杭州:浙江工業大學,2015.
[5] 梁宗保,李鵬.基于ZigBee技術的無線傳感器網絡網關設計與實現[J].計算機與現代化,2013(6):133-137.
[6] 李佳.基于ZigBee和GPRS無線傳感器網絡網關的設計與實現[D].南京:南京郵電大學,2013.
【通聯編輯:代影】