<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于DSP的無人飛行器飛行控制系統(tǒng)設計

          基于DSP的無人飛行器飛行控制系統(tǒng)設計

          作者: 時間:2011-01-24 來源:網(wǎng)絡 收藏

            4.系統(tǒng)軟件設計

            軟件系統(tǒng)采用T I公司集成開發(fā)工具CCS中集成的嵌入式實時操作系統(tǒng) /B IOS, 采用C語言與匯編語言混合編程實現(xiàn)。

            系統(tǒng)初始化模塊設定SJA1000 的工作模式, 且其初始化只能在復位模式下進行。初始化流程圖如圖4所示。

           初始化流程框圖


          圖4 初始化流程框圖。

            系統(tǒng)控制流程圖如圖5所示。數(shù)據(jù)存儲放置在任務線程中, 其過程是將飛行數(shù)據(jù)分析結果等值存儲在F lash 中。檢測任務線程可以通過周期函數(shù)PRD來完成。PRD 可以根據(jù)實時時鐘來確定函數(shù)運行的時間。這里, 設置檢測任務100m s運行1次。

          系統(tǒng)控制流程圖


          圖5 系統(tǒng)控制流程圖。

            所有任務的啟動都和飛控系統(tǒng)總線上的小周期計數(shù)息息相關, 其中與接收總線數(shù)據(jù)相關的任務都是由消息分發(fā)線程啟動, 當接收的消息為PSP發(fā)送的同步數(shù)據(jù)碼時, 終端對象同步自己的小周期計數(shù), 并按現(xiàn)在所處的小周期啟動相應的任務。所有的任務都包含在消息處理線程中, 每個終端都有一個這樣的線程, 各個線程獨立工作, 使各個終端處于并行工作方式。系統(tǒng)全部邏輯控制功能, 均采用周期運行方式, 每隔10ms由定時中斷程序喚醒。利用CPLD 進行邏輯運算及數(shù)據(jù)處理, 并檢測模擬量輸入信號, 判斷各監(jiān)控對象的工作狀態(tài)并按照系統(tǒng)控制邏輯決定輸出量。在其狀態(tài)發(fā)生變化時通知, 協(xié)助DSP完成系統(tǒng)的自檢測功能。在狀態(tài)監(jiān)測中, 將當前檢測到的狀態(tài)量與存儲的上一個狀態(tài)量相比較, 如果兩次狀態(tài)相同, 則不進行任何操作; 如果發(fā)生變化,則向DSP發(fā)出中斷信號INT, 通知DSP讀取數(shù)據(jù)。

            在接收DSP發(fā)送的控制指令時, 將該指令與當前狀態(tài)相比較, 若符合就不再發(fā)送控制指令, 這樣就能防止多次發(fā)送控制指令引起的誤動作。

            在飛行過程中, 控制系統(tǒng)的任務主要包括采集無人機的姿態(tài)數(shù)據(jù), 計算控制量并輸出到舵機等執(zhí)行機構, 接受地面站的指令并傳輸無人飛行器的位置等信息。利用設計的控制板進行伺服控制算法的實現(xiàn), 完成對執(zhí)行機構舵機的控制。圖6為控制系統(tǒng)輸出的其中一路舵機的PWM 控制信號波形。


          圖6 舵機控制信號。

            5 結束語

            采用多外設的高性能DSP 芯片TMS320F2812結合CPLD, 并采用DSP /B IOS 為實時操作系統(tǒng), 進行實時多任務設計, 有效提高了系統(tǒng)的可靠性和實時性。經(jīng)過調試, 該系統(tǒng)在實際運行中性能穩(wěn)定, 達到了設計要求。本系統(tǒng)體積小、重量輕、成本低, 具備一定的擴展性, 適合于構成較強的實時性、小型化和低成本的小型無人飛行器。


          上一頁 1 2 3 下一頁

          關鍵詞: DSP

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();