动态

详情 返回 返回

T-MATS用户手冊中文版 - 动态 详情

1. 引言

熱力學系統建模與分析工具箱(T-MATS)是一個用於熱力學系統及其控制建模與仿真的 Simulink 工具箱。該工具包包含通用的熱力學和控制組件,可以與變輸入迭代求解器和優化算法結合,創建滿足開發需求的複雜系統。

T-MATS 軟件的目標是為熱力學系統模型的開發提供一個工具箱,包含一個仿真框架、多回路求解技術和模塊化的熱力學仿真塊。雖然 T-MATS 的大部分功能集中在瞬態熱力學仿真上,但開發者的主要關注點是氣動熱應用;因此,T-MATS 軟件包的一個亮點是渦輪機械模塊集。這個 Simulink 模塊集為開發者提供了所需的工具,可以創建幾乎任何穩態或動態的渦輪機械仿真,例如燃氣渦輪仿真。在控制系統或其他相關係統已經在 MATLAB/Simulink 中建模的系統中,T-MATS 開發者可以在一個工具中創建完整的系統。

T-MATS 渦輪機械模塊採用一種結合了基於物理的模型的可理解性和邏輯性與經驗開發模型的準確性和可調性的理念。此用户引導文檔假設用户已熟悉熱力學系統建模,建議用户在構建仿真之前,參閲相關文獻[http://www2.chem.umd.edu/thermobook/ :截至 2013 年 9 月參考],[Jones, S. M.,“使用數值推進系統仿真代碼進行燃氣渦輪發動機穩態建模”,GT2010-22350,ASME 渦輪博覽會,英國格拉斯哥,2010 年 6 月 14-18 日],以回顧一般的熱力學和建模原理。

T-MATS 是在 MATLAB®/Simulink® v2015aSP1(The Mathworks, Inc.)上開發的,屬於開源軟件,旨在供工業界、政府和學術界使用。所有 T-MATS 方程均來源於公開文獻,T-MATS 軟件包中提供的所有默認映射和常數均為非專有的,並可公開獲取。[Jones, S. M.,“使用數值推進系統仿真分析航空發動機燃氣渦輪循環的熱力學性能分析簡介”,NASA/TM-2007-214690,2007 年 3 月]。該軟件根據 Apache V2.0 許可證發佈,許可證條款和條件可在 http://www.apache.org/licenses/LICENSE-2.0 查閲。

1.1 標識

T-MATS 用户手冊適用於由 NASA Glenn Research Center 開發的 T-MATS 軟件包版本 1.2。該軟件包包含一個 T-MATS Simulink 庫,其中包括以下子庫:效應器與控制、熱傳遞、數值方法、求解器、熱力學、熱力學_Cantera、渦輪機械、渦輪機械_Cantera 和體積。此外,T-MATS 包還包含開發工具,“T-MATS 工具”,以及示例,用於演示如何使用 Simulink 庫創建系統。

1.2 符號説明

T-MATS 用户手冊中將使用下表所總結的符號。

表 1. T-MATS用户手冊註釋。

類型 定義
Courier 字體 MATLAB 函數、Simulink 塊或代碼(例如,Simulink: From 塊)
Times New Roman 字體(斜體) 變量(例如,f(x))或文件名、塊輸入/輸出
Arial 字體 文件路徑(例如,TMATS_Library\MEX)
平台:名稱塊 表示塊來自哪個庫(例如,Simulink: From 塊)

1.3 系統概述

熱力學系統建模與分析工具箱(T-MATS)是一個基於 MATLAB/Simulink 構建的通用熱力學仿真系統。T-MATS 利用基於圖形的仿真技術,滿足工業專業人士和學術界的需求。它將通用的熱力學和控制建模能力與數值迭代求解器相結合,為創建複雜的熱力學系統仿真提供了一個框架。T-MATS 使用的數值方法包括 Newton-Raphson 迭代求解技術和雅可比矩陣計算技術。

1.4 T-MATS 快速入門指南

1.4.1 安裝 T-MATS

要安裝 T-MATS,請執行以下步驟:

  1. 從 GIT 服務器下載 T-MATS:https://github.com/nasa/T-MATS/releases,點擊綠色的下載按鈕獲取最新版本,並將文件解壓到 MATLAB 可以訪問的文件夾中,確保路徑名稱中沒有空格。請注意,T-MATS 是在 Microsoft Windows 7 操作系統中使用 MATLAB(基礎版本 v2015aSP1)和 Microsoft 軟件開發工具包(SDK)7.1 開發的;無法保證它在其他操作系統、其他 MATLAB 版本或其他編譯器上能正常工作。有關與 MATLAB 2015a 兼容的編譯器的完整描述,請參見:http://www.mathworks.com/support/compilers/R2015a/index.html?sec=win64。

  2. 在 MATLAB 中導航到下載的壓縮文件中的所需 T-MATS 版本目錄,TMATS_vXX

  3. 運行 Install_TMATS.m;此命令將為 T-MATS 設置路徑,並創建 mex 文件。

    如果用户沒有管理員權限,路徑可能未正確保存。如果路徑未保存,可以手動將新的路徑添加到 pathdef.m 文件中。通過點擊 MATLAB 工具欄上的“HOME”標籤中的“Set Path”按鈕,打開“Set Path”窗口,並將以下路徑(\TMATS_Library\TMATS_Library\MEX\TMATS_Library\TMATS_Support\TMATS_Tools)添加到列表中。點擊“Save”保存路徑定義;此時會彈出消息,提醒需要管理員權限,並提供將路徑保存到新的 pathdef.m 文件中的選項。將該文件保存到 MATLAB 路徑中的某個位置。注意:此過程將保存當前的路徑列表,保存之前應驗證列表中沒有不必要的路徑。如果希望臨時安裝 T-MATS,可以在安裝彈出窗口中選擇臨時安裝按鈕。使用臨時安裝將不會保存新的路徑。

  4. 要將 T-MATS Simulink 工具添加到 Simulink 工具欄中,創建一個 MATLAB 文件 startup.m,並添加以下代碼:

    load_simulink
    Menu_customization_TMATS
    

    startup.m 文件可以保存在 MATLAB 路徑上的任何位置,每次啓動 MATLAB 時,這些代碼將加載 T-MATS 編輯工具到 Simulink 窗口。如果已經有 startup.m 文件,只需添加上述代碼。

    如果在 MATLAB 啓動時顯示警告,提示無法找到 Menu_customization_TMATS.m,可能是因為 T-MATS 路徑未正確添加到 MATLAB 中。缺少路徑定義的最常見原因是 T-MATS 路徑沒有加載到 pathdef 文件中(請參見第 3 步解決此問題),或者修改後的 startup.m 文件正在由未安裝 T-MATS 的 MATLAB 版本使用。可以通過安裝 T-MATS 到另一個版本或將 startup.m 文件放到僅用於所需 MATLAB 版本的路徑中來解決警告信息。應注意,儘管這些警告可能很煩人,但如果不使用 T-MATS,它們不會影響 MATLAB 的性能或功能。

  5. 可選:如果用户希望使用 Cantera 集成的 T-MATS 塊,需要安裝 MATLAB 的 Cantera 工具箱。有關安裝過程的詳細説明,請參見第 5.1 節。

此時,T-MATS 庫的安裝完成。T-MATS 模塊可以在 Simulink 庫瀏覽器中找到,位於“TMATS”標題下。T-MATS Simulink 工具可以在 Simulink 模型窗口的菜單欄中的“Diagram”下找到。

1.4.2 卸載 T-MATS

要卸載 T-MATS,請執行以下步驟:

  1. 從與 Install_TMATS 文件相同的目錄運行 Uninstall_TMATS.m。(默認情況下,這些文件都位於 TMATS 文件夾中)。

    a. 如果在安裝過程中手動將路徑添加到了 pathdef.m 文件中,必須在運行 Uninstall_TMATS.m 文件後手動刪除這些路徑。刪除後,再次保存 pathdef.m 文件。

  2. startup.m 文件中刪除以下行:

    load_simulink
    Menu_customization_TMATS
    

1.4.3 T-MATS 示例

T-MATS 包含多個示例系統,旨在幫助用户瞭解如何使用 T-MATS 庫來模擬熱力學系統。要訪問這些示例,請導航到 TMATS_Examples 文件夾下的 Examples 文件夾,並運行 TMATS_Run_Example.m 文件。運行該文件後,MATLAB 窗口中將列出不同的示例,用户可以選擇相應的編號打開示例。另一種方式是直接導航到包含示例的文件夾,運行相應的 *_setup_everything.m 文件(如果沒有 setup 文件,也可以打開 *.slx 文件)。

示例菜單如下所示:

>> run('C:\Builds\TMATS\TMATS_Examples\TMATS_Run_Example.m')
Select the enumeration of the T-MATS Example to be setup:
1) NewtonRaphson_Equation_Solver
2) Steady State GasTurbine
3) Dynamic GasTurbine
4) Steady State Dual Spool High Bypass Engine JT9D
5) Dynamic Dual Spool High Bypass Engine JT9D
6) Steady State JT9D, Cantera
7) Cycle Model
8) Linearization Examples
9) Volume Example
10) Cancel Setup

*_setup_everything.m 腳本將執行設置該特定示例所需的所有命令,這些命令可能包括:加載工作區變量、創建路徑、加載總線(busses)和打開 Simulink 模型。如果需要刪除路徑,可以運行對應的 *_Example_cleanup.m 文件。

1.4.4 模塊幫助

每個 T-MATS 模塊都包含一個幫助文件,説明如何設置該模塊的具體細節,因此本指南中不會討論每個模塊的低級功能。更多的文檔可以在 T-MATS 的基本目錄中的 Block Guide 文件中找到。


2. T-MATS 庫結構

T-MATS 庫在 Simulink Library Browser 中展示,包含以下幾個子庫:

  1. Effectors and Controls: 該子庫包含模擬中最外層迴路的構建模塊。庫中的塊是效應器和控制系統組件的簡單表示。根據模擬的精度要求,可能需要開發更復雜的模型。

  2. Heat Transfer: 該子庫包含用於解決熱流問題的構建模塊,採用不同的方法,包括使用各種離散化技術的0-D 集總質量法和1-D 方法。

  3. Numerical Methods: 該子庫包含模擬 T-MATS 系統所需的數值解算器的最基本構建模塊。這些模塊非常通用,可以用於創建適用於各種系統的迭代求解器,甚至可以用於 T-MATS 之外的系統。

  4. Solver: 該子庫包含簡化模擬創建的塊,包括由“Numerical Methods”子庫中的塊組成的混合塊,以及對一般模擬開發有用的塊。

  5. Thermo: 該子庫包含通用熱力學系統的塊。該子庫中的許多塊可以在其他 T-MATS 庫中使用。

  6. Thermo_Cantera: 該子庫包含需要 Cantera 軟件包支持的通用熱力學塊。

  7. Turbomachinery: 該子庫包含創建燃氣渦輪模型所需的構建模塊。塊基於基本的熱力學方程和原理,並使用一系列定義系統特徵的地圖。T-MATS 中的默認地圖和常數僅用於演示。

  8. Turbomachinery_Cantera: 該子庫包含需要 Cantera 軟件包支持的渦輪機械模塊。

  9. Volume: 該子庫包含專門用於解決1-D 流動問題的構建模塊,基於熱力學表查找,獨立於基準 T-MATS,用於流體屬性。

