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

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

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








