基于ZigBee技術的角度同步采集傳輸系統(tǒng)設計
0 引言
關節(jié)臂式測量機廣泛用于模具、汽車零部件、鈑金件、塑料制品、木制品、雕塑等的快速檢測和逆向設計。其工作機理是:手持關節(jié)臂,帶動測量機頂端的攝像頭或探針掃描至目標探測點,根據(jù)測量機各段臂長和各個關節(jié)所轉過的角度可求取出目標探測點的位置或坐標。測量機的工作關鍵在于讀取和及時傳輸各個關節(jié)的角度信息。
普通的關節(jié)臂式測量機在每個關節(jié)內都安裝有一個角度編碼盤,角度信號通過連接在關節(jié)臂內的電纜線傳輸至工控機。由于編碼器使用有線方式傳輸角度信息,臂內電纜多,連續(xù)旋轉多圈時臂內電纜將擰成“麻花”,使得測量機關節(jié)不能無限旋轉。
本文所設計的“基于ZigBee技術的角度同步采集傳輸系統(tǒng)”,采用Microchip公司的PIC18LF4620微控制器和Chipcon公司的CC2420射頻芯片共同組成無線節(jié)點,置于關節(jié)臂式測量機的每個關節(jié)內,實現(xiàn)角度信號的讀取和無線傳輸。在工控機側,也安裝有一個無線節(jié)點,用于接收這些無線傳輸?shù)慕嵌刃畔⒉⑸蟼鹘o工控機。信號傳輸?shù)臒o線化使得測量機的關節(jié)可以無限制旋轉。下面主要以六關節(jié)臂式測量機為例,介紹該系統(tǒng)的設計方案。
1. 系統(tǒng)方案設計
整個系統(tǒng)實質上為一個由7個無線節(jié)點組成的星形無線網絡,如圖1所示。安裝在測量機6個關節(jié)內的無線節(jié)點分別和本關節(jié)內的角度編碼盤相連,采集編碼盤信息,并將提取出來的有效角度信息無線發(fā)送出去,構成星形網絡的6個網絡節(jié)點(以下稱為子節(jié)點)。作為網絡協(xié)調器的無線節(jié)點(以下稱為主節(jié)點)和工控機相連,采用時分復用的方式接收6個子節(jié)點無線傳輸?shù)慕嵌刃畔ⅲ浾砗笸ㄟ^串口發(fā)送給工控機。
500)this.style.width=500;" border="0" />
每個無線節(jié)點由控制模塊和射頻模塊組成??刂颇K主芯片是PIC18LF4620,最高工作頻率為40MHz,內含64kBytes的flash空間和4kBytes的RAM空間,外圍控制部分包括定時器模塊,捕捉/比較模塊,A/D轉換模塊,SPI接口和EUSART串口等,完成系統(tǒng)的控制和處理功能。射頻模塊用于實現(xiàn)信息無線收發(fā),主芯片為CC2420,符合2.4 GHz IEEE 802.15.4協(xié)議,無線收發(fā)速率可達250kbps,無線收發(fā)功率僅為幾十毫瓦。
2. 系統(tǒng)硬件結構及連接圖
系統(tǒng)的硬件連接圖如圖2所示,元件主要包括射頻芯片CC2420、微控制器PIC18LF4620和串口電平轉換芯片MAX3221。對外提供的接口為RS232/485串口(圖2中以RS232為例)。每個無線節(jié)點內部,控制模塊(PIC18LF4620)和射頻模塊(CC2420)通過SPI接口連接,主要包括串行數(shù)據(jù)輸出引腳(SDO)、 串行數(shù)據(jù)輸入(SDI)引腳和串行時鐘(SCK)引腳。對于主節(jié)點,微控制器的串口輸出引腳(TX)和串口輸入引腳(RX)經由電平轉換芯片MAX3221和工控機相連。對于子節(jié)點,微控制器通常通過RS232/RS485串口和編碼盤相連,具體接口視編碼盤型號而定。
500)this.style.width=500;" border="0" />
3. 組網過程
7個無線節(jié)點組成一個星形無線網絡,以主節(jié)點為協(xié)調器,6個子節(jié)點為網絡節(jié)點。組網的過程可以描述如下:
(1) 將主節(jié)點和所有子節(jié)點的無線收發(fā)頻率置于同一信道,確保該信道上無其它無線設備。
(2) 主節(jié)點無線發(fā)送組網廣播,告知同信道的所有處于接收狀態(tài)的無線設備(各子節(jié)點)自己為網絡協(xié)調器,并告知該網絡的PAN ID,以及主節(jié)點自己的64位MAC地址。同時,設定廣播報文的最大重傳次數(shù),并開啟廣播超時定時器。
(3) 各個子節(jié)點在接收到廣播之后回應一個網絡連接請求。
(4) 當主節(jié)點收到子節(jié)點的網絡連接請求時,主節(jié)點給該子節(jié)點分配16位的網絡地址。
(5) 定時器超時,主節(jié)點檢查是否收到了所有子節(jié)點的網絡連接請求?!笆恰眲t停止組網廣播,組網成功?!胺瘛眲t重傳組網廣播,重傳次數(shù)減1。
(6) 重復步驟(5),若重傳次數(shù)已經自減為0,停止組網廣播,組網結束,并告知工控機本次組網失敗。
4. 數(shù)據(jù)傳輸
4.1 幀格式定義
在本文所設計的星形無線網絡中,共分為物理層、MAC層和應用層3層,各層的幀格式如圖3所示。網間傳輸?shù)男畔膸愋蜕戏譃?種,分別為數(shù)據(jù)幀、確認幀和命令幀,組網廣播幀和角度采集廣播歸屬于命令幀。
500)this.style.width=500;" border="0" />
注:Frame Length為物理層幀長度;Frame Control域的低3位指示該信息的幀類型;Sequence NO.為序列號;FCS為校驗域。Command Type為命令類型,指示收到命令幀之后無線節(jié)點所需進行的操作。
4.2 TDMA時隙分配和傳輸協(xié)議
主節(jié)點和各子節(jié)點采取時分復用TDMA的方式進行通信,每個子節(jié)點在指定的時隙內和主節(jié)點進行信息交互。在本文所設計的星型無線網絡中,共劃分有8個時隙,如圖4所示。
500)this.style.width=500;" border="0" />
前6個時隙內,主節(jié)點依次對各子節(jié)點進行輪詢,獲取角度信息并對其進行校驗。后2個時隙用于重傳,當1個或多個子節(jié)點的信息丟失或校驗發(fā)生錯誤時,采取“先丟失/出錯,先重傳”的方式進行重傳。
每個時隙內,主節(jié)點發(fā)送“開始傳輸角度信息”的命令幀至指定子節(jié)點,并啟動時隙超時定時器。子節(jié)點在接收到該命令幀后,立刻將從編碼盤信息中提取出的有效角度信息封裝成幀,經由射頻模塊發(fā)送給主節(jié)點。當定時器超時時,主節(jié)點若還未收到該子節(jié)點的角度信息幀,或收到角度信息幀但校驗錯誤,則記錄該子節(jié)點的編號(以便在重傳時隙內令其重發(fā)),并轉入輪詢下一子節(jié)點。若接收到正確報文,則直接轉入下一子節(jié)點的輪詢。
4.3 子節(jié)點采集時刻同步
組網完成之后,主節(jié)點無線發(fā)送角度采集廣播給各個子節(jié)點,指示其以一定頻率采集編碼盤信息,提取并發(fā)送有效的角度信息。由于主節(jié)點以無線方式發(fā)送角度采集廣播,該廣播到達各個子節(jié)點的時間可能并不一致。若子節(jié)點在收到該廣播后立刻開始讀取編碼盤信息,子節(jié)點所讀到并提取的關節(jié)角度并不是同一時刻點的,導致測量機無法準確工作,所以需要有“子節(jié)點采集時刻同步”的環(huán)節(jié)。
我們采取的做法是:在組網完成之后,主節(jié)點發(fā)送角度采集廣播之前, 6個子節(jié)點逐一與主節(jié)點進行信息交互,子節(jié)點求取出信息幀的空中傳輸時間ti(i為子節(jié)點的編號,i=1,2…6;)。當所有子節(jié)點接收到主節(jié)點發(fā)送的角度采集廣播后,分別延遲(T – ti)時間再采集編碼盤信息,其中T為常數(shù),T>max[t1, t2, …t6]。那么,從主節(jié)點發(fā)送角度采集廣播的那一時刻開始,各子節(jié)點都經過了[ti +(T – ti)] = T時間后讀取編碼盤信息,實現(xiàn)了子節(jié)點采集時刻同步。
求取信息幀空中傳輸時間ti的具體過程如圖5所示。子節(jié)點i在Ti1時刻發(fā)送一個“請求時間校正幀”給主節(jié)點,主節(jié)點在Ti2時刻收到該幀,并于Ti3時刻回復第一個應答幀,應答幀的內容為時刻Ti2。子節(jié)點在Ti4時刻收到應答幀,獲得時間Ti2。主節(jié)點在Ti3時刻后任意延遲一段時間發(fā)送第二個應答幀,應答幀的內容為時刻Ti3,使子節(jié)點能在某時刻獲取時間Ti3。
500)this.style.width=500;" border="0" />
注:在此我們假定,信息幀由主節(jié)點發(fā)送至子節(jié)點需要的空中傳輸時間和信息幀由子節(jié)點發(fā)送至主節(jié)點需要的空中傳輸時間相同且穩(wěn)定。且信息幀長度等于主節(jié)點發(fā)送的“角度采集廣播幀”長度。
假設主節(jié)點的時鐘超前子節(jié)點△Ti,信息幀的空中傳輸時間為ti,可得:
Ti2 = Ti1 + △Ti + ti ①
Ti4 = Ti3 - △Ti + ti ②
由式①和②聯(lián)立可得:
△Ti = (Ti2 - Ti1 - Ti4 + Ti3)/2
ti = (Ti2 - Ti1 + Ti4 - Ti3)/2
5. 主節(jié)點和工控機的通信
主節(jié)點和工控機采用RS-232 串行數(shù)據(jù)傳輸,串行口通信方式為異步串行通信,速率為19200bps,信息格式為1位開始位、8 位數(shù)據(jù)位、1個停止位、無奇偶校驗位,采用中斷方式進行數(shù)據(jù)傳輸。以下是串口初始化程序片斷:
void ConsoleInit(void)
{
#if defined(USART_USE_BRGH_HIGH)
TXSTA = 0x24; //設置串口發(fā)送狀態(tài)寄存器
#else
TXSTA = 0x20;
#endif
RCSTA = 0x90; //設置串口接收狀態(tài)寄存器
// SPBRG_VAL = CLOCK_FREQ/BAUD_RATE/64 – 1,BAUD_RATE=19200bps
SPBRG = SPBRG_VAL;
TXIE = 1; //默認情況下串口處于發(fā)送狀態(tài),使能發(fā)送中斷
TXIP = 1;
//RCIE = 1; //若需要執(zhí)行串口接收,使能發(fā)送中斷
//RCIP = 1;
}
6. 結論
將信息傳輸無線化,可免去關節(jié)臂式測量機的臂內電纜線,實現(xiàn)關節(jié)的無限旋轉。本文設計的“基于ZigBee技術的角度同步采集傳輸系統(tǒng)”的無線硬件設計、軟件設計解決方案經測試運行穩(wěn)定,無線通信誤碼率低、可靠性高、安全性好。在室內測試環(huán)境下,無線收發(fā)速率可以穩(wěn)定達到18kbps,重傳后誤碼率不高于10¬-5數(shù)量級.
本文作者創(chuàng)新點:將ZigBee無線通信技術與機械測量相結合,設計了一套基于ZigBee技術的角度同步采集傳輸系統(tǒng),應用在關節(jié)臂式測量機上,實現(xiàn)了關節(jié)的無限旋轉。