T-MATS 旨在作為一個環境,用於在 Simulink 中構建熱力學仿真,目標是進行動態分析和控制設計。上述子庫提供了仿真的基本構建模塊,但用户可能需要創建新的模塊或調整現有模塊,以滿足特定需求。


3. T-MATS 工具

T-MATS 附帶了一組工具,旨在加速和簡化模型創建過程。這些工具分為兩類:通用工具和 Simulink 工具。通用工具旨在為 T-MATS 添加功能,而 Simulink 工具則使 T-MATS 更加易用。所有 T-MATS 工具都可以在 \T-MATS_Tools 文件夾中找到。

3.1 T-MATS 工具

通用 T-MATS 工具以 GUI 工具和示例腳本的形式提供。其他 MATLAB 可調用的腳本將在後續章節中詳細介紹。

3.1.1 GasTableBuilder

T-MATS 氣體表格構建工具使用 Cantera 創建用於基礎 T-MATS 的氣體屬性表。有關 Cantera 軟件包的更多信息,請參見第 5 節。關於該工具的使用説明可以在 \TMATS\TMATS_Tools\GasTableBuilder.README.html 中找到。使用該工具生成的表格可以大大減少使用標稱氣體的脱離操作時的運行時間要求。

3.1.2 MapGeneration_Tools

T-MATS 地圖生成工具提供了一個示例,説明如何將 NPSS 地圖自動轉換為 T-MATS 可用的格式。由於 NPSS 命名約定和格式的可定製性,這個工具並不直接用於實際工作,而僅作為如何設置該文件的示例。

3.1.3 NPSS 到 T-MATS 轉換工具

T-MATS 的 NPSS 到 T-MATS 轉換工具使用類比方法從 NPSS 模型創建一個 T-MATS 發電廠。該工具包含兩個主要部分:第一部分在 NPSS 中運行,收集組件鏈接信息和參數;第二部分使用這些數據生成 T-MATS 模型。

T-MATS 附帶一組 Simulink 工具,旨在加速和簡化模型創建。這些工具位於 Simulink 菜單欄的 Diagram > T-MATS Tools 下。每個工具的功能將在以下部分描述。

3.2.1 GF_Convert

GF_Convert 工具將選定的 Simulink: GoTo 塊轉換為 Simulink: From 塊,或反之亦然。它還可以將 Simulink: Outport 轉換為 Simulink: Inport,反之亦然。

Block Link Setup 工具會創建與特定子系統輸入和輸出對應的 Simulink: GoTo 塊和/或 Simulink: From 塊,並通過連接線將它們連接。T-MATS 塊會根據具體情況進行處理,並根據該塊的需求創建適當的塊和連接。在許多情況下,還會創建額外的 Simulink: GoToSimulink: From 塊,這些塊將用於仿真中的其他部分。Block Link Setup 工具還可用於為選定的 Simulink: GoToSimulink: From 塊創建 Simulink: InportSimulink: Outport 塊,反之亦然。

3.2.3 Set IDes

Set IDes 工具會遍歷當前的 Simulink 圖,查找包含變量 iDesign_M 的塊,並將其更改為 GUI 中指定的值。注意:此工具僅適用於當前的圖,如果使用了子模型,則必須分別更改這些子模型中的變量。


4. 可調用 MATLAB 函數

T-MATS 中的大部分建模基於非線性表格查找,這些表格包含有關材料或流體流動的熱力學狀態信息。通過 C 代碼、MATLAB 腳本或 Simulink 瀏覽器中的 T-MATS\Thermo 文件夾可以訪問這些表格查找。默認情況下,這些表格查找包含空氣和烴類排氣氣體的熱力學屬性,這些成分之間的比率定義為 FAR(燃料與空氣比)。如果要使用其他成分,則必須更新基礎表格。

安裝完 T-MATS 後,TMATS 類將提供訪問 MATLAB 表格查找功能的方法,函數如下表所示。可以通過以下語法訪問這些命令:TMATS.(例如 TMATS.h2t(h, FAR)),或者在工作區或 MATLAB 腳本中使用 import TMATS.*。在 MATLAB 命令窗口中輸入 help TMATS 也可以獲取相關信息。

表 2. T-MATS 熱力學函數

函數 描述
T = h2t(h, FAR) 基於焓(h)[BTU/lbm]和燃料與空氣比(FAR)計算温度 [R]
s = pt2s(P, T, FAR) 基於温度(T)[R],壓力(P)[psia]和燃料與空氣比(FAR)計算熵(s)[BTU/(lbm*R)]
T = sp2t(s, P, FAR) 基於熵(s)[BTU/(lbm*R)],壓力(P)[psia]和燃料與空氣比(FAR)計算温度 [R]
h = t2h(T, FAR) 基於温度(T)[R]和燃料與空氣比(FAR)計算焓 [BTU/lbm]
DViewGUI 運行 T-MATS 數據查看器 GUI。該工具可以運行 Simulink 模型,繪製穩態數據、瞬態數據,或按需求設置 iDesign_M 變量。注意:要正確使用此工具,T-MATS 站點必須通過 Simulink/ToWorkspace 塊輸出,數據設置為 TimeSeries,幷包含 W、h、T、P 和 FAR(默認 T-MATS GasPthChar 總線)。繪製性能圖的功能會自動搜索地圖數據,但該數據要求組件數據總線輸出設置類似。執行命令 help TMATS.DViewGUI 獲取更多詳細信息。
PlotCMap(NcVec, WcArray, PRArray, EffArray) 繪製壓縮機地圖,其中 Wc、PR 和 Eff 是 Nc 和 Rline 的函數。執行命令 help TMATS.PlotCMap 獲取更多詳細信息。
PlotTMap(NcVec, PRVec, WcArray, EffArray) 繪製渦輪機地圖,其中 Wc 和 Eff 是 Nc 和 PR 的函數。執行命令 help TMATS.PlotCMap 獲取更多詳細信息。
SSplot(filename, StationVarVec) 調用 T-MATS 穩態數據查看器。變量 filename 表示生成數據的 Simulink 圖,StationVarVec 是由 ToWorkspace 塊生成的所有輸出的向量。注意:此工具會搜索所有 Simulink/ToWorkspace 塊,驗證它們是否符合 T-MATS 站點數據格式(Timeseries,包含 W、h、P、T、FAR),然後使用這些數據生成設置圖。如果找到壓縮機和渦輪機塊,也會創建圖形圖並生成數據總線。執行命令 help TMATS.SSplot 獲取更多詳細信息。
TDplot(filename) 調用 T-MATS 瞬態數據查看器。變量 filename 是生成所需數據的 Simulink 圖。注意:此工具會搜索所有 Simulink/ToWorkspace 塊,驗證它們是否符合 T-MATS 站點數據格式(Timeseries,包含 W、h、P、T、FAR),然後使用這些數據生成設置圖。如果找到壓縮機和渦輪機塊,也會創建圖形圖並生成數據總線。執行命令 help TMATS.TDplot 獲取更多詳細信息。

需要注意的是,表 2 中列出的函數僅包括不使用 Cantera 包的 T-MATS 函數。如果函數需要 Cantera 包,請參閲第 5 節。


5. Cantera 集成

一些 T-MATS 模塊已與開源的 Cantera 軟件包集成。根據軟件文檔(Cantera),“Cantera 是一個面向化學動力學、熱力學和/或傳輸過程問題的面向對象的軟件工具集。” Cantera 的集成為 T-MATS 帶來了許多新功能,包括使用非標燃料、替代流動路徑氣體等。這是通過添加一個新的 MATLAB 包來實現的,該包包括 Simulink 子庫(Turbomachinery_Cantera 和 Thermo_Cantera)、腳本和類。

5.1 Cantera 安裝

T-MATS_Cantera 使用包含 Cantera 函數的 MATLAB 腳本,這些腳本位於 \TMATS\TMATS_Library\MATLAB_Scripts\Cantera_Enabled 文件夾中。要使用這些腳本,必須將 Cantera Toolbox 安裝到 MATLAB/Simulink 中。有關如何安裝 Cantera 包的説明,可以訪問其主頁:Cantera GitHub 和 Cantera 官方網站。需要注意的是,T-MATS_Cantera 是使用 Cantera v1.0 開發的,後來更新為使用 v3.0。

5.2 使用 T-MATS_Cantera 模塊和腳本

T-MATS 模塊中使用 Cantera 函數的模塊位於 Simulink 庫瀏覽器的 *_Cantera 下,Cantera 啓用的腳本位於 TMATS 的 MATLAB 包中。在運行包含 T-MATS_Cantera 模塊或腳本的仿真之前,必須定義一個全局變量 fs,並填寫位於 TMATS\TMATS_Library\MATLAB_Scripts\Cantera_Enabled\+TMATSC 文件夾中的腳本 canteraload.m

canteraload.m 腳本定義了流動流的名稱和成分。當前最多可以有六種流動類型,每種流動類型最多包含六種分子成分。此信息以 6×6 的矩陣形式組織,矩陣的每一行包含分子類型,列表示其按重量比例的成分。流動成分通過一個 6×1 的向量來確定,每個值對應於 6×6 矩陣的一行。例如,一個流動成分向量 [1 0 0 0 0 0] 對應的空氣成分為:N2(0.7547)、O2(0.232)、AR(0.0128)。如下面所示:

Name = { 'N2' 'O2' 'AR' '' '' '';... % Air
        'H2O' '' '' '' '' '';... % Water
        'CH2' 'CH' '' '' '' '';... % Fuel
        '' '' '' '' '' '';...
        '' '' '' '' '' '';...
        '' '' '' '' '' '' };

Species = { 0.7547 0.232 0.0128 0 0 0;... % Air
            1 0 0 0 0 0;... % Water
            0.922189 0.077811 0 0 0 0;... % Fuel
            0 0 0 0 0 0;...
            0 0 0 0 0 0;...
            0 0 0 0 0 0 };

