,
(鎮(zhèn)江船艇學(xué)院,江蘇 鎮(zhèn)江 212003)
船舶隨動舵是航海模擬訓(xùn)練器中用來操縱船舶航向的模擬裝置,其設(shè)計目標(biāo)是仿真實際航海舵,自動、連續(xù)、精確地反映船舶航行的方向信號。在操縱過程中,隨動舵不停地轉(zhuǎn)動,這就要求計算機能夠?qū)崟r地檢測出方向盤的方向和角度,故筆者采用旋轉(zhuǎn)編碼器結(jié)合CPLD技術(shù)實時檢測船舶隨動舵的方向和角度。
測量系統(tǒng)主要由聯(lián)軸器、增量式旋轉(zhuǎn)編碼器[1]、計算機系統(tǒng)組成。
用聯(lián)軸器將被測的船舶隨動舵與旋轉(zhuǎn)編碼器連接,隨動舵往復(fù)旋轉(zhuǎn)時帶動編碼器旋轉(zhuǎn),其旋轉(zhuǎn)時將產(chǎn)生10位二進制數(shù)字信號,也就是編碼器提供的脈沖數(shù)量,通過CPLD技術(shù)和預(yù)先編寫好的程序?qū)⒚}沖的數(shù)量累加計算。
船舶隨動舵在往復(fù)運動過程中,要實時檢測旋轉(zhuǎn)方向和旋轉(zhuǎn)角度。隨動舵旋轉(zhuǎn)的角度由旋轉(zhuǎn)圈數(shù)產(chǎn)生脈沖和單圈內(nèi)旋轉(zhuǎn)產(chǎn)生的脈沖累加而得[2]。
增量式旋轉(zhuǎn)編碼器輸出信號通常有2種形式:單端輸出和雙端輸出。單端輸出指轉(zhuǎn)軸旋轉(zhuǎn)時,有相應(yīng)的一組脈沖輸出,其計數(shù)點(Z相)任意設(shè)定,可實現(xiàn)多圈無限累加和測量。但不能判斷旋轉(zhuǎn)的方向,也就不能測出隨動舵在旋轉(zhuǎn)過程中的方向。雙端輸出的旋轉(zhuǎn)編碼器則輸出兩組相位相差90°的脈沖(A、B相),通過這兩組脈沖不僅可以測量單圈內(nèi)旋轉(zhuǎn)角度,還可以判定旋轉(zhuǎn)方向。隨動舵在進行多圈旋轉(zhuǎn)時,編碼器的Z相可以計數(shù),從而可以準(zhǔn)確判定隨動舵的方向、計算轉(zhuǎn)過的角度。
設(shè)計中選用雙端輸出,先判斷旋轉(zhuǎn)方向,然后判斷轉(zhuǎn)動的角度。旋轉(zhuǎn)方向的判斷是采用2個(A、B相)相位差90°的方波編碼方式,由A、B相2個波形的相位差決定,Z相是當(dāng)旋轉(zhuǎn)編碼器轉(zhuǎn)一圈或者回轉(zhuǎn)時歸零將輸出方波脈沖。
當(dāng)輸出波形A相超前于輸出波形B相時(圖1a)),認(rèn)為順時針旋轉(zhuǎn),反之,輸出波形A相滯后于輸出波形B相時(圖1b)),認(rèn)為逆時針旋轉(zhuǎn)。如果旋轉(zhuǎn)方向發(fā)生變化時,其輸出信號發(fā)生鏡像翻轉(zhuǎn)(圖1c))。這樣通過A、B相的先后順序就很容易地判斷出隨動舵的轉(zhuǎn)動方向。
圖2 芯片設(shè)計原理圖
a) A相超前B相
b) A相滯后B相
c) 旋轉(zhuǎn)方向變化圖1 A、B相關(guān)
分辨率是旋轉(zhuǎn)編碼器的主要參數(shù),分辨率就是每轉(zhuǎn)脈沖數(shù),由編碼器的光柵線數(shù)決定,線數(shù)越多,分辨率越高。本文選用的是每轉(zhuǎn)1 024個脈沖的編碼器,分辨率為1 024/360°。一般情況下,以A相或者B相中的一相進行脈沖計數(shù)即可得到轉(zhuǎn)動的角度。如果要求系統(tǒng)精度更高,可以對A、B兩相分別進行計數(shù),這樣測量的精度可以提高4倍,相當(dāng)于分辨率為4 096/360°。
隨動舵往復(fù)旋轉(zhuǎn)時,編碼器產(chǎn)生的10位二進制數(shù)字信號的計數(shù)由復(fù)雜可編程邏輯器CPLD完成。系統(tǒng)選用Altera公司生產(chǎn)的EPM7032SLC44-10芯片,利用軟件MAX+plusII編程實現(xiàn)對芯片的設(shè)計,邏輯原理見圖2。
和普通的可編程邏輯器件相比,CPLD具有以下優(yōu)點:操作靈活,使用方便;高性能的邏輯能力;存儲元胞密度高;可靠性好,經(jīng)久耐用;能實現(xiàn)電擦除;能為器件提供快速編程。其設(shè)計一般是一種“自上而下”的設(shè)計[3],設(shè)計過程包括下面幾個方面:
1) 行為設(shè)計。確定所設(shè)計的系統(tǒng)或CPLD芯片的功能、性能及允許的芯片面積或成本。
2) 結(jié)構(gòu)設(shè)計。根據(jù)該系統(tǒng)或CPLD的特點,將其分解為接口清晰、相互關(guān)系明細(xì)、盡可能簡單的子系統(tǒng),得到1個總體結(jié)構(gòu)。這個結(jié)構(gòu)可能包括算術(shù)運算單元、控制單元、數(shù)據(jù)通道、各種算術(shù)狀態(tài)機等。
3) 邏輯設(shè)計。盡可能采用規(guī)則的邏輯結(jié)構(gòu)或采用自己經(jīng)過考驗的邏輯單元或模塊。
4) 電路設(shè)計。將邏輯圖轉(zhuǎn)換成電路圖,在很多情況下,這時需要進行硬件仿真以最終確定邏輯設(shè)計的正確性。
最后,將設(shè)計好的電路經(jīng)過編譯,形成熔絲文件,將該文件下載到選定的CPLD就成為可以完成固定功能的ASIC了。在整個開發(fā)程序中,利用軟件MAX+plusII編程可完全實現(xiàn)設(shè)計和仿真。
圖2中,以A相脈沖數(shù)量來計算旋轉(zhuǎn)的角度,B相脈沖輔助判斷旋轉(zhuǎn)方向,Z相脈沖計算旋轉(zhuǎn)圈數(shù)。當(dāng)編碼器順時針旋轉(zhuǎn)時,A相超出B相,A相上升沿到來時B相為低電平,則D觸發(fā)器輸出Q為低電平;當(dāng)編碼器逆時針旋轉(zhuǎn)時,A相滯后B相,A相上升沿到來時B相為高電平,則D觸發(fā)器輸出Q為高電平,這樣根據(jù)D觸發(fā)器輸出Q電平的高低可以判定隨動舵的方向了。當(dāng)隨動舵轉(zhuǎn)過一圈,Z相就會自動累加一個脈沖。這樣隨動舵轉(zhuǎn)過的角度就能真實地在航海模擬器中反映出來,指導(dǎo)實際操縱。圖2中相對應(yīng)的VHDL編程如下:
PROCESS(NA)
BEGIN
IF(NA’ EVENT AND NA=‘1’)THEN
AB <= NB;
END IF
END PROCESS
根據(jù)A、B相變化前后狀態(tài),可以準(zhǔn)確的判定旋轉(zhuǎn)方向。一圈內(nèi)以A相脈沖數(shù)量計數(shù)的VHDL編程如下:
PROCESS(NA,NB)
BEGIN
IF(NA′ EVENT AND NA=′1′)THEN
IF(NB=′1′)THEN
Counter <= Counter+1;
ELSE
Counter <= Counter-1;
END IF
END IF
END PROCESS
Z相表示多圈的計數(shù),VHDL編程如下:
PROCESS(Z,AB)
BEGIN
IF(Z′ EVENT AND Z=′1′)THEN
IF(AB=′1′)THEN
Counter <= Counter+1;
ELSE
Counter <= Counter-1;
END IF
END IF
END PROCESS
這樣就完成了方向的判定及編碼器的計數(shù)。運用CPLD技術(shù)對編碼器進行判定和計數(shù)時,考慮到旋轉(zhuǎn)編碼器的控制電源可以在較大范圍內(nèi)變化使用,為了確保系統(tǒng)的安全可靠,必須進行光電隔離[4]。同時為了防止噪聲引起的信號抖動,應(yīng)采用斯密特觸發(fā)器進行抗抖動和信號處理。
本系統(tǒng)采用VC++進行軟件編程,在隨動舵的位置狀態(tài)檢測時,初始狀態(tài)設(shè)置為0,通過軟件定時掃描,檢測結(jié)果隨時傳送給主程序,流程見圖3。
圖3 檢測流程圖
將隨動舵的實時位置狀態(tài)建立強有力的數(shù)據(jù)庫應(yīng)用程序,采用動態(tài)連接庫(DLL)技術(shù),實現(xiàn)I/O接口函數(shù)的動態(tài)調(diào)用。DLL的代碼在運行時加載,同時被映射到其他進程的地址空間中。這樣就允許幾個不同的進程在內(nèi)存中共享DLL,從而實現(xiàn)代碼的共享和系統(tǒng)的優(yōu)化。這樣實時檢測到的隨動舵的狀態(tài)和航海模擬器的視景系統(tǒng)軟件有機地結(jié)合在一起。
利用編碼器測量隨動舵的方向和角度的方法已經(jīng)應(yīng)用于多套船舶操縱模擬訓(xùn)練系統(tǒng)中,訓(xùn)練結(jié)果表明,該測試方法能精確的反映出實時航向信號,仿真效果好、工作可靠,顯示出廣泛的應(yīng)用前景。
[1] 戴新敏,陸 榮.旋轉(zhuǎn)編碼器的應(yīng)用[J].科技資訊,2006,23:2.
[2] 于曉東,胡大欣.旋轉(zhuǎn)編碼器在回轉(zhuǎn)體角度測量的應(yīng)用[J].林業(yè)機械與木工設(shè)備, 2005, 33(2):67-68.
[3] 何 靜,李清峰.基于CPLD的混合邏輯乘法器的設(shè)計[J].微計算機信息,2006,2(2):244-246.
[4] 賀勝洪,錢學(xué)軍.基于CPLD技術(shù)的多通道編碼器數(shù)據(jù)采集系統(tǒng)[J].自動化與儀器儀表,2003(5):4-7.