張月魁 姜 祝 吳永紅 蔡惠華 高小強
(1.北京航天計量測試技術研究所,北京 100076)
飛行器在運輸、存儲、飛行過程中需要對其各種狀態進行監測用于判斷飛行器的健康狀況。飛行器需要監測的狀態包括振動、沖擊、溫度、濕度、氣壓等。以往狀態監測使用的傳感器多采用有線方式連接至采集裝置,電纜數量多,布線復雜,導致飛行器增加了負擔,降低了有效載荷的攜帶能力。將傳感器的數據傳輸方式變更為無線方式將可有效改善這一問題。
目前的無線傳輸方式包括ZigBee、WIFI、藍牙等方式,其中ZigBee技術在飛行器狀態監測中使用廣泛。但ZigBee的傳輸速度較慢,有效數據的傳輸速度實測在24Kb/s左右,當需要采集頻率較高的沖擊數據時,該技術不能保證數據傳輸的有效性,需要在數據處理時采用相應算法對欠采樣的數據進行處理,甚至可能無法得到有效的結果。WIFI、藍牙具有高的數據傳輸速率,但功耗較高,在飛行器狀態監測中使用較少。nRF24L01+是一款工作于ISM頻段的無線單片收發芯片。該芯片的體積小、功耗低(0dBm功率發送數據時,電流為11.3mA,空氣傳播速率2Mbps時,接收電流為13.5mA),傳輸速度適中(空氣中傳播速率最快2Mbps),適合應用于低功耗、中等速度的飛行器狀態監測系統中。
本文以nRF24L01+為無線傳輸核心芯片,設計了一種采用無線方式傳輸狀態數據的飛行器狀態監控系統,實現了飛行器沖擊、振動、溫度、濕度、氣壓的監測。
系統總體結構如圖1所示。

圖1 飛行器狀態監控系統總體結構圖
狀態監控系統由三部分組成:數據讀取計算機、主節點、各狀態監測子節點。數據讀取計算機通過USB(TTL電平)轉換器監控或讀取主節點的狀態監測數據。主節點通過無線方式獲取各狀態監測節點的狀態數據。狀態監測節點完成狀態數據的獲取。
數據讀取計算機可使用工控機或筆記本電腦,由于系統僅用于數據監測或讀取,不需要過高的配置,除運行系統必要的資源外,運行監控軟件只需512MBytes內存和512MBytes硬盤存儲空間即可。
主節點以微控制器為核心,通過SPI接口分別與nRF24L01+和FLASH存儲器通信,完成無線數據傳輸和數據存儲。其結構如圖2所示。

圖2 主節點硬件結構圖
主節點微控制器選擇STM32F103RET6,其采用ARM公司Cortex M3內核,運行時鐘可達72MHz,內部集成FLASH存儲器和SRAM,可在不擴展外部存儲的情況下,完成最小系統的搭建,內部資源及接口豐富,具有3個SPI硬件接口,接口最快時鐘頻率為18MHz,具備4種工作模式,滿足節點對控制器硬件的需求。
FLASH存儲器采用W25N01GVZEIT,其容量為128MBytes,可通過SPI接口與外部進行數據交換,數據讀寫速度快且功耗低至82.5mW,可進行100000次擦寫,所存儲數據可以保存10年以上,滿足本設計對容量、速度和功耗的要求。
無線數據傳輸芯片的有效數據傳輸速度實測最大值為440kb/s,由于系統采用非標準協議進行數據傳輸,為減輕數據擁塞及CPU負擔,主節點使用兩個nRF24lL01+進行數據傳輸,充分利用了微控制器的SPI接口。
狀態監測節點同樣以微處理器為核心,通過SPI接口與nRF24L01+通信完成數據的傳輸,通過模擬或數字接口連接傳感器,獲取狀態數據,如圖3所示。

圖3 狀態監測節點硬件結構圖
狀態監測節點的微控制器同樣采用STM32F103RET6,該款單片機內部集成了模數轉換器和SPI等數字接口,符合節點對微控制器的要求。
系統對飛行器的以下狀態進行監測:沖擊、振動、溫度、濕度、氣壓。其中,沖擊、低頻振動傳感器輸出的是模擬信號,需要經過信號調理電路后由微控制器內部的ADC進行數據采集。高頻振動、溫度、濕度、氣壓傳感器的輸出為數字信號,由微控制器的SPI或數字接口進行數據采集。各傳感器的技術指標如表1所示。
從表1中可以看出,數據傳輸速度相對最大數據傳輸速度有較大裕量,因此各狀態監測節點中只需1片nRF24L01+即可保證數據的傳輸。而在主節點中,nRF24L01+_1負責與沖擊狀態監測節點進行通信,nRF24L01+_2負責與其它狀態監測節點進行通信。

