孫肖南,孫 陶,辛春英,賈化山
(核工業航測遙感中心,石家莊 050002)
航磁姿態數據收錄系統設計
孫肖南,孫 陶,辛春英,賈化山
(核工業航測遙感中心,石家莊 050002)
隨著計算機的發展,航空磁法測量的磁補償方式已從手動補償轉變為自動補償方式,其磁補償干擾系數的計算,也在補償標定飛行中自動完成,磁補償系數的準確程度是由標定飛行所完成動作(搖擺、俯仰、偏航)的準確性來決定,因而對飛機姿態角度的數據記錄和顯示,可以為航磁補償質量的評價提供一種依據,還可以在測區做業的數據處理中,檢查航磁探頭在測區中工作角度的變化,排除航磁探頭進入到死區內的干擾數據;因此在航空物探測量中對飛行姿態數據的采集是很有必要的,該軟件應用C++Builder編譯系統,實現了在航空磁法測量中對航磁數據、GPS數據、飛行姿態動作數據的實時采集、記錄和顯示,也為補償軟件的開發提供飛行姿態數據的支持。
航空物探;姿態監視;自動補償
在目前航空磁法測量普遍采用自動補償系統,測區做業前首先要進行磁補償的標定飛行,求解補償的磁干擾系數。標定飛行是飛機按照規定的飛行方式和按照規定的角度讓飛機做各種動作(搖擺±10度、俯仰±5度、偏航±5度),補償系統根據動作角度所采集的磁場數據,自動計算出各項磁干擾系數,包括固定場補償系數i1、i2、i3(HPERM=i1cosX+i2cosY+i3cosZ),感應場補償系數i4、i5、i6、i7、i8、i9(HINO=i4Hecos2X+i5HecosXcosY+i6HecosXcosZ+i7Hecos2Y+i8HecosYcosZ+i9Hecos2Z),渦流場補償系數i10、i11、i12、i13、i14、i15、i16、i17、i18(HEDDY=i10HecosX(cosX)′+i11HecosX(cosY)′+i12HecosX(cosZ)′+i13HecosY(cosX)′+i14HecosY(cosY)′+i15HecosY(cosZ)′+i16HecosZ(cosX)′+i17HecosZ(cosY)′+i18HecosZ(cosZ)′)。飛機姿態動作的準確程度直接關系到這些磁補償系數計算的準確性,影響著測區飛行自動磁補償的補償精度和可靠性。而目前只是靠檢查補償后標準差是否優于±0.08nT來評價補償的質量水平,并沒有有效的方法來監控補償動作是否符合要求[5],無法知道飛機完成相應動作的準確性,難于對標定飛行動作的質量進行客觀的評價,因此設計一套具有飛行姿態角度數據記錄和顯示的磁場數據收錄軟件非常必要,為技術人員評價所完成的補償標定數據的質量,增加了一種方法手段,姿態數據的記錄還能夠讓人們了解到航磁探頭在測區中工作角度的變化,在數據處理中剔除磁探頭進入到死區內的數據干擾。也能夠為人們開發事后補償軟件的工作中,提供飛行姿態數據的依據。
設計的軟件適用于Windows操作系統,接收航磁設備AARC500航磁數據和磁通門數據,GPS數據,實時采集飛行姿態(俯仰、搖擺、偏航)角度數據和大氣溫度、壓力數據,將所接收的數據以數字或圖形的方式實時的顯示在收錄系統屏幕上,并將所接收和采集的數據記錄到相應的數據文件中,所記錄的數據還包括磁總場到各軸分量的夾角數據,其夾角數據的余弦對應著磁補償計算公式中的cosX、cosY和cosZ項。
1.1 設計結構
系統設計采用上位機和下位機的結合的方式,設計包括姿態角度數據采集的硬件電路設計、單片機軟件編程和收錄GPS數據、航磁數據、姿態角度數據的界面編程設計。
上位機采用Windows操作系統,應用C++Builder編譯系統,通過三個串口分別接收航磁AARC自動補償儀、GPS接收機、姿態角數據采集單片機電路發送來的數據,實時顯示所接收到的數據,并把接收到的數據記錄到相應的文件中。下位機采用32位單片機stm32f4負責讀取和計算姿態傳感器MPU-6050的數據、電子羅盤HMC5883的數據、磁總場到三軸分量的夾角數據、雷達高度數據,同時stm32接收AT89C52發送來得大氣溫度和大氣壓力數據,并將所接收的數據實時向上位機發送。
1.2 單片機硬件電路設計和單片機程序軟件編程
1.2.1 硬件設計
考慮到飛機的密封環境,把大氣溫度和壓力的數據采集系統放到機艙外面,采集機外的大氣溫度和壓力,通過無線數據發送到機艙內的單片機接收電路。因而硬件電路分為單片機AT89C52電路部分和單片機stm32電路部分。電路設計如圖1。

