Simscape 言語での線形抵抗のモデル化
線形抵抗を例として、Simscape™ 言語でのモデル化の仕組みについて説明します。
線形抵抗は単純な電気コンポーネントであり、次の方程式で記述されます。
ここで、
V | 抵抗にかかる電圧 |
I | 抵抗を流れる電流 |
R | 抵抗 |
このような線形抵抗を実装する Simscape ファイルは、次のようになります。
component my_resistor
% Linear Resistor
% The voltage-current (V-I) relationship for a linear resistor is V=I*R,
% where R is the constant resistance in ohms.
%
% The positive and negative terminals of the resistor are denoted by the
% + and - signs respectively.
nodes
p = foundation.electrical.electrical; % +:left
n = foundation.electrical.electrical; % -:right
end
variables
i = { 0, 'A' }; % Current
v = { 0, 'V' }; % Voltage
end
parameters
R = { 1, 'Ohm' }; % Resistance
end
branches
i : p.i -> n.i;
end
equations
assert(R>0)
v == p.v - n.v;
v == i*R;
end
end
Simscape ファイル my_resistor.ssc の構造を調べてみましょう。
最初の行では、これがコンポーネント ファイルであること、およびコンポーネント名が my_resistor であることを指定しています。
この行の後に続くオプションのコメントで、ブロック名をカスタマイズし、ブロック ダイアログ ボックス内の簡単な説明を指定しています。コメントは % 文字で始まります。
Simscape ファイルの次のセクションは、宣言セクションです。線形抵抗では、以下を宣言します。
2 つの電気ノード
pおよびn(それぞれ + 端子および – 端子用)。ファイル内で後で電気ドメインのスルー変数およびアクロス変数に接続されるスルー変数 (電流
i) およびアクロス変数 (電圧v)。コンポーネントの変数とノードの間の接続を指定することで、コンポーネントとドメインの変数を接続します。すべてのパブリック コンポーネント変数は、コンポーネント ファイルから生成されたブロックのダイアログ ボックスの [変数] タブに表示されます。ダイアログ ボックスに変数の名前がどのように表示されるかを指定するために、変数宣言の直後にコメント (
CurrentおよびVoltage) を使用しています。抵抗値を指定するパラメーター
R(既定値は1 Ohm)。このパラメーターは、コンポーネント ファイルから生成されたブロックのダイアログ ボックスに表示され、モデルのビルドやシミュレーションを行う際に変更できます。パラメーター宣言の直後にあるコメント (Resistance) で、ブロック パラメーターの名前がダイアログ ボックスにどのように表示されるかを指定しています。
branches セクションでは、コンポーネントのスルー変数とコンポーネントのノード (したがって、ドメインのスルー変数) との間の関係を確立します。i : p.i -> n.i ステートメントは、抵抗を流れる電流がノード p からノード n へ流れることを指定します。
最後のセクションには、方程式が含まれています。
assert構造は、抵抗値がゼロより大きいことをチェックすることで、パラメーターの検証を実行します。ブロック パラメーターが正しく設定されていない場合、assertはランタイム エラーをトリガーします。1 つ目の方程式
v == p.v - n.vは、コンポーネントのアクロス変数とコンポーネントのノード (したがって、ドメインのアクロス変数) との間の関係を確立します。抵抗にかかる電圧をノード電圧間の差として定義します。2 つ目の方程式
v == i*Rは、オームの法則に基づいた線形抵抗の動作を記述します。コンポーネントのスルー変数 (電流i)、アクロス変数 (電圧v)、およびパラメーターR間の数学的関係を定義します。これらの方程式で使用されている
==演算子は、左辺と右辺の式間の連続的な数学的等価性を指定します。つまり、方程式は代入を表すのではなく、左辺と右辺のオペランド間の対称的な数学的関係を表します。この方程式は、シミュレーション全体で連続的に評価されます。
次の図は、このコンポーネント ファイルに基づいて結果として生成されたカスタム ブロックを示しています。



Simscape ファイルの作成やテキストのコンポーネントからカスタム Simscape ブロックへの変換の詳細については、次の表を参照してください。
| 内容 | 参照先 |
|---|---|
| 宣言のセマンティクス、ルール、および例 | Declaring Domains and Components |
| コンポーネントの方程式の記述に関する詳細情報 | Defining Component Equations |
| コンポーネント ファイルへの注釈付けによる、生成されたブロックの外観と使いやすさの改善 | Customizing the Block Name and Appearance |
| コンポーネント ファイルからの Simscape ブロックの生成 | Simscape コンポーネント ファイルからのカスタム ブロックの生成 |