電気回路

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > SysMLパラメトリック図のシミュレーション > SysML シミュレーションのサンプル >

電気回路

ここでは、パラメトリック図のシミュレーションのサンプルを紹介します。

 

 

サンプルの題材

今回のサンプルとなるモデルを一般的な電気回路の記号で表現すると、下の図のようになります。

 

 

 

この回路にはAC電源と抵抗があり、接地されています。それぞれが配線で繋がれています。

 

 

SysMLモデルの作成

次の表では、この内容をシミュレーションするために作成するSysMLモデルを説明しています。

 

項目

説明

シミュレーションで扱うバリュー型であるVoltage, Current, Resistanceを定義します。バリュー型のquantity kindの値は、シミュレーションにおいては設定する必要はありません。これらのバリュー型は、プリミティブ型であるRealを継承して作成しています。実際にシミュレーションのモデルを作成する場合には、適切なプリミティブ型を継承する必要があります。

 

 

さらに、ChargePortという名前の複合型を定義しています。ここには、2つのフロープロパティを含んでいます。これらの型はCurrentとVoltageです。これにより、モデルを構成する要素間の接点における電気エネルギーを表現することができます。

 

ブロック

SysMLでは、回路やその構成要素はすべてブロックとして表現します。ブロック定義図(BDD)内にCircuitという名前のブロックを作成します。このブロックは、3つの構成要素source, ground, registorを持ちます。これらの3つの構成要素はそれぞれ異なる型であり、異なる振る舞いを持ちます。それぞれのブロックを作成します。

この2つの部品は、回路とポートでつながります。ポートは、電気が流れるピンに該当します。sourceとresistorは正と負のピンを持ちます。groundは1つのピンのみを持ち、正の値です。電気はこのピンを通じて流れます。

ここでは、2つのポートを持つ抽象ブロックTwoPinComponentを定義しました。それぞれのポートの名前はpとnです。これらのポートの型はChargePortです。

 

次の図が、定義した後のブロック定義図の内容です。

内部構造

次に、Circuitブロックの内部ブロック図(IBD)を作成します。この中に、3つのブロックのプロパティを配置します。そして、ポート間をコネクタで接続します。例えば、source要素の正のピン(p)は、registor要素の負のピン(n)と接続します。同様に、下の図のように接続します。

 

 

この図を見ると、元の電器回路図と同じような構成になっていることに気付くかと思います。ただし、それぞれの記号はプロパティ要素で表されています。

制約

数学における方程式は、複数の数値プロパティの間の関係を定義するものです。SysMLで同様の定義をする場合には、制約ブロック内の制約を利用します。制約ブロック内のプロパティはSimVariablesとSimConstantに対応します。SimVariableはポートに対応します。

 

具体的な手順としては、まず制約ブロックTwoPinComponentConstraintを作成します。この中で制約を定義します。このブロック内に制約として、ピンが満たすべき制約を式として定義します。また、同様にGroundConstraintを作成し、ピンの電圧が0であることを示す制約を追加します。

 

制約を追加した結果のブロック定義図は次の通りです。

束縛コネクタ

制約パラメータの値を変数や制約値と等しいと定義するためには束縛コネクタを利用します。それぞれのブロックに制約プロパティを定義し、ブロックの変数と束縛コネクタを利用して結びつけます。これにより、定義した制約とブロックを関連付けます。次の図は、それぞれのブロックにおける制約を定義した結果です。

 

Ground制約では、gc.pvとp.cflowsim.vを結びつけています。

 

Source制約では、sc.pi と p.cflowsim.i を、 sc.pv と p.cflowsim.v を、sc.v と v を、sc.i と i を、sc.ni と n.cflowsim.i を、そして sc.nv と n.cflowsim.v とを結びつけています。

 

 

Resistor制約では、rc.pi と p.cflowsim.i を、rc.pv と p.cflowsim.v を、rc.v と v を、rc.i と i を、rc.ni と n.cflowsim.i を、rc.nv と n.cflowsim.v を、そして rc.r と r を結びつけました。

 

 

シミュレーションの振る舞いの設定

次の表は、このサンプルにおいて実施したシミュレーションの設定です。

 

SysMLシミュレーションの設定要素の設定

  • ツールボックスのシミュレーショングループから、SysMLシミュレーションの設定要素を新規に作成
  • このモデルが含まれるパッケージを対象として指定

一覧に表示される要素の種類

  • ValueType
  • block
  • constraintBlock

ValueTypeの型の指定

Current, Resistance および Voltage のValueTypeを展開し、Valueの設定で 'SysMLSimReal' を指定してください。

プロパティをフローとして指定

  • block | ChargePort | FlowProperty | i : Currentを展開し、"SimVariable"を指定
  • 参照""ボタンを押し、シミュレーションの設定ダイアログを開く
  • "isConserved"を"true"に設定

SysMLSimModel

ブロック"Circuit"を、シミュレーション対象であることを示すSysMLSimModelとして指定

 

 

シミュレーションの実行

SysMLシミュレーションの設定タブで、resistor.n.v と resistor.p.v をプロット対象として選択し、実行ボタンを押します。

 

 

2つのパラメータresistor.n.v と resistor.p.v が次のように計算されます。