楊敏
(特靈科技亞太研發中心,上海 200051)
隨著大眾對生活環境期望的提高,空調的功能需求不斷提升,空調控制系統已然成為空調產品和建筑工程的核心和關鍵。作為大型建筑控制系統靈魂的空調控制軟件,其開發技術與方法已成為行業的重點研究對象。
本研發中心承擔開發的某空調控制工程項目,規模較大,采用了基于模型的設計(Model Based Design,MBD)的理念與技術。該項目在開發過程中,就其控制軟件,嘗試以Matlab/Simulink通用軟件為基礎平臺,有機融合了架構籌劃、算法設計、模型搭建、程序編寫、代碼生成、數據分析、模擬仿真、全程協調等于一體,其過程涵蓋了傳統開發模式的所有環節和要素,在各要素間無縫銜接,并運用數學運算和可視化等方法進行了搭建模型和協同開發[1]。本文重點介紹其中算法模塊結構設計、控制算法代碼生成和集成、仿真平臺搭建和仿真測試過程等內容。
1)傳統的大型空調控制軟件開發流程通常包含3個環節,各環節相對獨立又互為關聯,如:
(1)算法工程師根據項目基本需求設計算法,并在Matlab非圖形界面下,采用純數學方式計算或在Simulink環境下簡單建模,在進行初步模擬驗證后輸出設計描述文檔;
(2)軟件工程師接收和消化算法工程師提交的設計后,借助于實體控制器編寫程序和代碼,形成一體化的完整控制軟件;
(3)系統工程師在實驗室環境下對控制算法和軟件邏輯進行針對性驗證。
2)根據實際開發實踐的經驗和效果,上述傳統開發模式存在以下明顯弊端:
(1)限于專業知識、開發經驗、能力與表達等因素,軟件工程師與算法工程師對控制需求和算法的理解常有差異,交付的軟件能否準確實現算法意圖存在較大不確定性;
(2)限于測試條件,許多控制工況難于在實驗室環境下進行客觀模擬或者完整實現;
(3)實驗室環境下的測試成本昂貴且非常耗時;
(4)整個開發過程的工作環境、信息收集、需求研判、方案擬訂等諸多環節相對而言難于獨立,需要交叉配合的環節較為繁復,過程返工頻次較多。
3)本項目的空調控制軟件開發引入了MBD的理念和技術,其質量和效率等方面所顯現的優勢,為傳統開發模式難以比擬,主要體現在以下幾方面。
(1)引入模塊概念,軟件架構清晰。現代大型空調系統普遍具有這樣一個顯著特點,即控制的需求多、環節多、設備多。因此,在應用MBD技術設計算法模型時,宜引入解耦設計思路,即將整個空調控制系統解耦成多個低耦合度的子系統,而諸如溫度控制、壓力控制、通風控制、設備輸出保護等各子系統又有著獨立的輸入和輸出,以模塊化形式實現各自不同的控制目標。在Matlab/Simulink交互式環境下,各模塊作用及相關數據關聯與流動狀況清晰可見[2]。
(2)直接生成代碼,開發效率陡增。除了將本項目所生成的算法代碼輸入空調控制軟件平臺外,還可以直接通過Simulink Embedded Coder代碼生成器依據對象ToolChain(交叉編譯工具鏈)直接生成嵌入式算法代碼,繼而進行HIL(Hardware In Loop,硬件在環)仿真測試,其中無須手寫代碼,也弱化了傳統模式下算法工程師與軟件工程師因控制需求與算法等理解差異而產生的波折與矛盾,提高了開發質量和效率。
(3)模擬實際工況,測試成本銳減。實驗室環境下,大型空調控制軟件的測試成本昂貴,且耗時費力,而在Matlab/Simulink環境下,采用Plant Model結合控制算法模型的仿真方式,即能有效模擬控制軟件的長時間運行狀態,僅僅幾秒的模擬計算便能生成傳統模式下通常需要一整天運算的數據,其效率可見一斑。
另外,在醞釀和設計本項目的實驗室環境下模擬系統(或設備)及其操作方案時,先行參照一些基本參數和歷史模型,預設Plant Model;投建實驗室相關系統(或設備)期間,依然持續采集和完善相關數據,及時優化、完善Plant Model,然后驗證算法。由此,算法工程師擺脫了既往需具備實驗條件后才能較為可靠地驗證算法的傳統方式,縮短了項目開發周期,也減少了各項資源投入。
大型空調系統中一般設有多個控制目標,如室內溫度、濕度、管道壓力,以及節能需求和優化等,各個環節有機銜接為一套穩定高效的控制算法。相應的,在本項目的Simulink模型設計中,將各個控制目標解耦合成為獨立的subsystem(子系統)和若干下屬子系統,設溫度控制、壓力控制、通風控制、設備輸出保護等模塊,形成模塊化結構(見圖1)。在Matlab/Simulink開發環境下,將各個子系統分別保存為獨自文件,并定義接口,以便擴展、維護和多人合作開發。通過各類子系統或模塊之間的有序連接,實現數據從輸入端到輸出端的傳遞。

