カスタムブロックでモデル化を行う(C++、OML、Modelica)
Kosuke_IKEDA
Altair Employee
Altair ActivateはC++、OML(Altair Compose / Matlab)、Modelica言語のほか、バージョン2019からはSpice言語のブロックを提供しています。
今回は、C++、OML、Modelica言語の3つの使い方を紹介します。
題材は1Dモデリング&システムシミュレーション入門で作成したDCモータとします。
先の例題では、DCモータをシグナルブロック、Modelicaブロック、Modelicaブロック+MotionSolveの3通りでモデル化しましたが、
今回は、さらにカスタムブロックの言語3通りでモデル化したいと思います。
まずは、Altair ComposeやMatlabで採用されているOMLでモデル化します。
高次の微分はすべて一階微分に変換し、微分項をすべて左辺に整理します。
微分項の数=状態変数の数となり、この状態変数を数値積分することで、解を得ます。
資料、モデルのダウンロードはこちら。
使用製品:Altair Activate
よくあるエンジニアからの質問はこちら
Tagged:
0
Answers
-
つづいて、C++になります。
OMLとほとんど同じなので、作業は割愛しています。
0 -
最後に、Modelica言語を用いたカスタムブロックの作成方法を紹介します。
Modelica言語の特徴は、A=Bが代入式ではなく、等式として扱われる点です。
したがって、A=Bと書いても、B=Aと書いても、同じ結果が得られます。
OMLやC++のように微分項を左辺に整理する必要はありません。
みなさまが立てた微分方程式をそのまま記述するだけで、解が得られます。状態変数も気にする必要はありません。
ただし、高次微分の演算式はありませんので、一階微分にだけは変換してください。
0