基于TMS320F2812和μC/OS_II的飛機電氣測控終端設(shè)計
來源:網(wǎng)絡(luò) 2012-07-17 關(guān)鍵詞:自動化 DSP芯片 TMS320F2812 嵌入式操作系統(tǒng) 引言 作為飛機電氣系統(tǒng)的重要組成部分,飛機配電系統(tǒng)主要用于實現(xiàn)電功功率的合理分配和控制。目前,我國大多數(shù)飛機采用的都是常規(guī)配電系統(tǒng),但由于這種配電系統(tǒng)具有電網(wǎng)重量大、空勤人員負(fù)擔(dān)重、自動化程度低等缺點,在一定程度上已經(jīng)對飛機的研制進程產(chǎn)生了許多不利的影響,因此開發(fā)更為先進的飛機配電系統(tǒng)成為當(dāng)務(wù)之急。隨著電子及計算機技術(shù)的發(fā)展,借鑒國外的研究現(xiàn)狀,采用分布式配電和負(fù)載自動管理技術(shù)的先進飛機配電系統(tǒng)是目前發(fā)展的總趨勢。本實驗室對先進飛機配電系統(tǒng)進行了多年研究,設(shè)計了包括電源系統(tǒng)處理機、負(fù)載管理中心、匯流條控制器及負(fù)載仿真器四部分的飛機配電地面實驗系統(tǒng)。本文所要介紹的飛機測控終端是適用于匯流條控制器和負(fù)載管理中心的通用測控終端,其主要實現(xiàn)對負(fù)載狀態(tài)的監(jiān)測并依據(jù)電源系統(tǒng)處理機發(fā)布的控制命令實現(xiàn)對負(fù)載的控制。下面將從硬件及軟件兩方面介紹測控終端的實現(xiàn)?! ∮布O(shè)計 TMS320F2812DSP介紹 TMS320F2812DSP是德州儀器公司(TI)推出一種32位高性能數(shù)字信號處理器,它擁有峰值每秒運行150萬條指令(MIPS)的處理速度和單周期完成32×32位MAC運算的功能,同時它還具有128K×16的片上Flash、18K×16的片上RAM以及大量的片上外設(shè),包括AD轉(zhuǎn)換模塊、兩個事件管理器(EVA和EVB)、CAN總線控制器、兩個串行通信接口模塊(SCIA和SCIB)、串行外設(shè)接口模塊(SPI)、多功能串行接口(McBSP)及56個通用IO口。該DSP以高效的32位定點CPU——TMS320C28xTM為核心處理器,其開發(fā)既可使用C28x匯編也可使用ANSIC/C++語言。此外TI公司還提供有虛擬浮點數(shù)學(xué)函數(shù)庫(IQ數(shù)學(xué)函數(shù)庫)、快速傅立葉變換(FFT)算法函數(shù)庫、濾波器庫等,這些函數(shù)庫可顯著簡化應(yīng)用系統(tǒng)開發(fā)。TMS320F2812強大的功能使其完全能滿足測控終端的設(shè)計要求?! ∠到y(tǒng)硬件設(shè)計 作為飛機電氣系統(tǒng)測控平臺的組成部分,測控終端主要功能包括:處理主控模塊控制命令、監(jiān)控主電力匯流條、檢測開關(guān)量的狀態(tài)、控制開關(guān)量及傳送智能終端狀態(tài)數(shù)據(jù)等。為了實現(xiàn)上述功能,并充分利用DSPTMS320F2812強大的外設(shè)功能及嵌入式操作系統(tǒng)的優(yōu)點,設(shè)計中將系統(tǒng)分為交流電壓采集模塊、頻率采集模塊、開關(guān)量管理模塊及通信模塊四部分來實現(xiàn),系統(tǒng)結(jié)構(gòu) 如圖1所示。交流電壓采集模塊及頻率采集模塊用來實現(xiàn)對電力匯流條參數(shù)的檢測,開關(guān)量管理模塊用來實現(xiàn)對開關(guān)量狀態(tài)的檢測并依據(jù)電源系統(tǒng)處理機發(fā)來的控制命令及負(fù)載優(yōu)先級狀態(tài)實現(xiàn)對開關(guān)量的控制,通信模塊主要實現(xiàn)測控終端與電源系統(tǒng)處理機間的通信。
圖1 電氣測控終端系統(tǒng)結(jié)構(gòu)圖 通信模塊 國外先進飛機配電系統(tǒng)中均采用1553B總結(jié)實現(xiàn)各模塊的通信,考慮到本次設(shè)計的是地面實驗系統(tǒng),因此各模塊的通信采用與1553B相似的CAN通信。由于F2812本身具有增強型CAN總線控制器,因此通信模塊的硬件設(shè)計主要是CAN總線驅(qū)動電路的設(shè)計,這里我們選用飛利浦公司的CAN通信收發(fā)器PCA820C250作為F2812的CAN控制器和物理總線間的接口,以實現(xiàn)對總線的差動發(fā)送和接收功能。為了防止干擾信號的引入,設(shè)計中采用高速光耦6N137對F2812及物理總線進行隔離?! ≤浖O(shè)計 軟件設(shè)計包括系統(tǒng)軟件設(shè)計和應(yīng)用軟件設(shè)計。系統(tǒng)軟件設(shè)計的主要任務(wù)是實現(xiàn)μCOS_II在F2812上的移植;應(yīng)用軟件設(shè)計的主要任務(wù)是測控終端功能的實現(xiàn)?! ∠到y(tǒng)軟件設(shè)計 本次設(shè)計系統(tǒng)軟件采用源代碼公開實時操作系統(tǒng)μC/OS_II,它是一個基于優(yōu)先級的、可移植、可固化、可裁剪、占先式實時操作系統(tǒng),其絕大部分源碼是用ANSIC寫的。μC/OS_II通過了聯(lián)邦航空局(FAA)商用航行器認(rèn)證,符合RTCA(航空無線電技術(shù)委員會)DO-178B標(biāo)準(zhǔn)。這也是本次設(shè)計采用μC/OS_II的一個原因。要使用μC/OS2-II,首先要把這個內(nèi)核成功移植到所使用的CPU上。μC/OS_II在F2812上的移植工作包括以下幾個內(nèi)容: ①在OS_CPU.H中定義與處理器相關(guān)的常量、宏及數(shù)據(jù)類型,例如關(guān)中斷和開中斷的定義分別為#defineOS_ENTER_CRITICAL()asm“DINT”及#defineOS_EXIT_CRITICAL()asm“EINT”?! 、谡{(diào)整和修改頭文件OS_CFG.H,以裁減或修改μC/OS_II的系統(tǒng)服務(wù),減少資源損耗。例如#defineOS_MBOXEN_0即禁止使用郵箱相關(guān)的代碼?! 、劬帉慍語文件OS_CPU.C。由于本次設(shè)計中未用到其他幾個函數(shù),因此這里主要完成函數(shù)OS-TaskStkInit()的編寫。OS-TaskStkInit()用來初始化任務(wù)的堆棧結(jié)構(gòu),使其看起來象剛發(fā)生過中斷并將所有的寄存器保存到堆棧的情形一樣。 ?、芫帉憛R編語言文件OS_CPU.ASM。本文件包括4個子函數(shù)程序:OSStartHighRdy()(運行最高優(yōu)先級任務(wù))、OSCtxSw()(任務(wù)級的任務(wù)切換)、OS-IntCtxSw()(中斷級的任務(wù)切換)和OSTickISR()(μC/OS_II的時間節(jié)拍中斷函數(shù)),這是μC/OS-II移植中的重點和難點,這幾個函數(shù)的合理實現(xiàn),是保證μC/OS-II運行的基礎(chǔ)。上述工作完成后,μCOS_II就可以運行了?! ?yīng)用軟件設(shè)計 系統(tǒng)任務(wù)的構(gòu)成及優(yōu)先級分配 本測控終端要完成的任務(wù)包括:①16路模擬量的采集;②2路頻率采集;③32路狀態(tài)量采集;④16路控制量輸出;⑤與上位機的實時CAN總線通信;⑥自檢測。根據(jù)上述實現(xiàn)功能劃分系統(tǒng)的任務(wù)如表1所示,對任務(wù)優(yōu)先級的分配,這里主要考慮任務(wù)的實時性,對實時性要求高的任務(wù)分配較高的優(yōu)先級,使其得到優(yōu)先調(diào)度。
優(yōu)先級最高的是開始任務(wù)(TaskStart),這是系統(tǒng)啟動后運行的第一個任務(wù)。在該任務(wù)中要完成系統(tǒng)及相關(guān)外設(shè)的初始化,并進行必要的自檢測,然后創(chuàng)建其余的各個任務(wù)。在完成其余各個任務(wù)的創(chuàng)建之后,該任務(wù)要刪除自己,要系統(tǒng)資源讓給其它任務(wù),整個系統(tǒng)開始正常運行。該任務(wù)的示意代碼如下: /*系統(tǒng)及外設(shè)的初始化*/ /*系統(tǒng)自檢測*/ /*創(chuàng)建各個任務(wù)*/ StartCpuTimer2();; /*起動時間片*/ OSStatInit(); /*統(tǒng)計任務(wù)初始化*/ 創(chuàng)建智能終端的各個應(yīng)用任務(wù); KickDog(); /*WatchDog復(fù)位*/ OSTaskDel(OS_PRIO_SELF); /*刪除開始任務(wù)*/ 除了TaskStart()之外,其余各個任務(wù)模塊的結(jié)構(gòu)都是一個無限循環(huán)體,圖2給出了一般任務(wù)的任務(wù)流程圖。各任務(wù)的運行采用事件驅(qū)動方式,用戶創(chuàng)建任務(wù)后,初始化為掛起狀態(tài),等待中斷或其他任務(wù)發(fā)相應(yīng)的事件來驅(qū)動該任務(wù)?! ?center>
圖2任務(wù)流程圖 任務(wù)的通信與同步 μC/OS-II提供了五種用于數(shù)據(jù)共享和任務(wù)通信的方法:信號量、郵箱、消息隊列、事件標(biāo)志及互斥型信號量。信號量可以控制共享資源的使用權(quán),也可以協(xié)調(diào)外部事件與任務(wù)的執(zhí)行,提供了任務(wù)間通信、同步和互斥的最快通信,μC/OS-II提供了3種類型的信號量,即二進制型、計數(shù)型和互斥型。事件標(biāo)志可使任務(wù)與多個事件同步,若與多個事件的任何一個同步,稱為獨立型同步,若與多個事件都同步,稱之為關(guān)聯(lián)型同步。郵箱是一種通信機制,它可以使一個任務(wù)或中斷服務(wù)子程序向另一個任務(wù)發(fā)送一個指針型的變量,該指針指向一個包含了特定消息的數(shù)據(jù)結(jié)構(gòu)。消息隊列是另一種通信機制,它可以使一個任務(wù)或中斷服務(wù)子程序向另一個任務(wù)發(fā)送以指針定義的變量,具體應(yīng)用不同,每個指針指向的數(shù)據(jù)結(jié)構(gòu)也不同?;コ庑托盘柫渴且环N特殊的二進制型信號量,主要用于解決內(nèi)在的互斥問題,減少實際應(yīng)用中所必需的優(yōu)先級翻轉(zhuǎn)?! ≡谠O(shè)計測控終端軟件時,充分利用了μC/OS-II提供的這些通信機制,來協(xié)調(diào)各個獨立任務(wù)的運行。這里以通信模塊為例介紹通信機制在設(shè)計中的應(yīng)用。通信模塊共包含四個任務(wù)TaskUnpack()、TaskPack()、TaskCANRX()和TaskCANTX()和一個中斷Intecan(),任務(wù)間的通信流程如圖3所示。在采集模塊中如果發(fā)現(xiàn)系統(tǒng)某個信號發(fā)生異常則各采集模塊就會發(fā)送Qstate,從而使打包任務(wù)處于就緒狀態(tài)。終端對上位機數(shù)據(jù)的接收采用中斷方式,在中斷服務(wù)程序中發(fā)送標(biāo)志量給任務(wù)TaskCANRX(),使其處于就緒態(tài)。在接收任務(wù)函數(shù)中通過判斷自定義的數(shù)據(jù)包頭決定接收數(shù)據(jù)的類型,如果接收的數(shù)據(jù)是開關(guān)量控制命令,則發(fā)送郵箱標(biāo)志MboxUnpack給解包任務(wù),如果接收的數(shù)據(jù)是發(fā)送狀態(tài)量請求命令,則發(fā)送標(biāo)志量FlagCANTX給發(fā)送任務(wù)。另外,在打包任務(wù)和發(fā)送任務(wù)處理中,為了防止對共享數(shù)據(jù)區(qū)Data_BusToSend[x]誤操作,我們使用了共享沖突信號量MutexSendEMPCMu-texSendDI和MutexSendBus。:其執(zhí)行表示意性代碼如下: OSMutexPend(MutexSendBUS,0,&err);/*對數(shù)據(jù)區(qū)DataBusToSend[x]進行操作*/ OSMutexPost(MutexSendBUS);
圖3任務(wù)通信流程 通信及同步處理是保證μC/OS_II系統(tǒng)及各應(yīng)用任務(wù)穩(wěn)定運行的關(guān)鍵,通過在仿真軟件CCS2.2中調(diào)試,證明本次設(shè)計軟件系統(tǒng)運行穩(wěn)定,且能夠保證各任務(wù)的實時性要求,這也證明了設(shè)計中對通信及同步的處理合理正確?! 〗Y(jié)束語 作為飛機配電地面實驗系統(tǒng)的組成部分,測控終端必須滿足實時性的要求,因此我們選用了主頻為150MHz的數(shù)字信號處理器TMS320F2812作為主CPU;在軟件設(shè)計方面,采用實時嵌入式系統(tǒng)μCOS_II不僅使各任務(wù)的實時性得到滿足,而且提高了軟件運行的可靠性。該測控終端具有軟件結(jié)構(gòu)簡單,模塊化程度高,便于系統(tǒng)調(diào)試、維護升級等優(yōu)點,其在工業(yè)控制領(lǐng)域也有相當(dāng)好的應(yīng)用前景。
圖2任務(wù)流程圖 任務(wù)的通信與同步 μC/OS-II提供了五種用于數(shù)據(jù)共享和任務(wù)通信的方法:信號量、郵箱、消息隊列、事件標(biāo)志及互斥型信號量。信號量可以控制共享資源的使用權(quán),也可以協(xié)調(diào)外部事件與任務(wù)的執(zhí)行,提供了任務(wù)間通信、同步和互斥的最快通信,μC/OS-II提供了3種類型的信號量,即二進制型、計數(shù)型和互斥型。事件標(biāo)志可使任務(wù)與多個事件同步,若與多個事件的任何一個同步,稱為獨立型同步,若與多個事件都同步,稱之為關(guān)聯(lián)型同步。郵箱是一種通信機制,它可以使一個任務(wù)或中斷服務(wù)子程序向另一個任務(wù)發(fā)送一個指針型的變量,該指針指向一個包含了特定消息的數(shù)據(jù)結(jié)構(gòu)。消息隊列是另一種通信機制,它可以使一個任務(wù)或中斷服務(wù)子程序向另一個任務(wù)發(fā)送以指針定義的變量,具體應(yīng)用不同,每個指針指向的數(shù)據(jù)結(jié)構(gòu)也不同?;コ庑托盘柫渴且环N特殊的二進制型信號量,主要用于解決內(nèi)在的互斥問題,減少實際應(yīng)用中所必需的優(yōu)先級翻轉(zhuǎn)?! ≡谠O(shè)計測控終端軟件時,充分利用了μC/OS-II提供的這些通信機制,來協(xié)調(diào)各個獨立任務(wù)的運行。這里以通信模塊為例介紹通信機制在設(shè)計中的應(yīng)用。通信模塊共包含四個任務(wù)TaskUnpack()、TaskPack()、TaskCANRX()和TaskCANTX()和一個中斷Intecan(),任務(wù)間的通信流程如圖3所示。在采集模塊中如果發(fā)現(xiàn)系統(tǒng)某個信號發(fā)生異常則各采集模塊就會發(fā)送Qstate,從而使打包任務(wù)處于就緒狀態(tài)。終端對上位機數(shù)據(jù)的接收采用中斷方式,在中斷服務(wù)程序中發(fā)送標(biāo)志量給任務(wù)TaskCANRX(),使其處于就緒態(tài)。在接收任務(wù)函數(shù)中通過判斷自定義的數(shù)據(jù)包頭決定接收數(shù)據(jù)的類型,如果接收的數(shù)據(jù)是開關(guān)量控制命令,則發(fā)送郵箱標(biāo)志MboxUnpack給解包任務(wù),如果接收的數(shù)據(jù)是發(fā)送狀態(tài)量請求命令,則發(fā)送標(biāo)志量FlagCANTX給發(fā)送任務(wù)。另外,在打包任務(wù)和發(fā)送任務(wù)處理中,為了防止對共享數(shù)據(jù)區(qū)Data_BusToSend[x]誤操作,我們使用了共享沖突信號量MutexSendEMPCMu-texSendDI和MutexSendBus。:其執(zhí)行表示意性代碼如下: OSMutexPend(MutexSendBUS,0,&err);/*對數(shù)據(jù)區(qū)DataBusToSend[x]進行操作*/ OSMutexPost(MutexSendBUS);
自動對焦:
咨詢詳情:如需咨詢文中涉及的相關(guān)產(chǎn)品或解決方案詳情,請加微信:ZiDongHuaX 。
微信聯(lián)盟:,各細(xì)分行業(yè)微信群:點擊這里進入。
鴻達安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯服務(wù)器、邊緣計算解決方案
微信聯(lián)盟:,各細(xì)分行業(yè)微信群:點擊這里進入。
鴻達安視:水文水利在線監(jiān)測儀器、智慧農(nóng)業(yè)在線監(jiān)測儀器 金葉儀器: 氣體/顆粒物/煙塵在線監(jiān)測解決方案
西凱昂:SMC氣動元件、力士樂液壓元件、倍加福光電產(chǎn)品等 山東諾方: 顆粒物傳感器、粉塵濃度傳感器
深圳金瑞銘:RFID射頻識別、智能傳感器等物聯(lián)網(wǎng)解決方案 北京英諾艾智: 容錯服務(wù)器、邊緣計算解決方案
我要收藏
個贊
評論排行