圖1 空調控制算法模塊結構示意圖
Simiulink模塊庫是Simulink預置的功能模塊工具箱,適用于設計中搭建模型,其中有標準模塊庫(如數學、邏輯和位操作,子系統,自定義函數,等等)、擴展與專業庫(如狀態圖,測試模塊,控制系統模塊,等等),以及用戶自定義模塊,如圖2所示。

圖2 Simulink模塊庫(部分)
結合本項目算法模塊結構設計,重點介紹幾種常用的Simulink模塊應用。
1)狀態圖(State Flow)
狀態圖是一種以圖形化方式描述對象狀態變化遷移的工具。基于標準建模語言(UML),Simulink的狀態圖作為一個子系統嵌入到模型中,完成狀態跳轉和行為時序。
圖3 為風機關閉時序狀態圖,表示當所有制冷/制熱設備都關閉并維持設定時間后,才能關閉風機,以保證設備安全。圖3中,左、右狀態框分別顯示制冷/制熱的運行狀態和關閉狀態,其間通過設備開關進行切換,即狀態跳轉至關閉狀態后啟動計時,并在計時結束后控制風機停止。

圖3 風機關閉時序狀態圖
2)Truth Table(真值表)
本 項 目ThermoStat(恒 溫 器)中,采 用6個輸入開關的組合來決定系統模式,即Emergency Heat(快 速 制 熱)、Heat1~4(制 熱1~4擋)、Cool1~4(制 冷1~4擋)、Fan Only(吹 風)和Off(關機)。其實現方式為:
(1)在表1的Truth Table的Condition Table(條件表)中,以X、Y1、Y2、W1、W2和G 6個開關作為輸入Condition,組合為D1~D14的14種結果;在Actions中,示出編號1~14,配合表2使用。

表1 Condition Table(條件表)
(2)表2的 Action Table(動作表),對應表1的Action編號執行相關動作,模式輸出設置分別為緊急制熱、制熱、制冷、風扇和關機等。

表2 Action Table(動作表)
3)Matlab Function
雖然Simulink模塊庫蘊藏著豐富的模塊,但對于某些領域或場景的應用仍具一定局限性,如相關模塊與模型搭建需求匹配性較低,或相關模塊可讀性較差以及不便直接調用模塊等,此時,可 啟 用Matlab Function,用Matlab的M語言自行手寫代碼。較之Simulink支持的C語言代碼,M語言更為簡潔明了,其內置有支持算法模塊化結構設計的函數,如線性插值LookupTable、矩陣操作的多種運算等可直接調用。本項目中,應用了M語言編寫計算焓值的Matlab Function(見圖4),而在Simulink中直接調用該Matlab Function計算函數(見圖5)。
Simulink的 代 碼 生 成 器(Simulink Coder和Embedded Coder)工具箱提供了將模型轉換為C/C++代碼,并對代碼進行審查和優化的功能[3]。在實際應用中,需要在模型中配置求解器(Solver)和系統目標文件(System target file),其中:
1)求解器是Simulink提供的一系列對于計算仿真步長的解算方法。本項目的生成代碼應用中,由于程序被周期性地調用,所以選擇定步長離散求解器。
2)系統目標文件是一種能被代碼生成器用來生成在特定目標硬件或特定操作系統執行代碼的文件。Simulink預置有多種系統目標文件,常用的有grt.tlc(適用于Visual C/C++的目標文件)和ert.tlc(適用于嵌入式系統的目標文件),本項目根據自身的應用場景,選擇了后者。
本項目研發中,將Simulink生成的C/C++代碼,通過自行編寫的Wrapper(包裹代碼)嵌入已建的控制軟件平臺進行編譯,以實現算法模塊與空調控制軟件平臺之間的數據交互,如圖6所示。

圖6 控制算法代碼生成和集成系統示意圖
圖6 為控制算法代碼生成和集成系統示意,其中,控制算法程序的運行方式為:空調控制軟件平臺周期性地通過Wrapper模塊,從算法模塊中調用算法程序,并向其輸入諸如傳感器值、設備狀態等經轉化為匹配格式的信息,然后提取計算結果,轉換為約定的數據格式后輸入空調控制軟件平臺,以執行后續步驟。
當完成控制算法模型后,需對控制算法進行仿真調試,即在特定的條件下,輸入各種工況和參數來測試控制效果。針對本項目所開發的仿真測試平臺,其主體由測試模塊和測試界面應用程序等組成,如圖7所示。該平臺主要作用為:

