高建樹,趙寶增
(中國民航大學航空自動化學院,天津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.