基于VC++的模擬舵機系統(tǒng)設(shè)計
摘要:在無人機半物理仿真實驗中,為了節(jié)約實驗成本,提出用模擬舵機系統(tǒng)代替真實舵機的方法?;?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/VC">VC++設(shè)計了模擬舵機系統(tǒng)。在半物理仿真系統(tǒng)中連入模擬舵機,并用該系統(tǒng)模擬副翼、升降舵、油門的舵機。通過實驗驗證了該模擬舵機系統(tǒng)的有效性。實驗結(jié)果表明,該模擬舵機系統(tǒng)具有實時性好,可模擬多種舵機的特點。
關(guān)鍵詞:模擬舵機;多媒體定時器;PCL-836;PCL-812;PCL-726
0 引言
無人機飛行控制仿真主要包括數(shù)字仿真和半物理仿真。半物理仿真將系統(tǒng)部分實物引入仿真回路,盡可能真實模擬現(xiàn)場情況,比數(shù)字仿真更能有效驗證飛行控制系統(tǒng)的可靠性,尤其在其在初期試飛調(diào)參以及后期控制策略改進階段應(yīng)用廣泛。
做無人機的半物理仿真時,需要使用真實舵機,而舵機價格比較昂貴,且多次實驗時存在損壞的風(fēng)險,無形中增加了實驗成本。本文根據(jù)舵機在飛行控制系統(tǒng)中的作用及特點,基于VC++設(shè)計模擬舵機;該模擬舵機由綜合記錄計算機和若干板卡構(gòu)成,運行于綜合記錄計算機中;代替實現(xiàn)真實舵機的功能,節(jié)約了實驗成本。
1 模擬舵機硬件設(shè)計
模擬舵機系統(tǒng),首先要能模擬舵機在半物理仿真中的功能;其次要不影響半物理仿真接入真實舵機。這個是通過PCLD-785B(繼電器輸出板)來選擇的,當(dāng)DO不輸出任何值時,Ci和NCi是導(dǎo)通的,當(dāng)DO輸出時,Ci和NOi導(dǎo)通(i=0,1,2,…,9)。
系統(tǒng)硬件設(shè)計如圖1所示,為了簡潔,省去PCL-880接線板。
圖1中的PCLD-782B是光電隔離板,為了隔離PCLD-785B帶來的噪聲和提高電壓(飛控盒輸出電壓是3.3 V,提高到TTL電平)。而PCL-836(頻率采集卡)和PCL-726(D/A輸出卡),PCL-812(A/D采集卡)和位于綜合記錄計算機內(nèi),在VC++中的操作方法如圖2所示。
2 舵機函數(shù)關(guān)系的輸入
為了仿真多種舵機的需要,舵機函數(shù)關(guān)系應(yīng)該可調(diào);同時系統(tǒng)要滿足自動獲取接在圖1仿真舵機上舵機的舵機函數(shù)。系統(tǒng)用PCL-836發(fā)出PWM波,PCL-726采集反饋電壓。程序界面如圖3所示。
圖中k,b為V=kT+b中的系數(shù),V代表反饋電壓,T代表脈寬(單位:ms)。
3 模擬舵機軟件設(shè)計
3.1 PWM波采集方法
對PWM的采集是程序的難點,這里使用PCL-836的事件計數(shù)功能來實現(xiàn)對PWM的測量。PCL-836共有6路計數(shù)器,其中CLK5用來產(chǎn)生時鐘信號。在PWM的下降沿時去讀計數(shù)器的值,然后根據(jù)時鐘的頻率算出PWM高電平的時間。檢測PWM下降沿的常見的方法是使用中斷和查詢。在PWM每次下降沿時觸發(fā)中斷,在中斷程序里去讀計數(shù)器的值。但是PCL-836只支持一個外接中斷,并且是上升沿觸發(fā)中斷,而整個仿真需要4個舵機,在目前的硬件條件下并不能直接實現(xiàn),需要一定的輔助電路,如非門等。其次用查詢的方法,用一個線程來讀DI,在下降沿時去讀計數(shù)器的值。但這樣CPU的占用很高,影響系統(tǒng)的整體性能。所以不使用查詢和中斷的方法。為了能夠檢測PWM下降沿,并考慮現(xiàn)實性,決定用1 ms定時器來實現(xiàn)。如果上次讀到高定平,而這次讀到低電平,就認(rèn)為是下降沿。雖然有不定的延遲,但是延遲小于1 ms,同時可以得到正確的值,而且系統(tǒng)占用要遠遠低于查詢方法。
3.2 使用多媒體定時器采集PWM波
微軟提供了精確定時器的底層API,支持能夠提供高精度的定時器服務(wù),利用多媒體定時器可以精確地讀出系統(tǒng)的當(dāng)前時間,并在很精確的時間間隔內(nèi)處理事件,可以到1 ms的精度。多媒體定時器的回調(diào)函數(shù)的程序流程圖如圖4所示。
用多媒體定時器采集PWM的方法帶來的不定延遲,加上Windows系統(tǒng)的實時性差帶來的延遲,使得模擬舵機系統(tǒng)實時性變差。但是飛控盒發(fā)出的PWM波幾乎是同時發(fā)出,即上升沿在時間上是一致的。所以可以用中斷加查詢的方法來檢測,用一路PWM做中斷源,每次中斷的時候去查詢,最終檢測到下降沿。
3.3 中斷加查詢采集PWM波
PCL-836支持一路外部中斷,上升沿觸發(fā)。首先使用DRV_EnableEvent函數(shù)使能中斷,開始中斷線程,在中斷線程里用DRV_CheckEvent函數(shù)檢測中斷。中斷線程流程圖如圖5所示。
使用中斷加查詢的方法采集PWM,實時性比較好,系統(tǒng)占用高于定時器方法,但是低于查詢方法。
4 仿真分析
在半物理仿真系統(tǒng)中連人該模擬舵機,系統(tǒng)模擬副翼、升降舵、油門三個舵機。使用該系統(tǒng)采集飛控盒發(fā)出的PWM,并反饋電壓給模型機。經(jīng)仿真采集到各舵機的PWM曲線如圖6~圖8,可知該系統(tǒng)實現(xiàn)具有實時性好,可模擬多種舵機的特點。
5 結(jié)語
本文基于VC++設(shè)計的模擬舵機系統(tǒng),實現(xiàn)了無人機飛行控制半物理仿真中真實舵機的功能,一定程度上降低了實驗成本。該系統(tǒng)功能全面,設(shè)計靈活,可實現(xiàn)多種類型舵機,是一種行之有效的仿真方法。
評論