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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μC/OS-II與ARM在中央空調(diào)機(jī)組控制器中的應(yīng)用

          μC/OS-II與ARM在中央空調(diào)機(jī)組控制器中的應(yīng)用

          作者: 時(shí)間:2010-07-28 來源:網(wǎng)絡(luò) 收藏
          Bootloader的主要功能是初始化必要的硬件并啟動(dòng)操作系統(tǒng)。軟件層實(shí)現(xiàn)的相關(guān)控制任務(wù),包括初始化任務(wù)、故障處理任務(wù)、數(shù)據(jù)通信任務(wù)、數(shù)據(jù)采集任務(wù)、控制任務(wù)及顯示任務(wù)。底層硬件設(shè)備控制驅(qū)動(dòng)層初始化微與外圍部件管腳連接的配置,建立處理器與外圍功能電路之間的關(guān)聯(lián),與具體硬件電路相關(guān)。功能部件命令接口驅(qū)動(dòng)實(shí)現(xiàn)處理器各個(gè)功能模塊的運(yùn)作機(jī)制,如串口、SPI、CAN等模塊,該層函數(shù)由上兩層調(diào)用。功能部件協(xié)議實(shí)現(xiàn)層提供各功能模塊初始化函數(shù)、讀寫函數(shù)以及中斷處理函數(shù)等。上兩層軟件設(shè)計(jì)與操作系統(tǒng)密切相關(guān),利用操作系統(tǒng)管理控制任務(wù)、實(shí)現(xiàn)任務(wù)間的數(shù)據(jù)交互通信和延時(shí)等。
          3.2 移植μ
          LPC2210的7TDMI-S內(nèi)核用 ADS1.2作為編譯器移植μ。μ的移植涉及到與處理器及編譯器相關(guān)的OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S 3個(gè)文件。其包括以下內(nèi)容:(1)設(shè)置OS_CPU.H頭文件中與處理器和編譯器相關(guān)的代碼,如整數(shù)、浮點(diǎn)數(shù)、堆棧等數(shù)據(jù)類型定義,打開或者關(guān)閉中斷函數(shù)設(shè)置,定義堆棧增長(zhǎng)方向,任務(wù)切換的執(zhí)行代碼。(2)用C語言在OS_CPU_C.C文件中編寫若干與操作系統(tǒng)相關(guān)函數(shù),如任務(wù)堆棧初始化函數(shù)OSTaskStkInit();μC/OS-II在執(zhí)行某些操作時(shí)調(diào)用的用戶函數(shù),如OSTaskCreateHook()、OS-TaskDelHook()、OSTaskSwHook()、OSTaskStatHook()和OS-TimeTickHook()等。(3)在OS_CPU.ASM文件中用匯編語言編寫4個(gè)與處理器相關(guān)的函數(shù):運(yùn)行優(yōu)先級(jí)最高的就緒任務(wù)OSStartHighRdy()、任務(wù)級(jí)的任務(wù)切換函數(shù)OSCtxSw()和中斷級(jí)的任務(wù)切換函數(shù)OSIntCtxSw()和中斷服務(wù)函數(shù)OS-
          TickISR()[5-6]。
          3.3 程序
          在μC/OS-II中,程序以任務(wù)形式存在,每個(gè)任務(wù)都是無限循環(huán)的,并處于以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)[7]。根據(jù)的控制要求,本系統(tǒng)由以下幾個(gè)任務(wù)來實(shí)現(xiàn)。
          (1)定義5個(gè)基本的信號(hào)量用于任務(wù)之間的同步:故障信號(hào)量、通信信號(hào)量、定時(shí)采集信號(hào)、控制信號(hào)量和顯示信號(hào)量。
          (2)初始化任務(wù)Task_init()具有最高運(yùn)行優(yōu)先級(jí),優(yōu)先級(jí)Prio=10,該任務(wù)完成處理器I/O接口的初始化,向量中斷分配與設(shè)置,定時(shí)器初始化以及I2C、串口等基本功能部件的初始化工作,為后繼任務(wù)的運(yùn)行做準(zhǔn)備,只運(yùn)行一次。
          (3)故障處理任務(wù)Task_error()為次優(yōu)先級(jí)任務(wù),優(yōu)先級(jí)Prio=11。當(dāng)獲得Data_err_sem信號(hào)后判斷故障的類型,按照預(yù)先的設(shè)定進(jìn)行實(shí)時(shí)故障處理,并給出報(bào)警、提示故障原因。
          (4)數(shù)據(jù)通信任務(wù)Task_comminication()的優(yōu)先級(jí)Prio=12,當(dāng)有數(shù)據(jù)傳送請(qǐng)求時(shí)便通過以太網(wǎng)與上位機(jī)進(jìn)行通信,完成命令及數(shù)據(jù)的傳送。
          (5)數(shù)據(jù)采集任務(wù)Task_collect()優(yōu)先級(jí)Prio= 13,主要完成周期性地采集各路溫度模擬量、濕度頻率量和開關(guān)量信號(hào)的輸入,為機(jī)組控制任務(wù)提供運(yùn)算數(shù)據(jù)。
          (6)機(jī)組控制任務(wù)Task_control()是整個(gè)系統(tǒng)任務(wù)中的核心,優(yōu)先級(jí)Prio=14。當(dāng)獲得采集任務(wù)釋放的Data_Control_sem信號(hào)后,便對(duì)采集過來的各路溫濕度信號(hào)及開關(guān)量信號(hào)進(jìn)行處理,輸出控制信號(hào),完成對(duì)各個(gè)調(diào)節(jié)閥的控制;且當(dāng)有故障發(fā)生時(shí)釋放故障信號(hào)量Data_err_sem。
          (7)顯示任務(wù)Task_display()優(yōu)先級(jí)最低,Prio= 15。當(dāng)獲得顯示信號(hào)量Data_Display_sem時(shí)任務(wù)就緒,刷新機(jī)組當(dāng)前的設(shè)置參數(shù)及運(yùn)行狀態(tài)。
          系統(tǒng)整體軟件流程圖如圖3所示。系統(tǒng)初始化后便建立各個(gè)運(yùn)行任務(wù),啟動(dòng)多任務(wù)調(diào)度機(jī)制,在各個(gè)同步信號(hào)的協(xié)調(diào)下有序運(yùn)行[8]。

          本文引用地址:http://www.ex-cimer.com/article/151712.htm

          3.4 數(shù)據(jù)處理算法
          在機(jī)組控制任務(wù)Task_control()中需要對(duì)采集過來的各路模擬量及數(shù)字量信號(hào)進(jìn)行處理,以得到合適的輸出控制信號(hào),選取何種處理方法直接關(guān)系到的控制品質(zhì)。針對(duì)對(duì)象大慣性、大滯后、非線性等特性,常規(guī)PID控制無論在參數(shù)整定還是在控制精度或控制過程都存在不足[4,9]。本系統(tǒng)采用基于T-S模型的模糊神經(jīng)網(wǎng)絡(luò)[10]參數(shù)自整定PID控制方法,利用神經(jīng)網(wǎng)絡(luò)經(jīng)訓(xùn)練后可以逼近任意非線性關(guān)系特性,并綜合了PID控制與模糊控制各自的優(yōu)勢(shì)。圖4為控制系統(tǒng)結(jié)構(gòu)圖[9],模糊神經(jīng)網(wǎng)絡(luò)模塊根據(jù)誤差及其變換率實(shí)時(shí)地修改PID的3個(gè)參數(shù),使其處于最優(yōu)狀態(tài)。圖5為基于T-S模型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖[11]。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();