除了為流體指定成分值外,還需要創建 Cantera 相位對象,以便 Cantera 能夠正確地與 MATLAB 通信。相位對象通過在 MATLAB 工作空間中創建全局變量 fs 來定義。變量 fs 必須包含在上面提到的加載腳本中使用的所有必要分子類型。以下是聲明 fs 的示例命令:

global fs
fs = Solution('gri30.yaml')

Cantera 的 Solution 函數將從輸入文件(在此案例中為 gri30.yaml)導入一個相位。

對於 T-MATS_Cantera Simulink 模塊,流動信息通過一個 25×1 的向量傳遞,該向量的結構定義如下表所示。該向量包含詳細的流動信息,可用於 T-MATS 模塊內部和/或外部的計算或信息性目的。包含方法 TMATSC.FlowDefTMATSC.FlwVec 的類定義了流動向量的名稱,並可以根據用户需求進行更新。需要注意的是,Cantera 與 MATLAB 之間的所有通信都是通過一個 MATLAB 類來處理的,流動向量之所以必需,是因為 Simulink 與類不兼容。

表 3. T-MATS_Cantera 流動向量結構(用於 Simulink)

# 變量 描述
1 W 氣體路徑流量 [pps]
2 s 熵 [BTU/(lbm·degR)]
3 Tt 總温度 [degR]
4 Pt 總壓力 [psia]
5 ht 焓 [BTU/lbm]
6 rhot 總密度(rho)[lbm/ft³]
7 gamt 總比熱比(gamma)
8 Ts 靜態温度 [degR]
9 Ps 靜態壓力 [psia]
10 hs 靜態焓 [BTU/lbm]
11 rhos 靜態密度(rho)[lbm/ft³]
12 gams 靜態比熱比(gamma)
13 Vflow 流速 [ft/sec]
14 MN 馬赫數
15 A 流動面積 [in²]
16-21 CompVal_TMATS 流動成分向量,詳見 canteraload.m 中的 6 種物質類型定義

此結構中的每個變量都代表流動的不同特性,供 T-MATS_Cantera 模塊進行進一步計算和分析使用。

5.3 與 Cantera 的接口

使用 Cantera 函數的 T-MATS 模塊是以層次化的方式構建的,允許用户根據自己熟悉的層次來更新這些模塊。從圖 1 可以看出,用户可以在 Simulink 中使用一組 T-MATS_Cantera 模塊來創建仿真。這些模塊由一個 M-S 函數組成,M-S 函數調用使用 TMATSC MATLAB 包編寫的 MATLAB 腳本。這個 MATLAB 包包括一些專用腳本以及一個名為 FlowDef 的類,該類充當與 Cantera 之間的簡化接口。在設計過程中,用户可以根據任務需求調整這些不同層次中的任何一層。

圖片描述

圖 1. T-MATS/Cantera-塊-層次結構。

TMATSC MATLAB 包包含一個類和一些函數,這些類和函數用於創建 T-MATS Cantera 模塊集,相關內容總結在表 4 中。該包中的函數提供了文件操作和讀取腳本,便於數據存儲的處理。

表 4. TMATSC 包中的函數和類

函數 描述
Object = FlowDef() 流對象構造器(參見表 5)
[val] = canteraload(RequestType) 返回用於 Cantera 命令生成的 Name 或 Species 矩陣
[effMap, WcMap] = PRmapFile(MapFileName, NcMap, PRmap) 查找表,返回 effMap 和 WcMap
[effMap, PRMap, WcMap, StallMargin] = RlineMap(MapFileName, NcMap, Rline) 查找表,返回 effMap、PRMap、WcMap 和 StallMargin
[val] = getV(var, parent) 從工作區獲取變量
setV(var, parent, value) 設置工作區中的變量
[string] = stripchar(string) 去除字符字符串中的 \, /\o

TMATSC.FlowDef 類提供了創建流對象的能力,這些對象包含了進行熱力學計算所需的所有流信息,並簡化了與 Cantera 函數的接口,如表 5 所示。與 Simulink 環境的交互是通過基於流對象生成的流向量來完成的,該流向量在表 3 中有詳細描述。可以通過在腳本中實現命令 “import TMATSC.*” 或在命令前加上 TMATSC.TMATSC.FlowDef. 來導入 TMATSC 函數和類方法。這些信息還可以通過在 MATLAB 命令窗口中鍵入 “help TMATSC” 來訪問。

表5. 類 TMATSC.FlowDef 方法,Cantera 接口函數

類方法 描述
流對象構造:
flow_new = FlowDef() 0 個輸入,創建空的 TMATSC 流對象
flow_new = FlowDef(FlowVector) 1 個輸入,基於流向量構造流對象
flow_new = FlowDef(flow, compNN, W, Tt, Pt) 4 個輸入,創建僅包含總值的填充流對象(僅包含總值,通過 set_TP 設置)
flow_new = FlowDef(flow, compNN, W, Ts, Ps, MN) 5 個輸入,創建包含總值和靜態值的填充流對象(通過 set_TsPsMN 設置)
flow_new = CanSet(flow) 將流對象的組成值設置為 Cantera 格式(基於 CompVal_TMATS 流對象值生成 CompVal_Can)
flow_new = CanSet(flow, compNN) 將流對象的組成值設置為 Cantera 格式(基於輸入的 compNN,6×1 向量)
Cantera 接口函數:
flow_new = flowadd(flow1, flow2) 將 flow1 和 flow2 相加,保持焓和質量守恆
flow_new = flowcopy(flow) 從一個流複製信息到另一個流
mass_frac = getMassFraction(flow, c) 返回化合物 c 在流對象中的質量分數
flow_new = set_hP(flow, ht, Pt) 基於流、總焓和總壓力設置總條件
flow_new = set_MN1(flow) 基於流條件設置靜態條件為聲速流
flow_new = set_Ps(flow, Ps) 基於流和靜態壓力設置靜態條件
flow_new = set_SP(flow, S, Pt) 基於流和輸入的熵及總壓力設置總條件
flow_new = set_TP(flow, Tt, Pt) 基於流、總温度和總壓力設置總條件
flow_new = set_TsPsMN(flow, Ts, Ps, MN) 基於流、靜態温度、靜態壓力和馬赫數設置條件
流對象手動設置函數:
flow_new = TotalSet(flow, s, Tt, Pt, ht, rhot, gamt) 手動設置流對象中的總變量
flow_new = StaticSet(flow, Ts, Ps, hs, rhos, gams) 手動設置流對象中的靜態變量
flow_new = SpeedSet(flow, MN, A, Vflow) 手動設置流對象中的速度變量
flow_new = SClr(flow) 清除流對象中的所有靜態變量
flow_vector = FlwVec(flow) 創建 25×1 流向量

要創建一個空的流對象,可以在 MATLAB 命令提示符下執行以下代碼:

NewFlowObject = TMATSC.FlowDef();

或者,使用 Cantera 流向量(如表 3 中所述)生成已定義的流對象,如下所示:

NewFlowObject = TMATSC.FlowDef(Flow_Vector);

可以使用 FlwVec 命令從流對象重新生成流向量:

FlowVector = FlwVec(FlowObjectName);

當選擇使用 T-MATS_Cantera 流向量或流對象時,一個好的經驗法則是:當使用 MATLAB 腳本語言時,應使用從流類創建的流對象;而流向量僅應在從 Simulink 塊傳遞數據時使用。需要注意的是,在手動填寫流對象時,必須在設置了 CompVal_TMATS 向量屬性後運行 TMATSC.CanSet 方法,以自動生成 CompVal_Can 屬性,這對於 Cantera 命令是必需的。


6 T-MATS 仿真創建

6.1 仿真設置

在許多熱力學系統中,僅通過每個組件的輸入無法唯一確定系統的響應。例如,壓縮機的質量流量和壓力比對於給定的轉軸速度並非唯一。為了解決這個問題,使用壓縮機圖來求解進入壓縮機塊的流量。計算得到的壓縮機流量與實際流量進行比較,從而計算出流量誤差。在仿真過程中,通過調整 R-line 值來改變壓縮機在圖中的位置,從而使流量誤差趨於零(詳見 6.5 節)。

T-MATS 軟件包包含了一些模塊,便於創建需要“外部循環”(隨時間變化)和“內部循環”迭代的熱力學模型。位於“Solver”子庫中的迭代求解器模塊使用 Newton-Raphson 方法,迭代求解plant獨立變量,並監控plant依賴變量。在前面的示例中,依賴變量是流量誤差,獨立變量是 R-line。與所有 Newton-Raphson 技術一樣,求解器會計算雅可比矩陣;這個矩陣本質上是從plant獨立變量到依賴變量的線性映射,且該映射可能隨系統操作點變化及系統非線性程度變化而變化。在 Newton-Raphson 求解器無法及時收斂的情況下,T-MATS 求解器模塊通過重新計算雅可比矩陣來增強其魯棒性。

示例學習

瞭解如何使用 T-MATS “Solver”子庫的一個簡單方法是查看示例。T-MATS 軟件包中包含了三個示例,展示了逐步複雜化的求解器實現;有關示例和設置的更多信息,請參見教程(見錯誤!未找到引用源)。以下是這三個示例的簡要説明:

  1. 第一個示例NewtonRaphson_Equation_Solver)使用了 TMATS: SS NR Solver w JacobianCalc 模塊來求解一個包含三個未知數的三元方程組。需要注意的是,獨立變量(x)和依賴變量(f(x))都以 3x1 向量的形式表示。迭代求解器模塊的輸入可以是任意長度的,只要輸入、輸出以及適當的掩碼輸入變量的長度相同。

  2. 第二個示例GasTurbine_SS_Template)設置了一個穩態燃氣渦輪系統,使用了 T-MATS 模塊集。在這個示例中,TMATS: SS NR Solver w JacobianCalc 模塊被用作系統求解器。四個輸入或依賴變量(在求解器模塊的右側)是噴嘴、渦輪和壓縮機的標準化流量誤差,以及轉軸加速度。獨立變量是流入發動機的流量、壓縮機的 R-line、渦輪的 PR-map 和機械轉速。

  3. 第三個示例GasTurbine_Dyn_Template)模擬了一個動態燃氣渦輪系統。這個系統需要設置一個層級結構,使用 TMATS: Iterative NR Solver w JacobianCalc 模塊,如圖 2 所示。求解器模塊和plant(這裏作為 IterativeSolverInnerLoopPlant 模塊)必須放置在 Simulink: While Iterator 子系統模塊中。在操作過程中,該設置會迭代求解每個時間步的收斂性,如果收斂失敗,則“暫停”時間以收斂系統,然後繼續隨着時間推進。

    為了支持動態性,Newton-Raphson 求解器不像在穩態求解器示例中那樣求解機械轉速;相反,Ndot 在求解器循環外部進行積分,以計算轉軸速度。除了 while 循環的層級結構,動態燃氣渦輪示例還描述瞭如何在仿真結構中結合總線和模型調用。大部分附加的結構複雜性並不是必需的,僅為演示目的而包括。

    所需的基本結構是,plant和 TMATS: Iterative NR Solver w JacobianCalc 模塊在一個子系統中,與 Simulink: While Iteration 模塊一起,並且所有外部效應器位於該子系統之外,如圖 2 所示。

