【PyFMI】最小構成のMBD事例 第2章 その92【マルチFMI②】

【PyFMI】最小構成のMBD事例 第2章 その92【マルチFMI②】 事例
【PyFMI】最小構成のMBD事例 第2章 その92【マルチFMI②】

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

はじめに

マルチFMU制御を目指して以下の流れでやってく方針になった。

  • DCモータモデルを分解して複数のFMUを作成。
  • PyFMIでそれらをロード&シミュレーション。
  • 上記の結果を元に改良点を考える。

何はともあれ、まずはDCモータモデルの分解を試みる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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モータモデルの分解だね。

太郎くん
太郎くん

以前、使ったものを使いまわせるといいのだけど、
どれがよいのかな?

フクさん
フクさん

いままでに使ったModelicaモデルとしては

  • Ramp
  • PID制御器
  • DCモータ
フクさん
フクさん

の構成が一番部品数が多いね。

太郎くん
太郎くん

じゃー、それを使おう。

DCモータモデル

フクさん
フクさん

これが件のModelicaのDCモータモデル。

Ramp(速度指令器)、PID制御器(速度追従制御する)、DCモータ(いつものDCモータプラント)
太郎くん
太郎くん

ここで使ってた奴だね。

太郎くん
太郎くん

単純に分解するとなると、
さっきの

  • Ramp
  • PID制御器
  • DCモータ
太郎くん
太郎くん

の単位で分解になるのかな?

フクさん
フクさん

そうだね。
3つに分解できればとりあえずOKだろう。
こんな感じだ。

Ramp(速度指令器)、PID制御器(速度追従制御する)、DCモータ(いつものDCモータプラント)、モデルを分割して3つのFMUとして出力
太郎くん
太郎くん

うん。
これだったら分解後の入出力も明確だからイメージし易いね。

念のため動作確認

フクさん
フクさん

一応、動作確認をしておこう。
どういう結果になれば想定通りかってのを把握しておく必要がある。

太郎くん
太郎くん

そうだね。
動いたは良いけど、これが正しい結果かわからないと、成功したの失敗したのかもわからないもんね。

フクさん
フクさん

こんな波形になる。

DCモータモデル出力波形、モータ電流、指令値、角速度、制御電圧、負荷トルク
太郎くん
太郎くん

これと同じようになれば成功ってことだね。

フクさん
フクさん

あとは、これを別のModelicaモデルに分解して、それぞれをFMUへexportだな。

まとめ

フクさん
フクさん

まとめだよ。

  • 元にするDCモータモデルは使いまわし。
    • Ramp、PID制御器、DCモータの構成が一番部品が多い。
  • モデルの分解もRamp、PID制御器、DCモータの単位でやってく予定。
  • 念のため、OpenModelicaで現状の動作結果を取得しておく。
    • PyFMIで統合したときの成功/失敗の判定用。
  • 次はモデル分解。

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

コメント

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