このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Simulink の単位の取り扱い
Simulink® 信号には物理単位を指定できます。詳細については、Simulink の単位を参照してください。
Simulink-PS Converter や PS-Simulink Converter などのインターフェイス ブロックは、Simscape™ 物理ネットワークとそれに接続する Simulink ブロックとの境界を扱います。これらのコンバーター ブロックは、物理量信号の単位変換も扱います。
Simulink-PS Converter ブロックで、[入力信号の単位] パラメーターを使用して単位を指定します。この単位は、ブロックの [PS] 出力端子における物理量信号の単位と相応する必要があり、これは物理ネットワーク内の信号接続先から推定されます。[入力信号の単位] パラメーターにより情報を渡された Simscape 単位マネージャーは必要な単位変換を行い、それに応じて信号値をスケーリングします。
PS-Simulink Converter ブロックで、[出力信号単位] パラメーターを使用して単位を指定します。この単位は、ブロックに入る入力物理量信号の単位に相当するものでなければなりません。このブロックは、変換係数と等しいゲインを適用してから Simulink 信号を出力します。
Simulink-PS Converter ブロックまたは PS-Simulink Converter ブロックに接続された Simulink 信号に物理単位を指定すると、ソフトウェアはこの単位をブロック内に指定された単位と比較します。パラメーター値が、ブロックに接続された Simulink 信号の物理単位と一致しない場合は、警告が表示されます。
関数 pm_addunit
を使用して Simscape 単位レジストリに新しい単位を追加し、この単位を Simulink-PS Converter ブロックまたは PS-Simulink Converter ブロックで使用すると、次のようになります。
単位定義が Simulink データベースの単位定義と競合すると、互換性のない単位に関する警告が表示されます。
Simulink データベースに存在しない単位を追加すると、未定義の単位に関する警告が表示されます。
これらの警告は Simulink データベースにのみ適用されることに注意してください。Simscape 物理ネットワークは想定どおりに機能します。
たとえば、モーター回転数を 1 分あたりの回転数 (rpm
) ではなく 1 秒あたりの回転数として表示するとします。
rpm
に基づいて定義した新しい単位rps
を追加します。pm_addunit('rps', 1/60, 'rpm');
「永久磁石の DC モーター」モデル例を開くには、MATLAB® コマンド ウィンドウに以下を入力します。
ssc_dcmotor
モデルのシミュレーションを実行します。Motor RPM スコープ ウィンドウでシミュレーションの結果を調べます。
Sensing サブシステム (ブロック線図では
w
) を開き、PS-Simulink Converter ブロックをダブルクリックして、[出力信号単位] パラメーターの値として「rps
」と入力します。シミュレーションを再実行します。
モデルが正しく機能し、スコープには 1 秒あたりの回転数の結果が表示されます。
ただし、PS-Simulink Converter ブロックの Simulink 出力信号には警告バッジが付き、
The units 'rps' are undefined
というメッセージが表示されます。詳細メッセージによって、単位が Simulink 単位データベースに定義されていないことが説明されています。pm_getunits
コマンドを発行すると、返される単位リストにrps
があるのがわかります。これは、単位が Simscape 単位レジストリに正しく定義されたことを意味します。言い換えれば、警告は Simulink 単位チェックにのみ適用されます。単位の一貫性に関する警告をオフにするには、MATLAB コマンド ウィンドウに以下を入力します。
set_param('ssc_dcmotor','UnitsInconsistencyMsg','none');
単位の一貫性に関する警告を回避する別の方法は、同じ単位を Simulink 単位データベースに追加することです。カスタムの Simulink 単位データベースを作成して読み込む方法の詳細については、カスタム単位データベースの取り扱いを参照してください。