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