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