高建树,赵宝增
(中国民航大学航空自动化学院,天津300300)
飞机除冰车是对飞机进行除冰的机场特种车辆。机身表面的冰层会增加飞机在空中的运动阻力,造成飞机失速、机翼变形等故障,因而飞机在起飞前必须进行除冰[1]。在机场运行中,为了更加有效地使用除冰车,调度系统应运而生。目前市场上广泛存在以GPS为主的车辆调度系统,然而随着我国北斗二代(BD2)技术的逐渐成熟,北斗定位技术必将在民航等领域取代GPS成为定位导航技术的主流,因而对于北斗定位技术的研发具有极大的科研意义。本文中提出的除冰车定位技术,以BD2定位技术为前提,充分考虑了除冰车本身的特殊性,研制了一种适用于除冰车的调度管理系统,以提高除冰车的运行效率。
系统主要由处理器模块、定位模块、检测模块、无线传输模块、电源模块五部分组成。处理器模块主要由ARM处理器、SDRAM、NAND FLASH、复位电路组成。NAND FALSH用于存储系统代码,SDRAM提供系统运行的内存空间,ARM处理器采用SAMSUNG公司的ARM9系列S3C2440A。S3C2440A基于ARM920T内核,价格低,功耗小,适于应用型设备的开发[2]。
定位模块UM220用于接收除冰车的定位信息数据,CR-606检测模块完成对除冰车油位及除冰液液位数据的采集,无线传输模块GTM900B则用于将采集到的数据传送到上位机,供管理人员参考。电源模块主要负责各模块的电能供给。系统的结构示意图如图1所示。
图1 系统结构示意图
传感器壳体与感应电极之间有电容量的变化,将这个变化量经电路转换后以4~20mA标准信号输出。但由于处理器A/D模块输入范围为0~3.3V的电压信号,因此需将传感器的输出信号进行转换,转换原理图如图2所示。
图2 油位检测转换电路
信号转换电路基于运算放大器原理,采用TI公司的OP07D进行设计。OP07D为一款精密、超低失调、低功耗的电压放大器,且支持单电源供电。图中R1为250Ω精密电阻,U1为电压跟随器用于将4~20mA的电流信号转变为1~5V的电压信号。如当Ii为4mA时,Vi1为1 V,Vo1=Av·Vi1,当Ii为20mA时,可得Vo1为5V[3]。
U2为调零、增益电路,负责将1~5V的信号转变为0~3.3V的处理器A/D标准信号。其中,Vi2为调零电压,R3=R4=400Ω、R5=R6=400Ω,R6/R3=R5/R4当由式(1)可得当Vo1为1V时,输出Vo2为0V,当Vo1为5V时,输出Vo2为3.3V。
系统采用和芯星通公司的UM220作为定位模块。UM220为双模块、高性能的GNSS芯片,定位精度3m,具有NMEA0183导航电文格式,支持GPS与BD的协同定位及GPS或BD的单独定位。
UM220通过串口与处理器连接,硬件连接原理图如图3所示。J1端为外接天线端口,外接有源GPS/BD天线,天线与芯片间的L1、C9、C10组成馈电线路,L1防止电源对BD/GPS信道影响,C10用于隔离同轴线中的直流信号,避免芯片损坏。
引脚VBAT外接后备电池,在断电的情况下,由后备电池进行供电,使模块保存星历信息,保证在短时间内再次启动时,能够快速定位。串口RXD1、TXD1分别与S3C2440A的TXD1、RXD1相连,实现UM220与处理器之间的数据传递[4]。
图3 UM220硬件原理图
无线传输部分采用华为公司的GTM900B模块。GTM900B是一款三频段GSM/GPRS无线模块,支持标准的AT命令,内嵌TCP/IP协议,推荐工作电压为4V。
GTM900B的串口0与S3C2440A的串口2相连接,但由于S3C2440A的串口2在Linux系统下默认为红外接口,故需先调试内核,将S3C2440A的串口2改为普通串口后才能使用。GTM900B的电路原理图如图4所示。
图4 GTM900B电路原理图
PWON为GPRS模块开/关机控制引脚,在GPRS模块上电后,引脚必须维持至少10ms的低电平,模块才能工作。系统采用RC电路完成GPRS模块的上电自启动功能。D1用于断电后将C4两端的电压释放掉,以备下次启动。SIM引脚与SIM卡相连接,SIM_VCC与SIM_GND负责给SIM卡供电,SIM_DATA用于在SIM卡与GPRS模块之间进行数据的传输,SIM_CLK提供读写SIM卡的参考时钟。模块通过LPG引脚输出信号来反应模块的工作状态。如模块启动时,LPG引脚持续输出高电平,当模块发送数据时,发送周期为125ms,高电平持续93.59ms的方波信号,系统通过Q1的通断,控制LED0的闪灭频率,从而反应模块的工作状态[5]。
系统软件以Linux载体进行开发,主要包括Linux系统制作、应用程序编写、图形界面设计。系统主程序框架如图5所示。
图5 系统主程序框图
Linux系统开发主要包括bootloader制作、Linux内核裁剪、字符设备驱动的添加及根文件系统的制作[6]。
系统采用u-boot-1.1.6源码制作bootloader,主要完成对于硬件的初始化及运行代码的搬移工作,在u-boot的设计中,需使用软浮点交叉编译器进行编译;内核以Linux-2.6.31源码为基础进行裁剪编译,添加对于NAND FLASH、LCD等硬件及Yaffes2文件系统的支持,并添加DS18B20及A/D驱动程序;根文件系统采用Yaffes2文件系统进行制作,Yaffes2文件系统为专门针对NAND FLASH所设计的文件系统。
应用程序主要实现TCP/IP连接及数据采集与发送。应用程序流程框图如图6所示。
程序采用多线程技术实现对于数据的采集与发送。在车载端上电后S3C2440A通过向串口发送AT指令实现车载端与上位机的连接。在连接成功后,线程启动开始工作。
程序定义一个全局变量buf[] ,用于存储、发送采集到的数据,并利用多线程技术实现对于buf[] 的操作,通过信号量实现对于数据采集与发送的同步操作。首先初始化两个信号量:sem1和sem2。代码如下:
程序首先对sem1、sem2进行P操作,此时sem1=0,sem2<0,数据采集线程执行,对数据进行采集并放入全局变量buf[] 中,而后对sem2进行V操作sem2=0,数据发送线程执行,将数据发送至上位机,并对sem1进行V操作,sem1变为1,此时重复执行之前的步骤对数据进行采集与发送。通过对线程的PV操作实现数据采集线程与发送线程对全局变量buf[] 的顺序访问。
但由于GTM900B是以ASCII码的形式发送数据,因而在数据传输前需对数据进行格式转化。数据转换程序如下:
*g为待转换的字符串指针,buf为转换后的字符串[7]。
图6 应用程序流程框图
图形界面主要用于油位及除冰液液位等参数的虚拟仪表显示,界面显示图如图7所示。界面采用Linux系统下的Qtcreator进行开发,图中Olevel仪表显示除冰车的油位,Llevel显示除冰液的液位,Tem显示除冰液的温度,报警灯主要实现油量快耗尽时的报警功能。图形界面的设计,可以减少系统的硬件成本,且显示界面可根据需求增加相应的功能,便于后期的扩展。界面仪表通过信号与槽的形式实现与硬件的交互,如温度显示函数为[8]:
图7 Qt图形界面设计
在项目设计中以S3C2440A处理器为核心,采用我国自主研制的北斗技术实现对于除冰车的定位操作,并在车载终端实现了对于除冰车油位、除冰液参数的实时显示,并将参数连同定位信息一同传输至上位机,实现对于除冰车更加合理化的调度。
[1] 夏建满,徐赫男.飞机除冰车技术现状[J] .专用汽车,2010(2):1-3.
[2] 张豪,杨春燕.汪筱阳.S3C2440A芯片及应用[J] .电子设计共工程,2011(12):1-5.
[3] 石飞飞,马晨.基于OP07和LTC1543温度采集模块的设计[J] .电子设计工程,2010(12):1-3.
[4] 李新,包剑,刘卉.车载GPS终端的设计与实现[J] .辽宁工程大学学报,2004(S1).
[5] 王春波.GPS/GPRS车载终端的设计与实现[D] .成都:电子科技大学,2008:2-30.
[6] 刘峥嵘,张志超,徐振山.嵌入式Linux应用开发详解[M] .北京:机械工业出版社,2004.
[7] 穆煜.嵌入式应用程序设计[M] .北京:邮电大学出版社,2011.
[8] 王瑞民,赵祥模,惠飞,等.基于嵌入式Linux与Qt的汽车虚拟仪表设计[J] .现代电子技术,2012(6):1-4.