楊敏
(特靈科技亞太研發(fā)中心,上海 200051)
隨著大眾對生活環(huán)境期望的提高,空調(diào)的功能需求不斷提升,空調(diào)控制系統(tǒng)已然成為空調(diào)產(chǎn)品和建筑工程的核心和關(guān)鍵。作為大型建筑控制系統(tǒng)靈魂的空調(diào)控制軟件,其開發(fā)技術(shù)與方法已成為行業(yè)的重點(diǎn)研究對象。
本研發(fā)中心承擔(dān)開發(fā)的某空調(diào)控制工程項(xiàng)目,規(guī)模較大,采用了基于模型的設(shè)計(Model Based Design,MBD)的理念與技術(shù)。該項(xiàng)目在開發(fā)過程中,就其控制軟件,嘗試以Matlab/Simulink通用軟件為基礎(chǔ)平臺,有機(jī)融合了架構(gòu)籌劃、算法設(shè)計、模型搭建、程序編寫、代碼生成、數(shù)據(jù)分析、模擬仿真、全程協(xié)調(diào)等于一體,其過程涵蓋了傳統(tǒng)開發(fā)模式的所有環(huán)節(jié)和要素,在各要素間無縫銜接,并運(yùn)用數(shù)學(xué)運(yùn)算和可視化等方法進(jìn)行了搭建模型和協(xié)同開發(fā)[1]。本文重點(diǎn)介紹其中算法模塊結(jié)構(gòu)設(shè)計、控制算法代碼生成和集成、仿真平臺搭建和仿真測試過程等內(nèi)容。
1)傳統(tǒng)的大型空調(diào)控制軟件開發(fā)流程通常包含3個環(huán)節(jié),各環(huán)節(jié)相對獨(dú)立又互為關(guān)聯(lián),如:
(1)算法工程師根據(jù)項(xiàng)目基本需求設(shè)計算法,并在Matlab非圖形界面下,采用純數(shù)學(xué)方式計算或在Simulink環(huán)境下簡單建模,在進(jìn)行初步模擬驗(yàn)證后輸出設(shè)計描述文檔;
(2)軟件工程師接收和消化算法工程師提交的設(shè)計后,借助于實(shí)體控制器編寫程序和代碼,形成一體化的完整控制軟件;
(3)系統(tǒng)工程師在實(shí)驗(yàn)室環(huán)境下對控制算法和軟件邏輯進(jìn)行針對性驗(yàn)證。
2)根據(jù)實(shí)際開發(fā)實(shí)踐的經(jīng)驗(yàn)和效果,上述傳統(tǒng)開發(fā)模式存在以下明顯弊端:
(1)限于專業(yè)知識、開發(fā)經(jīng)驗(yàn)、能力與表達(dá)等因素,軟件工程師與算法工程師對控制需求和算法的理解常有差異,交付的軟件能否準(zhǔn)確實(shí)現(xiàn)算法意圖存在較大不確定性;
(2)限于測試條件,許多控制工況難于在實(shí)驗(yàn)室環(huán)境下進(jìn)行客觀模擬或者完整實(shí)現(xiàn);
(3)實(shí)驗(yàn)室環(huán)境下的測試成本昂貴且非常耗時;
(4)整個開發(fā)過程的工作環(huán)境、信息收集、需求研判、方案擬訂等諸多環(huán)節(jié)相對而言難于獨(dú)立,需要交叉配合的環(huán)節(jié)較為繁復(fù),過程返工頻次較多。
3)本項(xiàng)目的空調(diào)控制軟件開發(fā)引入了MBD的理念和技術(shù),其質(zhì)量和效率等方面所顯現(xiàn)的優(yōu)勢,為傳統(tǒng)開發(fā)模式難以比擬,主要體現(xiàn)在以下幾方面。
(1)引入模塊概念,軟件架構(gòu)清晰?,F(xiàn)代大型空調(diào)系統(tǒng)普遍具有這樣一個顯著特點(diǎn),即控制的需求多、環(huán)節(jié)多、設(shè)備多。因此,在應(yīng)用MBD技術(shù)設(shè)計算法模型時,宜引入解耦設(shè)計思路,即將整個空調(diào)控制系統(tǒng)解耦成多個低耦合度的子系統(tǒng),而諸如溫度控制、壓力控制、通風(fēng)控制、設(shè)備輸出保護(hù)等各子系統(tǒng)又有著獨(dú)立的輸入和輸出,以模塊化形式實(shí)現(xiàn)各自不同的控制目標(biāo)。在Matlab/Simulink交互式環(huán)境下,各模塊作用及相關(guān)數(shù)據(jù)關(guān)聯(lián)與流動狀況清晰可見[2]。
(2)直接生成代碼,開發(fā)效率陡增。除了將本項(xiàng)目所生成的算法代碼輸入空調(diào)控制軟件平臺外,還可以直接通過Simulink Embedded Coder代碼生成器依據(jù)對象ToolChain(交叉編譯工具鏈)直接生成嵌入式算法代碼,繼而進(jìn)行HIL(Hardware In Loop,硬件在環(huán))仿真測試,其中無須手寫代碼,也弱化了傳統(tǒng)模式下算法工程師與軟件工程師因控制需求與算法等理解差異而產(chǎn)生的波折與矛盾,提高了開發(fā)質(zhì)量和效率。
(3)模擬實(shí)際工況,測試成本銳減。實(shí)驗(yàn)室環(huán)境下,大型空調(diào)控制軟件的測試成本昂貴,且耗時費(fèi)力,而在Matlab/Simulink環(huán)境下,采用Plant Model結(jié)合控制算法模型的仿真方式,即能有效模擬控制軟件的長時間運(yùn)行狀態(tài),僅僅幾秒的模擬計算便能生成傳統(tǒng)模式下通常需要一整天運(yùn)算的數(shù)據(jù),其效率可見一斑。
另外,在醞釀和設(shè)計本項(xiàng)目的實(shí)驗(yàn)室環(huán)境下模擬系統(tǒng)(或設(shè)備)及其操作方案時,先行參照一些基本參數(shù)和歷史模型,預(yù)設(shè)Plant Model;投建實(shí)驗(yàn)室相關(guān)系統(tǒng)(或設(shè)備)期間,依然持續(xù)采集和完善相關(guān)數(shù)據(jù),及時優(yōu)化、完善Plant Model,然后驗(yàn)證算法。由此,算法工程師擺脫了既往需具備實(shí)驗(yàn)條件后才能較為可靠地驗(yàn)證算法的傳統(tǒng)方式,縮短了項(xiàng)目開發(fā)周期,也減少了各項(xiàng)資源投入。
大型空調(diào)系統(tǒng)中一般設(shè)有多個控制目標(biāo),如室內(nèi)溫度、濕度、管道壓力,以及節(jié)能需求和優(yōu)化等,各個環(huán)節(jié)有機(jī)銜接為一套穩(wěn)定高效的控制算法。相應(yīng)的,在本項(xiàng)目的Simulink模型設(shè)計中,將各個控制目標(biāo)解耦合成為獨(dú)立的subsystem(子系統(tǒng))和若干下屬子系統(tǒng),設(shè)溫度控制、壓力控制、通風(fēng)控制、設(shè)備輸出保護(hù)等模塊,形成模塊化結(jié)構(gòu)(見圖1)。在Matlab/Simulink開發(fā)環(huán)境下,將各個子系統(tǒng)分別保存為獨(dú)自文件,并定義接口,以便擴(kuò)展、維護(hù)和多人合作開發(fā)。通過各類子系統(tǒng)或模塊之間的有序連接,實(shí)現(xiàn)數(shù)據(jù)從輸入端到輸出端的傳遞。
圖1 空調(diào)控制算法模塊結(jié)構(gòu)示意圖
Simiulink模塊庫是Simulink預(yù)置的功能模塊工具箱,適用于設(shè)計中搭建模型,其中有標(biāo)準(zhǔn)模塊庫(如數(shù)學(xué)、邏輯和位操作,子系統(tǒng),自定義函數(shù),等等)、擴(kuò)展與專業(yè)庫(如狀態(tài)圖,測試模塊,控制系統(tǒng)模塊,等等),以及用戶自定義模塊,如圖2所示。
圖2 Simulink模塊庫(部分)
結(jié)合本項(xiàng)目算法模塊結(jié)構(gòu)設(shè)計,重點(diǎn)介紹幾種常用的Simulink模塊應(yīng)用。
1)狀態(tài)圖(State Flow)
狀態(tài)圖是一種以圖形化方式描述對象狀態(tài)變化遷移的工具?;跇?biāo)準(zhǔn)建模語言(UML),Simulink的狀態(tài)圖作為一個子系統(tǒng)嵌入到模型中,完成狀態(tài)跳轉(zhuǎn)和行為時序。
圖3 為風(fēng)機(jī)關(guān)閉時序狀態(tài)圖,表示當(dāng)所有制冷/制熱設(shè)備都關(guān)閉并維持設(shè)定時間后,才能關(guān)閉風(fēng)機(jī),以保證設(shè)備安全。圖3中,左、右狀態(tài)框分別顯示制冷/制熱的運(yùn)行狀態(tài)和關(guān)閉狀態(tài),其間通過設(shè)備開關(guān)進(jìn)行切換,即狀態(tài)跳轉(zhuǎn)至關(guān)閉狀態(tài)后啟動計時,并在計時結(jié)束后控制風(fēng)機(jī)停止。
圖3 風(fēng)機(jī)關(guān)閉時序狀態(tài)圖
2)Truth Table(真值表)
本 項(xiàng) 目ThermoStat(恒 溫 器)中,采 用6個輸入開關(guān)的組合來決定系統(tǒng)模式,即Emergency Heat(快 速 制 熱)、Heat1~4(制 熱1~4擋)、Cool1~4(制 冷1~4擋)、Fan Only(吹 風(fēng))和Off(關(guān)機(jī))。其實(shí)現(xiàn)方式為:
(1)在表1的Truth Table的Condition Table(條件表)中,以X、Y1、Y2、W1、W2和G 6個開關(guān)作為輸入Condition,組合為D1~D14的14種結(jié)果;在Actions中,示出編號1~14,配合表2使用。
表1 Condition Table(條件表)
(2)表2的 Action Table(動作表),對應(yīng)表1的Action編號執(zhí)行相關(guān)動作,模式輸出設(shè)置分別為緊急制熱、制熱、制冷、風(fēng)扇和關(guān)機(jī)等。
表2 Action Table(動作表)
3)Matlab Function
雖然Simulink模塊庫蘊(yùn)藏著豐富的模塊,但對于某些領(lǐng)域或場景的應(yīng)用仍具一定局限性,如相關(guān)模塊與模型搭建需求匹配性較低,或相關(guān)模塊可讀性較差以及不便直接調(diào)用模塊等,此時,可 啟 用Matlab Function,用Matlab的M語言自行手寫代碼。較之Simulink支持的C語言代碼,M語言更為簡潔明了,其內(nèi)置有支持算法模塊化結(jié)構(gòu)設(shè)計的函數(shù),如線性插值LookupTable、矩陣操作的多種運(yùn)算等可直接調(diào)用。本項(xiàng)目中,應(yīng)用了M語言編寫計算焓值的Matlab Function(見圖4),而在Simulink中直接調(diào)用該Matlab Function計算函數(shù)(見圖5)。
Simulink的 代 碼 生 成 器(Simulink Coder和Embedded Coder)工具箱提供了將模型轉(zhuǎn)換為C/C++代碼,并對代碼進(jìn)行審查和優(yōu)化的功能[3]。在實(shí)際應(yīng)用中,需要在模型中配置求解器(Solver)和系統(tǒng)目標(biāo)文件(System target file),其中:
1)求解器是Simulink提供的一系列對于計算仿真步長的解算方法。本項(xiàng)目的生成代碼應(yīng)用中,由于程序被周期性地調(diào)用,所以選擇定步長離散求解器。
2)系統(tǒng)目標(biāo)文件是一種能被代碼生成器用來生成在特定目標(biāo)硬件或特定操作系統(tǒng)執(zhí)行代碼的文件。Simulink預(yù)置有多種系統(tǒng)目標(biāo)文件,常用的有g(shù)rt.tlc(適用于Visual C/C++的目標(biāo)文件)和ert.tlc(適用于嵌入式系統(tǒng)的目標(biāo)文件),本項(xiàng)目根據(jù)自身的應(yīng)用場景,選擇了后者。
本項(xiàng)目研發(fā)中,將Simulink生成的C/C++代碼,通過自行編寫的Wrapper(包裹代碼)嵌入已建的控制軟件平臺進(jìn)行編譯,以實(shí)現(xiàn)算法模塊與空調(diào)控制軟件平臺之間的數(shù)據(jù)交互,如圖6所示。
圖6 控制算法代碼生成和集成系統(tǒng)示意圖
圖6 為控制算法代碼生成和集成系統(tǒng)示意,其中,控制算法程序的運(yùn)行方式為:空調(diào)控制軟件平臺周期性地通過Wrapper模塊,從算法模塊中調(diào)用算法程序,并向其輸入諸如傳感器值、設(shè)備狀態(tài)等經(jīng)轉(zhuǎn)化為匹配格式的信息,然后提取計算結(jié)果,轉(zhuǎn)換為約定的數(shù)據(jù)格式后輸入空調(diào)控制軟件平臺,以執(zhí)行后續(xù)步驟。
當(dāng)完成控制算法模型后,需對控制算法進(jìn)行仿真調(diào)試,即在特定的條件下,輸入各種工況和參數(shù)來測試控制效果。針對本項(xiàng)目所開發(fā)的仿真測試平臺,其主體由測試模塊和測試界面應(yīng)用程序等組成,如圖7所示。該平臺主要作用為:
圖7 仿真測試平臺示意圖
1)由測試界面設(shè)定所需的測試工況;
2)將一系列工況記錄于Excel專用表格,一并導(dǎo)入Matlab/Simulink平臺,以測試不同工況切換后的功能狀況;
3)重現(xiàn)某些特殊工況,以對比調(diào)整模型前后的輸出結(jié)果。
本項(xiàng)目中,測試模塊采用Simulink創(chuàng)建,將控制算法模塊作為子系統(tǒng)予以調(diào)用,向其提供算法數(shù)據(jù)源和測試數(shù)據(jù)源,使其在各種模擬工況下進(jìn)行仿真測試。其中:算法數(shù)據(jù)源包括系統(tǒng)類型、模式設(shè)定、溫度、壓力等傳感器的測量值和設(shè)定值,以及各設(shè)備運(yùn)行狀態(tài)等;測試數(shù)據(jù)源或是測試人員通過人機(jī)交互界面輸入的數(shù)據(jù),或是存儲于Excel專用表格中的歷史數(shù)據(jù),或是Plant Model的模擬數(shù)據(jù)進(jìn)行閉環(huán)控制[4]。
以下著重說明Plant Model在測試模塊中的應(yīng)用。
本項(xiàng)目的Plant Model由空調(diào)設(shè)備模型和環(huán)境模型兩部分組成。開發(fā)中,引入了本研發(fā)中心為適應(yīng)自有的計算機(jī)設(shè)備而自行開發(fā)的個性化Plant Model通用設(shè)計模塊,用于測試模型的輸出模擬反饋。由圖8、圖9所示,當(dāng)Plant Model獲得當(dāng)前空調(diào)設(shè)備模型的壓縮機(jī)運(yùn)行狀態(tài)、風(fēng)閥開度等輸出信息后,結(jié)合Zone Model(環(huán)境模型)所設(shè)定的房間大小、負(fù)載、室外溫度、濕度等測試狀態(tài)信息進(jìn)行邏輯分析和運(yùn)算,從而模擬出室內(nèi)溫度和換熱器溫度等,并反饋給控制算法模型。
圖8 Plant Model和控制算法模型關(guān)系圖
圖9 空調(diào)模型與環(huán)境模型關(guān)系圖
由于Plant Model所涉內(nèi)容較多、算法復(fù)雜、仿真速度較慢等因素,在本項(xiàng)目開發(fā)階段初期,采取了從Plant Model提取特征數(shù)據(jù)進(jìn)行線性插值的方法,以適當(dāng)簡化Plant Model,提高仿真效率;當(dāng)進(jìn)入常規(guī)測試階段,則依然使用完整的Plant Model。
同時,在實(shí)驗(yàn)室環(huán)境下測試空調(diào)控制軟件,因受條件制約,難于模擬如同工程實(shí)地運(yùn)行狀態(tài)下的所有工況,一般僅選擇性地模擬若干典型工況。但是,考慮到空調(diào)系統(tǒng)對環(huán)境對象的敏感性,以及控制環(huán)節(jié)諸多關(guān)系的復(fù)雜性,就大型空調(diào)控制軟件而言,仍需擇取較為完整的工況進(jìn)行仿真。而利用Plant Model,可以簡捷地模擬各種可能的運(yùn)行工況,從而了解控制方案的初步效果。
Matlab/Simulink通用軟件作為可視化仿真工具,支持系統(tǒng)設(shè)計、功能仿真、自動代碼生成以及嵌入式系統(tǒng)的連續(xù)測試和驗(yàn)證。
本項(xiàng)目中,借助于Matlab專業(yè)軟件的APP Designer工具,開發(fā)了包含數(shù)據(jù)狀態(tài)、參數(shù)設(shè)置等眾多功能與信息的個性化人機(jī)交互界面(見圖10),與利用Matlab/Simulink平臺所開發(fā)的算法模型及測試環(huán)境等進(jìn)行數(shù)據(jù)交換,從而直接從本項(xiàng)目自身特點(diǎn)和需求著手,進(jìn)行Simulink可視化仿真。
圖10 人機(jī)交互界面
基于MBD,本項(xiàng)目自建模至測試階段的整個開發(fā)過程十分簡潔流暢,隨時可在仿真測試狀態(tài)下進(jìn)行迭代,使控制算法模型逐步得到優(yōu)化。
本項(xiàng)目處于仿真測試時,除了配備Simulink Scope(仿真示波器)觀測波形和數(shù)據(jù)外, 還常用Simulink Data Inspector(仿真數(shù)據(jù)檢查器)檢查信號波形和數(shù)據(jù),借以輔助性比較、驗(yàn)證。
如圖11所示,為借助于Simulink Data Inspector所顯示的本項(xiàng)目算法修改前后兩次仿真差異對比,其上圖為室內(nèi)溫度比較,下圖為室內(nèi)溫度容差比較,非常直觀和清晰。鑒于第一次模擬仿真顯示的室內(nèi)溫度控制不甚理想,經(jīng)修改算法,第二次模型仿真較第一次有了一定改善。
圖11 仿真結(jié)果比較
本項(xiàng)目研發(fā)中,便是通過如此一次次迭代仿真測試和修改算法,直至取得滿意結(jié)果。
近年來,MBD技術(shù)在汽車制造等行業(yè)的產(chǎn)品工程設(shè)計方面成效顯著,但在大型空調(diào)控制軟件開發(fā)方面的案例屈指可數(shù)。本研發(fā)中心基于MBD理念與技術(shù),依托Matlab/Simulink平臺所開發(fā)完成的北美某大型空調(diào)控制工程控制軟件,其系統(tǒng)完整簡潔,架構(gòu)脈絡(luò)清晰,模塊無縫銜接,一定程度上濃縮和優(yōu)化了既往空調(diào)控制軟件的技術(shù)和知識,最大限度地消除了傳統(tǒng)開發(fā)方式的弊端,提高了軟件質(zhì)量和工作效率,有效縮短了軟件開發(fā)周期,顯示了其開發(fā)技術(shù)在傳統(tǒng)模式基礎(chǔ)上實(shí)質(zhì)性地跨上了一個新臺階。
目前,對于大型空調(diào)控制系統(tǒng),實(shí)驗(yàn)室環(huán)境下的測試尚不可少,但有機(jī)融合實(shí)驗(yàn)室試驗(yàn)與軟件模擬仿真測試兩種方式,取長補(bǔ)短,無疑是開發(fā)、測試空調(diào)控制系統(tǒng)的最佳途徑。尤其在軟件模擬運(yùn)行基礎(chǔ)上獲得的初步數(shù)據(jù)和結(jié)果,能夠有效地為后續(xù)實(shí)驗(yàn)室試驗(yàn)積累經(jīng)驗(yàn)和消除試驗(yàn)設(shè)備運(yùn)行時的隱患。