バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
マルチFMU制御を目指して以下の流れでやってく方針になった。
- DCモータモデルを分解して複数のFMUを作成。
- PyFMIでそれらをロード&シミュレーション。
- 上記の結果を元に改良点を考える。
何はともあれ、まずはDCモータモデルの分解を試みる。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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
元にするDCモータモデルをどれにするか?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
まずはDCモータモデルの分解だね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
以前、使ったものを使いまわせるといいのだけど、
どれがよいのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
いままでに使ったModelicaモデルとしては
- Ramp
- PID制御器
- DCモータ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
の構成が一番部品数が多いね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者a」05アップ.png)
じゃー、それを使おう。
DCモータモデル
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
これが件のModelicaのDCモータモデル。
![Ramp(速度指令器)、PID制御器(速度追従制御する)、DCモータ(いつものDCモータプラント)](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/02_DCモータモデル-1024x696.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
ここで使ってた奴だね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
単純に分解するとなると、
さっきの
- Ramp
- PID制御器
- DCモータ
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
の単位で分解になるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
3つに分解できればとりあえずOKだろう。
こんな感じだ。
![Ramp(速度指令器)、PID制御器(速度追従制御する)、DCモータ(いつものDCモータプラント)、モデルを分割して3つのFMUとして出力](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/03_DCモータモデル分解-1024x810.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
うん。
これだったら分解後の入出力も明確だからイメージし易いね。
念のため動作確認
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
一応、動作確認をしておこう。
どういう結果になれば想定通りかってのを把握しておく必要がある。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そうだね。
動いたは良いけど、これが正しい結果かわからないと、成功したの失敗したのかもわからないもんね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
こんな波形になる。
![DCモータモデル出力波形、モータ電流、指令値、角速度、制御電圧、負荷トルク](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/04_DCモータモデル出力波形-1024x702.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
これと同じようになれば成功ってことだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
あとは、これを別のModelicaモデルに分解して、それぞれをFMUへexportだな。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 元にするDCモータモデルは使いまわし。
- Ramp、PID制御器、DCモータの構成が一番部品が多い。
- モデルの分解もRamp、PID制御器、DCモータの単位でやってく予定。
- 念のため、OpenModelicaで現状の動作結果を取得しておく。
- PyFMIで統合したときの成功/失敗の判定用。
- 次はモデル分解。
バックナンバーはこちら。
コメント