圧縮機マップ
この例では、動的圧縮機の性能特性を指定するために必要な圧力比、補正済み質量流量、および効率のテーブルを作成する方法を示します。
open_system('CompressorMap')
圧縮機マップの使用
圧縮機マップは "M" 行 "N" 列の行列であり、行数 "M" は補正済み速度の数と同じで、列数 "N" は各補正速度線に沿った点の数と同じです。これらの行列のインデックス ベクトルは、長さ "M" の補正済み速度ベクトルと、値の範囲が 0 ~ 1 の長さ "N" の補助座標系パラメーター β のベクトルです。
次の図は圧縮機マップを示しています。この例では、この圧縮機マップを使用してCompressor (G)ブロックをパラメーター化します。

圧縮機マップ データの抽出
圧縮機ブロックのデータを使用して Simscape™ 圧縮機ブロックをパラメーター化するには、マップ データを数値に変換し、マップ イメージに含まれている情報を整理します。圧縮機マップからデータをインポートするには、グラフ データ エクストラクターアプリを使用します。データは次の 2 つの個別タスクでプルします。
各一定速度線に沿った点を選択して、圧縮機の補正済み質量流量と圧力比のデータを抽出します。
各効率レベルの点を選択して、圧縮機の効率データを収集します。このデータは、特定の効率で有効な補正済み質量流量と圧力比の点の集合です。その後、タスク 1 で収集したデータと一致するようにこのデータを内挿します。
データ セットが空のエントリのない方形行列であることを確認するには、一定速度線ごとおよび効率レベルごとに同じ数の点を選択します。ただし、速度線と効率レベルの点は同じ数である必要はありません。
一定速度線からの流量と圧力比の値の抽出
グラフ データ エクストラクター アプリを使用して圧縮機マップ イメージを読み込み、座標軸のスケーリングを特定します。一定速度線ごとに同じ数の点を選択します。点を各速度線に沿って反時計回りにサンプリングします。該当する場合はチョーク線から始めて、赤い点線のサージ線で終了します。次のイメージは、2500 rpm のデータについて選択された点を示しています。

選択する点は可能な限り等間隔にします。定義されたマップ空間内における流量と圧力比の点のグリッドが規則的であるほど、効率の定義と Simscape 圧縮機での使用の両方を目的として、マップをより滑らかに内挿できます。圧縮機マップに含めるすべての一定速度線のデータ点を選択します。グラフ データ エクストラクター アプリからデータをエクスポートし、MAT ファイルとして保存します。
効率の等高線の収集
グラフ データ エクストラクター アプリを使用して、効率の各等高線レベルの補正済み質量流量と圧力比のデータを含む MAT ファイルを作成します。点を特定の順序で選択したり特定の点から始めたりする必要はありませんが、点を時計回りまたは反時計回りの方向に選択することをお勧めします。次のイメージは、80% の効率の等高線について選択された点を示しています。

