バックナンバーはこちら。
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
にある。
これか!
それそれ。
まずはシミュレーション
まぁいろいろ弄ることにはなるのだけど、
まずは素の状態でシミュレーションしてみよう。
一応、シミュレーションは通ったけど、
どのパラメータを表示したらいいのかな?
そうだねー。
- 制御電圧\([V]\)
- 制御電流\([A]\)
- 角速度\([rad/s]\)
くらいは見ておこうか。
で、どこを見れば・・・。
パラメータが無茶苦茶一杯あってどこに何があるのかがさっぱりだよー。
変数ブラウザ上だと
制御電圧は
signalVoltage→v
制御電流は
signalVoltage→i
角速度は
loadInertia→w
だね。
あ、あった。
これをグラフで表示させればいいんだね。
うん。
ランプ関数を入力とした電圧制御してるだけのモデルなんで、
シミュレーション結果としては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}$$
あー。
とりあえず、徐々に値が上がっていくだけって関数か。
そうそう。
まぁ今回のは100でリミットが掛かってるけどね。
DCモータモデルをシミュレーションした感想
いやー、でもDCモータモデルがすでにあって、
シミュレーションもできちゃうのかー。
ScilabとかSimulinkで頑張ってたのは一体なんだったのだろう。
っておもっちゃう。
まぁ今回のはあくまでDCモータモデルで制御の話まではやってないからねー。
制御込みになると、ScilabとかSimulinkの方がやり易いし。
なるほど。
得手不得手とかはありそうだよね。
まとめ
まとめだよ。
- ModelicaのDCモータモデルのサンプルの位置をライブラリブラウザで確認。
- DCモータモデルをとりあえずシミュレーション。
- 制御電圧、制御電流、角速度の結果を確認。
- 今回は電圧をランプ関数で制御したシンプルなもの。
- ランプ関数は0を起点に徐々に上がっていく関数。
バックナンバーはこちら。
コメント