【Modelica】最小構成のMBD事例 第2章 その28【DCモータ⑤】

【Modelica】最小構成のMBD事例 第2章 その28【DCモータ⑤】 事例
【Modelica】最小構成のMBD事例 第2章 その28【DCモータ⑤】

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

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました