王清源 張曉明,2 李惠杰
(1.中北大學電子測試技術國家重點實驗室 太原 030051)(2.中北大學儀器科學與動態測試教育部重點實驗室 太原 030051)
隨著科技的不斷進步,常規彈藥已經難以適應現代戰爭的需求,彈藥智能化、制導化已經是發展的必然趨勢。地磁測姿系統因為具有誤差不累計、抗過載能力強、成本低、體積小等優勢[1],已經成為彈載導航中的主要方案之一。由于三軸磁傳感器軸間不正交、系統電路的放大特性不完全一致、零點偏移等原因[2],會導致磁測系統出現測量精度低等問題,為了提高磁測系統的精度與可靠性,需要對其進行標定和補償。目前標定流程仍采用先采集數據,再用如Matlab等仿真軟件處理數據。此流程步驟繁瑣,操作復雜,且因缺乏數據可視化導致對標定數據的準確性把握不足,難以滿足在實際要求。因此亟需一個能夠可視化、自動化的軟件來簡化操作,提升標定速度。
基于上述需求,本文基于Qt 開發平臺[3~4]設計了一種彈載磁測系統可視化自動標定軟件,實現了數據可視化與標定自動化,并針對開發過程中出現的問題提出行之有效的解決辦法。
磁測系統包含兩個子系統,分別為彈載磁測系統(下位機)和彈載磁測系統標定測試軟件(上位機)。上位機負責彈藥發射前磁測系統的標定與精度測試功能,上位機標定精度會直接影響彈載磁測系統的精度。系統結構圖如圖1所示。

圖1 系統結構圖
串口通信通過有線連接,抗干擾能力強,但是由于其依賴于線纜,當下位機與下位機距離過遠時,其走線便會非常麻煩。藍牙采用無線連接,可解決掉走線過于繁瑣的問題,但是在其周圍無線信道擁堵時,其傳輸便會收到很大影響。串口與藍牙能適應不同的環境,因此上位機采用了串口+藍牙的方式。
3.1.1 藍牙通信原理
Qt提供了Qt Bluetooth 模塊操作藍牙。藍牙通信需要格外關注兩個協議,分別是GAP(Generic Access Profile)和GATT(Generic Attribute Profile),GAP用來控制設備連接和廣播。GATT則定義兩個低功耗藍牙設備之間通過Service 和Characteristic通信的方式。Qt 為低功耗藍牙提供了·Qt Bluetooth Low Energy API,其基本流程如下:
1)使用QBluetooth Device Discovery Agent 發現周圍所有廣播的藍牙設備;
2)遍歷搜索到的藍牙設備,篩選出目標設備;
3)使用QLow Energy Controller 類的create Central()函數創建一個中心設備,并與目標設備進行連接,獲取藍牙services列表,根據服務的uuid篩選所需服務;
4)找到需要的服務后,根據characteristic 列表的uuid篩選出目標characteristic;
5)配置目標設備的descriptor,完成連接。
連接后,只需讀寫篩選出的characteristic 即可進行通信。
3.1.2 串口通信原理
串口使用了Qt SerialPort 模塊,該模塊提供了一系列API,能夠滿足對串口的基本配置和操作,創建一個QSerialPort類配置串口的波特率、停止位等參數,然后使用open()函數打開串口。該模塊提供了兩種方式讀寫,一種是阻塞模式,使用waitFor-ReadyRead 函數阻塞當前線程,等待可讀數據,另一中是非阻塞方式,使用connect 函數連接QSerial-Port的信號readReady()與對應的槽函數,在槽函數中即可進行數據處理。
為了清晰有效傳遞實驗信息,程序設計了數據可視化界面。論文通過總結以往磁測系統標定過程中出現的情況,設計了一種數據可視化界面,實驗人員可通過此界面實時掌握數據狀態,從而對實驗進程及時做出調整。
3.2.1 可視化界面設計
在彈體標定的過程中,存在諸多干擾:靜電或者串口誤碼有可能導致出現野值,由于數據標定算使用的基于最小二乘的橢球擬合算法,野值會影響標定數據的準確性;彈體出現磁化現象使磁測系統中的磁傳感器出現飽和現象,從而影響磁測系統標定的準確度。通過對標定過程中的干擾因素及誤差分析,論文設計一套全方位立體實時可視化的GUI 界面,界面上由了一個二維圖像、一個三維圖像以及實時數據顯示控件,滿足實驗人員全方位了解數據狀態的需求。二維圖像采用了Qt 的QChart模塊,用于實時顯示六條的波形圖,如圖2所示。

