朱曉明,趙曉麗,李 欣,徐 巖
(哈爾濱工程大學(xué) 工程訓(xùn)練中心,哈爾濱 150001)
頭盔測試轉(zhuǎn)臺是用于防空飛行器中飛行員頭盔火力瞄準系統(tǒng)的測試系統(tǒng),對于頭盔瞄準系統(tǒng)的研究起到很重要的作用。
該系統(tǒng)的機械主體由三部分結(jié)構(gòu)組成:頭盔支撐平臺、相機支撐平臺和底座。頭盔支撐平臺用于固定頭盔,由三個轉(zhuǎn)動自由度和一個移動自由度組成:方位軸、俯仰軸、橫滾軸和Y軸,分別模擬頭部的左右轉(zhuǎn)動、前后擺動、左右擺動以及Y向移動。相機支撐平臺用于固定相機,由兩個移動自由度組成:X軸和Z軸,驅(qū)動相機前后和上下移動,以便在適當(dāng)位置取得頭盔各種信息并反饋給主控系統(tǒng)以便其進行記錄。
根據(jù)系統(tǒng)的應(yīng)用需要,確定轉(zhuǎn)臺測試系統(tǒng)的功能如下:
1) 實現(xiàn)轉(zhuǎn)臺方位軸、俯仰軸、橫滾軸的精確位置控制,轉(zhuǎn)動范圍在160度內(nèi),精度20角秒內(nèi)。三個轉(zhuǎn)動軸可單獨或者同步控制;
2) 實現(xiàn)轉(zhuǎn)臺Y向的精確移動位置控制,定位精度0.1mm;
3) 實現(xiàn)相機平臺Z向的精確位置控制,定位精度1mm;
4) 實現(xiàn)相機平臺與轉(zhuǎn)臺零點間的X向精確位置控制,定位精度0.1mm;
5) 實時顯示各個軸的狀態(tài)信息,便于用戶查看;
6) 各軸運行與操作具有安全防護措施;
7) 出于保密需要,控制功能進行封裝,便于用戶定制特殊系統(tǒng);
8) 可通過其他計算機通過串口通訊,控制轉(zhuǎn)臺運動。
控制系統(tǒng)硬件平臺采用上下位機結(jié)構(gòu)。高可靠性工業(yè)計算機為上位機,主要完成非實時任務(wù),如人機界面交互、系統(tǒng)狀態(tài)監(jiān)控和發(fā)送指令等,下位機采用基于PCI的固高多軸運動控制器,依靠其內(nèi)置高速DSP的計算能力,完成實時控制功能,如移動計算、指令處理等。這種通用結(jié)構(gòu),可以充分利用通用硬件平臺上的通用軟件資源,大大縮短設(shè)計周期,提高效率[1]。下位機的主要控制對象,即轉(zhuǎn)臺的頭盔支撐平臺,如圖1所示。
圖1 轉(zhuǎn)臺的頭盔支撐平臺
軟件平臺采用微軟公司的Windows XP系統(tǒng),軟件開發(fā)環(huán)境采用基于Windows的VC++6.0可視化程序設(shè)計軟件,可以快捷、高效地建立程序結(jié)構(gòu),設(shè)計友好的圖形界面,簡化了用戶界面的設(shè)計過程[2]。同時,可以方便快捷的進行函數(shù)功能的動態(tài)鏈接庫封裝,實現(xiàn)用戶的定制需要。它具有很強的圖形設(shè)計功能,可以用來設(shè)計人機交互的虛擬儀表和三維仿真環(huán)境,提高用戶體驗效果[3]。
為了保證系統(tǒng)運行的穩(wěn)定性,便于用戶進行功能定制,控制軟件的設(shè)計應(yīng)遵循如下原則:
1) 模塊化。先設(shè)計出軟件的總體功能結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)以及公共接口,然后按功能將各部分劃為功能模塊,再分別為各功能模塊設(shè)計程序流程,分別設(shè)計,最后統(tǒng)一組裝調(diào)試。模塊化設(shè)計方法有利于提高軟件的可擴展性,并且可以做到良好的數(shù)據(jù)和代碼封裝,加強了軟件的可靠性,后期維護也相對方便。
2) 安全可靠性。作為控制軟件,保證安全性和可靠性相當(dāng)關(guān)鍵。通過對可能出現(xiàn)的安全問題,盡可能通過軟件設(shè)計,設(shè)計正確的邏輯控制和安全防護,使其避免發(fā)生。
根據(jù)系統(tǒng)的功能需求,將控制系統(tǒng)功能設(shè)計為如圖2所示的軟件模塊結(jié)構(gòu)。下面對模塊的設(shè)計予以論述。
圖2 軟件模塊結(jié)構(gòu)
3.2.1 自動定位模塊設(shè)計
自動定位是用戶在設(shè)置選定軸的精確目標位置和速度后,讓選定軸自動完成運動控制的方式。這種方式也是用戶最主要的操作方式,因此對該模塊的設(shè)計要保證其易操作性、安全可靠性。
在功能設(shè)計時,考慮到用戶可能選擇多個軸運動,為達到最大運行效率,考慮多個選擇軸實現(xiàn)同啟同停。為此在人機界面中給用戶留兩個速度設(shè)置接口。一個是移動軸的速度接口,供三個移動軸使用。令一個是轉(zhuǎn)動軸的速度接口,供三個轉(zhuǎn)動軸使用。這種設(shè)計的原理是當(dāng)用戶選擇三個轉(zhuǎn)動軸時,判斷出轉(zhuǎn)動行程最大的軸,將轉(zhuǎn)動速度設(shè)為該軸速度,從而可以計算出運行時間,然后將該時間作為其他兩個轉(zhuǎn)動軸的運行時間,從而計算出其他兩個軸的轉(zhuǎn)動速度,最終使三個轉(zhuǎn)動軸保持時間同步。同理,移動軸也采用這種策略。
自動定位操作時很容易出現(xiàn)的安全問題是用戶沒有設(shè)定正確的目標位置,導(dǎo)致運動超程發(fā)生碰撞,或者速度設(shè)置過大導(dǎo)致超限。為此在用戶啟動自動模式前,需要判斷每個選擇軸的目標位置和速度。如果超出范圍,則不啟動軸運動,并提示用戶。
為了提高易用性,將轉(zhuǎn)動軸目標位置設(shè)置形式設(shè)計為度分秒獨立設(shè)置方式,并可采用鍵盤或者鼠標點擊加減號的直觀輸入兩種方式,界面如圖3所示。鼠標點擊加減號時,度分秒會自動變化1個單位。為了增加可靠性,當(dāng)達到最大范圍時,自動判斷并停止變化,防止超限。
3.2.2 手動定位模塊設(shè)計
手動定位是用戶想實現(xiàn)對某個軸估計位置的調(diào)整而采用的位置調(diào)整方法,也是用戶經(jīng)常使用的功能。在該種方式下,只能選擇一個軸作為控制軸,并事先設(shè)定該軸的運行速度。用戶鼠標點擊人機界面上目標軸的加減號按鈕,該軸就會相應(yīng)移動。抬起鼠標即可實現(xiàn)停止,直觀易用,界面如圖4所示。
手動定位時容易發(fā)生的安全問題是用戶調(diào)整目標軸的運動位置過大,達到限位開關(guān)位置,觸發(fā)電氣限位。雖然電氣限位可以保證軸停止,但是急停會造成機械部件振動過大,造成損害。因此,系統(tǒng)為每個軸設(shè)定了軟限位,比最大行程小5度(轉(zhuǎn)動軸)或者5毫米(移動軸)。手動定位開始后,控制系統(tǒng)啟動定時器,實時檢測運動軸當(dāng)前位置。一旦達到軟限位,主動平滑停止軸運動,實現(xiàn)安全保護。
圖3 轉(zhuǎn)動軸目標值設(shè)定界面
圖4 手動定位操作界面
3.2.3 狀態(tài)監(jiān)控模塊設(shè)計
狀態(tài)監(jiān)控模塊將系統(tǒng)內(nèi)部各種狀態(tài)導(dǎo)出,是用戶對系統(tǒng)狀態(tài)進行了解的主要途徑。通過狀態(tài)監(jiān)控模塊,用戶才能對系統(tǒng)的狀態(tài)進行判斷,以便進行正確的操作和處理。
系統(tǒng)的狀態(tài)參數(shù)非常繁雜,必須根據(jù)用戶的需要選擇關(guān)鍵參數(shù)作為監(jiān)控對象,才能達到監(jiān)控效果。根據(jù)功能需要,選擇的監(jiān)控參數(shù)包括:限位狀態(tài)、伺服報警(用于系統(tǒng)安全狀態(tài)監(jiān)控),位置和速度(用于正常運行狀態(tài)監(jiān)控)、伺服狀態(tài)(用于伺服系統(tǒng)狀態(tài)監(jiān)控)、頭盔和轉(zhuǎn)臺的距離(用于碰撞干涉監(jiān)控)等參數(shù)。
狀態(tài)監(jiān)控模塊的設(shè)計原理,是利用運動控制器為每個軸提供的一個16位狀態(tài)寄存器。該寄存器實時記錄了每個軸的當(dāng)前狀態(tài)。通過VC++6.0為每個窗口提供的定時事件處理函數(shù)OnTimer(UINT nIDEvent),定時讀取該寄存器的狀態(tài),并將其更新至人機界面,完成監(jiān)控任務(wù)。而頭盔碰撞干涉監(jiān)控則需要建立頭盔的數(shù)學(xué)模型,然后采集當(dāng)前六個運動自由度的位置,將其輸入頭盔的模型,從而計算出導(dǎo)致碰撞干涉的距離信息并定時更新至人機界面,及時提示用戶。
狀態(tài)監(jiān)控模塊的人機界面設(shè)計也是系統(tǒng)設(shè)計的一個重要方面。設(shè)計優(yōu)秀的人機界面,具有親和力和觀感舒適度,符合人體的使用習(xí)慣,具有良好的用戶體驗。根據(jù)上述理念,設(shè)計了多種形式的監(jiān)控界面,包括:1)盤形虛擬儀表,顯示轉(zhuǎn)動軸角度,2)直尺形虛擬儀表,顯示移動軸位置,3)狀態(tài)指示燈,具有兩個顏色狀態(tài)(常態(tài)與觸發(fā)態(tài)),顯示伺服開關(guān)、伺服報警開關(guān)、限位開關(guān),4)實時趨勢曲線顯示,顯示六個軸的實時位置變化,5)數(shù)字顯示面板,實時顯示運動軸的速度。
其中最重要的盤形虛擬儀表采用面向?qū)ο蟮某绦蛟O(shè)計方法,繼承了VC++6.0中的MFC類,即靜態(tài)文本框類CStatic,并對其進行函數(shù)擴充,利用其強大的圖形繪制功能,完成了虛擬儀表的外形設(shè)計,同時設(shè)計了用戶接口UpdateNeedle(double dValue),接受雙精度數(shù)值型的角度值,并實時更新為指針的顯示。為了滿足用戶需要,該虛擬儀表可以精確到小數(shù)點后面4位,如圖5所示。
3.2.4 網(wǎng)絡(luò)通訊模塊設(shè)計
為了實現(xiàn)其他計算機通過串口通訊,發(fā)送指令控制本系統(tǒng)進行軸運動,必須先建立二者通訊。VC++6.0集成環(huán)境中的通訊控件Microsoft Communications Control本身封裝了串口通訊的底層協(xié)議,并給用戶提供了串口通訊的各種設(shè)置方法和數(shù)據(jù)傳送接口。設(shè)計時在控制計算機和被控計算機應(yīng)用程序中各植入了一個該通訊控件,并進行相同設(shè)置m_ctrlComm.SetSettings("9600,n,8,1"),即通訊數(shù)據(jù)的傳輸波特率為9600,無校驗,8個數(shù)據(jù)位,1個停止位。通過統(tǒng)一設(shè)置保證數(shù)據(jù)的同步傳送。
為了實現(xiàn)通訊,必須建立兩臺計算機的通訊協(xié)議,才能保證指令的正確傳送、接收與解析。為此設(shè)計通訊協(xié)議“n ppp vv”。協(xié)議由三個字段組成。第一個字段n為一位正整數(shù)表示控制的目標軸號,范圍為1-6。第二個字段ppp為三位整數(shù)(可負),指定運動目標值。第三個字段vv為兩位正整數(shù),指定運行速度。字段間用一位空格隔開??刂朴嬎銠C的串口控制界面如圖6所示。
圖5 盤形虛擬儀表
圖6 串口控制系統(tǒng)
3.2.5 其他模塊
安全防護模塊主要用于處理安全問題,比如限位觸發(fā)后的處理和提示。開機尋零模塊用于用戶開機后尋找事先標定的工作零點。尋偏移量模塊用于測量物理原點與工作原點的精確偏移,以便標定工作原點。軟件補償模塊則用于補償由于機械制造形成的誤差。坐標置零模塊將當(dāng)前任意位置置零,用于系統(tǒng)的調(diào)試。
本文以防空飛行員的頭盔測試轉(zhuǎn)臺為控制對象,介紹了其基本組成與應(yīng)用,分析了該系統(tǒng)的功能需求,并對該系統(tǒng)的軟硬件平臺進行設(shè)計。在此基礎(chǔ)上,對軟件控制系統(tǒng)的設(shè)計原則進行了討論,建立了模塊化結(jié)構(gòu)。然后著重對自動定位模塊、手動定位模塊,狀態(tài)監(jiān)控模塊和網(wǎng)絡(luò)通訊模塊等重要模塊的設(shè)計進行了論述。
根據(jù)本文軟件設(shè)計方法所建立的轉(zhuǎn)臺軟件控制系統(tǒng),經(jīng)過與電機和驅(qū)動器連線后,經(jīng)過自準直儀的測量結(jié)果證明,轉(zhuǎn)動和移動精度達到了預(yù)期的設(shè)計要求,并且定位穩(wěn)定可靠、操作和運行的安全性高,界面清晰易用,達到了非常滿意的效果,對于該類控制系統(tǒng)具有很高的推廣價值。
[1] 董海瑞, 高連生. 三軸仿真轉(zhuǎn)臺上位機控制軟件的研究[J]. 工業(yè)控制計算機, 2007, 20(12): 52-54.
[2] 楊睿. 基于VC++的通用伺服仿真轉(zhuǎn)臺測試軟件[J]. 伺服控制, 2008(8): 48-50.
[3] 袁立鵬, 盧紅影, 崔淑梅. 三維加速度模擬轉(zhuǎn)臺系統(tǒng)及控制策略研究[J]. 2010, 38(7): 1-4.