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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回まではmassモデルをベースにシンプルなシミュレーションをしてきた。

今回からはDCモータのModelicaモデルを使用していろいろやっていくことになる予定。
一応、サンプルがあるのでそれほどがっちり理論からやるってイメージではない。
「どう利用するか」って方がメインとするつもりではいる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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のDCモータモデル

太郎くん
太郎くん

えーっと、
前回までは超シンプルなmassモデルをやってきたけど
今回からはDCモータモデルをやるんだっけ?

フクさん
フクさん

そうそう。

太郎くん
太郎くん

前回の話だとサンプルがすでにあるようなこと言ってたけど、
どこにあるの???

フクさん
フクさん

OpenModelica Connection Editorのライブラリブラウザで探していくと・・・。

Modelica→Electrical→Machines→Examples→DCMachines→DCPM_Start

にある。

OpenModelica、Modelica.UsersGuide、Modelica.Blocks、Modelica.ComplexBlocks、Modelica.StateGraph、Modelica.Electrical、Modelica.Electrical.Analog、Modelica.Electrical.Digital、Modelica.Electrical.Machines、Modelica.Electrical.Machines.UsersGuide、Modelica.Electrical.Machines.Examples、Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines、Modelica.Electrical.Machines.Examples.SynchronousInductionMachines、Modelica.Electrical.Machines.Examples.DCMachines、Modelica.Electrical.Machines.Examples.DCMachines.DCPM_Start
太郎くん
太郎くん

これか!

OpenModelica、Modelica.Blocks.Sources.Ramp、Modelica.Electrical.Analog.Sources.SignalVoltage、Modelica.Electrical.Analog.Basic.Ground、Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm、Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData dcpmData、Modelica.Mechanics.Rotational.Components.Inertia loadInertia、Modelica.Mechanics.Rotational.Sources.TorqueStep loadTorqueStep
フクさん
フクさん

それそれ。

まずはシミュレーション

フクさん
フクさん

まぁいろいろ弄ることにはなるのだけど、
まずは素の状態でシミュレーションしてみよう。

太郎くん
太郎くん

一応、シミュレーションは通ったけど、
どのパラメータを表示したらいいのかな?

フクさん
フクさん

そうだねー。

  • 制御電圧\([V]\)
  • 制御電流\([A]\)
  • 角速度\([rad/s]\)

くらいは見ておこうか。

太郎くん
太郎くん

で、どこを見れば・・・。
パラメータが無茶苦茶一杯あってどこに何があるのかがさっぱりだよー。

フクさん
フクさん

変数ブラウザ上だと
制御電圧は
signalVoltage→v
制御電流は
signalVoltage→i
角速度は
loadInertia→w
だね。

OpenModelica、Load's moment of inertia、Nominal load torque、Actual armature voltage、Moment of inertia、Absolute angular acceleration of component (= der(w))、Absolute rotation angle of component、Absolute angular velocity of component (= der(phi))、Current flowing from pin p to pin n、Voltage between pin p and n (= p.v - n.v) as input signal、Armature voltage ramp、Start of armature voltage ramp、Time of load torque step
太郎くん
太郎くん

あ、あった。
これをグラフで表示させればいいんだね。

OpenModelica、DCモータ、角速度、制御電圧、制御電流
フクさん
フクさん

うん。
ランプ関数を入力とした電圧制御してるだけのモデルなんで、
シミュレーション結果としてはOKだ。

ランプ関数とは?

太郎くん
太郎くん

ランプ関数?
なんだっけ?

フクさん
フクさん

これだな。

ランプ関数(英: ramp function)とは、一変数の実関数であり、独立変数とその絶対値の平均として容易に求められる。区分線形関数。この関数は工学において(DSPの理論など)応用を持つ。”ramp function”の名は、グラフの形状が傾斜路(英: ramp)に似ていることに由来する。

Wikiepdiaより(https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%97%E9%96%A2%E6%95%B0)

$$R(x):=\begin{cases} x,x\geq 0 \\ 0, x<0 \end{cases}$$

ランプ関数(英: ramp function)とは、一変数の実関数であり、独立変数とその絶対値の平均として容易に求められる。区分線形関数。この関数は工学において(DSPの理論など)応用を持つ。"ramp function"の名は、グラフの形状が傾斜路(英: ramp)に似ていることに由来する。
太郎くん
太郎くん

あー。
とりあえず、徐々に値が上がっていくだけって関数か。

フクさん
フクさん

そうそう。
まぁ今回のは100でリミットが掛かってるけどね。

DCモータモデルをシミュレーションした感想

太郎くん
太郎くん

いやー、でもDCモータモデルがすでにあって、
シミュレーションもできちゃうのかー。
ScilabとかSimulinkで頑張ってたのは一体なんだったのだろう。
っておもっちゃう。

フクさん
フクさん

まぁ今回のはあくまでDCモータモデルで制御の話まではやってないからねー。
制御込みになると、ScilabとかSimulinkの方がやり易いし。

太郎くん
太郎くん

なるほど。
得手不得手とかはありそうだよね。

まとめ

フクさん
フクさん

まとめだよ。

  • ModelicaのDCモータモデルのサンプルの位置をライブラリブラウザで確認。
  • DCモータモデルをとりあえずシミュレーション。
    • 制御電圧、制御電流、角速度の結果を確認。
  • 今回は電圧をランプ関数で制御したシンプルなもの。
    • ランプ関数は0を起点に徐々に上がっていく関数。

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

コメント

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