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