圖片描述

圖 2. 動態系統示例仿真體系結構。

6.2 T-MATS 格式化

6.2.1 顏色編碼

T-MATS 塊的輸入和輸出採用顏色編碼,以幫助模擬設置:

表6.T-MATS顏色編碼

顏色 描述
藍色 氣體路徑信息,包含流量、焓、總温、總壓和流量成分(通常是燃料與空氣比 (FAR))
深綠色 獨立變量
綠色 依賴變量
紅色 動態仿真中通過積分獲得的獨立變量,但在穩態仿真中可能由求解器求解(例如:軸速)
品紅色 在動態仿真中被積分的依賴變量,但在穩態仿真中的迭代求解器中可以作為依賴變量使用(例如:Ndot)
粉色 依賴變量計算的貢獻者(例如:扭矩)
黃色 效應器命令(例如燃料流量),通常不被求解器使用

通常,相同顏色的項連接在一起(如表 6 中所示,紅色和品紅色項可能是例外)。

T-MATS 使用矢量化的輸入/輸出方案,將輸入和輸出限制為僅必要的項。這意味着許多線路代表的都是必須正確傳遞的數字數組,以確保模擬正常工作。每個塊的“幫助”頁面中會給出這些元素的順序;或者,可以通過查看掩碼下的定義或將線路連接到總線選擇器來查看線路定義。特殊情況下,壓縮機的排氣輸出和渦輪的冷卻流輸入是動態大小的向量,反映了設計的排氣數量(在壓縮機或渦輪掩碼中指定)。一般來説,如果一個輸出不需要直接連接到另一個塊,它將被放置在 *_Data 總線中(例如,壓縮機塊中的失速餘量位於 C_Data 輸出中)。

6.2.3 Mask格式

T-MATS廣泛使用Simulink中的子系統掩碼工具。每個T-MATS塊都配有一個掩碼,用户可以通過該掩碼為塊提供所需的任何參數或設置,而無需進入塊內部。每個T-MATS塊的掩碼參數可以通過雙擊該塊來查看;一個T-MATS塊掩碼的示例如圖3所示。

圖片描述

圖 3. 示例T-MATS功能塊參數掩碼

在彈出窗口的頂部,將顯示庫塊的名稱,後面是塊描述。可以在掩碼中更改的變量將在參數部分列出,該部分可能包含多個選項卡。每個掩碼參數輸入的描述格式為:“Name_M – 定義 [單位(如果適用)](矩陣大小,如果適用)(方程格式)”,其中後綴“_M”表示在掩碼中定義的變量。“方程格式”通常用於表格格式,稍後在本節中將進行描述。複選框用於啓用或禁用功能;這些項目的變量名稱採用“(VariableName)En_M”形式。在參數對話框的底部,有一個“Help”按鈕,點擊後將提供有關該塊的更多信息。

許多T-MATS塊接受向量輸入,向量的長度可能決定塊輸入、依賴變量、獨立變量或塊輸出的數量。如果輸入描述包含符號“(size)x1”,則該輸入需要為“size”長度的向量,這由設計決定。在特定模塊中,“size”的值需要對每個項目保持一致。例如,在壓縮機塊中,客户旁路的輸入維度為cbx1,分流旁路的輸入維度為bx1,因此客户旁路向量的長度應相同(cb),分流旁路向量的長度應相同(b);並不要求cb = b,如圖4所示,其中cb = 3,b = 2。

圖片描述

圖4. 示例T-MATS功能塊參數掩碼,帶有向量輸入和複選框

T-MATS中的映射和表格作為掩碼變量輸入,1D表格需要兩個輸入(軸和數值斷點),而2D表格則需要三個輸入(兩個軸的斷點和數值)。軸斷點數組將以“X_”或“Y_”為前綴,而“ T_”前綴表示表格值的數組。標量變量用“s_”作為前綴,這些變量改變映射和表格的比例。所有表格的輸入描述包括一個簡單的方程,方程用“()”括起來,表示用於該表格的軸變量(例如,在壓縮機中,“Wc = f (Nc, R_line)”表示表格Wc的一個元素可以表示為軸變量Nc和R_line的函數,它們定義在其上方)。如果為表格輸入單元素數組(1x1),則會出現錯誤;相反,應輸入具有相同數量的行或平面,分別為1D或2D表格,以創建具有相同值的表格。例如,具有x軸 = [0 1]、y軸 = [0 1]和表格值 = [5 5; 5 5]的2D表格將創建一個值為5的平面。

6.2.4 S函數

許多T-MATS功能塊使用S函數,S函數允許用C編程語言開發代碼,然後供Simulink使用。(有關S函數操作的更多詳細信息,請參見第7.2節,附錄A包含一個簡單的代碼示例。)瞭解S函數的基本知識很重要,這樣代碼可以根據每個用户的需求進行調優。C代碼通過MATLAB的mex命令進行編譯,以供Simulink使用。

6.3 單位

除非另有説明,所有T-MATS塊和函數均使用英制單位。常見的單位定義和常量詳細列於表7中。

表7. T-MATS默認單位和常見常量

參數 單位
海拔 (Alt) 英尺 (feet)
面積 (A) 英寸平方 [in²]
焓 (h) 英熱單位每磅質量 [BTU/lbm]
熵 (s) 英熱單位每磅質量蘭金 [BTU/(lbm·R)]
流量 (W) 每秒磅 [pps]
壓力 (P) 絕對磅每平方英寸 [psia]
密度 (rho) 每立方英尺磅質量 [lbm/ft³]
温度 (T) 蘭金度 [R]
速度 英尺每秒 [ft/sec]
常量 數值
重力常數 (g) 32.174049 [(ft·lbm)/(lbf·sec²)]
朱爾常數 (Jc) 778.169233 [ft·lbm/BTU]
標準日壓力 (Pstd) 14.696 psia
標準日温度 (Tstd) 518.67 R

6.4 求解器設置

T-MATS的求解器塊集基於兩個主要組件:迭代求解器和雅可比計算器。迭代求解器使用牛頓-拉夫森法(Newton-Raphson method)來逐步逼近系統的解,其數學描述為方程(1)所示:
$$
x(n+1)=x(n)-\frac{f(x(n))}{J}
$$

式 1。

雅可比矩陣(J)是飛行輸入和輸出之間的線性映射。它通過從初始條件(x)擾動每個飛行輸入,來找到對飛行輸出(f)的影響。雅可比矩陣的更精確的數學描述可以參見公式(2)。

$$
J=\left[\begin{array}{ccc}
\frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \
\vdots & \ddots & \vdots \
\frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n}
\end{array}\right]
$$

式 2。

T-MATS 求解塊工作分為兩個主要步驟。在第一步中,雅可比計算器計算飛行的線性映射。從初始條件開始,雅可比計算器逐個擾動每個輸入,記錄結果,並計算每個輸出相對於每個輸入的斜率。一旦對每個輸入完成此操作,雅可比矩陣就被構建、求逆,並傳遞給牛頓-拉夫森塊。在第二步中,牛頓-拉夫森求解器利用第一步中開發的雅可比矩陣朝着解決方案邁進。該求解方法假設飛行是局部線性的,因此,當系統(高度)非線性時,求解器可能無法收斂到解決方案。關於求解器及其工作原理的更多信息,可以在求解器內部塊(TMATS: 牛頓-拉夫森求解器和TMATS: 雅可比計算器)的幫助文件中找到。

6.5 Turbomachinery Plant Setup

T-MATS Simulink 庫中的“Turbomachinery”子庫包含了可以組合成燃氣渦輪機的通用模塊。燃氣渦輪機的最基本定義是壓縮機與燃燒室、渦輪機以及用來連接它們的軸串聯起來;更復雜的燃氣渦輪機可能包含多組壓縮機和渦輪機,以及不同的空氣旁通設置。本文件中使用的簡單工作燃氣渦輪機示例是渦輪噴氣發動機,它由一個壓縮機、燃燒室、渦輪和噴管按串聯方式組成(如圖 5 所示)。本節中的工廠設置描述假設讀者對渦輪機械有所瞭解;如果沒有,讀者應參考第 1 節中列出的資料來源。

圖片描述

圖 5. 示例渦輪噴氣機框圖。

6.5.1 獨立變量和依賴變量

在渦輪機械系統中,通常無法直接得知每個站點的流量,必須通過計算來解決。T-MATS 求解模塊可以通過改變壓縮機和渦輪機圖表上操作點的位置來將流量誤差(輸入流量與內部計算流量之間的差異)驅動到零。在設置仿真時,獨立變量的數量必須與依賴變量的數量相匹配。動態燃氣渦輪機示例(一個簡單的渦輪噴氣發動機)的變量定義可以參見表 8。

表 8. 動態渦扇模型的獨立和依賴變量

依賴變量 獨立變量
噴管流量誤差 引擎流入流量
渦輪流量誤差 渦輪 PR-map
壓縮機流量誤差 壓縮機 R-line

(注:參見色彩編碼部分 6.2.1,瞭解如何快速找到典型的獨立和依賴變量)

需要注意的是,儘管某些輸入在某些仿真中可能是已知的,但將已知的獨立變量設為常數,並從求解器中移除依賴變量,這種做法應避免。因為獨立變量向量的微小變化可能會導致收斂到一個不存在的圖表點,從而導致仿真崩潰。更謹慎的做法是,在獨立變量的初始條件中使用已知值,並允許求解器使用依賴變量來求解。如果初始條件確實是穩態解,則獨立變量的最終值將接近或與初始值相同。如果需要精確的輸入/輸出相互依賴關係,可以使用 T-MATS:“Jacobian Calculator”模塊(位於“數值方法”子庫中)來生成。

6.5.2 圖表

