μC/OS-II與ARM在中央空調(diào)機(jī)組控制器中的應(yīng)用
3.2 移植μC/OS-II
LPC2210的ARM7TDMI-S內(nèi)核用ARM ADS1.2作為編譯器移植μC/OS-II。μC/OS-II的移植涉及到與處理器及編譯器相關(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 應(yīng)用程序
在μC/OS-II中,應(yīng)用程序以任務(wù)形式存在,每個(gè)任務(wù)都是無限循環(huán)的,并處于以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)[7]。根據(jù)中央空調(diào)的控制要求,本系統(tǒng)由以下幾個(gè)任務(wù)來實(shí)現(xiàn)。
(1)定義5個(gè)基本的信號(hào)量用于任務(wù)之間的同步:故障信號(hào)量、通信信號(hào)量、定時(shí)采集信號(hào)、機(jī)組控制信號(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)后判斷機(jī)組故障的類型,按照預(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ì)中央空調(diào)對(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)論