圖7 仿真測試平臺示意圖
1)由測試界面設定所需的測試工況;
2)將一系列工況記錄于Excel專用表格,一并導入Matlab/Simulink平臺,以測試不同工況切換后的功能狀況;
3)重現某些特殊工況,以對比調整模型前后的輸出結果。
本項目中,測試模塊采用Simulink創建,將控制算法模塊作為子系統予以調用,向其提供算法數據源和測試數據源,使其在各種模擬工況下進行仿真測試。其中:算法數據源包括系統類型、模式設定、溫度、壓力等傳感器的測量值和設定值,以及各設備運行狀態等;測試數據源或是測試人員通過人機交互界面輸入的數據,或是存儲于Excel專用表格中的歷史數據,或是Plant Model的模擬數據進行閉環控制[4]。
以下著重說明Plant Model在測試模塊中的應用。
本項目的Plant Model由空調設備模型和環境模型兩部分組成。開發中,引入了本研發中心為適應自有的計算機設備而自行開發的個性化Plant Model通用設計模塊,用于測試模型的輸出模擬反饋。由圖8、圖9所示,當Plant Model獲得當前空調設備模型的壓縮機運行狀態、風閥開度等輸出信息后,結合Zone Model(環境模型)所設定的房間大小、負載、室外溫度、濕度等測試狀態信息進行邏輯分析和運算,從而模擬出室內溫度和換熱器溫度等,并反饋給控制算法模型。

圖8 Plant Model和控制算法模型關系圖

圖9 空調模型與環境模型關系圖
由于Plant Model所涉內容較多、算法復雜、仿真速度較慢等因素,在本項目開發階段初期,采取了從Plant Model提取特征數據進行線性插值的方法,以適當簡化Plant Model,提高仿真效率;當進入常規測試階段,則依然使用完整的Plant Model。
同時,在實驗室環境下測試空調控制軟件,因受條件制約,難于模擬如同工程實地運行狀態下的所有工況,一般僅選擇性地模擬若干典型工況。但是,考慮到空調系統對環境對象的敏感性,以及控制環節諸多關系的復雜性,就大型空調控制軟件而言,仍需擇取較為完整的工況進行仿真。而利用Plant Model,可以簡捷地模擬各種可能的運行工況,從而了解控制方案的初步效果。
Matlab/Simulink通用軟件作為可視化仿真工具,支持系統設計、功能仿真、自動代碼生成以及嵌入式系統的連續測試和驗證。
本項目中,借助于Matlab專業軟件的APP Designer工具,開發了包含數據狀態、參數設置等眾多功能與信息的個性化人機交互界面(見圖10),與利用Matlab/Simulink平臺所開發的算法模型及測試環境等進行數據交換,從而直接從本項目自身特點和需求著手,進行Simulink可視化仿真。

圖10 人機交互界面
基于MBD,本項目自建模至測試階段的整個開發過程十分簡潔流暢,隨時可在仿真測試狀態下進行迭代,使控制算法模型逐步得到優化。
本項目處于仿真測試時,除了配備Simulink Scope(仿真示波器)觀測波形和數據外, 還常用Simulink Data Inspector(仿真數據檢查器)檢查信號波形和數據,借以輔助性比較、驗證。
如圖11所示,為借助于Simulink Data Inspector所顯示的本項目算法修改前后兩次仿真差異對比,其上圖為室內溫度比較,下圖為室內溫度容差比較,非常直觀和清晰。鑒于第一次模擬仿真顯示的室內溫度控制不甚理想,經修改算法,第二次模型仿真較第一次有了一定改善。

圖11 仿真結果比較
本項目研發中,便是通過如此一次次迭代仿真測試和修改算法,直至取得滿意結果。
近年來,MBD技術在汽車制造等行業的產品工程設計方面成效顯著,但在大型空調控制軟件開發方面的案例屈指可數。本研發中心基于MBD理念與技術,依托Matlab/Simulink平臺所開發完成的北美某大型空調控制工程控制軟件,其系統完整簡潔,架構脈絡清晰,模塊無縫銜接,一定程度上濃縮和優化了既往空調控制軟件的技術和知識,最大限度地消除了傳統開發方式的弊端,提高了軟件質量和工作效率,有效縮短了軟件開發周期,顯示了其開發技術在傳統模式基礎上實質性地跨上了一個新臺階。
目前,對于大型空調控制系統,實驗室環境下的測試尚不可少,但有機融合實驗室試驗與軟件模擬仿真測試兩種方式,取長補短,無疑是開發、測試空調控制系統的最佳途徑。尤其在軟件模擬運行基礎上獲得的初步數據和結果,能夠有效地為后續實驗室試驗積累經驗和消除試驗設備運行時的隱患。