T-MATS: Compressor 模塊使用圖表來計算壓縮機的效率、壓力比和修正流量,每個值都是修正壓縮機轉速 (Nc) 和 R-line(通常由迭代求解器求解)的函數,如圖 6 和圖 7 所示。由於在 MATLAB 中創建大型多維表格的複雜性,圖 6 和圖 7 中的壓縮機圖表被拆分成了三個不同的表格用於 T-MATS,分別求解修正流量 (Wc)、壓力比 (PR) 和效率 (Eff)。此外,提供了標量來修改這些插值的輸入和輸出,以調整性能圖的特性。壓縮機模塊圖表的縮放總結如下表 9。需要注意的是,對於 T-MATS 中的每個渦輪機械組件,速度和流量都根據公式 (3) 進行修正,其中 Nmech 為機械軸轉速,Tin 為模塊輸入端的總温度,Tstd 為標準温度(518.67 度 R),Pin 為模塊輸入端的總壓力,Pstd 為標準日壓力(14.7 psia),Win 為模塊輸入端的流量。

$$
\text { Correct Speed }(N c)=\frac{\text { Nmech }}{\sqrt{\frac{\text { Tin }}{\text { Tstd }}}}
$$

$$
\text { Correct Flow }(W c)=\text { Win }\left(\frac{\sqrt{\frac{\text { Tin }}{T s t d}}}{\frac{\text { Pind }}{\text { Pstd }}}\right)
$$

式 3。

圖片描述

圖 6. 樣品壓縮機圖(壓力比vs修正流量)。

圖片描述

圖 7. 示例壓縮機圖表(效率 vs. 修正流量)

表 9. 壓縮機圖表方程

壓縮機圖表變量 圖表方程
縮放壓縮機速度 Nc_map = Nc * C_Nc
壓力比 PR = (tablelookup(R_line, Nc_map) - 1) * C_PR + 1
修正流量 Wc = tablelookup(R_line, Nc_map) * C_Wc
效率 Eff = tablelookup(R_line, Nc_map) * C_Eff

(注:表格定義變量未列出,但需要注意的是,每個二維圖表需要定義 x 軸、y 軸和表格值。)

圖片描述

圖 8. 樣本渦輪機圖表(修正流量 vs. 壓力比)

圖片描述

圖 9. 樣本渦輪機圖表(效率 vs. 壓力比)

T-MATS: Turbine 模塊使用圖表來計算渦輪機的效率和修正流量。這兩個變量作為修正渦輪機速度 (Nc) 和 PR_map 值(通常由迭代求解器求解)的函數,如圖 8 所示。T-MATS 使用兩個表來表示渦輪機圖表:一個求解效率 (Eff),另一個求解修正流量 (Wc)。與壓縮機圖表定義類似,提供了標量以允許修改性能圖的特性。渦輪機模塊圖表的縮放總結如下表 10。

表 10. 渦輪機圖表方程

渦輪機圖表查找 圖表方程
縮放渦輪機速度 Nc_map = Nc * C_Nc
縮放壓力比 PR-map = (PRinput - 1) * C_PR + 1
修正流量 Wc = tablelookup (PR-map, Nc_map) * C_Wc
效率 Eff = tablelookup (PR-map, Nc_map) * C_Eff

(注:表格定義變量未列出,但需要注意的是,每個二維圖表需要定義 x 軸、y 軸和表格值。另外,渦輪機定義的參數與壓縮機定義的參數是獨立的。)

T-MATS 設計時儘可能具有靈活性;然而,壓縮機和渦輪機圖表可以有多種定義方式。如果圖表不兼容且無法調整為與 T-MATS 模塊集兼容,則必須創建新的模塊,以便與所需的圖表版本兼容。

在某些情況下,可以將圖表轉換為可在 T-MATS 模塊中使用的形式,例如,當使用壓縮機 EM-line 時。EM-line 是一種被強制轉換為線性方程形式的 R-line。T-MATS 的壓縮機模塊設計用於使用表格而非方程,但通過計算 EM-line 方程的各種 R-line 點,將一種圖表風格轉換為另一種是可能的。例如,假設修正流量 (Wc) 是基於壓縮機速度 (Nc) 和 EM-line 的表查找,而壓縮機的壓力比和效率則按方程 (4) 定義。

$$
\begin{gathered}
P R=5+E M-\text { line }(W c+100) \
E f f=\text { tablelookup }(N c, E M-\text { line })\left(P R^{0.1}-1\right)
\end{gathered}
$$

式 4。

要將此圖轉換為基於 R-line 的圖,可以選擇一對 Nc 和 EM-line 值,用於根據 Nc 和 EM-line 計算 PR 和 Eff 表格(EM-line 值可以基本上替代 R-line 值)。Wc 的表格已經處於可接受的形式,因此無需轉換。在這個例子中,所有 T-MATS 標量的值將為 1,因為它們在壓縮機圖表定義中並未出現。

6.5.3 壓縮機可變幾何(IGVs 和 VSVs)

壓縮機中的可變幾何(VGs)在許多現代大型發動機中起着至關重要的作用。進氣導向葉片(IGVs)和可變定子葉片(VSVs)是需要考慮的兩種幾何形狀,在開發 T-MATS 中的燃氣渦輪發動機模型時可能需要將它們考慮進去。在 TMATS: Compressor 塊中,VG 位置必須在壓縮機圖表中進行考慮。目前,T-MATS 沒有能力產生 VG 的非標瞬態響應;不過,未來版本中計劃添加此功能。

6.5.4 排氣和空氣旁通

由渦輪機械產生的高壓空氣是一種用途廣泛的資源。在 T-MATS 中,可以通過幾種方式建模空氣的排放或旁通:例如,可以為 TMATS: Compressor 模塊啓用級間排氣(如客户排氣和分數排氣),並且 T-MATS: Splitter 塊允許創建旁通流。客户排氣是固定流量的需求,而分數排氣是壓縮機總流量的一部分。通常,客户排氣是外部系統(例如,用於冷卻機艙、驅動發電機等)所需的空氣,而分數排氣則用於渦輪部件的冷卻流。排氣流輸出是流動路徑變量的向量(如表 6 中所描述的藍色編碼),這些變量串聯在一起幷包含所有處理所需的信息。按當前設計,每種排氣類型的排氣流最多可在一個塊中請求 20 個。每個排氣流可以從排氣向量輸出中“提取”並傳遞到適當的輸入,例如渦輪的冷卻流。

模型中的主要空氣旁通可以使用 TMATS: Splitter 塊創建,通常與噴嘴塊配合使用。有關如何使用分流器創建高旁通發動機模型的更多細節,請參閲第 6.5.5 節。

6.5.5 渦扇發動機建模選項

渦扇發動機的建模可能需要創建風扇模塊,並採用將流量劃分為主流路徑和旁通流路徑的系統架構。這個架構可以通過多種方式設置,每種方式都利用了 T-MATS 中的壓縮機、分流器和噴嘴模塊。在 T-MATS 中,風扇可以建模為一個單級壓縮機,或者高旁通發動機中的兩條流路徑(通常稱為翼尖流和翼根流)可以使用圖 10 中的三種流分割建模架構之一來建模:

  • 選項 1:在風扇之前分割主流路徑,使用兩個壓縮機模塊分別建模翼尖流和翼根流。

  • 選項 2:為翼尖流和翼根流分別分配獨立的輸入流,分別使用兩個壓縮機模塊進行建模。

  • 選項 3:在風扇之後分割主流路徑,使用一個壓縮機模塊建模整個風扇(翼尖流和翼根流合併)。

選擇哪種架構來建模,將主要取決於可用的地圖,而圖 10 中的選項並不是建模翼尖流和翼根流的唯一選擇。需要提到的是,包含旁通流會創建額外的獨立和依賴變量,這些變量必須添加到求解器中。額外的獨立變量包括輸入流量、R-line 和/或分流器旁通比,而額外的依賴變量則是與這些組件相關的流量誤差。

圖片描述

圖 10. 帶旁通的燃氣渦輪發動機風扇模型創建示例方案

6.5.6 iDesign

某些 T-MATS 渦輪機械模塊具有通過名為 iDesign 的過程,基於設計或穩態輸入參數計算髮動機地圖比例因子和內部變量的能力。可以通過在相關模塊的 iDesign 標籤下設置 iDes_M 變量來啓用此過程。iDes_M 的值可以設置為 0、1 或 2。

  • 值為 0 時啓用 iDesign,並允許仿真保存關鍵變量(即比例因子和其他關鍵內部變量,如噴嘴喉部面積等)。
  • 值為 1 時禁用 iDesign,並指定仿真應使用在系統運行時啓用 iDesign 所創建的關鍵變量。
  • 值為 2 時禁用 iDesign,但將關鍵變量設置為塊掩模中指定的值。

使用 iDesign 的模塊(如壓縮機、渦輪模塊等)需要某些設計或穩態變量已知並輸入到它們的掩模中,以便 iDesign 正常工作;應查看每個模塊的幫助菜單,以確定所需的輸入信息。一旦定義了這些信息,就可以運行仿真。通常,iDesign 運行涉及穩態模型仿真,以便解算器收斂到設計點(或適當的穩態值)。完成後,可以在 *_Data 輸出總線、指定的文件或工作區中找到啓用 iDesign 的模塊的比例因子。

請注意,啓用 iDesign(值為 0)時動態運行 T-MATS 會產生不可預測的結果,不應使用。還需要注意的是,在地圖未縮放的情況下,通過 iDesign 計算的值應在 1% 內接近 1。否則,在地圖已縮放的情況下(如在 Example_Gas_Turbine_SS 中),通過 iDesign 計算的值可能會大幅偏離 1,最終值將由最終地圖的要求決定。

此外,一般來説,如果使用 iDesign,則應為模型中所有具有此功能的模塊啓用 iDesign(值為 0)。僅啓用部分模塊可能會導致解算器收斂問題。


7 Customization

雖然 T-MATS 模塊旨在儘可能通用,但用户可能需要自定義現有功能,或者創建全新的功能,以滿足特定應用的需求。本節將介紹如何向庫中添加新模塊以及如何修改現有模塊以滿足仿真需求。

T-MATS 庫的文件結構,如表 11 所示,反映了 T-MATS 模塊在庫瀏覽器中的顯示方式。

表 11. T-MATS 庫文件結構

文件 映射方程
slblocks.m MATLAB 腳本。最高層次的文件,包含 Simulink 瀏覽器庫的庫定義
TMATS_Lib.slx 庫文件,包含作為文件夾鏈接的子例程
TMATS_FolderName.slx 庫文件,包含鏈接到各種 T-MATS 模塊的庫
Lib_FolderName_BlockName_TMATS.slx 庫文件,包含單個 T-MATS 模塊

7.1 庫模塊

