一種基于ARM及FPGA的新型智能化航跡儀的設(shè)計
航跡儀是艦船導(dǎo)航系統(tǒng)中的主要配套設(shè)備之一,它能根據(jù)陀螺羅經(jīng)、計程儀提供的航向航程信息或其他導(dǎo)航設(shè)備提供的定位信息,在海圖上自動連續(xù)地繪制出船舶航行的航跡與標(biāo)記。航跡儀具備的繪制航線導(dǎo)航功能,可使航海人員非常直觀的了解到己船位置、偏航程度及未來海域的安全程度。
隨著計算機(jī)技術(shù)的發(fā)展,智能化航跡儀的發(fā)展趨勢是進(jìn)一步拓寬功能、縮小體積、降低功耗、減少成本、提高可靠性,而傳統(tǒng)的航跡儀系統(tǒng)不完全具備上述功能,存在局限性。
1 航跡儀工作原理
航跡儀的工作過程是在計算機(jī)控制下進(jìn)行的。首先,使鍵盤處于開放狀態(tài),通過移筆鍵和自檢鍵簡單檢查繪圖功能;然后,由綜導(dǎo)顯控臺裝海圖并向航跡儀發(fā)出裝海圖命令,由此航跡儀自動進(jìn)入跟蹤狀態(tài)。船舶航跡的實時標(biāo)繪是通過實時接收由綜導(dǎo)顯控臺發(fā)送的緯度、經(jīng)度值及各種繪圖命令,通過數(shù)學(xué)模型的解算及直線插補(bǔ)運算后,產(chǎn)生步進(jìn)電機(jī)的控制脈沖序列,經(jīng)功放電路驅(qū)動電動機(jī)執(zhí)行,再經(jīng)機(jī)械轉(zhuǎn)換變成繪筆在圖面上運動。
傳統(tǒng)的航跡儀系統(tǒng)有一定的局限性,存在有待改進(jìn)之處:(1)傳統(tǒng)的航跡儀系統(tǒng)的接口、控制、傳動等部分采用分立式設(shè)計,占用了大量的空間,且價格較貴。(2)隨著導(dǎo)航數(shù)據(jù)信息化程度的提高,設(shè)備間的通訊越發(fā)頻繁,信息量亦隨之增大,使用單一的串行口通訊已不能滿足系統(tǒng)要求。(3)航跡儀與綜導(dǎo)臺使用同一操作界面,缺少獨立的人機(jī)交互系統(tǒng)。(4)傳統(tǒng)的航跡儀為開環(huán)系統(tǒng),無檢測反饋裝置,影響了走筆的精度。(5)接口板的設(shè)計動態(tài)初始化要求嚴(yán)格,不能完全滿足實時性要求。另外,傳統(tǒng)航跡儀傳動部分的振動及噪音較大,從另一方面影響了繪筆的精度。新型智能化航跡儀的設(shè)計對以上問題給出了解決方案。
2 航跡儀系統(tǒng)的硬件設(shè)計
2.1 硬件系統(tǒng)的總體構(gòu)成
航跡儀微機(jī)控制系統(tǒng)是以ARM處理器S3C44B0X模塊為中心的控制系統(tǒng)。系統(tǒng)由以下幾部分組成:基于ARM處理器S3C44B0X的開發(fā)板, STN 型320像素X240行LCD彩色液晶觸摸屏,基于FPGA元件XC2S50的接口板,步進(jìn)電機(jī)驅(qū)動及控制電路,步進(jìn)電動機(jī),數(shù)字化板。系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
2.2 S3C44B0X主板
傳統(tǒng)的航跡儀采用嵌入式PC/104模塊為核心控制系統(tǒng)。系統(tǒng)的接口、控制、傳動等部分采用分立式設(shè)計,占用的空間較大,且價格昂貴。因此在改進(jìn)設(shè)計中使用基于Samsung公司生產(chǎn)的ARM處理器S3C44B0X芯片。由于使用基于芯片開發(fā)的主板提高設(shè)計開發(fā)的靈活性,為本系統(tǒng)所專用,因此所用接口、外設(shè)均為自主設(shè)計的電路,節(jié)省了不必要的開銷。這種設(shè)計提高了系統(tǒng)的響應(yīng)速度,降低了成本。另外,S3C44B0X自帶LCD控制器,能夠保證改進(jìn)設(shè)計中觸摸屏顯示部分的順利實現(xiàn)。
S3C44B0X主板主要包括CPU模塊及其輔助電路、存儲器系統(tǒng)模塊、通信模塊、系統(tǒng)調(diào)試模塊、人機(jī)接口模塊及擴(kuò)展總線部分。
主板外接CAN總線控制器及總線驅(qū)動器等設(shè)備,接收CAN總線上由綜合導(dǎo)航顯控臺發(fā)送的實時位置、航向信息;通過人機(jī)接口接收到的觸摸屏發(fā)送的控制信息,經(jīng)處理后將控制命令(主要是控制脈沖頻率、脈沖個數(shù)、開始停止等命令)通過擴(kuò)展I/O口發(fā)送給接口板,另外,將顯示信息發(fā)送給LCD觸摸顯示屏。
2.3 XC2S50接口板
傳統(tǒng)航跡儀使用接口板CDT800,其中包括 Am9513計數(shù)器與μPD71055I/O接口。CDT800為成品接口板,其計數(shù)器Am9513相關(guān)資料相對有限,且動態(tài)初始化要求嚴(yán)格,在實際應(yīng)用過程中,對系統(tǒng)資源的占用過大,嚴(yán)重影響系統(tǒng)的實時性。在改進(jìn)設(shè)計中,采用基于Xilinx公司生產(chǎn)的FPGA元件XC2S50的接口板。這種設(shè)計提高了系統(tǒng)的集成化,保證了實時性,使得硬件的設(shè)計開發(fā)更加簡便。
XC2S50接口板包括FPGA芯片XC2S50、配置芯片18V01、輸出驅(qū)動芯片SN74LS244及外部接口電路。其原理圖見圖2。
接口板的主要功能是:接收S3C44B0X主板通過數(shù)據(jù)總線發(fā)送的數(shù)據(jù)命令信息(包括:X、Y方向的分頻值、脈沖個數(shù)、運行方向,以及開始/終止運行、抬落筆、報警等),經(jīng)FPGA芯片XC2S50處理后,轉(zhuǎn)化為相應(yīng)頻率的脈沖信號;再經(jīng)輸出驅(qū)動芯片SN74LS244,通過接口HJY傳遞給X、Y向的步進(jìn)電機(jī)驅(qū)動器。運行程序通過JTAG口或DOWNLOAD口燒寫入配置芯片18V01中。
2.4 步進(jìn)電機(jī)及其驅(qū)動器
對于航跡儀系統(tǒng),標(biāo)繪精度是極其重要的一項技術(shù)指標(biāo),而電機(jī)及傳動機(jī)構(gòu)的精度則對其產(chǎn)生直接影響。
航跡儀控制系統(tǒng)對快速性及定位精度均有很高的要求??紤]到系統(tǒng)是針對數(shù)字量及位移的控制系統(tǒng),因此選用步進(jìn)電機(jī)作為其執(zhí)行元件。步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)換成相應(yīng)角位移的電機(jī)元件,當(dāng)外加一個脈沖信號于電機(jī)的控制裝置時,其轉(zhuǎn)軸就轉(zhuǎn)過一個固定的角度(步距角),即前進(jìn)了一步。
系統(tǒng)要求繪筆繪制大量細(xì)小折線,這就要求電機(jī)工作在低頻區(qū)且需要頻繁地執(zhí)行起動、停止、調(diào)速等操作。因此步進(jìn)電機(jī)極易出現(xiàn)低頻振蕩,產(chǎn)生工作噪音,影響繪筆的穩(wěn)定性及標(biāo)繪精度。因此,改進(jìn)方案采用了先進(jìn)的細(xì)分驅(qū)動器,大大降低了低頻振蕩。
本設(shè)計選用RORZE公司生產(chǎn)的5相混合式步進(jìn)電機(jī)M56853D及相應(yīng)的5相細(xì)分步步進(jìn)電機(jī)驅(qū)動器RD-0534M。
步進(jìn)電機(jī)M56853D各技術(shù)參數(shù):
最大靜轉(zhuǎn)矩Mk=8.0kg·cm;電流I=3.5A/相;轉(zhuǎn)子轉(zhuǎn)動慣量Jr=0.240g·cm·S2;步距角(整步時)θb== 0.72°;容許徑向負(fù)載10.5kg;容許軸向負(fù)載1.5kg;轉(zhuǎn)子齒數(shù)Zr=100。
細(xì)分驅(qū)動器RD-0534M各技術(shù)參數(shù):
改進(jìn)后航跡儀系統(tǒng)電機(jī)步距角變?yōu)樵到y(tǒng)的1/80,步距分辨率及控制脈沖頻率均得到提高。提高后的控制脈沖頻率大大超過了自由振動頻率f0,從而避免了系統(tǒng)的低頻振蕩。
2.5 電磁感應(yīng)式數(shù)字化板
傳統(tǒng)的航跡儀為開環(huán)系統(tǒng),無檢測反饋裝置。改進(jìn)設(shè)計中增添了數(shù)字化板。這一反饋模塊,構(gòu)成了一套完整的閉環(huán)控制系統(tǒng),增強(qiáng)了穩(wěn)定性,降低了誤差。
數(shù)字化板的工作原理:在標(biāo)繪儀的繪圖平板上布上導(dǎo)線形成格柵,把電磁發(fā)射線圈安裝到繪筆上,此時把線圈圓心和繪筆圓心標(biāo)定在同一直線上;繪筆在平板上繪圖,而線圈不斷發(fā)射磁場脈沖,導(dǎo)線切割磁場產(chǎn)生感應(yīng)電流,通過接收電路和信號處理電路得到繪筆在繪圖平臺上的相對位置(繪筆位置)。把電磁感應(yīng)定位得到的位置作為繪筆當(dāng)前真實位置,此位置通過UART口反饋給S3C44B0X控制器。目標(biāo)位置與該位置進(jìn)行比較,得到需要的位置差量,計算后作出響應(yīng)的位置補(bǔ)償調(diào)整。數(shù)字化板工作原理如圖3所示。
3 航跡儀系統(tǒng)的軟件設(shè)計
3.1 S3C44B0X主板部分的軟件設(shè)計
操作系統(tǒng)是控制和管理計算機(jī)軟硬件資源、合理組織計算機(jī)工作流程、方便用戶的程序集合。航跡儀功能的完成,很大程度上取決于操作系統(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( )進(jìn)行;命令解釋部分到底層部分的調(diào)用通過函數(shù)zxcb( )進(jìn)行。
3.1.1 主程序
主程序主要對綜導(dǎo)臺命令和觸摸屏命令進(jìn)行管理、調(diào)度。程序執(zhí)行過程中查詢隨機(jī)命令數(shù)和推位命令數(shù)這兩個變量。變量小于等于零時,沒有綜導(dǎo)臺命令,程序查詢觸摸屏有無按下及鍵值,執(zhí)行響應(yīng)操作。當(dāng)兩個變量大于零,說明有了綜導(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,同時指向下一條。只要這兩個變量不為零,就說明有綜導(dǎo)臺命令未處理。通過檢查隨機(jī)命令數(shù)和推位命令數(shù),即可按先后次序順次執(zhí)行所有命令。
本部分中還包括海圖坐標(biāo)轉(zhuǎn)換程序,其主要功能:主板接收裝海圖命令的同時,會讀取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ù)程序。下面介紹幾個主要的程序。
(1)直線差補(bǔ)程序
線段是航跡儀繪制的基本圖形,其他各種曲線都是以線段逼近的。設(shè)線段終點到起點坐標(biāo)長度分量分別為Δx、Δy。令X、Y向步進(jìn)電動機(jī)同時起動,同時停止,分別以均勻速度Vx、Vy運動。這樣 ,即 其中T代表電機(jī)運行時間,Vx、Vy分別為X、Y向電機(jī)速度,fx、fy分別為運轉(zhuǎn)頻率,k為步進(jìn)電機(jī)脈沖當(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)頻率的脈沖信號,以控制步進(jìn)電機(jī),即可實現(xiàn)航跡儀的直線差補(bǔ)功能。
(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報文到達(dá),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)位置補(bǔ)償模塊
如前文所述,在步進(jìn)電機(jī)運行完一次由運行到靜止的過程后,把目標(biāo)位置與從數(shù)字化板發(fā)送的實際位置做差比較得到的位置差量Δd作為一次操作補(bǔ)償。其特點是在一次繪圖過程中有兩次電機(jī)的開始和停止,補(bǔ)償速度慢,但所繪的是近似真實的圖形。程序框圖如圖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兩個步進(jìn)電機(jī)的走步步數(shù)。它們分別以X、Y向驅(qū)動脈沖作為輸入時鐘信號,紀(jì)錄兩向脈沖數(shù),發(fā)出使能信號以控制counter32,其原理如圖7所示。兩個方波發(fā)生模塊counter32分別對X向、Y向步進(jìn)電機(jī)驅(qū)動器輸出方波,其輸出波形的頻率即為步進(jìn)電機(jī)的走步頻率,如圖8所示。接口模塊jiekou接收來自主板發(fā)送的X、Y向分頻值、脈沖數(shù)數(shù)據(jù)信息,以及運行方向、開始終止、抬落筆、報警等控制信息,并將數(shù)據(jù)信息發(fā)送給pulse_generate模塊,將控制信息發(fā)送給驅(qū)動板。所有的軟件模塊封裝在頂層模塊jkb_top中。
新型智能化航跡儀設(shè)計,針對傳統(tǒng)航跡儀系統(tǒng)的諸多問題,給出了有效的改造方案。改造方案降低了成本,增強(qiáng)了功能的針對性,節(jié)省了系統(tǒng)資源。數(shù)字化板的使用,為原開環(huán)系統(tǒng)增加了閉環(huán)反饋,提高了標(biāo)繪精度。使用FPGA器件代替原CDT800接口板,保證系統(tǒng)的時事性與穩(wěn)定性,提高了集成度。CAN總線通訊的采用,增大了信息的承載量,提高了實時性。LCD觸摸顯示屏的使用,增強(qiáng)了人機(jī)交互性。使用帶有細(xì)分功能的電機(jī)驅(qū)動器,及對傳統(tǒng)航跡儀步進(jìn)電機(jī)部分的優(yōu)化改造,降低了工作的振動與噪音,提高了工作穩(wěn)定性。
評論