
3 航跡儀系統(tǒng)的軟件設(shè)計
3.1 S3C44B0X主板部分的軟件設(shè)計
操作系統(tǒng)是控制和管理計算機軟硬件資源、合理組織計算機工作流程、方便用戶的程序集合。航跡儀功能的完成,很大程度上取決于操作系統(tǒng)軟件平臺的選擇和應(yīng)用程序的編制。在航跡儀的設(shè)計中,軟件平臺選用基于Tonardo集成開發(fā)環(huán)境的實時操作系統(tǒng)VxWorks,應(yīng)用程序則采用VxWorks支持的標(biāo)準(zhǔn)C語言編制。
主板軟件系統(tǒng)主要由主程序、命令解釋部分、底層部分組成。其中,主程序到命令解釋部分的調(diào)用通過函數(shù)shibie( )進行;命令解釋部分到底層部分的調(diào)用通過函數(shù)zxcb( )進行。
3.1.1 主程序
主程序主要對綜導(dǎo)臺命令和觸摸屏命令進行管理、調(diào)度。程序執(zhí)行過程中查詢隨機命令數(shù)和推位命令數(shù)這兩個變量。變量小于等于零時,沒有綜導(dǎo)臺命令,程序查詢觸摸屏有無按下及鍵值,執(zhí)行響應(yīng)操作。當(dāng)兩個變量大于零,說明有了綜導(dǎo)臺命令,就會自動進入跟蹤狀態(tài)。在跟蹤狀態(tài),不響應(yīng)觸摸屏命令,控制程序只查詢有無隨機命令及推位命令,轉(zhuǎn)入響應(yīng)的命令解釋程序。
3.1.2 命令解釋部分
命令解釋部分主要功能:通過函數(shù)shibie( )對每一條命令進行識別及格式檢查。對于隨機命令和推位命令,每從CAN總線上接收一條命令,相應(yīng)的命令條數(shù)加1。每執(zhí)行完一條,相應(yīng)的命令條數(shù)減1,同時指向下一條。只要這兩個變量不為零,就說明有綜導(dǎo)臺命令未處理。通過檢查隨機命令數(shù)和推位命令數(shù),即可按先后次序順次執(zhí)行所有命令。
本部分中還包括海圖坐標(biāo)轉(zhuǎn)換程序,其主要功能:主板接收裝海圖命令的同時,會讀取CAN總線上由綜導(dǎo)臺發(fā)送的海圖信息,包括海圖類型(墨卡托或高斯海圖)、大小、比例等。程序根據(jù)這些信息,將海圖上的經(jīng)緯度值折算成XY軸坐標(biāo),以便于底層的直線差補程序?qū)Y坐標(biāo)量轉(zhuǎn)換成步進電機的走步脈沖數(shù)。
3.1.3 底層部分
底層包括所有的畫線、寫標(biāo)記符等繪筆執(zhí)行動作的程序,及與硬件有關(guān)的I/O操作子程序、中斷服務(wù)程序。下面介紹幾個主要的程序。
(1)直線差補程序
線段是航跡儀繪制的基本圖形,其他各種曲線都是以線段逼近的。設(shè)線段終點到起點坐標(biāo)長度分量分別為Δx、Δy。令X、Y向步進電動機同時起動,同時停止,分別以均勻速度Vx、Vy運動。這樣
,即
。其中T代表電機運行時間,Vx、Vy分別為X、Y向電機速度,fx、fy分別為運轉(zhuǎn)頻率,k為步進電機脈沖當(dāng)量。
程序設(shè)計中,已知X、Y向的增量?駐x、?駐y,選增量大的方向的走步頻率為最大走步頻率f1=fM,另一方向頻率即為f2=fM×Δy/Δx。已知兩個方向的走步頻率,由接口板計數(shù)器的初始頻率12MHz可計算出X、Y向的分頻值;已知的脈沖當(dāng)量可求出X、Y向各自需要的走步脈沖數(shù)。將分頻值、脈沖數(shù)及開始/停止等控制信息傳送給接口板,使其產(chǎn)生相應(yīng)頻率的脈沖信號,以控制步進電機,即可實現(xiàn)航跡儀的直線差補功能。
(2)CAN總線通訊任務(wù)模塊
設(shè)計中采用PHILIPS公司的CAN總線控制器SJA1000,CAN總線驅(qū)動器選用82C250。
綜導(dǎo)臺將導(dǎo)航數(shù)據(jù)通過CAN總線發(fā)送給航跡儀。通訊模塊主要實現(xiàn)對航跡儀數(shù)據(jù)報文接收、解析等。當(dāng)有CAN報文到達,SJA1000產(chǎn)生中斷釋放信號量。設(shè)備工作任務(wù)中輪詢等待信號量接收CAN報文。對接收的CAN報文,首先存入CAN接收數(shù)據(jù)結(jié)構(gòu),解析后讀入航跡儀數(shù)據(jù)結(jié)構(gòu)。CAN接收數(shù)據(jù)結(jié)構(gòu)在接收CAN報文時臨時分配。在報文解析過程中,接收的報文通常為BCD碼,因此要將其還原為ASCII碼。解析過程中,若出現(xiàn)格式錯誤,則置錯誤狀態(tài)標(biāo)志。
(3)LCD屏顯示及觸摸程序
本設(shè)計采用SHARP公司的144.78mm、LM057QC1T01型STN彩色液晶顯示器,其顯示格式為320像素(×3)×240行,即顯示屏每行有320個像素點,共240行,每個像素點由RGB(紅、綠、籃)三種顏色組成。
LCD觸摸屏程序主要分為顯示任務(wù)FsceShow,觸摸屏查詢?nèi)蝿?wù)TouchCheck,觸摸屏狀態(tài)查詢?nèi)蝿?wù)TouchStateCheck。TouchCheck入口函數(shù)Touch_check( )查詢觸摸屏中斷,TouchStateCheckt( )查詢觸摸屏狀態(tài)改變,F(xiàn)aceShow執(zhí)行響應(yīng),顯示圖形。程序框圖如圖4所示。
(4)位置補償模塊
如前文所述,在步進電機運行完一次由運行到靜止的過程后,把目標(biāo)位置與從數(shù)字化板發(fā)送的實際位置做差比較得到的位置差量Δd作為一次操作補償。其特點是在一次繪圖過程中有兩次電機的開始和停止,補償速度慢,但所繪的是近似真實的圖形。程序框圖如圖5所示。