T-MATS 庫本質上是一個有用的 Simulink 模塊集合,可以將這些模塊連接在一起,創建複雜的熱力學系統。通過添加新的庫模塊,可以擴展和自定義仿真環境,以滿足仿真需求。添加新模塊到 T-MATS 庫的步驟如下:

  1. 進入 T-MATS 安裝目錄中的 \TMATS_Library 文件夾。
  2. 打開 Simulink 庫瀏覽器,點擊 文件 > 新建 > 庫(或打開並重命名現有的 T-MATS 庫文件,文件名應反映新庫的內容)。
  3. 在庫文件中創建一個模塊,確保層級的最高視圖僅包含一個子系統。保存庫文件才能將其鏈接到 T-MATS 庫。
  4. 打開將鏈接新模塊的 T-MATS 子庫文件(例如 TMATS_Solver),並將新模塊拖入該窗口創建鏈接。注意,Simulink 可能會提示用户在編輯前解鎖庫,可以通過點擊 圖表 -> 解鎖庫 來解鎖。
  5. 刷新 Simulink 庫瀏覽器(按 F5),新模塊將出現在窗口中。

Simulink 庫瀏覽器文件夾是組織庫中模塊的一種簡便方法。slblocks.m 文件用於將庫添加到 Simulink 庫瀏覽器的最高層次。在 T-MATS 中,該文件將高層次的庫模塊 TMATS_Lib(包含所有 T-MATS 模塊的“文件夾”)鏈接到 Simulink 庫瀏覽器。當向 T-MATS 添加不適合當前庫結構的新模塊時,建議通過以下步驟向庫中添加新文件夾:

  1. 打開 TMATS_Lib.slx,該文件位於 TMATS\TMATS_Library 中。
  2. 創建一個沒有輸入或輸出的子系統,併為其命名。注意,庫需要解鎖(根據 Simulink 提示)才能編輯。
  3. 右鍵點擊該模塊,選擇“屬性”菜單。在“回調”選項卡下,選擇 OpenFcn 並將包含“文件夾”的庫文件名稱添加到內容區(例如 TMATS_Turbo)。

7.2 S-函數

在 T-MATS 中,許多模塊利用 Simulink 的 S-函數。S-函數允許將 Simulink 與用其他編程語言(在這種情況下是 C 或 C++)編寫的代碼結合使用,相比使用傳統的 Simulink 模塊,具有許多優勢。其中一個優勢是速度:儘管許多 Simulink 模塊和 MATLAB 函數運行速度較快,但編譯後的 C 代碼通常運行得更快。另一個優勢是使用 S-函數可以在仿真開發中使用遺留代碼(這些代碼可能不是用 Simulink/MATLAB 編寫的)。但遺留代碼需要做一些修改,以符合 S-函數的特殊格式要求。

需要注意的是,為了在仿真中使用 C 代碼,必須安裝 MATLAB 兼容的編譯器,並且代碼必須通過 MATLAB 的 mex 函數編譯,以生成 MEX 文件。

S-函數調用通過在 Simulink 模型中放置 S-函數模塊來創建,該模塊位於 Simulink -> “用户定義函數”子庫中。默認情況下,T-MATS 中的 S-函數代碼是用 C 編寫的。可以從示例 S-函數開始作為模板(如附錄 A 中標記的函數)。在編譯過程中,使用兩種類型的 S-函數接口文件:用於 MATLAB/Simulink 操作的 MEX 文件生成文件和用於目標硬件、可執行文件或快速加速模式的 TLC 文件。通常,如果塊操作需要更新,可以更改 C 代碼主體文件以反映更新。但是,如果需要更改 S-函數的輸入/輸出,那麼 mex 生成部分和 TLC 文件都需要更新。

有關 S-函數塊設置、MEX 文件創建或以 mdl 或 ss 為前綴的函數的更多信息,請參閲 MATLAB 幫助文檔。更多 T-MATS 代碼示例可以在 TMATS\TMATS_Library\MEX\C_code 文件夾中找到。

7.3 工具創建

T-MATS 使用內部 MATLAB 菜單功能,在每次選擇菜單項時調用 .m 腳本。這些菜單功能的設置由位於 TMATS\Tools 文件夾中的 Menu_customization_TMATS.m 文件處理。一旦安裝了 T-MATS,每次打開 MATLAB 時,該腳本將被調用,以使用 sl_customization_manager 命令創建 T-MATS 工具菜單中的項目。


8 Troubleshooting T-MATS

8.1 Convergence “Errors”

在使用求解器模塊循環運行 T-MATS 模塊時,仿真將首先嚐試收斂機械。在使用新的壓縮機和渦輪映射的仿真中,常常會出現參數不一致的情況。這些不一致相當於將錯誤的硬件放置在燃氣輪機上(例如,燃氣輪機配備了過小的壓縮機),並且會導致機械收斂問題。收斂失敗通常會導致 Simulink 通知錯誤,錯誤可能出現在看似與求解器無關的模塊上,如積分器或狀態空間模塊,這使得排除錯誤變得更加困難。因此,如果在運行模型時發生錯誤,應該首先檢查路由到求解器的依賴變量(f(x))的值。如果任何值為 inf、NaN 或超出求解器指定的迭代條件限制,仿真無法收斂。需要注意的是,在某些情況下,T-MATS 模塊會發出錯誤。這些錯誤的原因會在錯誤消息中做出説明,並且本文件中不會進一步討論。

解決收斂問題可能非常困難。以下是一些排查可能問題的方式:

  1. 雙重檢查模塊輸入:檢查仿真中使用的映射和常數是否存在錯誤。
  2. 檢查求解器輸入:不正確的獨立變量初始條件、擾動大小等,可能會導致求解器陷入局部最小值,從而無法收斂到系統解。
  3. 檢查獨立/依賴變量匹配:確保仿真/求解器中所有的獨立變量和依賴變量都已列出。
  4. 組件測試:如果有其他系統示例的輸入和輸出數據,可以將仿真分解到組件級別,使用其他模型中觀察到的輸入作為每個模塊的輸入。這樣有助於定位一個沒有正確建模的模塊。
  5. 穩態測試:如果系統打算動態運行,首先嚐試將其運行在穩態條件下,看看是否是求解器參數的問題導致了收斂問題。
  6. 不使用求解器運行:去除所有求解器,使用常量輸入來運行每個獨立變量的仿真;如果有其他系統示例,可以將其與模型進行比較,以幫助找到錯誤。
  7. 分析雅可比矩陣:查看雅可比矩陣(J)可能會很有幫助,它展示了獨立變量和依賴變量之間的關係。該值位於求解器模塊的 S_Data 總線輸出中,並可以通過 Simulink 的 Display sink 塊顯示。理解哪些獨立變量應該影響哪些依賴變量後,雅可比矩陣的值可以幫助確定模型中的潛在錯誤源。
  8. 更新求解器:如果求解器使用單一的雅可比擾動,可能需要將輸入更新為多步驟方法。可以通過更新雅可比計算器或求解器掩碼中的擾動來實現。
  9. iDesign:iDesign 特性可以為每個模塊開啓,強制仿真收斂;該功能有助於確定仿真接近收斂的程度,儘管可能會產生不現實的標量(例如,某個組件的效率可能大於 1)。有關 iDesign 的更多信息,請參閲第 6.5.6 節。

8.2 Crashing

有時,T-MATS 仿真可能會崩潰併發出系統錯誤,導致 MATLAB 異常關閉(如圖 11 所示)。這些內部錯誤通常是由於編譯後的 C 代碼執行錯誤引起的(通常是 C 代碼嘗試訪問它沒有權限訪問的內存位置)。這種情況可能發生在以下情況下:

  • 嘗試訪問數組之外的元素(例如,訪問一個有 15 個元素的數組中的第 21 個元素)。
  • 錯誤地使用指針。
  • 通過引用將數組傳遞給其他函數。

例如,當為表查找使用的掩碼參數提供一個長度為 1 的向量或數組時,可能會觀察到這種錯誤。如果仿真崩潰,檢查每個 T-MATS 模塊的掩碼參數是否具有正確的長度應該是排查錯誤的第一步。需要注意的是,這只是可能導致崩潰的一個原因。

圖片描述

圖 11:示例 MATLAB 內部問題消息


9 Version Compatibility

本節描述了可能與 T-MATS 舊版本不兼容的版本更新。每個小節包含更改的名稱、描述和可能修復問題的操作。需要注意的是,此列表主要列出功能選擇更改,而可能不會列出可能改變塊或命令操作的 bug 修復。更新版本時,建議在更新之前備份工作,以便在排除新塊行為時參考。所有塊在發佈前都會進行廣泛測試,但仍有可能出現錯誤。如果發現錯誤,請將其發佈到 https://github.com/nasa/T-MATS/issues,開發團隊會盡快處理。關於版本兼容性的一般問題可以在用户論壇發佈:https://groups.google.com/forum/#!forum/t-mats-user-group。

最新的 T-MATS 提交列表請見:https://github.com/nasa/T-MATS/commits/master

9.1 Version 1.1.2

Name Description Required action when updating
MATLAB version 該版本的 T-MATS 基於 MATLAB v2015aSP1,可能在 MATLAB 的舊版本中無法正常運行。 如果遇到 MATLAB 版本錯誤,請參閲 MATLAB 文檔中的修復方法。一般建議使用 T-MATS 所基於的 MATLAB 版本或更新的版本。
Bus name changes 塊輸出的總線名稱(例如 CharacFlowOut)已更改為更簡單的格式。此更改是為了使舊格式的命名約定與 Simulink Coder 和自動總線生成器兼容。 如果使用總線輸出作為總線,必須更新為新的名稱。如果未更新,將出現錯誤,提示 MATLAB 無法找到舊名稱。
Mask name update 更新了壓縮機和渦輪模塊的掩碼名稱。某些掩碼名稱已更改,包含“map”字樣,以便更清晰地表示該值的用途。 更新 T-MATS 後,舊版本將沒有新的名稱,並且該部分將填充默認值。必須重新輸入這些部分。此更新僅影響渦輪和壓縮機。建議在更新前保存舊版本的輸入,以便參考。未重新定義可能會導致矩陣大小錯誤。
Surge margin default definition 壓縮機更新為使用特定的 R 線作為默認的渦流裕度。此值也基於映射值設置,以便更易於定義渦流裕度。 轉到壓縮機的渦流裕度選項卡,確保按照預期設置。將渦流值更新為映射值(而不是絕對值)。不正確定義不會報錯,但渦流裕度值將不正確。
Jacobian calculator perturbations 雅可比計算器已更新,支持多個擾動。輸入擾動現在必須定義為數組,以增強雅可比計算器的魯棒性。 在舊版本中,雅可比計算器掩碼或求解器中的擾動大小無論是行向量還是列向量都無關緊要。在新版本中,擾動必須定義為行向量集合。例如,如果有 3 個輸入,並且想對每個輸入做 2 個擾動(1 和 -1),則矩陣應為:[1 1 1; -1 -1 -1]。如果定義不正確,將出現矩陣大小錯誤。
iDesign variable creation iDesign 功能將改為創建並使用二進制文件進行操作(而不是 .mat 文件)。此更改是為了便於代碼生成。 舊的 *.mat 文件(包含 iDesign 標量)不再可用。建議使用新方案重新計算標量。需要注意的是,舊文件名將繼承到新塊中,但該名稱可能不可用。建議使用默認值作為文件名。
Gear box flip 齒輪箱的側面已被反轉,以使輸入更直觀。 驗證齒輪箱輸出值是否符合預期。可能需要對齒輪比取倒數,並更改效率以反映新塊。