圖1 硬件結構及流程圖
以AT89C52單片機為核心的電路包括:溫度傳感器DS18B20,氣壓力傳感器MPX4115,12位串行A/D轉換器件MAX1286,無線數據發送器件NRF24L01。DS18B20以單總線的方式進行數據傳輸,AT89C52通過P1的5腳與DS18B20的數據引腳進行連接發送命令和接收數據。MPX4115為模擬電壓輸出,經A/D轉換電路MAX1286,以SPI串行數據總線的方式接入AT89C52單片機P2的0腳、1腳、2腳,AT89C52模擬SPI信號讀取氣壓數據,MPX4115電壓傳輸函數為Vout = VS (P x 0.009-0.095)。NRF24L01為SPI總線傳輸協議,使用2.4 GHz的開放ISM頻段,AT89C52單片機通過P1的0、1、2、3、4腳和P3的2、4腳連接NRF24L01,模擬SPI總線信號從NRF24L01采用中斷的方式向stm32單片機發送數據,傳輸速率為2 Mbps。
以stm32f4單片機為核心的電路包括:陀螺儀器件MPU-6050,3軸電子羅盤器件HMC5883,無線數據接收器件NRF24L01,RS232到TTL電平轉換元件MAX3232。MPU-6050采用I2C總線數據傳輸協議方式,stm32f4單片機PC口的4、5腳模擬I2C總線,通過dmp_load_motion_driver_firmware()函數,啟用片內DMP數字處理器,采用中斷方式,從DMP的FIFO 緩沖器中讀取陀螺儀MPU-6050的姿態角度數據。HMC5883為I2C總線數據傳輸協議,stm32通過PB口4、5腳模擬I2C總線的方式讀取羅盤數據。stm32通過PA口2腳,采用引腳復用方式接收高度模擬信號的分壓信號。stm32通過PB口10、11、12、13、14、15腳,采用SPI總線方式從NRF24L01接收AT89C52單片機發送的數據。stm32通過USART1端口,經過MAX3232電平轉換后以每秒10次的速率向上位機串口發送所采集的數據。
1.2.2 單片機軟件設計
單片機軟件編程使用單片機C語言,按照相應的協議要求,編制功能函數,實現引腳的數據位傳送、器件的初始化、數據的采集、處理和發送。
1)AT89C52單片機部分。
該功能通過以下函數實現,對溫度傳感器DS18B20的初始化函數init_18b20(),寫數據函數write_byte_18b20(),讀數據函數read_temperature();對氣壓傳感器MPX4115的讀取電壓值函數GetValue1286(),氣壓值轉換函數Get_Adc1286_Average();對無線通訊元件NRF24L01的初始化函數init_NRF24L01(),發送數據包函數NRF24L01_TxPacket()和接收數據包函數NRF24L01_RxPacket()。
2)stm32f4單片機部分。
stm32外部時鐘采用為8 MHz,通過系統鎖相環初始化設置,生成168M的系統時鐘和片內外設所需要的時鐘。向上位機的數據發送,啟用DMA和定時器中斷方式,100 ms中斷一次,通過串口以115200的波特率向上位機發送氣壓、溫度和姿態角度數據。stm32采用循環方式對MPU-6050、HMC5883數據采樣并以中斷的方式接收AT89C52發送的數據。
相關函數有:對電子陀螺儀元件MPU6050的初始化函數GPIO_Init_I2C_MPU6050(),讀取角速度3個方向數據值函數MPU_Get_Gyroscope(),讀取加速度3個方向數據值函數MPU_Get_Accelerometer(),讀取dmp數字處理器計算出的姿態角度(搖擺、俯仰、偏航)函數mpu_dmp_get_data();對電子羅盤元件HMC5883的初始化函數Init_HMC5883(),讀取總線字節數據函數RecvByte_I2C(),寫入總線字節數據函數SendByte_I2C(),讀取磁羅盤角度函數Multiple_read_HMC5883();對高度模擬輸入的:stm32f4的ADC初始化函數Adc_Init_STM32F4(),讀取高度數據的函數Get_godu_STM32F4();對無線通訊元件NRF24L01的初始化函數NRF24L01_Init(),發送數據包函數NRF24L01_TxPacket(),接收數據包函數NRF24L01_RxPacket()。
1.3 收錄軟件界面設計
1.3.1 串口接收及數據格式分析
本設計通過3個串口分別接收航空自動補償儀AARC500發送的磁場數據數據,GPS接收機發送的GPS數據和STM32單片機發送的飛行姿態等數據。串口數據接收采用中斷的方式,通過相應的中斷回調函數,將數據接收到三個串口的相應數據緩沖區中,通過數據信號接收標志,在線程內采用同步機制方式對接收的數據進行處理顯示和記錄。
航空自動補償儀AARC傳輸內容有:基點號,磁通門三軸數據,補償前磁場數據,補償后磁場數據;GPS數據傳輸內容為GPGGA格式數據;STM32F4向上位機傳輸的內容包括:MPU-6050三維角速度和加速度數據、姿態角度數據(俯仰,搖擺,偏航),HMC5883的磁方位角數據、磁總場到x軸分量、y軸分量、z軸分量的夾角數據,以及大氣溫度、大氣壓力和雷達高度數據。
1.3.2 設計結構及軟件流程
數據收錄顯示軟件采用多窗體設計結構,每個窗體采用動態分配方式,進入時自動分配內存空間,退出時及時釋放所占用的內存資源。軟件設計結構如圖2。

