回路硬件仿真技術在直升機控制系統中的應用
時間:2022-11-16 06:30:00
導語:回路硬件仿真技術在直升機控制系統中的應用一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
軟、硬件的并行開發方法可以加快設計進程,但在系統整合時常常出現很多問題,而硬件回路仿真能有效解決這些問題,采用該技術可以在開發周期初完成嵌入式軟件仿真。本文以HIL技術在實驗性動態直升機系統用嵌入式控制軟件中的應用為例闡述該技術的應用特點和方法。align=RIGHTVSPACE=12HSPACE=12ALT="圖1:直升機前視圖和側視圖。">
設計工程師一直在努力縮短新產品開發周期,而軟硬件并行開發就是一種比較好的方法。通常這種方法需要多個獨立的軟硬件開發小組參與,這些小組的工作相互間獨立、并行地進行。當原型硬件和嵌入式代碼的主要部分實現后,就可以在系統整合階段將硬件與軟件合并起來并開始測試工作。
在系統整合時經常會發生嚴重的問題,有些問題甚至會導致軟件或硬件的重新設計。在問題成堆發生、成本持續升高或計劃拖延太久的情況下,有可能中斷設計項目,有時甚至不得不取消項目。因此,人們需要找到更好的方法來解決這些問題。
回路硬件(hardware-in-the-loop,HIL)仿真被證明是一種有效的解決方法。該技術能確保在開發周期早期就完成嵌入式軟件的測試。到系統整合階段開始時,嵌入式軟件測試就要比傳統方法做得更徹底更全面。這樣可以及早地發現問題,因此降低了解決問題的成本。
本文所要討論的就是采用了HIL仿真的一個嵌入式軟件開發項目。該項目的目標是開發和測試實驗性動態“直升機”系統用的嵌入式控制軟件。有了HIL仿真后,人們無需使用除嵌入式處理器及其I/O接口外的任何硬件就能完成該控制器軟件的設計和測試。
隨后的實際系統硬件與運行新軟件的嵌入式控制器的連接首次便獲得成功。在硬件、軟件整合階段唯一要做的額外工作是對一些控制器參數的少量調整,這是由于實際系統硬件與其仿真模型之間畢竟存在差異。
直升機系統
本項目需要開發適合Quanser3自由度(3DOF)直升機的控制器軟件。這是一個桌面電磁系統,內含由兩個獨立電子馬達控制的3個旋轉軸,每個軸驅動一個推進器。圖1是直升機系統及其運動軸的框圖。align=RIGHTVSPACE=12HSPACE=12ALT="圖2:直升機控制系統。">
假設傾斜軸的傾角接近零度,在對兩個馬達施加相同的高電壓后直升機會垂直向上攀升。對兩個馬達施加不同的電壓會使直升機繞傾斜軸旋轉。為了使直升機向前移動,首先需要將直升機傾斜到一個非零角度,然后對兩個馬達同時施加適當的電壓來產生向前的推力。
如圖2所示,系統采用的控制計算機具有3個位置編碼器輸入信號、兩個馬達電壓輸出信號,以及用于模式選擇與操縱桿控制的用戶輸入信號。控制計算機通過專門設計的接口卡接收位置編碼器輸入信號,同時產生模擬輸出電壓,并通過數模轉換器(DAC)驅動那兩個馬達。為了提供足夠大的馬達工作電流,DAC的輸出需要連接到隨后的功率放大器進行放大。
位置編碼器會隨時監測每個軸的運動,這些編碼器通過光學原理感知旋轉運動并產生數字化的角度位置數值。位置編碼器將以每360°4096個步距,或0.08789°的量化步距分辨率對這些數值進行量化。每個編碼器的輸出信號由兩個TTL電平組成,即PhaseA和PhaseB,當對應軸反轉時輸出信號就在這兩個高低電平之間來回切換。根據這兩個信號之間的相位差可以判斷每個軸的運動方向,如圖3所示。脈沖頻率正比于每個軸的旋轉速率。
直升機控制器的性能指標滿足要在一定時間內將前進和上升軸移動到任意一個指定位置,時間一般應控制在10秒以內。此外,直升機控制器的軟件必須支持其它一些操作模式。全套控制器操作模式包括:
關閉模式:align=RIGHTVSPACE=12HSPACE=12ALT="圖3:位置編碼器輸出信號。">
控制器軟件以關閉模式啟動,此時兩個馬達上的電壓為零。一旦系統離開這個模式,就只能從空(Null)模式再次進入該模式。當從空模式進入關閉模式時,需要控制上升軸緩慢地下降到桌面正上方,然后將馬達電壓設置為零。
空模式:
當從關閉模式轉變到該模式時,首選要給馬達上電,并控制所有軸到零位置。如果從其它模式轉變到空模式,那么只需要將所有軸控制到零位置。零位置是指傾斜軸和前進軸在系統啟動位置,而推進組件被抬舉到上升方向的水平位置,如圖1所示。
隨機模式:
在10秒時間間隔內為前進和上升軸位移命令產生預定義范圍內的一個新隨機值,然后由控制器軟件將直升機移動到相應的位置。
自動駕駛模式:
在這種模式下,由操縱桿產生控制器所需的上升和水平行進命令。通過操縱桿的前后動作控制上升位置,通過左右動作來控制水平位置。控制器通過移動直升機來跟隨命令所指定位置。
手動模式:
在手動模式下,操縱桿直接產生馬達驅動用的電壓和與電壓差。操縱桿前后動作控制兩個馬達電壓的和,左右運動控制兩個馬達電壓的差。在這種模式下系統特別難以控制,如果任何軸的運動超過了某個位置限制,控制器就會自動切換到空模式。通常,在進入該模式后的幾秒鐘內可能產生違反限制的問題。
在確定系統功能和性能要求后,可以進行控制器軟件的開發和測試。而仿真技術的應用可以加快直升機控制器軟件的開發和測試速度。
項目規范
為了對嵌入式軟件進行HIL仿真測試,需要使用嵌入式處理器及其附屬I/O器件。對于許多嵌入式系統來說,這只是整個系統的一小部分,可以在早期開發階段實現組合。可以創建一個直升機硬件及其與外部環境交互的仿真,并通過控制器的I/O接口把這個仿真與嵌入式控制器連接起來。嵌入式控制器和直升機仿真就如同實際系統一樣工作。
在復雜的嵌入式產品開發早期,經常需要仿真一個完整系統在預期環境中的運行。這種利用動態系統仿真工具,如Simulink開發的仿真系統通常不是實時的,但可以作為HIL仿真的基礎。某些時候需要對這些仿真系統中包含的模型進行簡化和優化,使之適合實時仿真使用。不過在本項目中不需要修改這些模型。
復雜系統仿真需要用到許多高級的數學算法,但可以采用專門的軟件工具來簡化任務:Simulink是MATLAB的一個附件,它可以用來提供以框圖為主的圖形環境下的動態系統仿真。用Simulink進行仿真的方法是先把“調色板”上的模塊拖到繪畫區域,然后用代表信號流向的直線把這些模塊連接起來。圖4就是直升機項目中采用的位置編碼模型的Simulink框圖,該模型把以弧度表示的角度位置作為其輸入信號,并產生PhaseA和PhaseB信號作為其輸出。另外,它還輸出指示信號,用來指示相應軸到達零位置的時刻。直升機位置編碼器不會產生指示信號輸出,因此不使用該Simulink模型的輸出。
Stateflow是Simulink的一個附件,用以實現有限狀態機模型。在這個直升機項目中,Stateflow模型用來實現直升機模式選擇邏輯。
Real-TimeWorkshop根據Simulink框圖產生C代碼,其它工具需要使用這些代碼來達成編譯與執行目標。在本項目中,其它工具包括Real-TimeWindowsTarget和xPCTarget。
Real-TimeWindowsTarget允許仿真的編譯與執行作為PC機Windows系統中的一個實時進程,能與Windows操作系統同時運行。在本項目中,Real-TimeWindowsTarget執行的是HIL系統仿真,所用主機正是開發和控制直升機軟件的計算機。align=RIGHTVSPACE=12HSPACE=12ALT="圖5:直升機和控制器模型。">
xPCTarget允許在PC機上執行仿真,此時PC機的功能如同專門的實時控制器。xPCTarget還提供實時的多任務內核供只有有限硬件資源的嵌入式處理器使用。xPCTarget在本項目中用來在一臺獨立PC上產生和執行直升機控制器用的實時代碼,此時該PC機就用作“嵌入式”控制器。
仿真開發
控制器軟件開發的第一步是實現對整個直升機控制器系統的仿真,圖5給出了仿真的頂層框圖。其中兩個較大的方框分別表示直升機系統本身和數字控制器,兩個較小的帶有“操縱桿”和“模式命令”標簽的方框向控制器提供用戶輸入信號。圖5中的“直升機”框圖包含有直升機動態行為的Simulink模型,如圖6所示。從圖6可以看到,該模型采用了轉移函數、求和函數和積分器等多個Simulink模塊。帶“有限運動”標簽的模塊包含有一個受限于向下靠近桌面方向的上升軸運動模型。當被仿真的直升機碰到桌面時,所有3個運動軸的速度都被置為零,因此非常接近實際直升機的行為。從靠近右邊的3個量化器可以看出位置編碼器的量化效果。
“有限運動”模塊代表一個子系統。子系統模塊允許在仿真開發期間通過分層圖集(hierarchicalsetsofdiagrams)來控制復雜性。子系統間可以進行任意多層的嵌套,類似于函數的嵌套調用。
圖5“控制器”子系統的詳細內容見圖7。對3個軸角度測量值的量化結果成為控制器的3個基本輸入信號,控制器輸出的是兩個馬達的驅動電壓。圖7中的主要模塊有:驅動直升機到指定位置的“自動駕駛”模塊,在不同操作模式下產生前進和上升位移命令的“命令發生器”模塊,實現用于選擇不同直升機操作模式的有限狀態機的“模式控制”模塊。
“模式控制”模塊內所含的狀態流程框圖如圖8所示。該框圖包含了系統啟動時對操縱桿進行校正的邏輯、用戶控制下的模式改變、當違反位置限值時自動切換到空模式,以及系統關閉的控制。
圖5所示的“控制器”模塊內部提供了嵌入式軟件的完整實現方法。常見的方法是將嵌入式軟件開發當作一個獨立過程,該過程將仿真作為可執行的軟件要求描述來使用。然而,更有效的方法是將仿真中的控制器實現作為“源代碼”,供嵌入式軟件使用。
在本項目中,可以把圖5的“控制器”模塊挎貝到新的Simulink項目中,并向框圖中添加相應的I/O器件模塊。然后,再調用Real-TimeWorkshop創建C代碼,經過編譯后下載到"嵌入式”PC控制器。到此就完成了嵌入式軟件的開發工作。
回路硬件
有了直升機和控制器的非實時性Simulink仿真基礎后可以著手HIL仿真開發了。首先需要創建一個新的Simulink項目,再把圖5中帶“直升機”標簽的模塊挎貝進來。這種仿真建立了直升機動態模型,并包括了相應的I/O器件接口。Real-TimeWindowsTarget支持多種I/O器件。HIL仿真所需的I/O要求包括兩個ADC輸入(用于接收控制器發出的馬達命令電壓)和6個TTL數字輸出(為3個仿真位置編碼器分別提供PhaseA和PhaseB信號)。
本項目中將運行Windows的臺式PC作為主機系統,因此需要使用滿足上述條件并且具有PCMCIA接口形式的I/O器件。NationalInstruments公司的DAQCard-1200能夠滿足這些要求,并提供一根帶狀電纜用于連接計算機內的接口卡和獨立的連接器模塊。
直升機仿真以固定的幀速率運行,其仿真PhaseA和PhaseB信號的TTL輸出則一個仿真幀更新一次。由于位置編碼器信號的脈沖速率正比于運動軸的角速度,因此仿真幀速率可以限制能準確再現的最大角速度。
如果采用這種方法對位置編碼器信號進行建模,那么當PhaseA和PhaseB信號隔幀交替時就能產生最高的仿真角速度。這時根據等式1就能得出仿真更新間隔h(秒)條件下最大的角速度值wmax(度/秒):
等式1
從直升機行為的數字仿真結果可以明顯看出,傾斜軸具有最大的峰值角速度,但很少出現超過100°/秒的情況。理想情況下h應不小于一定值,這樣HIL仿真就不會占用計算機太大的計算資源。綜合考慮這些要求,h的最佳值應是500us,此時更新速度是每秒2000幀,最大的仿真角速度是175.8°/秒,該速度已經遠遠超過最大的角速度期望值。
每秒2000幀的直升機仿真更新速度已經大大超出對直升機進行動態精確建模的速度要求,因此沒有必要再用高階積分算法來獲取更精確的結果。相對簡單的二階積分算法可以獲得較好的精度,此次仿真選用的就是Simulink“ode-2”梯形積分算法。與采用更加復雜的高階積分算法相比,這種算法能使仿真具有更高的效率。
為了在目標PC上下載并運行嵌入式軟件,需要用串行電纜連接主機與目標計算機,并從軟盤啟動目標系統內核。根據控制器的Simulink框圖,接下來就可以下載運行嵌入式控制器用的軟件。在將目標系統的I/O器件與DAQCard-1200的相應端子連接起來后,可以在主機的Real-TimeWindowsTarget中運行直升機的Simulink仿真。最后根據Simulink框圖將命令發送給嵌入式控制器,從而啟動控制器工作,完成仿真直升機的“飛行”。
在HIL仿真工作模式下可以詳細檢查嵌入式軟件的各個方面,從而可以發現并解決設計與實現中的很多問題。所有這些檢測工作期間無需變動任何實際的硬件。在這輪HIL仿真測試結束后,我們就可以得到經過全面測試的嵌入式應用軟件,接下來與實際硬件的快速整合成功的可能性就非常大。
系統整合
在嵌入式軟件完成HIL測試前我們有意避免嵌入式軟件與實際直升機硬件一起運行,主要原因是為了體現HIL仿真的意義,以及減少硬件損壞的風險。在完成HIL測試后,可以把電纜從DAQCard-1200上拔下來并連接到直升機硬件上,接著給系統上電并把直升機控制到“空模式”位置,然后使之進入隨機模式,此時直升機會每隔10秒飛到隨機產生的前進和上升位置。雖然在響應命令時的擺動和過沖要比HIL仿真時大一些,不過就這第一次試驗來說還是相當成功的。
為了能在所有操作模式下都能取得令人滿意的系統性能,有必要對控制器增益進行一些調整。HIL仿真并不能完全匹配實際系統的行為,這是因為直升機仿真實際上在某些方面作了簡化處理,在仿真中使用的系統集合屬性并不完全符合實際系統屬性。
進行仿真開發時通常都會作出一定程度的簡化處理,事實上人們不可能對影響實際系統行為的所有因素實現完美的建模。最簡單的方法是盡量減少仿真與實際系統間的差異,并適當調整嵌入式軟件所需的參數。
HIL仿真為本項目的開發過程提供了極大的便利,整個嵌入式應用在首次與系統硬件結合運行前就得到了真實環境下的全面測試,因此有效地避免了硬件損壞的風險,而且更容易識別和解決與嵌入式軟件有關的問題。整合過程也顯得相當簡捷,只是對少許參數作了重新調整。如果將未經測試的大型嵌入式軟件直接與硬件連接運行,那么相對來說這樣的任務就要艱巨得多,通常還會出現一些與整合本身有關的問題。
本項目充分體現了HIL仿真在開發復雜嵌入式系統軟件中的價值。HIL仿真技術能夠在開發早期階段對嵌入式軟件作出全面測試,因此降低了將未經測試軟件運行于昂貴的原型硬件上所具有的風險。與傳統開發方法相比,正確利用HIL仿真技術能夠在更短的時間內開發出更高質量的產品。
參考文獻
1.Apkarian,Jacob."SystematicControllerDesignandRapidPrototyping,"
/company/digest/dec98/systematic.shtml
精品范文
1回路電阻