關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于VxWorks的無人直升機(jī)控制系統(tǒng)設(shè)計

基于VxWorks的無人直升機(jī)控制系統(tǒng)設(shè)計

作者: 時間:2010-01-11 來源:網(wǎng)絡(luò) 收藏

1.3 軟件
的軟件包含四大部分:一是根據(jù)S3C44B0X重新配置系統(tǒng)的BSP。二是優(yōu)先級的消息隊列實現(xiàn),消息隊列中包含飛行狀態(tài)信息與自主定點飛行信息。三是看門狗與信號量的多任務(wù)調(diào)度,實現(xiàn)自主定點飛行與實時飛行狀態(tài)信息傳輸?shù)墓δ?。四是基站控制軟件?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/設(shè)計">設(shè)計。系統(tǒng)上電后初始化socket套接字,網(wǎng)絡(luò)聯(lián)通后采用UDP協(xié)議通信。下面將著重介紹優(yōu)先級的消息隊列與基于信號量與看門狗的多任務(wù)調(diào)度。

2.3.1 基于優(yōu)先級的消息隊列
中,不能因為執(zhí)行機(jī)載設(shè)備的數(shù)據(jù)傳輸命令而拒絕執(zhí)行地面基站的自主飛行命令。為解決這一問題,本控制系統(tǒng)建立了基于優(yōu)先級的消息隊列機(jī)制。系統(tǒng)在RAM中開辟一個區(qū)域用于建立消息隊列,隊列中指針指向的是各個信息的內(nèi)存塊地址。各個任務(wù)將根據(jù)這些指針指向的數(shù)據(jù)來進(jìn)行實際操作。

(1)基于優(yōu)先級的消息隊列方法。首先信息接收任務(wù)接收信息后根據(jù)信息頭地址內(nèi)容判斷信息優(yōu)先級,地面基站的自主飛行命令優(yōu)先級為最高,把它插入到消息隊列的隊列頭,而機(jī)載電子羅盤與GPS發(fā)送的數(shù)據(jù)信息優(yōu)先級低,按照時間順序排列在消息隊列的隊列尾。信息解釋任務(wù)從消息隊列頭逐一取出信息然后進(jìn)行處理。

(2)消息隊列的實現(xiàn)。通過單向鏈表來實現(xiàn)消息隊列的添加與刪除。每個鏈表元素是一個結(jié)構(gòu)體struct messageChain,結(jié)構(gòu)體包含頭指針pBuff與指向下一個元素的指針pNext。同時使用兩個全局變量直接表示鏈表頭與鏈表尾,一個全局變量表示鏈表長度,這

樣可以直接處理鏈表頭或者鏈表尾的內(nèi)容以簡化查找過程。

2.3.2 基于看門狗的多任務(wù)調(diào)度
系統(tǒng)可以為每個任務(wù)設(shè)定特定的任務(wù)名與任務(wù)優(yōu)先級,系統(tǒng)支持256個優(yōu)先級。為了調(diào)試的方便,在本控制系統(tǒng)中設(shè)定的任務(wù)優(yōu)先級在60到100之間,這是因為由程序發(fā)起的任務(wù)優(yōu)先級要高于Tornado開發(fā)環(huán)境中shell發(fā)起sp的任務(wù)優(yōu)先級即小于100,同時也要低于系統(tǒng)任務(wù)的優(yōu)先級即大于60【5】。控制系統(tǒng)包含了信息接收任務(wù),信息解釋任務(wù),信息發(fā)送任務(wù),網(wǎng)絡(luò)監(jiān)測任務(wù),定時輪詢?nèi)蝿?wù),自主飛行任務(wù)等多任務(wù)。流程圖見圖三。


圖三 任務(wù)調(diào)度流程圖



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