圖2 軟件結構及流程圖
1.3.3 窗體界面設計
1)主界面。
主界面由類class TForm1 : public TForm構成,包含一個TMainMenu組件,由多個TMenuItem組件項、TImage組件以及相應的事件函數實現相應功能。主要函數有:保存串口參數函數jianlisbwj(),該函數將串口設置參數保存到cksebeipeizhi.ini文件中,讀取串口參數函數dakaisbwj(),該函數用cksebeipeizhi.ini文件中的數據來設置相應的串口。
界面菜單包括:文件、測量、幫助。文件子項為:退出。點擊該子項后軟件退出,釋放所占用的資源。測量子項為:設置串口、進入測量。點擊該子項后,執行相應窗體生成函數,系統采用動態內存分配方式分配內存占用空間,退出各窗體時,自動釋放所占用的內存資源。
2)設置串口界面。
串口設置界面由類:class Tcuankousz : public TForm構成,包含TMemo組件、TLabel組件、TComboBox組件、TRadioGroup組件、TCheckBox組件、TButton組件、以及相應的事件函數完成相應的功能,退出時自動清理所占用的內存空間。主要功能函數有串口數據瀏覽按鍵函數Button1Click(TObject *Sender),單選框設備點擊函數rdsbClick(TObject *Sender)以及保存各TComboBox組件設置的相應事件函數。
串口設置包括:串口號、波特率、數據位、停止位、校驗位等參數設置,設置的內容自動記錄到動態數組DynamicArray
3)工作界面顯示。
界面由類class TForm1 : public TForm構成,包含TShape組件和TButton組件。主要函數如下:各按鍵的事件函數,讀取設置參數文件函數dwjsj(),創建測量數據記錄文件函數jianliFile(),保存設置參數文件函數baocuncansu()。它可以自動創建兩個文件sjpeizhi.ini和szkcs.ini用以保存界面運行的相關參數。
進入測量界面后,自動按照串口設置界面中設置的串口參數打開3個串口并設置相應的中斷函數。建立各顯示窗口和窗口數據接收變量,包括圖形曲線顯示窗體、數值顯示窗體和表盤顯示窗體。建立分析串口數據的線程并繪制3個紅綠閃爍的指示燈指示3個串口的活動狀況。
Button1Click()事件函數可以動態生成各顯示窗體和接收線程,包括圖形顯示窗體class Thuitu : public TForm,數字顯示窗體class THC_SR04 : public TForm,表盤顯示窗體class Tzhinanzhenk : public TForm,接收顯示記錄串口數據的線程類class TRS232_Thread : public TThread。
類class Thuitu : public TForm所包含組件有TStatusBar組件、TPopupMenu組件、TMenuItem組件、TColorDialog組件和TPaintBox組件。主要函數如下:改變量程函數gblc(),數據顯示函數xsjssj(),TPaintBox鼠標單擊函數pbOnMouseDown(),水平繪圖和垂直繪圖改變時的轉換函數zuobiaozh(),以及繪圖框內鼠標彈出清單的各項TMenuItem上的點擊函數。
類class Tzhinanzhenk : public TForm所包含組件有TPaintBox組件和TLabel組件。主要函數有數據接收函數jsshuju()和表盤繪制函數PaintBox1Paint()。
類class THC_SR04 : public TForm包含TLabel組件。主要函數有標題輸入函數input_caption()和數據輸入函數inputsj()。
線程類class TRS232_Thread : public TThread主要函數有:接收GPS數據Read_gps()、接收AARC500數據Read_AARC()和接收stm32數據Read_stm32()。
2.1 操作界面
軟件運行在計算機XP操作系統上,啟動程序進入操作界面,主菜單項包括:文件、測量、幫助。
2.2 串口設置界面
點擊菜單測量/設置串口,在顯示界面中設置相應接收串口的數據傳輸參數:設備名、串口號、波特率、數據位、停止位。點擊瀏覽按鈕,指定串口所輸入的數據自動顯示到界面內的文本框中,并不斷刷新,因而能夠檢查串口所接收的數據。
2.3 進入工作界面
點擊菜單測量/進入測量,在顯示界面后點擊運行按鍵,進入界面后,軟件自動按照所設置的波特率等參數打開3個串口,串口輸入的數據實時的顯示在各窗口中。界面中,數字框分別顯示氣壓、溫度、高度和GPS坐標數據,圖形框分別用數字和曲線的形式顯示接收到的數據,分別為AARC補償儀磁總場補償前和補償后的數據圖形,磁通門的三軸分量數據圖形,顯示的量程和曲線顏色可由鼠標右鍵彈出清單來改變,圖形框的大小可通過鼠標在圖形框邊沿的拉伸而改變,表盤框用指針和以度為單位數字形式顯示姿態角度,分別為:磁羅盤方向、俯仰角度、搖擺角度和偏航角度。姿態圖形框內顯示一個不同顏色的六面立方體,其六面立方體圖形隨著姿態角度的變化而發生相應的姿態旋轉變化。各窗體可由鼠標任意拖動,串口的活動狀態由相對應的指示燈的紅綠閃爍來標明。
圖3展示了搖擺、俯仰、偏航15度動作時,相應表盤框和姿態圖形框顯示的圖形。
2.4 數據文件記錄
軟件運行后,點擊數據采集運行命令,自動建立以當前時

