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