バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回まではmassモデルをベースにシンプルなシミュレーションをしてきた。
今回からはDCモータのModelicaモデルを使用していろいろやっていくことになる予定。
一応、サンプルがあるのでそれほどがっちり理論からやるってイメージではない。
「どう利用するか」って方がメインとするつもりではいる。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
ModelicaのDCモータモデル
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
えーっと、
前回までは超シンプルなmassモデルをやってきたけど
今回からはDCモータモデルをやるんだっけ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうそう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
前回の話だとサンプルがすでにあるようなこと言ってたけど、
どこにあるの???
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
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](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/02_ライブラリブラウザDCモータ.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
これか!
![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](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/03_ModelicaDCモータモデル.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
それそれ。
まずはシミュレーション
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁいろいろ弄ることにはなるのだけど、
まずは素の状態でシミュレーションしてみよう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
一応、シミュレーションは通ったけど、
どのパラメータを表示したらいいのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そうだねー。
- 制御電圧\([V]\)
- 制御電流\([A]\)
- 角速度\([rad/s]\)
くらいは見ておこうか。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
で、どこを見れば・・・。
パラメータが無茶苦茶一杯あってどこに何があるのかがさっぱりだよー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
変数ブラウザ上だと
制御電圧は
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](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/04_ModelicaDCモータ変数ブラウザ.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
あ、あった。
これをグラフで表示させればいいんだね。
![OpenModelica、DCモータ、角速度、制御電圧、制御電流](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/05_シミュレーション結果ModelicaDCモータ-1024x524.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
うん。
ランプ関数を入力とした電圧制御してるだけのモデルなんで、
シミュレーション結果としてはOKだ。
ランプ関数とは?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ランプ関数?
なんだっけ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
これだな。
ランプ関数(英: 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)に似ていることに由来する。](https://www.simulationroom999.com/blog/wp-content/uploads/2021/06/06_Ramp関数.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
あー。
とりあえず、徐々に値が上がっていくだけって関数か。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうそう。
まぁ今回のは100でリミットが掛かってるけどね。
DCモータモデルをシミュレーションした感想
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
いやー、でもDCモータモデルがすでにあって、
シミュレーションもできちゃうのかー。
ScilabとかSimulinkで頑張ってたのは一体なんだったのだろう。
っておもっちゃう。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁ今回のはあくまでDCモータモデルで制御の話まではやってないからねー。
制御込みになると、ScilabとかSimulinkの方がやり易いし。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
なるほど。
得手不得手とかはありそうだよね。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- ModelicaのDCモータモデルのサンプルの位置をライブラリブラウザで確認。
- DCモータモデルをとりあえずシミュレーション。
- 制御電圧、制御電流、角速度の結果を確認。
- 今回は電圧をランプ関数で制御したシンプルなもの。
- ランプ関数は0を起点に徐々に上がっていく関数。
バックナンバーはこちら。
コメント