圖3 姿態動作角度顯示
間命名的測量數據文件夾,并以當前時間建立三個設備數據記錄文件,分別為GPS數據文件、AARC數據文件和stm32數據文件,串口所接收的數據實時記錄到這三個文件中。文件記錄為ASCⅡ數據格式,為同步所接收的三個串口數據,每次串口數據的記錄,接收時間自動記錄到相應的數據文件中,各數據文件的記錄格式如圖4。

圖4 數據文件記錄格式
本設計采用了軟件和硬件方式,實現了GPS數據、動作姿態角度數據、航磁數據、高度、大氣壓力和溫度數據的記錄和顯示,完成了數據收錄系統的制作。將姿態數據接收到系統中,可有效監控航磁標定飛行過程中俯仰、搖擺、偏航動作的規范性,為數據處理人員評價磁補償的質量水平提供了一種手段,在數據處理中,通過檢查文件記錄中飛行姿態的角度數據,可以發現測區中航磁探頭進入死區時的記錄,剔除探頭在死區時的數據干擾。
[1] 譚浩強,C程序設計[M].北京:清華大學出版社, 1999.
[2] 李幼儀,甘 志.C++Builder高級應用開發指南[M].北京:清華大學出版社,2002.
[3] 周海斌,王安鵬,牛 韜,等.C++Builder技術大全[M].北京:機械工業出版社,2001.
[4] 范逸之,江文賢,陳立元. C++Builder與RS-232串行通信控制[M].北京:清華大學出版社,2001.
[5] 王林飛,薛典軍,段樹嶺. 航磁軟補償規范性評價[J].物探與化探,2016,40(2):365-369.
Design of Air Magnetic Attitude Data Collection System
Sun Xiaonan, Sun Tao, Xin Chunying, Jia Huashan
(Airborne Survey and Remote Sensing Center of Nuclear Industry,Shijiazhuang 050002,China)
With the development of computer, the method of magnetic compensation in the airborne magnetic survey has been changed from manual compensation to automatic compensation. And the calculation of interference coefficient inmagnetic compensation is also done during the compensation calibration flight. Due to the accuracy of the magnetic compensation coefficient is determined by the accuracy of the action(swing, pitch, yaw), the recording and displaying of the aircraft attitude angle data can provide basis for the evaluation of the quality of aircraft magnetic compensation. From the data processing of the survey area, it can check how the working angle of the aerial magnetic probe changes in the measurement area, so we can avoid the interference caused by the aerial magnetic probe in dead zone. Therefore, it is very necessary to collect the flight attitude data during the airborne geophysical survey. This software is based on C++Builder compiler system, it not only lets the real time data collecting, recording and displaying of airborne magnetic data, GPS data and flight attitude motion data during the airborne magnetic survey come true, but also provides support for flight attitude data in the development of compensation software.
airborne geophysical prospecting; attitude monitoring; automatic compensation
2016-11-28;
2016-12-23。
中國核工業地質局鈾礦地質科研項目(201664,201665) 。
孫肖南(1962-),男,河北石家莊人,物探高級工程師,主要從事航空物探設備的管理維護方向的研究。
1671-4598(2017)05-0192-03DOI:10.16526/j.cnki.11-4762/tp
TP
A