3.2 XC2S50接口板部分的軟件設(shè)計
XC2S50接口板軟件部分采用VHDL語言編寫。編譯后通過JTAG口燒寫入配置芯片18V01中。軟件部分主要包括頂層模塊jkb_top、接口模塊jiekou、脈沖發(fā)生模塊pulse_generate、速度控制模塊speed_ctr、脈沖計數(shù)模塊counter、方波發(fā)生器counter32等。其結(jié)構(gòu)框圖如圖6所示。

在脈沖發(fā)生模塊pulse_generate中,速度控制模塊speed_ctr的主要功能是:通過查詢發(fā)送、剩余脈沖數(shù),計算出響應(yīng)的速度控制級別(可分為4種模式),將速度控制信息傳送給脈沖計數(shù)模塊counter。兩個脈沖計數(shù)模塊counter分別控制X、Y兩個步進電機的走步步數(shù)。它們分別以X、Y向驅(qū)動脈沖作為輸入時鐘信號,紀(jì)錄兩向脈沖數(shù),發(fā)出使能信號以控制counter32,其原理如圖7所示。兩個方波發(fā)生模塊counter32分別對X向、Y向步進電機驅(qū)動器輸出方波,其輸出波形的頻率即為步進電機的走步頻率,如圖8所示。接口模塊jiekou接收來自主板發(fā)送的X、Y向分頻值、脈沖數(shù)數(shù)據(jù)信息,以及運行方向、開始終止、抬落筆、報警等控制信息,并將數(shù)據(jù)信息發(fā)送給pulse_generate模塊,將控制信息發(fā)送給驅(qū)動板。所有的軟件模塊封裝在頂層模塊jkb_top中。
新型智能化航跡儀設(shè)計,針對傳統(tǒng)航跡儀系統(tǒng)的諸多問題,給出了有效的改造方案。改造方案降低了成本,增強了功能的針對性,節(jié)省了系統(tǒng)資源。數(shù)字化板的使用,為原開環(huán)系統(tǒng)增加了閉環(huán)反饋,提高了標(biāo)繪精度。使用FPGA器件代替原CDT800接口板,保證系統(tǒng)的時事性與穩(wěn)定性,提高了集成度。CAN總線通訊的采用,增大了信息的承載量,提高了實時性。LCD觸摸顯示屏的使用,增強了人機交互性。使用帶有細分功能的電機驅(qū)動器,及對傳統(tǒng)航跡儀步進電機部分的優(yōu)化改造,降低了工作的振動與噪音,提高了工作穩(wěn)定性。








