基于DSP的無人飛行器飛行控制系統(tǒng)設(shè)計(jì)
4.系統(tǒng)軟件設(shè)計(jì)
軟件系統(tǒng)采用T I公司DSP集成開發(fā)工具CCS中集成的嵌入式實(shí)時(shí)操作系統(tǒng)DSP /B IOS, 采用C語言與匯編語言混合編程實(shí)現(xiàn)。
系統(tǒng)初始化模塊設(shè)定SJA1000 的工作模式, 且其初始化只能在復(fù)位模式下進(jìn)行。初始化流程圖如圖4所示。
圖4 初始化流程框圖。
系統(tǒng)控制流程圖如圖5所示。數(shù)據(jù)存儲放置在任務(wù)線程中, 其過程是將飛行數(shù)據(jù)分析結(jié)果等值存儲在F lash 中。檢測任務(wù)線程可以通過周期函數(shù)PRD來完成。PRD 可以根據(jù)實(shí)時(shí)時(shí)鐘來確定函數(shù)運(yùn)行的時(shí)間。這里, 設(shè)置檢測任務(wù)100m s運(yùn)行1次。
圖5 系統(tǒng)控制流程圖。
所有任務(wù)的啟動都和飛控系統(tǒng)總線上的小周期計(jì)數(shù)息息相關(guān), 其中與接收總線數(shù)據(jù)相關(guān)的任務(wù)都是由消息分發(fā)線程啟動, 當(dāng)接收的消息為PSP發(fā)送的同步數(shù)據(jù)碼時(shí), 終端對象同步自己的小周期計(jì)數(shù), 并按現(xiàn)在所處的小周期啟動相應(yīng)的任務(wù)。所有的任務(wù)都包含在消息處理線程中, 每個(gè)終端都有一個(gè)這樣的線程, 各個(gè)線程獨(dú)立工作, 使各個(gè)終端處于并行工作方式。系統(tǒng)全部邏輯控制功能, 均采用周期運(yùn)行方式, 每隔10ms由定時(shí)中斷程序喚醒。利用CPLD 進(jìn)行邏輯運(yùn)算及數(shù)據(jù)處理, 并檢測模擬量輸入信號, 判斷各監(jiān)控對象的工作狀態(tài)并按照系統(tǒng)控制邏輯決定輸出量。在其狀態(tài)發(fā)生變化時(shí)通知DSP, 協(xié)助DSP完成系統(tǒng)的自檢測功能。在狀態(tài)監(jiān)測中, 將當(dāng)前檢測到的狀態(tài)量與存儲的上一個(gè)狀態(tài)量相比較, 如果兩次狀態(tài)相同, 則不進(jìn)行任何操作; 如果發(fā)生變化,則向DSP發(fā)出中斷信號INT, 通知DSP讀取數(shù)據(jù)。
在接收DSP發(fā)送的控制指令時(shí), 將該指令與當(dāng)前狀態(tài)相比較, 若符合就不再發(fā)送控制指令, 這樣就能防止多次發(fā)送控制指令引起的誤動作。
在飛行過程中, 控制系統(tǒng)的任務(wù)主要包括采集無人機(jī)的姿態(tài)數(shù)據(jù), 計(jì)算控制量并輸出到舵機(jī)等執(zhí)行機(jī)構(gòu), 接受地面站的指令并傳輸無人飛行器的位置等信息。利用設(shè)計(jì)的控制板進(jìn)行伺服控制算法的實(shí)現(xiàn), 完成對執(zhí)行機(jī)構(gòu)舵機(jī)的控制。圖6為控制系統(tǒng)輸出的其中一路舵機(jī)的PWM 控制信號波形。
圖6 舵機(jī)控制信號。
5 結(jié)束語
采用多外設(shè)的高性能DSP 芯片TMS320F2812結(jié)合CPLD, 并采用DSP /B IOS 為實(shí)時(shí)操作系統(tǒng), 進(jìn)行實(shí)時(shí)多任務(wù)設(shè)計(jì), 有效提高了系統(tǒng)的可靠性和實(shí)時(shí)性。經(jīng)過調(diào)試, 該系統(tǒng)在實(shí)際運(yùn)行中性能穩(wěn)定, 達(dá)到了設(shè)計(jì)要求。本系統(tǒng)體積小、重量輕、成本低, 具備一定的擴(kuò)展性, 適合于構(gòu)成較強(qiáng)的實(shí)時(shí)性、小型化和低成本的小型無人飛行器。
評論