バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
PID制御器を付けてオープンループ制御からクローズループ制御にしたDCモータモデルは作った。
ただ、まだ動作確認していないので、
一発動かして正常に動いていそうかだけだも確認しておきたい。
本筋はFMILibraryで制御できるかなので細かい精度は求めていないが。
登場人物
博識フクロウのフクさん
イラスト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
DCモータモデルの動作確認
じゃ、動作確認しておくか。
あ、そうか。
作ったは良いけど、動作確認はしてなかったね。
DCモータの部分は以前動いたものを使いまわしてるから良いが
PID制御がちゃんと機能しているかは確認しないとね。
じゃー、早速シミュレーション!
ふむ。
ちゃんと角速度制御は出来てるようだな。
じゃー、あとはこれをFMUにexportしれば良いのかな?
いんや、もうちょいこのモデルを弄る
(これ以上ややこしくないでよー)
Outputブロック
FMUにしたあとに比較的簡単にパラメータを引き出せるよう、
Outputブロックを追加しておく。
Outputブロック?
まぁ本来の用途はモデルを上位から利用する際の出力を定義するものなんだけど、
FMU利用に於いては、信号のエイリアスとして機能する。
エイリアス?
別名って意味だね。
例えば、モータ電流を参照したいとした場合、
signalVoltageの内部で定義されてるiを参照する必要がある。
この場合、
“signalVoltage.i”
って文字列で取得することになる。
あ、わかったぞ!
エイリアスを置いておくと、その指定した名称で同じ情報がとりだせるってことか!!
そうそう。
今回追加した電流センサーの先にcurrentってOutputブロックを設置しておけば、
全く同じ情報が”current”って文字列で取得可能となる。
これはモデルを変えたとしても、Outputブロックの名称が同一なら同じように取得できる。
ってことになる。
確かに、そっちの方が便利そうだ。
早速は位置していこう。
Outputブロック配置
とりあえず、Outputブロックを配置したぞ。
rampによる目標値をtarget。
PID制御器による指令電圧値をvoltage。
電流センサで取れる電流をcurrent。
角速度センサで取れる角速度をspeed。
にしてみた。
いいんじゃない。
シンプルだし分かり易い。
あとはこれをFMUにexportだねー。
まとめ
まとめだよ。
- クローズループ制御にしたDCモータモデルの動作確認を実施。
- ちゃんと動いてるっぽい。
- Outputブロック設置
- 各種信号にエイリアスを振るために設置。
- 目標値をtarget。
- 指令電圧値をvoltage。
- 電流センサで取れる電流をcurrent。
- 角速度センサで取れる角速度をspeed。
- 各種信号にエイリアスを振るために設置。
バックナンバーはこちら。
コメント