バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回、DCモータモデルのparameter部を確認。
以前はReal型で書いたが、
実はSI単位系で定義されている型が存在。
こちらを使った方がシミュレーション時に物理単位が表示されるので便利。
今回は、モデル宣言部を見て行く。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
Modelicaコード モデル宣言部
次はモデル宣言部だね。
まずはコードを見てみよう。
Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm(
VaNominal=dcpmData.VaNominal,
IaNominal=dcpmData.IaNominal,
wNominal=dcpmData.wNominal,
TaNominal=dcpmData.TaNominal,
Ra=dcpmData.Ra,
TaRef=dcpmData.TaRef,
La=dcpmData.La,
Jr=dcpmData.Jr,
useSupport=false,
Js=dcpmData.Js,
frictionParameters=dcpmData.frictionParameters,
coreParameters=dcpmData.coreParameters,
strayLoadParameters=dcpmData.strayLoadParameters,
brushParameters=dcpmData.brushParameters,
TaOperational=293.15,
alpha20a=dcpmData.alpha20a,
phiMechanical(fixed=true),
wMechanical(fixed=true),
ia(fixed=true)) annotation (Placement(transformation(extent={{-20,-50},
{0,-30}})));
Modelica.Blocks.Sources.Ramp ramp(
duration=tRamp,
height=Va,
startTime=tStart) annotation (Placement(transformation(extent={{-80,
60},{-60,80}})));
Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage
annotation (Placement(transformation(extent={{0,30},{-20,50}})));
Modelica.Electrical.Analog.Basic.Ground ground annotation (Placement(
transformation(
origin={-70,40},
extent={{-10,-10},{10,10}},
rotation=270)));
Modelica.Mechanics.Rotational.Components.Inertia loadInertia(J=JLoad)
annotation (Placement(transformation(extent={{40,-50},{60,-30}})));
Modelica.Mechanics.Rotational.Sources.TorqueStep loadTorqueStep(
startTime=tStep,
stepTorque=-TLoad,
useSupport=false,
offsetTorque=0) annotation (Placement(transformation(extent={{90,-50},
{70,-30}})));
宣言されているモデル
まずは宣言されてるモデルを確認すると・・・。
- DC_PermanentMagnet
- Ramp
- SignalVoltage
- Inertia
- TorqueStep
まぁOpenModelica Connection Editorで設置しているのと一緒だよね。
ホント?
足りてる??
ん?
あ!!
DcPermanentMagnetData
ってのがモデル宣言部にいない!!
でも、よく見たらすぐ下に記載されてる。
parameter Utilities.ParameterRecords.DcPermanentMagnetData dcpmData
annotation (Placement(transformation(extent={{-20,-80},{0,-60}})));
でも、これはモデルじゃなくてparameterってことになってるなー。
フクさんの「見るべきポイント」でもDcPermanentMagnetDataは別枠だったし、
とりあえず置いておくかー。
そうだね。
一旦置いておくと良いだろう。
モデル初期値
で、モデル初期値がそれぞれ渡されてるんだけど・・・。
あれ?
DC_PermanentMagnetに渡されてる初期値って、
parameter部で宣言されたものじゃなくて、
DcPermanentMagnetDataのメンバ変数みたいなのが渡されてる????
ふむ。
大分混乱してきたみたいだな。
DcPermanentMagnetDataって何者?!
コイツのせいで説明が上手くまとまらない。
ちょっと邪魔なんだけど!
まぁ説明上は邪魔かもしれないけど、
これが無いと結構面倒なことになるよ?
面倒な事?
まぁそこは次回説明しよう。
まとめ
まとめだよ。
- Modelicaコード モデル宣言部を確認した。
- 以下が存在しており、OpenModelica Connection Editor上にもある。
- DC_PermanentMagnet、Ramp、SignalVoltage、Inertia、TorqueStep。
- 以下が存在しており、OpenModelica Connection Editor上にもある。
- DcPermanentMagnetDataが特殊な位置づけ。
バックナンバーはこちら。
コメント