9.2 Version 1.1.3

Name Description Required action when updating
Nozzle type 噴嘴類型輸入已從數字輸入更改為下拉菜單項。 下拉菜單默認為收斂噴嘴,因此如果模型僅使用收斂噴嘴,則不會發生變化。如果模型使用收斂/擴展噴嘴,則必須在噴嘴掩碼中重新指定。

9.3 Version 1.2

Name Description Required action when updating
Sensor IC 向傳感器塊添加了初始條件。這減少了在構建系統時創建代數環的機會。 需要在塊中設置初始條件。默認值為 0,如果不更新為更接近實際的值,將導致問題。

以下出版物可供進一步參考:

  1. Chapman, J.W., Lavelle, T.M., May, R.D., Litt, J.S., Guo, T-H., “Propulsion System Simulation Using the Toolbox for the Modeling and Analysis of Thermodynamic Systems (T-MATS),” 2014 AIAA Joint Propulsion Conference, Cleveland, OH, Jul 28-30, 2014.

  2. Chapman, J.W., Lavelle, T.M., Litt, J.S., Guo, T-H., “A Process for the Creation of T-MATS Propulsion System Models from NPSS Data,” 2014 AIAA Joint Propulsion Conference, Cleveland, OH, Jul 28-30, 2014.

  3. Lavelle, T.M., Chapman, J.W., May, R.D., Litt, J.S., and Guo, T.H., “Cantera Integration with the Toolbox for the Modeling and Analysis of Thermodynamic Systems (T-MATS),” 2014 AIAA Joint Propulsion Conference, Cleveland, OH, Jul 28-30, 2014.

  4. Zinnecker, A.M., Chapman, J.W., Lavelle, T.M., and Litt, J.S., “Development of a twin-spool turbofan engine simulation using the Toolbox for the Modeling and Analysis of Thermodynamic Systems (T-MATS),” 2014 AIAA Joint Propulsion Conference, Cleveland, OH, Jul 28-30, 2014.

  5. Chapman, J.W., Kratz, J., Guo, T-H., Litt, J.S., “Integrated Turbine Tip Clearance and Gas Turbine Engine Simulation,” AIAA 2016-5047, 2016 AIAA Joint Propulsion Conference, Salt Lake City, UT, 2016.

  6. Chapman, J.W., Lavelle, T.M., Litt, J.S., “Practical Techniques for Modeling Gas Turbine Engine Performance,” AIAA 2016-4527, 2016 AIAA Joint Propulsion Conference, Salt Lake City, UT, 2016.

  7. Chapman, J.W., Litt, J.S., “Control Design for an Advanced Geared Turbofan Engine,” AIAA 2017-4820, 2017 AIAA Joint Propulsion Conference, Atlanta, GA, 2017.

  8. David G. Goodwin, Harry K. Moffat, Ingmar Schoegl, Raymond L. Speth, and Bryan W. Weber. Cantera: An object-oriented software toolkit for chemical kinetics, thermodynamics, and transport processes. https://www.cantera.org, 2023. Version 3.0.0. doi:10.5281/zenodo.8137090

11 T-MATS教程

T-MATS 軟件包是一個 Simulink 庫,可用於建模任何熱力學系統。為了幫助用户更好地理解如何將庫中的各種模塊組合在一起,軟件包包含了三個示例。本文將描述這些示例的開發過程,並突出在開發仿真時用户應該注意的重要事項。在用户完成教程的同時,查看 T-MATS 庫中的相應示例文件進行對比可能會很有幫助。

11.1 T-MATS 示例 1:牛頓-拉夫森方程求解器

本節將描述如何將 T-MATS 模塊組合起來創建一個簡單的方程求解器。這個求解器包含在 T-MATS 的示例部分中(NewtonRaphon_Equation_Solver.slx)。

  1. 創建機械模型
    在本示例中,機械完全定義,僅依賴一組輸入,具有 3 個自變量和 3 個因變量,且是多項式形式(使用 Simulink 的 Fcn 模塊創建)。為了快速參考,T-MATS 示例中使用的三個函數已經在公式(5)中給出。

  2. 放置求解器
    在此案例中,系統與時間無關,因此將使用穩態求解器模塊(TMATS: SS NR Solver w JacobianCalc)。

  3. 連接模塊
    功能模塊的輸出僅依賴於功能模塊的輸入。T-MATS 求解器模塊被設計為接受一個向量輸入併產生一個向量輸出,因此需要將功能模塊的輸出合併為一個多路複用信號,然後連接到求解器模塊的輸入 f(x)。求解器的輸出 X 可以直接連接到每個功能模塊的輸入,因為這些模塊接受向量輸入(請參閲本節稍後的圖示,在其中添加了顯示器以幫助用户觀察結果)。

  4. 設置求解器
    雙擊求解器塊。在應用中,需要根據需求調整掩碼參數。向量 SJac_Per_M 和 SNR_IC_M 的長度必須等於系統中的自變量和因變量的數量(在本示例中為 3)。請參閲示例模型 NewtonRaphson_Equation_Solver.slx 以查看此特定案例的掩碼參數。

  5. 配置仿真
    為了避免在運行仿真時遇到錯誤,應該先通過“仿真”菜單欄中的“配置參數”窗口設置求解器選項。導航到“求解器”面板,並選擇固定步長、離散求解器,如圖 11 所示。

  6. 運行仿真
    此時,可以運行系統。點擊 Simulink 模型頂部的綠色播放按鈕。如果仿真求解器選項已正確設置,仿真將成功運行。

圖片描述

圖 11. 模型配置參數設置

  1. 執行完成,解釋結果
    顯示器將顯示方程的解(見圖 13)。S_Data 輸出向量中的元素 "Converged" 顯示模型是否已收斂。如果收斂標準已滿足,該元素將為 1;如果求解器輸入 f(x) 未趨近於零,則該元素為 0。
圖片描述

圖 13. 運行方程求解器

11.2 T-MATS 示例 2:Example_GasTurbine_SS

本節將描述如何組合 T-MATS 塊來創建 T-MATS 包含的簡單穩態燃氣渦輪機示例(GasTurbine_SS_Template.slx)。請注意,示例模型使用了 Block Link Setup 工具,通過用 Simulink: GoTo 和 Simulink: From 塊替換線路,生成一個整潔的模型。

11.2.1 創建燃氣渦輪機 plant

  1. 收集模塊
    將 TMATS: Shaft、Compressor、Burner、Turbine、Duct 和 Nozzle 塊放入模型中。這些塊位於 T-MATS 的 “Turbomachinery” 子庫中。

  2. 連接核心氣流路徑
    按照步驟 1 中列出的順序排列這些塊,並將每個 GasPthChar 輸出連接到下一個塊的 GasPathChar 輸入。(軸不在此步驟中)

  3. 連接旁路氣流路徑
    雖然此示例未使用客户的旁路氣流或冷卻氣流,但將壓縮機的 FBldsCharOut 輸出連接到渦輪的 CoolingFlwCharIn 輸入,將允許在需要時稍後添加這些功能。

  4. 將未使用的輸出連接到終結器塊
    表 12 中列出的輸出在本教程中未使用,應將其連接到 Simulink: Terminator 塊。

表 12. 穩態渦扇發動機示例,未使用的輸出:

未使用輸出
Compressor CustBldsCharOut
C_Data
Burner B_Data
Turbine T_Data
Nozzle WOut
Fg
N_Data

注意,在每個塊上使用 Block Link Setup 工具將自動在這些輸出處放置 Simulink: Terminator 塊。

  1. 設置軸組件
    將 NmechOut(來自軸)連接到壓縮機和渦輪的 Nmech 輸入。將來自壓縮機和渦輪的 TrqOut 輸出多路複用,並將該信號連接到軸的 Torque 輸入。

  2. 設置輸入流量
    TMATS: Ambient 塊將環境特性轉換為燃氣渦輪機的熱力學特性;將此塊放入模型,並將 GasPthChar 輸出連接到 TMATS: Compressor 塊的 GasPthChar 輸入。TMATS: Ambient 塊的環境壓力(Pamb)輸出需要路由到 TMATS: Nozzle 塊的 Pamb 輸入,而 A_Data 輸出未使用,可以路由到 Simulink: Terminator 塊。
    將環境條件(TMATS: Ambient 塊)和燃料流量(TMATS: Burner 塊)的輸入設置為常數,因為仿真將求解穩態。

  3. 定義掩碼參數
    每個組件的常數和映射應根據用户的特定應用進行更新。請參閲示例模型,以獲取此特定情況可用的值。(請注意,每個參數的實際值在設置文件中,該文件為 Simulink 模型文件中的掩碼參數創建了指定的變量。)
    完成的燃氣渦輪機 plant 模型應類似於圖 14,其中在每個組件的輸出處添加了 Simulink: Display 塊。

圖片描述

圖 14. 燃氣渦輪機設備

11.2.2 Plant 求解器集成與 plant 輸入

  1. 創建求解器
    將 TMATS: SS NR Solver w Jacobian Calc 塊放入模型中。將所有的因變量(組件輸出,綠色標記)和 Ndot(來自軸)多路複用,並將信號路由到求解器塊的 f(x) 輸入。將求解器塊的輸出 X 進行解多路複用,並將每個獨立變量路由到組件塊的深綠色輸入之一;其中一個獨立變量應路由到軸塊的 NMech 輸入。在這個示例中,有四個獨立變量和四個因變量,如圖 15 所示,在求解器輸入和輸出處已添加顯示塊,幫助確定求解器是否已收斂到一個解。

  2. 設置求解器參數
    一旦信號連接完成,應該定義求解器的掩碼參數;這些參數包括初始條件、終止條件以及影響求解器準確度的其他值。請參閲示例中的參數值,以用於該模型。

圖片描述