圖2 二維波形圖
三維圖像顯示則負責實時顯示橢球整體的情況,其采用了Qt的三維圖表模塊Data Visualization,程序使用了三維散點圖模式。該圖像會在標定過程中不斷旋轉,以便實驗人員從不同角度實時了解橢球形狀。當數據出現野值時,三維橢球圖周圍會出現散點,如圖3(b)所示,當野值過多便會影響橢球擬合的精度,此時需要重新標定。

圖3 橢球異常情況
當橢球某部分出現“削平”的情況時表示磁傳感器飽和,如圖3(a)所示,出現這種情況需停止標定,繼續標定沒有意義。往往這種情況實驗人員需要對彈體進行整體退磁等處理后才能重新標定。
3.2.2 多線程優化
由于串口波特率較高,數據接收與解析計算占用了大量的CPU的時間片,同時界面波形圖與三維橢球圖也需要占用大量CPU資源,導致用戶界面不能及時相應實驗人員的操作,嚴重影響使用體驗。為了充分發揮計算機的性能,提升軟件界面響應的及時性,軟件采用了多線程技術[5]。
程序中使用Qt提供的QThread類,將耗時的串口讀寫與數據解析、計算等操作移動到子線程中,界面主線程只負責采用數據可視化與響應用戶操作,通過多線程技術,軟件響應速度與流暢度得到了大幅度提升。其流程如圖4所示。

圖4 多線程執行流程圖
3.3.1 磁測系統誤差模型
磁測系統的誤差來源主要有三個:三軸不正交誤差、三軸靈敏度誤差、零偏誤差[6~8]。由于三個誤差的存在,導致地磁矢量由圓球面畸變為平移的橢球面[9~11]。由根據誤差來源建立三軸磁傳感器誤差模型,如式(1)所示:
其中:為三軸磁傳感器的誤差矩陣;(X Y Z)T為三軸磁傳感器的實際輸出(存在誤差);kx、ky、kz為三軸磁傳感器的靈敏度;X0、Y0、Z0分別為傳感器三個軸的理想值(不存在誤差)。x,y,z為三軸零偏誤差,α、β、γ為三軸間不正交誤差角。
3.3.2 基于橢球擬合的誤差標定
由于地磁三維矢量和理論上是一個定值,因此,在理想的情況下,三軸磁傳感器在全空間范圍內旋轉后的輸出值可以構成一個圓球,但是由于三種誤差的存在,圓球面畸變成橢球面。
設橢球方程為
經過推導最終得到三軸磁傳感器誤差參數如式(3)所示:
其中Bb為傳感器理論三維矢量和,B0為系統的零偏誤差。
3.3.3 誤差補償
根據誤差模型,易得傳感器理論輸出如式(4)所示:
根據標定模式下的數據,計算得到磁測系統三軸零偏、靈敏度和不正交角等數據,利用上位機將標定數據下載到磁測下位機系統,下位機即可根據式(4)的誤差補償模型,將傳感器的測量值補償后輸出,從而得到理想值。
為了驗證程序標定數據的正確性以及有效性,本文以三軸磁傳感器HMC1053 為例,利用軟件對帶有HMC1053 三軸磁傳感器的磁測系統進行自動標定與補償。
首先在一個磁干擾較小的環境中,全范圍內旋轉磁測系統,軟件會實時采集數據并進行可視化處理。采集數據完成后軟件會自動計算誤差標定與補償系統,并將數據下載的系統中。精度驗證方法如下,將滾轉角旋轉一周,每30°記錄一次數據,其波形如圖5所示,精度對比如表1所示。

表1 補償前后滾轉角對比

圖5 補償后精度測試
由表1 分析可得,其最大誤差為1°,已經在誤差允許的范圍內。實驗結果表明該軟件采用橢球擬合的方法,能夠正確對系統進行標定,實現了對磁測系統的高精度補償。
本文針對磁傳感器標定中的可視化、自動化等問題設計開發了一套上位機軟件,其對標定流程及精度驗證流程中的數據進行了全面可視化處理,且極大簡化了全流程的操作。實驗驗證表明,程序可快速、準確對磁測系統進行標定,極大提高了標定效率。