表1 飛行器狀態監測參數技術指標
本部分按照狀態監測數據采集、傳輸、存儲和讀取的順序說明系統軟件的工作過程。
狀態監測節點負責狀態數據的采集并將數據傳輸至主節點。狀態監測節點軟件包括主函數、無線芯片中斷處理函數,定時器1中斷處理函數和定時器2中斷處理函數。函數的工作流程如圖4所示。

圖4 狀態監測節點程序流程圖
主函數負責數據的整體處理流程。節點上電后,微控制器首先對自身的系統資源進行初始化,包括GPIO口、定時器、SPI接口、USART接口的初始化。其次,程序對所使用的的變量進行初始化,對中斷資源進行配置并打開相應中斷。最后,主函數在是否處理nRF24L01+中斷、是否切換nRF24L01+收發狀態、是否復位nRF24L01+三個狀態之間不斷進行切換,完成相應工作。
nRF24L01+接口有IRQ引腳,用于指示nRF24L01+中斷的狀態,在IRQ引腳拉低后,程序觸發nRF24L01+中斷,在中斷處理函數中,程序僅置位相應標志,中斷的處理則放置在主函數中。觸發nRF24L01+中斷的事件有三類,數據發送完成、數據接收完成和數據重傳完成。nRF24L01+以32個字節數據為一幀進行傳輸,當數據傳輸完成時觸發數據發送完成中斷,此時程序判斷是否還有待發送幀以決定是否繼續傳輸。數據接收完成中斷在主節點發送數據請求命令時產生,當狀態監測節點收到命令后,開始數據的傳輸。數據重傳中斷發生在通信質量不佳的情況下,此時需要重傳數據并開始通信質量不佳的計數,當通信質量持續不佳時,將nRF24L01+復位為數據接收狀態。通信質量不佳除通信信號弱的原因外,還有可能是由于主節點和狀態監測節點同時處于發狀態造成的。
nRF24L01+收發狀態的切換在以下情況發生:當接收到主節點的數據請求命令后,nRF24L01+的狀態由收變為發;當向主節點發送完64幀數據后,nRF24L01+的狀態由發變為收。
當nRF24L01+處于空閑狀態時間過長時,nRF24L01+復位為收狀態,以保證節點間輪詢時間過長或發生其它未知錯誤時,nRF24L01+始終處于接收主節點數據請求命令的狀態。
定時器1中斷用于節點計時及傳感器數據的采集。狀態監測節點具有自身的時間基準,同時在接收的主節點數據幀中包含主節點的時間信息,兩者結合能得到整個系統的統一時間標準,節點的計時周期為1ms。當到達數據采集的時間結點時進行數據采集,由于每次數據采集的時間最多在10us左右,因此數據采集放在中斷程序中執行。
定時器2中斷用于收發及復位狀態的計時。節點設置了收發狀態轉換時的中間態,用于保證數據收發時序的正確執行,減少主節點和狀態監測節點同時處于發狀態的幾率。中間態由定時器2進行計時。當節點由收狀態經中間態到達發狀態時,由定時器2程序開始第一幀首字節數據的傳輸。同時,定時器2還有類似看門狗的功能,當數據收發時間過長,不能定時清零定時器2的復位計數時,復位設置被執行,狀態監測節點回到收狀態。
主節點負責輪詢各狀態監測節點數據并將數據存入FLASH存儲器,同時,數據可通過串口被數據讀取計算機讀取。根據系統使用環境的不同,主節點的工作模式可設置為命令啟動數據采集或上電啟動數據采集。當飛行器處于運輸、存儲環節時,系統可設置為命令啟動數據采集,此時數據讀取計算機可以向主節點發送開始數據采集命令,主節點可向數據讀取計算機定時發送數據,使系統的工作狀態受控。當飛行器處于飛行環節時,系統可設置為上電啟動數據采集,此時,主節點FLASH中存儲的數據將在飛行器飛行結束后,由工作人員將主節點取回并由數據讀取計算機讀取數據。主節點軟件可分為主函數、定時器1中斷處理函數和定時器2中斷處理函數。函數的工作流程如圖5所示。

