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