朱曉明,趙曉麗,李 欣,徐 巖
(哈爾濱工程大學 工程訓練中心,哈爾濱 150001)
頭盔測試轉臺是用于防空飛行器中飛行員頭盔火力瞄準系統的測試系統,對于頭盔瞄準系統的研究起到很重要的作用。
該系統的機械主體由三部分結構組成:頭盔支撐平臺、相機支撐平臺和底座。頭盔支撐平臺用于固定頭盔,由三個轉動自由度和一個移動自由度組成:方位軸、俯仰軸、橫滾軸和Y軸,分別模擬頭部的左右轉動、前后擺動、左右擺動以及Y向移動。相機支撐平臺用于固定相機,由兩個移動自由度組成:X軸和Z軸,驅動相機前后和上下移動,以便在適當位置取得頭盔各種信息并反饋給主控系統以便其進行記錄。
根據系統的應用需要,確定轉臺測試系統的功能如下:
1) 實現轉臺方位軸、俯仰軸、橫滾軸的精確位置控制,轉動范圍在160度內,精度20角秒內。三個轉動軸可單獨或者同步控制;
2) 實現轉臺Y向的精確移動位置控制,定位精度0.1mm;
3) 實現相機平臺Z向的精確位置控制,定位精度1mm;
4) 實現相機平臺與轉臺零點間的X向精確位置控制,定位精度0.1mm;
5) 實時顯示各個軸的狀態信息,便于用戶查看;
6) 各軸運行與操作具有安全防護措施;
7) 出于保密需要,控制功能進行封裝,便于用戶定制特殊系統;
8) 可通過其他計算機通過串口通訊,控制轉臺運動。
控制系統硬件平臺采用上下位機結構。高可靠性工業計算機為上位機,主要完成非實時任務,如人機界面交互、系統狀態監控和發送指令等,下位機采用基于PCI的固高多軸運動控制器,依靠其內置高速DSP的計算能力,完成實時控制功能,如移動計算、指令處理等。這種通用結構,可以充分利用通用硬件平臺上的通用軟件資源,大大縮短設計周期,提高效率[1]。下位機的主要控制對象,即轉臺的頭盔支撐平臺,如圖1所示。

圖1 轉臺的頭盔支撐平臺
軟件平臺采用微軟公司的Windows XP系統,軟件開發環境采用基于Windows的VC++6.0可視化程序設計軟件,可以快捷、高效地建立程序結構,設計友好的圖形界面,簡化了用戶界面的設計過程[2]。同時,可以方便快捷的進行函數功能的動態鏈接庫封裝,實現用戶的定制需要。它具有很強的圖形設計功能,可以用來設計人機交互的虛擬儀表和三維仿真環境,提高用戶體驗效果[3]。
為了保證系統運行的穩定性,便于用戶進行功能定制,控制軟件的設計應遵循如下原則:
1) 模塊化。先設計出軟件的總體功能結構、數據結構以及公共接口,然后按功能將各部分劃為功能模塊,再分別為各功能模塊設計程序流程,分別設計,最后統一組裝調試。模塊化設計方法有利于提高軟件的可擴展性,并且可以做到良好的數據和代碼封裝,加強了軟件的可靠性,后期維護也相對方便。
2) 安全可靠性。作為控制軟件,保證安全性和可靠性相當關鍵。通過對可能出現的安全問題,盡可能通過軟件設計,設計正確的邏輯控制和安全防護,使其避免發生。
根據系統的功能需求,將控制系統功能設計為如圖2所示的軟件模塊結構。下面對模塊的設計予以論述。

圖2 軟件模塊結構
3.2.1 自動定位模塊設計
自動定位是用戶在設置選定軸的精確目標位置和速度后,讓選定軸自動完成運動控制的方式。這種方式也是用戶最主要的操作方式,因此對該模塊的設計要保證其易操作性、安全可靠性。
在功能設計時,考慮到用戶可能選擇多個軸運動,為達到最大運行效率,考慮多個選擇軸實現同啟同停。為此在人機界面中給用戶留兩個速度設置接口。一個是移動軸的速度接口,供三個移動軸使用。令一個是轉動軸的速度接口,供三個轉動軸使用。這種設計的原理是當用戶選擇三個轉動軸時,判斷出轉動行程最大的軸,將轉動速度設為該軸速度,從而可以計算出運行時間,然后將該時間作為其他兩個轉動軸的運行時間,從而計算出其他兩個軸的轉動速度,最終使三個轉動軸保持時間同步。同理,移動軸也采用這種策略。
自動定位操作時很容易出現的安全問題是用戶沒有設定正確的目標位置,導致運動超程發生碰撞,或者速度設置過大導致超限。為此在用戶啟動自動模式前,需要判斷每個選擇軸的目標位置和速度。如果超出范圍,則不啟動軸運動,并提示用戶。
為了提高易用性,將轉動軸目標位置設置形式設計為度分秒獨立設置方式,并可采用鍵盤或者鼠標點擊加減號的直觀輸入兩種方式,界面如圖3所示。鼠標點擊加減號時,度分秒會自動變化1個單位。為了增加可靠性,當達到最大范圍時,自動判斷并停止變化,防止超限。
3.2.2 手動定位模塊設計
手動定位是用戶想實現對某個軸估計位置的調整而采用的位置調整方法,也是用戶經常使用的功能。在該種方式下,只能選擇一個軸作為控制軸,并事先設定該軸的運行速度。用戶鼠標點擊人機界面上目標軸的加減號按鈕,該軸就會相應移動。抬起鼠標即可實現停止,直觀易用,界面如圖4所示。
手動定位時容易發生的安全問題是用戶調整目標軸的運動位置過大,達到限位開關位置,觸發電氣限位。雖然電氣限位可以保證軸停止,但是急停會造成機械部件振動過大,造成損害。因此,系統為每個軸設定了軟限位,比最大行程小5度(轉動軸)或者5毫米(移動軸)。手動定位開始后,控制系統啟動定時器,實時檢測運動軸當前位置。一旦達到軟限位,主動平滑停止軸運動,實現安全保護。

