メインコンテンツ

Simscape 言語での線形抵抗のモデル化

線形抵抗を例として、Simscape™ 言語でのモデル化の仕組みについて説明します。

線形抵抗は単純な電気コンポーネントであり、次の方程式で記述されます。

V=I·R

ここで、

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 コンポーネント ファイルからのカスタム ブロックの生成

参考

トピック