バックナンバーはこちら。
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が特殊な位置づけ。
バックナンバーはこちら。
 
 



コメント