圖3 轉動軸目標值設定界面

圖4 手動定位操作界面
3.2.3 狀態監控模塊設計
狀態監控模塊將系統內部各種狀態導出,是用戶對系統狀態進行了解的主要途徑。通過狀態監控模塊,用戶才能對系統的狀態進行判斷,以便進行正確的操作和處理。
系統的狀態參數非常繁雜,必須根據用戶的需要選擇關鍵參數作為監控對象,才能達到監控效果。根據功能需要,選擇的監控參數包括:限位狀態、伺服報警(用于系統安全狀態監控),位置和速度(用于正常運行狀態監控)、伺服狀態(用于伺服系統狀態監控)、頭盔和轉臺的距離(用于碰撞干涉監控)等參數。
狀態監控模塊的設計原理,是利用運動控制器為每個軸提供的一個16位狀態寄存器。該寄存器實時記錄了每個軸的當前狀態。通過VC++6.0為每個窗口提供的定時事件處理函數OnTimer(UINT nIDEvent),定時讀取該寄存器的狀態,并將其更新至人機界面,完成監控任務。而頭盔碰撞干涉監控則需要建立頭盔的數學模型,然后采集當前六個運動自由度的位置,將其輸入頭盔的模型,從而計算出導致碰撞干涉的距離信息并定時更新至人機界面,及時提示用戶。
狀態監控模塊的人機界面設計也是系統設計的一個重要方面。設計優秀的人機界面,具有親和力和觀感舒適度,符合人體的使用習慣,具有良好的用戶體驗。根據上述理念,設計了多種形式的監控界面,包括:1)盤形虛擬儀表,顯示轉動軸角度,2)直尺形虛擬儀表,顯示移動軸位置,3)狀態指示燈,具有兩個顏色狀態(常態與觸發態),顯示伺服開關、伺服報警開關、限位開關,4)實時趨勢曲線顯示,顯示六個軸的實時位置變化,5)數字顯示面板,實時顯示運動軸的速度。
其中最重要的盤形虛擬儀表采用面向對象的程序設計方法,繼承了VC++6.0中的MFC類,即靜態文本框類CStatic,并對其進行函數擴充,利用其強大的圖形繪制功能,完成了虛擬儀表的外形設計,同時設計了用戶接口UpdateNeedle(double dValue),接受雙精度數值型的角度值,并實時更新為指針的顯示。為了滿足用戶需要,該虛擬儀表可以精確到小數點后面4位,如圖5所示。
3.2.4 網絡通訊模塊設計
為了實現其他計算機通過串口通訊,發送指令控制本系統進行軸運動,必須先建立二者通訊。VC++6.0集成環境中的通訊控件Microsoft Communications Control本身封裝了串口通訊的底層協議,并給用戶提供了串口通訊的各種設置方法和數據傳送接口。設計時在控制計算機和被控計算機應用程序中各植入了一個該通訊控件,并進行相同設置m_ctrlComm.SetSettings("9600,n,8,1"),即通訊數據的傳輸波特率為9600,無校驗,8個數據位,1個停止位。通過統一設置保證數據的同步傳送。
為了實現通訊,必須建立兩臺計算機的通訊協議,才能保證指令的正確傳送、接收與解析。為此設計通訊協議“n ppp vv”。協議由三個字段組成。第一個字段n為一位正整數表示控制的目標軸號,范圍為1-6。第二個字段ppp為三位整數(可負),指定運動目標值。第三個字段vv為兩位正整數,指定運行速度。字段間用一位空格隔開??刂朴嬎銠C的串口控制界面如圖6所示。

圖5 盤形虛擬儀表

圖6 串口控制系統
3.2.5 其他模塊
安全防護模塊主要用于處理安全問題,比如限位觸發后的處理和提示。開機尋零模塊用于用戶開機后尋找事先標定的工作零點。尋偏移量模塊用于測量物理原點與工作原點的精確偏移,以便標定工作原點。軟件補償模塊則用于補償由于機械制造形成的誤差。坐標置零模塊將當前任意位置置零,用于系統的調試。
本文以防空飛行員的頭盔測試轉臺為控制對象,介紹了其基本組成與應用,分析了該系統的功能需求,并對該系統的軟硬件平臺進行設計。在此基礎上,對軟件控制系統的設計原則進行了討論,建立了模塊化結構。然后著重對自動定位模塊、手動定位模塊,狀態監控模塊和網絡通訊模塊等重要模塊的設計進行了論述。
根據本文軟件設計方法所建立的轉臺軟件控制系統,經過與電機和驅動器連線后,經過自準直儀的測量結果證明,轉動和移動精度達到了預期的設計要求,并且定位穩定可靠、操作和運行的安全性高,界面清晰易用,達到了非常滿意的效果,對于該類控制系統具有很高的推廣價值。
[1] 董海瑞, 高連生. 三軸仿真轉臺上位機控制軟件的研究[J]. 工業控制計算機, 2007, 20(12): 52-54.
[2] 楊睿. 基于VC++的通用伺服仿真轉臺測試軟件[J]. 伺服控制, 2008(8): 48-50.
[3] 袁立鵬, 盧紅影, 崔淑梅. 三維加速度模擬轉臺系統及控制策略研究[J]. 2010, 38(7): 1-4.