すべての等高線の点を選択します。等高線が途切れている可能性があります。架空の点を追加しないでください。点を選択した順序に関係なく、グラフ データ エクストラクター アプリは "x" 値に基づいて点を自動的に並べ替えて接続しますが、これはインポートされたマップ データには影響しません。
グラフ データ エクストラクター アプリからデータをエクスポートして保存します。この例では、生成された MAT ファイルで LineNNNN.mat および EffXX.mat という命名規則が使用されると仮定します。ここで、"NNNN" と "XX" はそれぞれ一定速度線の rpm 値と効率の割合を指します。
データの読み込み
これで、データから圧縮機マップを作成できるようになりました。この例では、CompressorMapSpeedLines.mat ファイルに速度線の MAT ファイルが 7 つ含まれ、CompressorMapEfficiencyData.mat ファイルに効率の等高線の MAT ファイルが 6 つ含まれています。
% Load constant speed line data load('CompressorMapSpeedLines.mat') % Create matricies for corrected mass flow rate and pressure ratios mdot_TLU = [Line1000(:,1)'; Line1500(:,1)'; Line2000(:,1)'; Line2500(:,1)'; Line3000(:,1)'; Line3500(:,1)']; pr_TLU = [Line1000(:,2)'; Line1500(:,2)'; Line2000(:,2)'; Line2500(:,2)'; Line3000(:,2)'; Line3500(:,2)']; % Create corrected speed and beta index vectors - must be the dimensions of MDOT_TLU and PR_TLU above % Values taken from the constant speed lines omega_TLU = [1000, 1500, 2000, 2500, 3000, 3500]; % Beta ranges from 0 to 1. Length = number of points taken along each constant speed line beta_TLU = linspace(0,1,7); % Load efficiency data load('CompressorMapEfficiencyData.mat') % Organize efficiency data for use in scatteredInterpolant Efficiency80 = [Eff80, 0.80 .* ones(length(Eff80),1)]; Efficiency82 = [Eff82, 0.82 .* ones(length(Eff82),1)]; Efficiency84 = [Eff84, 0.84 .* ones(length(Eff84),1)]; Efficiency86 = [Eff86, 0.86 .* ones(length(Eff86),1)]; Efficiency88 = [Eff88, 0.88 .* ones(length(Eff88),1)]; Efficiency90 = [Eff90, 0.90 .* ones(length(Eff90),1)]; Efficiency = [Efficiency80; Efficiency82; Efficiency84; Efficiency86; Efficiency88; Efficiency90]; % Interpolate efficiency data onto the corrected mass flow rate and % pressure ratio locations - this allows the same corrected speed and beta % values to be used for all three tables F = scatteredInterpolant(Efficiency(:,1), Efficiency(:,2), Efficiency(:,3), 'linear', 'linear'); eta_TLU = F(mdot_TLU, pr_TLU); figure [C, h] = contour(mdot_TLU, pr_TLU, eta_TLU, 0.80:0.02:0.9); clabel(C, h, 'LabelSpacing', 350) h.DisplayName = 'Isentropic Efficiency'; title('Interpolated efficiency contours') xlabel('Corrected mass flow rate g/s') ylabel('Pressure ratio') axis([0 0.7 1 4]) xticks([0.1 0.2 0.3 0.4 0.5 0.6 0.7]) yticks([1 1.5 2 2.5 3 3.5 4]) grid on

この等高線図は、内挿された効率の等高線がソース データと一致することを示しています。また、点が圧縮機ブロックで使用できる形式になっています。生成された圧縮機マップの等高線が過度に単純化されている場合や、主要な詳細情報が欠落している場合は、より密度の高いメッシュを使用してデータを選択し直します。各速度線に沿って点を追加選択したり、推定される追加の速度線に沿って点を選択したり、効率の各等高線レベルのデータ点を追加選択したりすることが必要になる場合があります。
このプロセスによりデータが内挿されるため、精度の損失が発生する可能性があります。この精度の損失を回避する唯一の方法は、マップの生成に使用された元の生テスト データを取得することです。このようなデータには、さまざまな操作条件と速度における補正済み質量流量、圧力比、および効率値の完全な集合が含まれているはずです。このデータと圧縮機ブロックで使用されるデータは、補正済み速度で定義される補助座標系と補助座標 β で指定されます。
Simscape での圧縮機マップの実装
この例では、Compressor (G) ブロックは圧縮機マップから生成された次のワークスペース変数を使用します。
omega_TLUbeta_TLUpr_TLUmdot_TLUeta_TLU

このモデルでは、基準温度と基準圧力は入口タンク温度と大気圧に設定されています。したがって、補正係数が 1 に等しいため、補正済み質量流量と補正済み速度の値は理想的な角速度源の未補正値と同じです。このモデルでは、圧縮機の指令速度を上げることで、一定体積チャンバーの圧力を上げます。
% Simulating model sim('CompressorMap') % Since Pressure and Temperature at A are at reference, mdot_A = mdot_corrected in grams/s mdot_corrected = simlogCompressorMap.Compressor_G.mdot_A.series.values('g/s'); % Pressure Ratio PR = simlogCompressorMap.Compressor_G.B.p.series.values ./ simlogCompressorMap.Compressor_G.A.p.series.values; % The code below plots the compressor map using the same function as the % Simscape block available by right clicking on the block and selecting % Fluid > Plot Compressor Map handle = getSimulinkBlockHandle('CompressorMap/Compressor (G)'); fluids.internal.mask.plotCompressorMap(handle) hold on % Plot operating line of compressor transient plot(mdot_corrected, PR,'g','DisplayName','Operating Line')

ブロックの圧縮機マップは元のソース マップと一致します。内挿プロセスによりエラーが発生しますが、点を適切に選択することで影響を最小限に抑えることができます。