圖5 主節點程序流程圖
主函數負責數據的整體處理流程,包括兩個nRF24L01+的輪詢策略以及FLASH數據存儲。節點上電后,微控制器對系統資源、使用的的變量進行初始化,對中斷資源進行配置并打開相應中斷。隨后,主函數在是否處理nRF24L01+_1/2中斷、是否切換nRF24L01+_1/2收發狀態或復位、是否向FLASH中寫入數據三個狀態之間不斷進行切換,完成相應工作。
nRF24L01+_1/2中斷同樣是由IRQ引腳觸發,在中斷處理函數中,程序僅置位相應標志,中斷的處理放在主函數中。nRF24L01+_1/2的中斷事件類型與狀態監測節點一致。nRF24L01+_1/2的發送完成中斷發生在數據請求命令傳輸完成之后。nRF24L01+_1/2的接收完成中斷發生在接收一幀監測數據之后,當接收到64幀數據之后,置位相應標志,nRF24L01+_2還需進行狀態監測節點的切換。數據重傳中斷發生的nRF24L01+_1/2復位,將nRF24L01+_1復位為發送沖擊狀態監測數據請求命令,將nRF24L01+_2復位為發送高頻振動狀態監測數據請求命令。
nRF24L01+_1/2收發狀態的切換在以下情況發生:當接收到狀態監測節點的64幀數據后,nRF24L01+_1/2的狀態由收變為發;當向狀態監測節點發送完數據請求命令后,nRF24L01+_1/2的狀態由發變為收,nRF24L01+_1/2收發狀態轉換同樣有過渡的中間態。
當nRF24L01+_1/2處于空閑狀態時間過長時,nRF24L01+_1/2復位,復位后的狀態與重傳中斷一致。
向FLASH中寫入數據的條件是節點接收到完整的64幀數據并且節點處于收發轉換的中間態。為提高讀寫效率并延長FLASH的使用壽命,FLASH讀寫為頁讀寫。所用FLASH存儲器中一頁包含2048字節,nRF24L01+的一幀數據包含32字節,因此以64幀為一個完整讀寫單位。對于溫度、濕度、氣壓三種數據采集慢的狀態監測節點,有效數據為60字節,其余字節為無效數據,以避免該類節點長時間無數據寫入。
定時器1中斷用于節點計時,計時周期為1ms。
定時器2中斷用于nRF24L01+_1/2收發及復位狀態、狀態監測節點切換的計時。主節點收發狀態轉換時的中間態由定時器2進行計時。當節點由收狀態經中間態到達發狀態時,由定時器2程序開始數據請求命令的傳輸。同樣,定時器2有復位計時功能,復位狀態與前述一致。當主節點向某狀態監測節點索要數據時間過長時,主節點認為通信出現問題或狀態監測節點本身出現問題,此時進行節點切換,以保證其他狀態監測節點的數據傳輸不受影響。
數據讀取軟件用于向主節點發送開始數據采集命令、監控網絡運行狀態和主節點存儲數據的讀取。數據讀取軟件由面向對象語言C#開發,開發環境為Visual Studio 2010,軟件界面如圖6所示。

圖6 數據讀取軟件界面
該軟件包含兩部分功能:當飛行器處于運輸或存儲狀態時,軟件可以監控系統運行狀態,此時圖形以每2k字節抽取固定數據顯示監測結果;當飛行器處于飛行狀態后,軟件只能以后處理方式讀取FLASH中存儲的數據,并以圖形方式顯示。圖6是存儲狀態下,各狀態監測節點的數據情況。圖中,沖擊值在0到1之間漂移是由模擬量采集后進行數字化造成的,沖擊值只有飛行器受到大的沖擊(飛行或擊中目標)時才有意義;振動部分為1g的值表示垂直地球表面的重力加速度;氣壓、溫度、濕度值分別為0.1Mpa、26℃、49(46)%,其表示當前的存儲環境為常規狀態。可見,所設計系統實現了飛行器狀態的有效監測。
針對飛行器狀態監測的實際需求,設計了包含數據讀取計算機、主節點、狀態監測節點架構的狀態監測系統,實現了飛行器的狀態監測,為飛行器狀態監測方式的發展提供了一種有效可行的解決方案。