基于的毫米波天線自動(dòng)對(duì)準(zhǔn)平臺(tái)系統(tǒng)設(shè)計(jì)
2.2 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
平臺(tái)控制板的ARM處理器采用LPC2294,其驅(qū)動(dòng)電路由SGS公司推出的L297和L298集成芯片組合而成,驅(qū)動(dòng)電路原理圖如圖3所示。平臺(tái)控制板還通過串口與磁羅盤和GPS相連,用于采集所需的數(shù)據(jù)信息。本文引用地址:http://www.ex-cimer.com/article/150959.htm
顯示控制單元仍然采用ARM芯片LPC2294,它同時(shí)與鍵盤和液晶顯示器相連,見圖2。鍵盤用來輸入己方和對(duì)方的坐標(biāo)以及對(duì)平臺(tái)系統(tǒng)控制命令的輸入,液晶顯示屏可顯示站點(diǎn)坐標(biāo)、電平信號(hào)強(qiáng)度和平臺(tái)工作狀態(tài)等,從而構(gòu)造一個(gè)友好的人機(jī)交互界面。顯示控制單元通過50 m的電纜與平臺(tái)系統(tǒng)相連,通過CAN接口與平臺(tái)控制板通信,當(dāng)用戶完成設(shè)置時(shí)通過CAN接口將設(shè)置信息發(fā)送到平臺(tái)控制器,同時(shí)顯示控制單元還作為整套毫米波設(shè)備的基帶控制單元的處理中心。
3 軟件設(shè)計(jì)
由于系統(tǒng)功能復(fù)雜,為了增加程序功能,減少死機(jī)或者程序跑飛等情況,故考慮將μC/OS-Ⅱ嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)作為應(yīng)用軟件平臺(tái),把各個(gè)系統(tǒng)功能劃分為不同的任務(wù)。由操作系統(tǒng)來完成任務(wù)的調(diào)度以及任務(wù)之間的同步和通信,用中斷來處理實(shí)時(shí)性要求強(qiáng)的異步事件。
3.1 μC/OS-Ⅱ的移植
μC/OS-是一種可移植、可固化、可裁剪及可剝奪的實(shí)時(shí)多任務(wù)內(nèi)核(RTOS),其絕大部分源碼是用ANSI的C語言編寫,可以方便地移植并支持多種類型的處理器。μC/OS-Ⅱ的硬實(shí)時(shí)性以及低成本、易控制、小規(guī)模、高性能的特性,使其能滿足工業(yè)中小型控制對(duì)可靠性、實(shí)時(shí)性以及多任務(wù)處理的要求。
編寫應(yīng)用軟件首先要移植μC/OS-Ⅱ,移植對(duì)處理器有一定的要求。本設(shè)計(jì)采用的LPC2294處理器以及開發(fā)工具ADS 1.2完全滿足移植要求,可以進(jìn)行移植。關(guān)于μC/OS-Ⅱ移植的參考資料比較多,本文不再做詳細(xì)討論。
3.2 任務(wù)的劃分與優(yōu)先級(jí)的確定
μC/OS-Ⅱ?qū)儆趽屨际綄?shí)時(shí)操作系統(tǒng),總是會(huì)使處于就緒狀態(tài)中優(yōu)先級(jí)最高的任務(wù)運(yùn)行。它不支持時(shí)間片輪轉(zhuǎn)調(diào)度,所以必須將系統(tǒng)功能合理分解為不同優(yōu)先級(jí)的任務(wù)。任務(wù)的優(yōu)先級(jí)由任務(wù)的重要性和實(shí)時(shí)性要求程度決定。劃分系統(tǒng)任務(wù)的時(shí)候,還要考慮到低優(yōu)先級(jí)的任務(wù)能有機(jī)會(huì)得到運(yùn)行,否則系統(tǒng)將難以正常工作。因此建立六個(gè)任務(wù)進(jìn)行調(diào)度,任務(wù)之間的通信方式及流程如圖4所示,分別如下:
TaskMotorCtl:任務(wù)0,作為程序的主任務(wù),實(shí)現(xiàn)初始化和電機(jī)控制功能;
TaskCal:任務(wù)1,在電機(jī)轉(zhuǎn)動(dòng)過程中實(shí)時(shí)計(jì)算轉(zhuǎn)動(dòng)角度等相關(guān)參數(shù);
TaskPortScan:任務(wù)2,端口掃描任務(wù),實(shí)現(xiàn)限位開關(guān)端口電平的監(jiān)控功能;
TaskUARTORecv:任務(wù)3,串口0磁羅盤數(shù)據(jù)的接收處理任務(wù);
TaskUART1Recv:任務(wù)4,串口1GPS數(shù)據(jù)的接收處理任務(wù);
TaskCAN:任務(wù)5,CAN接口數(shù)據(jù)收發(fā)處理。
運(yùn)行時(shí)有兩種狀態(tài):
(1)靜止?fàn)顟B(tài)
首先系統(tǒng)啟動(dòng)之后,進(jìn)行初始化,然后等待磁羅盤接收信號(hào)有效,否則不能進(jìn)入電機(jī)控制任務(wù)。在自動(dòng)運(yùn)行狀態(tài),此時(shí)平臺(tái)處于靜止?fàn)顟B(tài),程序?qū)邮盏降拇跀?shù)據(jù)進(jìn)行計(jì)算處理后實(shí)時(shí)更新,并不停地向顯示控制單元匯報(bào)天線與目標(biāo)指向的夾角大小。
(2)運(yùn)動(dòng)狀態(tài)
當(dāng)有按鍵按下,顯示控制單元通過中斷的方式對(duì)其進(jìn)行處理,然后通過CAN總線向平臺(tái)控制板發(fā)送控制命令。平臺(tái)控制板根據(jù)控制命令確定轉(zhuǎn)動(dòng)方向并在轉(zhuǎn)動(dòng)過程中實(shí)時(shí)監(jiān)測(cè)是否碰到限位開關(guān)。
優(yōu)先級(jí)的劃分如下:TaskPortScan優(yōu)先級(jí)最高,因?yàn)槠脚_(tái)的對(duì)準(zhǔn)可能會(huì)順時(shí)針或者逆時(shí)針連續(xù)轉(zhuǎn)動(dòng),而限位開關(guān)能夠使平臺(tái)往某個(gè)方向的轉(zhuǎn)動(dòng)累計(jì)不超過一圈,以免引起平臺(tái)內(nèi)線的纏繞甚至扯斷。因此當(dāng)平臺(tái)轉(zhuǎn)動(dòng)碰到限位開關(guān)時(shí),優(yōu)先級(jí)最高,以實(shí)時(shí)響應(yīng)斷電,并使平臺(tái)反轉(zhuǎn),這里通過查詢方式來檢測(cè)是否碰到限位開關(guān)。然后就是任務(wù)TaskUART0Recv,在轉(zhuǎn)動(dòng)過程中都需要實(shí)時(shí)用到航向和俯仰等角度信息,因此實(shí)時(shí)準(zhǔn)確地接收到此類信息顯得非常重要。因?yàn)門askCAN用于接收顯示控制單元的控制命令,排在任務(wù)TaskUART0Recv后面。角度計(jì)算任務(wù)的優(yōu)先級(jí)排在任務(wù)TaskCAN的后面,根據(jù)任務(wù)TaskUART0Recv傳下來的角度原始數(shù)據(jù)以及其他相關(guān)信息,實(shí)時(shí)計(jì)算角度值,以確定平臺(tái)轉(zhuǎn)動(dòng)的目標(biāo)位置。雖然TaskMotorCtl步進(jìn)電機(jī)的控制任務(wù)重要,但是幾乎全天候運(yùn)行,如果優(yōu)先級(jí)較高,會(huì)占用很多資源,導(dǎo)致其他任務(wù)無法進(jìn)行,所以將其優(yōu)先級(jí)排在靠后。最后是TaskUART1Recv任務(wù),因?yàn)橐话惚痉轿恢迷趯?shí)際對(duì)準(zhǔn)中不會(huì)變化,所以其經(jīng)緯度數(shù)據(jù)只需接收一次,其優(yōu)先級(jí)排在最后。
評(píng)論