μC/OS-II系統(tǒng)與ARM在中央空調(diào)機(jī)組控制器中的應(yīng)用
隨著中央空調(diào)的普及應(yīng)用,如何對中央空調(diào)機(jī)組實施有效的控制,是許多科研人員研究的重要課題。目前國內(nèi)中央空調(diào)機(jī)組控制器硬件方面主要采用8位單片機(jī)為核心處理器,這種方式由于資源有限,導(dǎo)致人機(jī)交互不友好、機(jī)組的實時監(jiān)控性能低、整機(jī)運轉(zhuǎn)難以實現(xiàn)多機(jī)組網(wǎng)聯(lián)控、節(jié)能效果差。采用RISC架構(gòu)的ARM微處理器具有小體積、低功耗、低成本、高性能的特點,指令執(zhí)行速度快,執(zhí)行效率高,且具有豐富的片內(nèi)外圍電路,有利于簡化系統(tǒng)設(shè)計,提高系統(tǒng)可靠性。本控制系統(tǒng)選擇了Philips公司ARM7處理器LPC2210,移植了實時操作系統(tǒng)μC/OS-II,系統(tǒng)運行穩(wěn)定可靠。
1 空調(diào)系統(tǒng)簡介及控制要求
中央空調(diào)由集中制冷/加熱站和空調(diào)機(jī)組兩大部分組成。前者提供系統(tǒng)所需要的冷熱源,后者通過調(diào)節(jié)冷凍水/熱蒸汽的流量及空氣風(fēng)量來調(diào)節(jié)溫度,調(diào)節(jié)加濕閥來調(diào)節(jié)房間的濕度。機(jī)組的控制任務(wù)是自動調(diào)節(jié)空氣溫濕度、風(fēng)速、送風(fēng)量及空氣的潔凈度。系統(tǒng)中所需檢測與控制的參量為:自動檢測新風(fēng)、送風(fēng)、回風(fēng)及被控房間溫、濕度及正壓值,表冷器/加熱器的供、回水溫度;自動檢測送、回風(fēng)機(jī)及故障報警;中低效過濾器壓差狀態(tài)及超差報警;根據(jù)室外空氣狀態(tài)和室內(nèi)正壓值自動調(diào)節(jié)新風(fēng)、回風(fēng)、排風(fēng)閥開度 ;根據(jù)被控參數(shù)及設(shè)定參數(shù)自動調(diào)節(jié)表冷器、加濕器的電動調(diào)節(jié)閥的開度。
2 現(xiàn)場控制器硬件結(jié)構(gòu)
如圖1所示,整個系統(tǒng)可分為ARM處理器模塊、電源模塊、各總線接口模塊、存儲模塊、人機(jī)交互模塊、模擬量輸入輸出模塊及數(shù)字量輸入輸出模塊等。
主處理器選用Philips公司生產(chǎn)的ARM7芯片LPC2210,該芯片是基于支持實時仿真和跟蹤的ARM7TDMI-S CPU的微控制器,最高工作頻率可達(dá)60 MHz,內(nèi)部帶有16 KB RAM,多達(dá)122個通用I/O口(可承受5 V電壓),具有兩個帶16 B收發(fā)FIFO的UART,兩個完全獨立的同步串行接口SPI等豐富的外設(shè)。本系統(tǒng)中,存儲模塊由擴(kuò)展的2 MB NOR Flash(SST39VF160)與8 MB PSRAM(MT45W4MW16)構(gòu)成,分別使用LPC2210外部存儲器接口的Bank0和Bank1地址空間;人機(jī)交互模塊包含鍵盤和LCD兩部分,顯示和設(shè)置空調(diào)機(jī)組的運行參數(shù)及狀態(tài)。控制器設(shè)有8個按鍵輸入,使用I2C接口的接盤與LED驅(qū)動芯片ZLG7290進(jìn)行鍵盤掃描;從USB接口用于控制器與調(diào)試計算機(jī)的通信;控制平臺設(shè)計了以RTL8019AS芯片為核心的以太網(wǎng)接口電路,實現(xiàn)控制器與上位監(jiān)控級計算機(jī)之間的通信;CAN總線接口可用于現(xiàn)場設(shè)備的通信;ISP接口、JTAG口為程序下載調(diào)試接口;A/D模塊采用LPC2210自帶的8路10位ADC轉(zhuǎn)換器,檢測各路溫度及濕度模擬量的輸入,構(gòu)成反饋控制。D/A模塊的輸出信號作為比例放大器的輸入,控制各個調(diào)節(jié)閥門的開度大小,實現(xiàn)風(fēng)量和流量控制。數(shù)字量輸入通道檢測風(fēng)機(jī)的運行狀態(tài)及過濾網(wǎng)壓差報警信號;數(shù)字量輸出通道輸出風(fēng)機(jī)、加濕器的開關(guān)控制信號??刂破魍ㄟ^對整個空調(diào)系統(tǒng)新風(fēng)、回風(fēng)的溫濕度、送風(fēng)風(fēng)機(jī)運行狀態(tài)、初中效過濾段的壓差等信號的采集,控制送風(fēng)風(fēng)機(jī)的變頻調(diào)速、加濕器的加濕、新風(fēng)及回風(fēng)閥門的開度、冷熱水閥的開度大小,以達(dá)到設(shè)定的空氣狀態(tài)。
3 現(xiàn)場控制單元的軟件設(shè)計
3.1 軟件層次與功能
控制器軟件由3部分組成:實時操作系統(tǒng)、硬件驅(qū)動程序和運行在操作系統(tǒng)之上的應(yīng)用程序。實時操作系統(tǒng)采用源碼公開的μC/OS-II,基于其內(nèi)核擴(kuò)展的實時操作系統(tǒng)的整體結(jié)構(gòu)如圖2所示。
Bootloader的主要功能是初始化必要的硬件并啟動操作系統(tǒng)。應(yīng)用軟件層實現(xiàn)中央空調(diào)的相關(guān)控制任務(wù),包括初始化任務(wù)、故障處理任務(wù)、數(shù)據(jù)通信任務(wù)、數(shù)據(jù)采集任務(wù)、機(jī)組控制任務(wù)及顯示任務(wù)。底層硬件設(shè)備控制驅(qū)動層初始化微控制器與外圍部件管腳連接的配置,建立處理器與外圍功能電路之間的關(guān)聯(lián),與具體硬件電路相關(guān)。功能部件命令接口驅(qū)動實現(xiàn)處理器各個功能模塊的運作機(jī)制,如串口、SPI、CAN等模塊,該層函數(shù)由上兩層調(diào)用。功能部件協(xié)議實現(xiàn)層提供各功能模塊初始化函數(shù)、讀寫函數(shù)以及中斷處理函數(shù)等。上兩層軟件設(shè)計與操作系統(tǒng)密切相關(guān),利用操作系統(tǒng)管理控制任務(wù)、實現(xiàn)任務(wù)間的數(shù)據(jù)交互通信和延時等。
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個文件。其包括以下內(nèi)容:(1)設(shè)置OS_CPU.H頭文件中與處理器和編譯器相關(guān)的代碼,如整數(shù)、浮點數(shù)、堆棧等數(shù)據(jù)類型定義,打開或者關(guān)閉中斷函數(shù)設(shè)置,定義堆棧增長方向,任務(wù)切換的執(zhí)行代碼。(2)用C語言在OS_CPU_C.C文件中編寫若干與操作系統(tǒng)相關(guān)函數(shù),如任務(wù)堆棧初始化函數(shù)OSTaskStkInit();μC/OS-II在執(zhí)行某些操作時調(diào)用的用戶函數(shù),如OSTaskCreateHook()、OS-TaskDelHook()、OSTaskSwHook()、OSTaskStatHook()和OS-TimeTickHook()等。(3)在OS_CPU.ASM文件中用匯編語言編寫4個與處理器相關(guān)的函數(shù):運行優(yōu)先級最高的就緒任務(wù)OSStartHighRdy()、任務(wù)級的任務(wù)切換函數(shù)OSCtxSw()和中斷級的任務(wù)切換函數(shù)OSIntCtxSw()和中斷服務(wù)函數(shù)OS-TickISR()。
3.3 應(yīng)用程序
在μC/OS-II中,應(yīng)用程序以任務(wù)形式存在,每個任務(wù)都是無限循環(huán)的,并處于以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和被中斷態(tài)[7]。根據(jù)中央空調(diào)的控制要求,本系統(tǒng)由以下幾個任務(wù)來實現(xiàn)。
(1)定義5個基本的信號量用于任務(wù)之間的同步:故障信號量、通信信號量、定時采集信號、機(jī)組控制信號量和顯示信號量。
(2)初始化任務(wù)Task_init()具有最高運行優(yōu)先級,優(yōu)先級Prio=10,該任務(wù)完成處理器I/O接口的初始化,向量中斷分配與設(shè)置,定時器初始化以及I2C、串口等基本功能部件的初始化工作,為后繼任務(wù)的運行做準(zhǔn)備,只運行一次。
(3)故障處理任務(wù)Task_error()為次優(yōu)先級任務(wù),優(yōu)先級Prio=11。當(dāng)獲得Data_err_sem信號后判斷機(jī)組故障的類型,按照預(yù)先的設(shè)定進(jìn)行實時故障處理,并給出報警、提示故障原因。
(4)數(shù)據(jù)通信任務(wù)Task_comminication()的優(yōu)先級Prio=12,當(dāng)有數(shù)據(jù)傳送請求時便通過以太網(wǎng)與上位機(jī)進(jìn)行通信,完成命令及數(shù)據(jù)的傳送。
(5)數(shù)據(jù)采集任務(wù)Task_collect()優(yōu)先級Prio= 13,主要完成周期性地采集各路溫度模擬量、濕度頻率量和開關(guān)量信號的輸入,為機(jī)組控制任務(wù)提供運算數(shù)據(jù)。
(6)機(jī)組控制任務(wù)Task_control()是整個系統(tǒng)任務(wù)中的核心,優(yōu)先級Prio=14。當(dāng)獲得采集任務(wù)釋放的Data_Control_sem信號后,便對采集過來的各路溫濕度信號及開關(guān)量信號進(jìn)行處理,輸出控制信號,完成對各個調(diào)節(jié)閥的控制;且當(dāng)有故障發(fā)生時釋放故障信號量Data_err_sem。
(7)顯示任務(wù)Task_display()優(yōu)先級最低,Prio= 15。當(dāng)獲得顯示信號量Data_Display_sem時任務(wù)就緒,刷新機(jī)組當(dāng)前的設(shè)置參數(shù)及運行狀態(tài)。
系統(tǒng)整體軟件流程圖如圖3所示。系統(tǒng)初始化后便建立各個運行任務(wù),啟動多任務(wù)調(diào)度機(jī)制,在各個同步信號的協(xié)調(diào)下有序運行。
3.4 數(shù)據(jù)處理算法
在機(jī)組控制任務(wù)Task_control()中需要對采集過來的各路模擬量及數(shù)字量信號進(jìn)行處理,以得到合適的輸出控制信號,選取何種處理方法直接關(guān)系到控制器的控制品質(zhì)。針對中央空調(diào)對象大慣性、大滯后、非線性等特性,常規(guī)PID控制無論在參數(shù)整定還是在控制精度或控制過程都存在不足。本系統(tǒng)采用基于T-S模型的模糊神經(jīng)網(wǎng)絡(luò)參數(shù)自整定PID控制方法,利用神經(jīng)網(wǎng)絡(luò)經(jīng)訓(xùn)練后可以逼近任意非線性關(guān)系特性,并綜合了PID控制與模糊控制各自的優(yōu)勢。圖4為控制系統(tǒng)結(jié)構(gòu)圖,模糊神經(jīng)網(wǎng)絡(luò)模塊根據(jù)誤差及其變換率實時地修改PID控制器的3個參數(shù),使其處于最優(yōu)狀態(tài)。圖5為基于T-S模型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。
以溫控為例,網(wǎng)絡(luò)的輸入信號x1、x2分別是溫差及溫差變化率et、Δet,模糊論域分別定為[-20,20]、[-10,10],模糊子集均為:NB(負(fù)大)、NM(負(fù)中)、NS(負(fù)小)、ZE(零)、PS(正小)、PM(正中)、PB(正大),模糊規(guī)則49條,隸屬度函數(shù)為高斯函數(shù)。前件網(wǎng)絡(luò)輸入層直接將et、Δet送入到模糊化層計算其屬于各語言變量值模糊集合的隸屬度函數(shù),規(guī)則層采用求積法計算出每條規(guī)則的適用度[10]。后件網(wǎng)絡(luò)由3個結(jié)構(gòu)相同的并列子網(wǎng)絡(luò)組成,輸出PID控制器的3個控制參數(shù)kp、ki、kd。系統(tǒng)采集常規(guī)PID控制器工作時et、Δet輸入數(shù)據(jù)及控制參數(shù)為訓(xùn)練樣本,利用誤差反傳算法訓(xùn)練網(wǎng)絡(luò)參數(shù):連接權(quán)pkji、隸屬度函數(shù)中心值cij及寬度δij。試驗記錄表明訓(xùn)練后的控制器的動態(tài)特性與靜態(tài)特性均優(yōu)于傳統(tǒng)PID及單純模糊控制方法。
本中央空調(diào)現(xiàn)場控制器采用32位高性能ARM處理器,滿足了控制系統(tǒng)對實時監(jiān)控能力和組網(wǎng)通信能力的要求,簡化了系統(tǒng)設(shè)計。嵌人式操作系統(tǒng)μC/OS-II的移植保證了系統(tǒng)的實時性,多任務(wù)運行特性使所開發(fā)的控制軟件運行穩(wěn)定、可靠。