航磁姿态数据收录系统设计

2017-05-24 14:45孙肖南辛春英贾化山
计算机测量与控制 2017年5期
关键词:窗体串口姿态

孙肖南,孙 陶,辛春英,贾化山

(核工业航测遥感中心,石家庄 050002)

航磁姿态数据收录系统设计

孙肖南,孙 陶,辛春英,贾化山

(核工业航测遥感中心,石家庄 050002)

随着计算机的发展,航空磁法测量的磁补偿方式已从手动补偿转变为自动补偿方式,其磁补偿干扰系数的计算,也在补偿标定飞行中自动完成,磁补偿系数的准确程度是由标定飞行所完成动作(摇摆、俯仰、偏航)的准确性来决定,因而对飞机姿态角度的数据记录和显示,可以为航磁补偿质量的评价提供一种依据,还可以在测区做业的数据处理中,检查航磁探头在测区中工作角度的变化,排除航磁探头进入到死区内的干扰数据;因此在航空物探测量中对飞行姿态数据的采集是很有必要的,该软件应用C++Builder编译系统,实现了在航空磁法测量中对航磁数据、GPS数据、飞行姿态动作数据的实时采集、记录和显示,也为补偿软件的开发提供飞行姿态数据的支持。

航空物探;姿态监视;自动补偿

0 引言

在目前航空磁法测量普遍采用自动补偿系统,测区做业前首先要进行磁补偿的标定飞行,求解补偿的磁干扰系数。标定飞行是飞机按照规定的飞行方式和按照规定的角度让飞机做各种动作(摇摆±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.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的cksebei指针所指向的数据结构中。

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 系统测试

2.1 操作界面

软件运行在计算机XP操作系统上,启动程序进入操作界面,主菜单项包括:文件、测量、帮助。

2.2 串口设置界面

点击菜单测量/设置串口,在显示界面中设置相应接收串口的数据传输参数:设备名、串口号、波特率、数据位、停止位。点击浏览按钮,指定串口所输入的数据自动显示到界面内的文本框中,并不断刷新,因而能够检查串口所接收的数据。

2.3 进入工作界面

点击菜单测量/进入测量,在显示界面后点击运行按键,进入界面后,软件自动按照所设置的波特率等参数打开3个串口,串口输入的数据实时的显示在各窗口中。界面中,数字框分别显示气压、温度、高度和GPS坐标数据,图形框分别用数字和曲线的形式显示接收到的数据,分别为AARC补偿仪磁总场补偿前和补偿后的数据图形,磁通门的三轴分量数据图形,显示的量程和曲线颜色可由鼠标右键弹出清单来改变,图形框的大小可通过鼠标在图形框边沿的拉伸而改变,表盘框用指针和以度为单位数字形式显示姿态角度,分别为:磁罗盘方向、俯仰角度、摇摆角度和偏航角度。姿态图形框内显示一个不同颜色的六面立方体,其六面立方体图形随着姿态角度的变化而发生相应的姿态旋转变化。各窗体可由鼠标任意拖动,串口的活动状态由相对应的指示灯的红绿闪烁来标明。

图3展示了摇摆、俯仰、偏航15度动作时,相应表盘框和姿态图形框显示的图形。

2.4 数据文件记录

软件运行后,点击数据采集运行命令,自动建立以当前时

图3 姿态动作角度显示

间命名的测量数据文件夹,并以当前时间建立三个设备数据记录文件,分别为GPS数据文件、AARC数据文件和stm32数据文件,串口所接收的数据实时记录到这三个文件中。文件记录为ASCⅡ数据格式,为同步所接收的三个串口数据,每次串口数据的记录,接收时间自动记录到相应的数据文件中,各数据文件的记录格式如图4。

图4 数据文件记录格式

3 结论

本设计采用了软件和硬件方式,实现了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

猜你喜欢
窗体串口姿态
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
攀爬的姿态
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
试谈Access 2007数据库在林业档案管理中的应用
基于Qt的多窗体快速并行图形绘制方法研究
全新一代宋的新姿态
船舶电子设备串口数据的软件共享方法
另一种姿态
阅读是最美的姿态