圖 15. 穩態求解器設置

  1. 配置求解器
    打開仿真配置窗口(在 Simulink 菜單欄中選擇 Simulation -> Model Configuration Parameters),選擇一個固定步長的離散求解器,並指定起始時間和停止時間,以及固定的步長大小。(更多關於配置仿真求解器的信息,請參見第 11.1 節的教程。)

  2. 運行仿真
    一旦引擎模型已創建並連接到求解器,點擊菜單欄中的運行按鈕即可啓動仿真。在仿真完成後,應檢查顯示塊以確認是否收斂。從表 13 可以看到,示例 2 中的獨立變量和因變量正在朝着收斂目標推進(即流量誤差接近零)。

表 13. 示例 2 收斂輸出

獨立變量 獨立請求(值) 因變量 誤差(因變量值)
W(系統輸入) 101.2 pps 正規化流量誤差 噴嘴 6.413e-06
R-line(壓縮機) 1.955 正規化流量誤差 壓縮機 6.379e-06
PRmap(渦輪機) 3.054 psia/psia 正規化流量誤差 渦輪機 4.884e-06
Nmech(軸) 9980 rpm Ndot(軸) 0.007742 rpm/sec

由於穩態燃氣渦輪示例需要定義大量的塊參數,示例使用了一個設置腳本(文件名後綴為 “_setup_everything”)。運行此腳本後,它會創建通向 SimSetup 文件夾的路徑,並運行該文件夾中的所有文件,這些文件會在工作區中創建變量 MWS。MWS 是一個 MATLAB 數據結構,包含示例中使用的許多變量,您可以使用以下語法訪問它們:MWS.Component.Variable(例如,MWS.HPC.s_Wc 可用來訪問 HPC 中 Wc 映射的標量)。當仿真運行時,Simulink 會在 MATLAB 工作區中查找 MWS 並加載所需的變量。該示例已配置為在關閉模型文件時通過運行清理腳本自動刪除臨時路徑(由設置腳本創建)。

11.3 T-MATS 示例 3: Example_GasTurbine_Dyn

儘管 T-MATS 能夠解決穩態條件,但它的最終目的是在動態仿真環境中使用。本節將介紹如何使用 T-MATS 塊創建動態燃氣渦輪仿真,並演示用户在開發新仿真時可能希望使用的各種 MATLAB 實踐。此示例包含在 T-MATS 示例部分中(GasTurbine_Dyn_Template.slx)。

在嘗試重建動態燃氣渦輪仿真示例之前,用户應閲讀前兩個示例,因為本示例將跳過其中涉及的某些主題,特別是在建模結構方面,假設已經根據第 11.2 節的説明構建了引擎plant模型,該節介紹了穩態燃氣渦輪仿真。

11.3.1 一般架構

在 T-MATS 中實現動態求解器需要至少設置兩個獨立的循環。這個示例使用了一個“內循環”,用於求解收斂性,和一個“外循環”,用於在時間上步進。內循環包括plant和求解器,並且是從因變量求解獨立變量的地方。外循環設置了仿真的動態部分,表示系統隨時間的演變,在每個時間步上進行收斂。創建這種嵌套循環時需要採用分層方法(有關更多細節,請參見第 6.1 節)。

11.3.1.1 創建動態仿真框架
  1. 設置內循環
    從上一節描述的穩態模型開始,在模型中放置一個 Simulink: While Iterator Subsystem。進入子系統,並雙擊 Simulink: While Iterator 塊以打開參數窗口。進行以下更改:將最大迭代次數設置為 -1,將循環類型更改為“do-while”,並勾選“Show iteration number port”選項。

  2. 為動態仿真準備穩態模型
    刪除 Simulink: While Iterator Subsystem 中的默認輸入和輸出端口。複製並粘貼整個穩態模型(plant和求解器塊)到子系統中。在此步驟中,將plant放置在 While Iterator 子系統中的單獨子系統內可能會有所幫助,如圖 16 所示,在這裏低級的燃氣渦輪組件被放置在 InnerLoopPlant 子系統中。

  3. 添加動態求解器
    用 TMATS: Iterative NR Solver w JacobianCalc 塊替換 TMATS: SS NR Solver w JacobianCalc 塊,並將 T-MATS 求解器的 do_while_Condition 輸出連接到 Simulink: While Iterator 塊的 cond 輸入,將 Simulink: While Iterator 塊的輸出連接到 T-MATS 求解器塊的 Iterations 輸入,如圖 16 所示。

  4. 設置求解器
    在動態仿真中,軸速不是求解器的獨立變量;通過移除 Ndot(從求解器塊的輸入端)和 NMech(從塊的輸出端),來減少系統的階數,同時將 Ndot 路由到模型的外循環,並從外循環創建一個輸入(對於 NMech)到plant模型。(可以使用總線選擇器來路由信號;有關此修改的更多信息,請參見第 11.3.4.1 節。)

圖片描述

圖 16. Iterative NR Solver w JacobianCalc 線路連接。

  1. 設置外循環
    在 While Iterator 子系統外,將 Ndot 路由到來自“Solver”子庫的 TMATS: OuterLoop 積分器塊的輸入(可以使用總線選擇器),並將積分器塊的輸出路由到plant(內循環)的 NMech 輸入。為了加速修改模型的速度,在運行多個仿真時,環境輸入(到 TMATS: Ambient 塊)和燃料流量輸入(到 TMATS: Burner 塊)也可以從外循環路由到內循環。可以使用總線創建器將這些信號與 NMech 組合,如圖 17 所示,從而生成更清晰的模型。

  2. 定義plant輸入
    可以通過將 TMATS: Model Source 塊(來自“Solver”子庫)連接到相應的輸入來定義環境輸入和燃料流量。 這些塊的掩碼參數包括時間向量和定義信號在每個時間點取值的向量;可以通過這些輸入定義仿真配置文件。

圖片描述

圖 17. 動態燃氣輪機簡單“外循環”迴路。

11.3.2 向仿真中添加控制

本節將介紹如何向 T-MATS 仿真中添加一個簡單的反饋控制器,該控制器使用軸速作為反饋信號。

  1. 為控制器準備開環模型
    用 TMATS: Model Source 塊替換燃料流量 TMATS: Model Source 塊,改為用於軸速的 TMATS: Model Source 塊,並在模型的外循環中放置一個 TMATS: Simple PI controller 塊(來自“Effectors and Controls”子庫)。

  2. 連接控制器
    將外循環積分器塊的輸出 Nmech 連接到 PI 控制器的 Input_sensed 輸入(這可能需要添加一個 Simulink: Zero-Order Hold 塊來採樣 Nmech)。同時,將軸速的 TMATS: Model Source 塊的輸出連接到 PI 控制器的 Input_dmd 輸入,如圖 18 所示。PI 控制器塊的輸出應連接到內循環燃燒器塊的燃料流量輸入(即,位於 Simulink: While Iterator 塊子系統內)。

  3. 調節控制器
    可以調節控制器的增益(在掩碼參數中定義),直到獲得期望的響應。需要注意的是,儘管 PI 控制器在簡單的燃氣渦輪中可能功能足夠,但它並不代表一個現實的燃氣渦輪控制器,並且沒有能力在沒有重大修改的情況下考慮多變量約束。

圖片描述

圖 18. 帶控制器的動態燃氣渦輪

11.3.3 plant與外循環系統接口

在實際系統中,發動機效應器和內部狀態需要通過控制系統硬件進行訪問。T-MATS 包提供了通用的控制器接口塊,如“Effectors and Controls”子庫中的一階傳感器和執行器塊,可以用來模擬增加硬件帶來的動態。這些塊可以添加到模型的“外循環”中,以提高仿真精度。

11.3.4 高級仿真結構與格式化

動態燃氣渦輪示例使用了一些可選的結構化和格式化技術,這些技術有助於組織和分割仿真。當開發複雜模型或多個開發人員共同創建模型時,這些選項非常有用。以下技術基於 MATLAB/Simulink 塊,與 T-MATS 包無關。

11.3.4.1 總線(Busses)

總線是一種有效的方式,通過 Simulink 模型傳遞信號,並保持圖示清晰。

創建總線:

  1. 在模型中放置一個 Simulink: Bus Creator 塊。任何輸入到該總線創建器的信號都會被加入到總線,並與輸入到總線創建器的線的名稱相關聯。(請注意,如果總線僅限於單個模型,則此步驟是唯一需要的。)
  2. 可以使用總線編輯器(在編輯菜單中找到)來創建總線元素。在 Simulink 圖示中創建的總線也應在總線編輯器中創建,並注意按照它們在 Simulink 圖示中出現的順序組織元素。
  3. 創建總線後,在總線編輯器中,選擇“文件”菜單中的“導出到文件”選項。這樣會將總線保存到一個文件中,該文件必須在打開 Simulink 模型之前加載。(例如,GasTurbine_Dyn_Template 示例的 setup_everything.m 腳本會從 Bus 文件夾中加載所有必要的總線元素。)
  4. 如果之後需要向總線中添加任何元素,必須重複這些步驟(即打開總線編輯器,添加新項,然後將新項保存到文件中)。

使用總線:

  1. 可以通過 Simulink: Bus Selector 塊將總線元素從總線中路由出來。只需將總線連接到選擇器,然後使用對話框選擇要輸出的總線元素。
11.3.4.2 模型調用(Model Calls)

模型調用可用於將外部文件引入到 Simulink 模型中。這種分割方式有三個主要優點:它允許多個用户同時工作在仿真中(前提是他們不需要同一個文件),它使軟件版本控制更清晰,並且它支持模型的重用。

設置模型調用需要將一個來自“Ports and Subsystems”子庫的 Simulink: Model 塊放入模型中。放置塊後,應在雙擊塊打開的對話框中指定要調用的模型文件名。在動態求解器的燃氣渦輪示例中,調用了外部的plant和控制模型。仿真可以使用帶有總線的 Simulink: Model 塊,這要求遵循總線對象創建方法。

模型調用還可以用於在多個仿真環境中模擬plant。例如,可以創建一個穩態仿真環境和一個動態仿真環境,它們都引用同一個plant。這樣,您只需修改一個文件(包含plant模型),這些更改將在兩個仿真環境中得到反映。

12 致謝

作者感謝 N & R Engineering 的 Alicia Zinnecker 和 Yuan Liu,以及 NASA Glenn Research Center 的 Jeffrey Csank,在 T-MATS 測試和技術諮詢方面的貢獻。我們還要感謝 NASA Glenn Research Center 的 Sanjay Garg 對 T-MATS 開發的支持,以及 NASA 航空安全計劃的飛行器系統安全技術(VSST)項目對本工作提供的資助。

/譯者注:翻譯僅供參考,與真實含義可能有所差異。/

user avatar densen2014 头像
点赞 1 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.