姜 旭,周愛軍,馬海瑞
(海軍大連艦艇學(xué)院,遼寧 大連 116011)
電磁計(jì)程儀是一種測量船舶航速和累計(jì)航程的設(shè)備,它所提供的航速信息對航海、武備、雷達(dá)、操縱等系統(tǒng)十分重要,是艦船主要導(dǎo)航儀器之一,也是各種形式的組合導(dǎo)航系統(tǒng)不可缺少的組成部分[1]。在航海相關(guān)課程教學(xué)過程中,由于計(jì)程儀本身模塊多,操作步驟繁瑣,尤其是誤差校正環(huán)節(jié)有一定難度,且在實(shí)驗(yàn)室環(huán)境下缺少水體環(huán)境,傳感器模塊沒有信號輸入。整個(gè)教學(xué)過程多以理論為主,學(xué)生缺乏感性認(rèn)識和實(shí)際操作經(jīng)驗(yàn)。本文利用單片機(jī)功能豐富、專用性強(qiáng)且系統(tǒng)精簡的特點(diǎn),設(shè)計(jì)開發(fā)了電磁計(jì)程儀模擬教具。該教具顯示直觀,易于操作,可實(shí)現(xiàn)各種形式信號的輸出,同時(shí)突出教學(xué)需求,新增教學(xué)模式和操作記錄等有助教學(xué)的功能,利于提高學(xué)習(xí)者對實(shí)際裝備的理解和使用水平[2]。
該模擬器具備實(shí)際計(jì)程儀設(shè)備的各種操作功能和信號輸出,同時(shí)擴(kuò)展面向?qū)W員的教學(xué)功能設(shè)置,在利于學(xué)員學(xué)習(xí)練習(xí)的同時(shí),還可以作為各種模擬系統(tǒng)和綜合實(shí)驗(yàn)的一個(gè)模塊,向其它裝備輸出各種形式的信號。
為使模擬器性能達(dá)到預(yù)期,整個(gè)模擬器的設(shè)計(jì)需滿足以下要求:一是結(jié)構(gòu)簡單,體積小,裝配調(diào)試方便;二是模擬器數(shù)據(jù)解算和發(fā)送精度符合實(shí)際裝備指標(biāo),采用數(shù)值積分和數(shù)字發(fā)送的形式,使航速航程的傳送可以完全與主儀器同步,航程解算精度優(yōu)于0.1%;三是在測速校正時(shí)能自動完成計(jì)時(shí)、速度誤差計(jì)算、修正參數(shù)計(jì)算以及修正量裝定,測速校正操作方便,并大大縮短了作業(yè)時(shí)間;四是接口電路功能齊全,具備并行、串行數(shù)字量輸出,200脈沖/海里輸出和轉(zhuǎn)角形式的模擬量輸出,具備滿足不同用戶的使用要求。
模擬器的設(shè)計(jì)思路如圖1所示,根據(jù)計(jì)程儀工作流程和各種信號輸出要求得到整個(gè)設(shè)計(jì)的性能需求,從而選擇相應(yīng)的單片機(jī)及外圍模塊。程序設(shè)計(jì)方面主要有兩部分組成:一是實(shí)際計(jì)程儀各功能的程序設(shè)計(jì),二是所擴(kuò)展的教學(xué)功能的程序設(shè)計(jì)。在硬件規(guī)劃和程序設(shè)計(jì)完成后,對整個(gè)系統(tǒng)進(jìn)行整合模擬和各種測試,最后得到模擬器的性能結(jié)論。
圖1 系統(tǒng)設(shè)計(jì)思路
電磁計(jì)程儀所獲得的航速航程信息,是導(dǎo)航定位系統(tǒng)、武備指揮系統(tǒng)及許多其它重要裝備操作運(yùn)行的主要輸入?yún)?shù)。本系統(tǒng)利用單片機(jī)本身的I/O以及外圍接口電路器件實(shí)現(xiàn)各種信號的輸出。
本系統(tǒng)的信號輸入方面主要有2項(xiàng),包括鍵盤輸入?yún)?shù)數(shù)據(jù)和模擬電位器模擬信號數(shù)據(jù)。信號輸出類型主要有4項(xiàng),包括顯示模塊所需數(shù)字信號,存儲器串行I2C接口數(shù)據(jù),各裝備及系統(tǒng)所需TTL電平200脈沖/海里數(shù)字信號、串行并行數(shù)字信號、轉(zhuǎn)角模擬信號。信號輸入輸出關(guān)系如圖2所示。
圖2 系統(tǒng)信號輸入輸出關(guān)系
整個(gè)模擬教具系統(tǒng)的設(shè)計(jì)是以STC89C55單片機(jī)為核心,配合二極管、數(shù)碼管、1602液晶、矩陣鍵盤等顯示模塊和輸入輸出模塊組成[3],總體結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)各模塊設(shè)計(jì)框圖
硬件電路設(shè)計(jì)方面,選擇應(yīng)用廣泛、穩(wěn)定性好、性價(jià)比高且具有在線系統(tǒng)編程(ISP)功能的STC89C55單片機(jī)[4],相較于其他型號單片機(jī),它內(nèi)部具有20 kB的程序存儲器(ROM),可以滿足整個(gè)程序的存儲需要。通過其它外圍電路的配合,可以實(shí)現(xiàn)電磁計(jì)程儀顯示和操作功能。選用2個(gè)7段6位數(shù)碼管作為航速航程顯示模塊;1602液晶面向施訓(xùn)人員,用作教學(xué)設(shè)置顯示模塊;矩陣鍵盤作為輸入模塊,支持模擬計(jì)程儀各項(xiàng)操作的同時(shí),還作為教學(xué)設(shè)置鍵盤使用;數(shù)據(jù)存儲方面,使用1塊型號為AT24C32的具有I2C總線接口的電可擦除可編程只讀存儲器(E2PROM)作為儲存單元,實(shí)現(xiàn)各項(xiàng)工作數(shù)據(jù)的存儲和掉電保護(hù)[5]。
在信號輸入輸出環(huán)節(jié),根據(jù)計(jì)程儀信號輸入輸出要求,并考慮單片機(jī)I/O口資源限制,利用MAX7219驅(qū)動芯片對數(shù)碼管進(jìn)行驅(qū)動控制,節(jié)省I/O口資源的同時(shí)也減輕了軟件負(fù)擔(dān)。利用單片機(jī)P0口將數(shù)據(jù)送液晶顯示模塊且將數(shù)據(jù)以并行方式送出。模擬信號輸入采用PCF8591轉(zhuǎn)換芯片進(jìn)行模/數(shù)(A/D)轉(zhuǎn)換,模擬信號輸入模塊設(shè)置的目的是進(jìn)行模擬工況檢查,即調(diào)節(jié)電位器時(shí),計(jì)程儀模擬器的速度顯示應(yīng)穩(wěn)定連續(xù)地增加。
程序方面,利用keil進(jìn)行C語言編程,使數(shù)碼管顯示單元完全復(fù)現(xiàn)實(shí)際設(shè)備的各項(xiàng)顯示功能,包括開機(jī)自檢、航速顯示、航程累積、參數(shù)設(shè)定和誤差校正。1602液晶作為教員操作顯示模塊,實(shí)現(xiàn)教學(xué)模式設(shè)置和初始參數(shù)的裝定。
如圖4所示,單片機(jī)模塊主要包括1塊STC89C55型單片機(jī)和晶振及復(fù)位電路,P0口作為數(shù)據(jù)輸出端口,增加了1個(gè)10 kΩ的上拉電阻,與液晶顯示模塊進(jìn)行數(shù)據(jù)通信,并進(jìn)行數(shù)據(jù)的并行發(fā)送。為節(jié)省單片機(jī)I/O口資源,系統(tǒng)與外部器件多采取串行方式進(jìn)行數(shù)據(jù)傳輸,比如利用MAX7219進(jìn)行數(shù)碼管驅(qū)動,利用PCF8591進(jìn)行模擬量輸入。晶振電路由晶振X1、電容C1、C2組成,晶振頻率設(shè)定為11.059 2 MHz,便于設(shè)置單片機(jī)與PC機(jī)通信時(shí)的波特率。復(fù)位電路由電解電容和電阻組成,通過按鈕RESET實(shí)現(xiàn)復(fù)位功能[6]。
圖4 單片機(jī)系統(tǒng)圖
鍵盤輸入模塊主要包括一個(gè)4×4矩陣鍵盤,計(jì)程儀模擬器的按鍵需求為18個(gè),所以增設(shè)2個(gè)獨(dú)立按鍵。為節(jié)省單片機(jī)I/O口資源,并降低單片機(jī)負(fù)擔(dān),提升工作效率,在設(shè)計(jì)矩陣鍵盤時(shí)使用鍵盤編碼器芯片74C922,該芯片能夠獨(dú)立地進(jìn)行鍵盤檢測和消抖,掃描程序也更為簡捷。74C922的鍵盤接口X1~X4,Y1~Y4分別與4×4鍵盤的列與行相連,輸出DOUTA~DOUTD與單片機(jī)P1.0~P1.3口相連,信號端DA接單片機(jī)P3.5口。設(shè)計(jì)情況如圖5所示。
圖5 鍵盤輸入模塊
該系統(tǒng)的總體流程是按照實(shí)際設(shè)備的操作使用順序執(zhí)行的,基本框圖如圖6所示。系統(tǒng)在執(zhí)行功能程序之前,會進(jìn)行開機(jī)自檢環(huán)節(jié),在開機(jī)自檢中,數(shù)碼管顯示單元會順序顯示相應(yīng)的開機(jī)自檢代碼。自檢結(jié)束后,系統(tǒng)進(jìn)行初始化,將相關(guān)的基本硬件(如寄存器、數(shù)據(jù)單元、計(jì)數(shù)單元)、中斷、定時(shí)循環(huán)、外設(shè)等進(jìn)行初始化。隨后進(jìn)入等待中斷狀態(tài),根據(jù)按鍵中斷鍵值的不同,系統(tǒng)進(jìn)入不同的子程序,如按下啟動鍵,設(shè)備進(jìn)入正常工作程序;按下停止鍵,系統(tǒng)停止航速顯示,進(jìn)入待機(jī)狀態(tài)。相似地,還有參數(shù)裝定、參數(shù)檢查、測速校正、模擬工況檢查等子程序。正常工作狀態(tài)時(shí),該子程序每1 s循環(huán)1次,顯示模塊刷新頻率相應(yīng)為1 Hz。
圖6 程序總體框圖
測速校正環(huán)節(jié)是系統(tǒng)很重要的一個(gè)子程序,在測速校正環(huán)節(jié),程序是由進(jìn)測速場中斷服務(wù)子程序、出測速場中斷服務(wù)子程序和裝定服務(wù)子程序組合而成。每個(gè)子程序通過檢測鍵盤上相應(yīng)的按鍵進(jìn)行調(diào)用。當(dāng)按下“測速入”按鍵后,模擬器執(zhí)行進(jìn)測速場中斷服務(wù)程序,完成啟動定時(shí)和航程清零。當(dāng)駛出測速場時(shí),便執(zhí)行出測速場中斷服務(wù)程序。這段程序要完成航行時(shí)間的讀取、計(jì)算并顯示本航次的真速度和計(jì)程儀的計(jì)算速度及誤差量[7-9]。
在誤差校正的環(huán)節(jié)中,系統(tǒng)采用的是線性回歸處理方法消除誤差的。測速時(shí),單航次計(jì)程儀平均速度Vx可用指示航程ΔSx和航行時(shí)間Δt來求得,艦船真速度Vz可用測速線長L和航行時(shí)間求得:
(1)
(2)
此測速過程中,每種速度下應(yīng)在迭標(biāo)的同一航跡上正、反、正航行3次,然后求取平均值得到艦船該種速度下的平均真速度和計(jì)程儀指示速度。
若系統(tǒng)的非線性誤差較小,就在中速處進(jìn)行一點(diǎn)測速后進(jìn)行簡單的斜率修正即可達(dá)到測速精度指標(biāo)。因此,求出零位和斜率就可以求得速度對應(yīng)直線方程:
Vz=KVx+ΔV0
(3)
式中:Vz為修正后的航速;Vx為測得航速;ΔV0為零位誤差;K值可在中速下測得。
若非線性度比較大,則利用迭標(biāo)進(jìn)行高、中、低3個(gè)速度點(diǎn)的校正,此時(shí)利用線性回歸處理,求得利用折線近似輸出曲線的最佳斜率、零位及各裝定點(diǎn)的修正量,艦船的真速度按下列公式求得:
(4)
式中:VX為速度線性部分值,也是測速時(shí)未修正的基本值,裝定點(diǎn)間速度相差為m節(jié),故Vx=mn+R(4-4),n為VX/m的整數(shù)部分,R為不足m節(jié)的余量;Pn為第n個(gè)裝定點(diǎn)的修正值;K為最佳斜率;B為最佳截距。
令K=1+A,A和B的計(jì)算公式如下:
(5)
(6)
當(dāng)求得A、B值后,即可通過公式(4)對速度進(jìn)行校正。
此系統(tǒng)運(yùn)行中,除教學(xué)模式設(shè)置子系統(tǒng)外,其余系統(tǒng)運(yùn)行及流程和實(shí)際模擬對象完全一致,即對于學(xué)習(xí)者來說,該模擬器的使用過程和在實(shí)際設(shè)備上是一樣的,從而達(dá)到幫助學(xué)習(xí)者學(xué)習(xí)和練習(xí)的目的。
由于本系統(tǒng)所包含顯示模塊較多,首先在protues仿真軟件中進(jìn)行2片數(shù)碼管的顯示測試,隨后在實(shí)驗(yàn)板上進(jìn)行各項(xiàng)子程序測試。圖7所示為主儀器航速航程顯示模塊測試。圖8為教學(xué)設(shè)置模塊測試,顯示內(nèi)容代表含義為選擇教學(xué)模式一,該模式下計(jì)程儀處于正常時(shí)間速率下運(yùn)行(其它模式可以提供時(shí)間快進(jìn)功能,以節(jié)省等待時(shí)間,提升訓(xùn)練效率),并可記錄操作步驟。初始航速設(shè)置為33.336 km/h,考慮實(shí)際干擾設(shè)置的波動量rand(該值決定測速過程真速度與計(jì)程儀速度之間差值)。
圖7 航速航程顯示
圖8 教學(xué)模式設(shè)置
本設(shè)計(jì)以單片機(jī)為主體,根據(jù)所模擬對象的各項(xiàng)功能及操作流程進(jìn)行設(shè)計(jì),實(shí)現(xiàn)所需要的各項(xiàng)顯示和響應(yīng),并完成各種形式信號的輸出,同時(shí)擴(kuò)展了教學(xué)設(shè)置子系統(tǒng),針對不同航速、不同情況設(shè)計(jì)多種教學(xué)模式,更有利于教學(xué)人員施教。通過仿真測試和實(shí)際測試,表明該系統(tǒng)可以滿足實(shí)際需求,達(dá)到幫助學(xué)習(xí)者加深對某型電磁計(jì)程儀理解和使用的目的。