
前回はOMEditで3Dアニメーション表示しました。今回は初歩的なところにもどってOpenModelica付属のExampleを「簡単そ~」なところから適当に動かしながら、標準ライブラリのあれこれとか、OMEditのあれこれとか練習していきたいと思います。千里の道も一歩よりみたいなこというじゃん。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールした、The Open Source Modelica Consortium(OSMC)様の以下のバージョンを使用させていただいてます。(なお、ModelicaはModelica Association様の登録商標です。)
Openmodelica v.1.25.1 (Official Release版)
Mechanics > Translational > Examples > Accelerate
Modelica Standard Library(MSL)の中には、いろいろなライブラリが含まれてますが、その中でも「分かりやすい」例が含まれているのがMechanics(力学)じゃないかと思います。過去2回もそこから例題をピックアップしてます。
-
- Mechanics
- Translational
- Rotational
- MultiBody
- Mechanics
Mechanicsの中は上のように3カテゴリに分類されているみたいです。第1のTranslationalは、1自由度(1次元)の並進運動をモデル化するためのもの。第2のRotationalは、1自由度だけれども回転運動。そして第3のMultiBodyになると、3次元空間の中で並進と回転、合計6自由度で動かすモデルが作れるっと。前回のアニメーションはMultBodyの例題を使わせてもらいました。
今回、最初の一歩とて選んだExampleは、Translationalの中のAccelerateというExampleです。Mass(質量だけでなく、1次元的な大きさもある)に一定の加速度を与えて1次元的に動かすもの。その選択は以下で。
上記のようなダイアグラムでの表現ができる一方、以下のようなテキスト・ソースでも眺めることができるのがModelicaですな。上記のダイアグラムのソース表現は以下のようでした。
ソース表現でも、わかるっちゃ、分かる? そして末尾の上のExperimentのところに相当するのは、OMEdit上ではこんな感じ。
コンポーネント3個
上記ダイアグラムは、3個のコンポーネントからできてます。左からみていくと、最初は「定数信号」を生成するためのConstantコンポーネントです。その設定はこんな感じ。
Scilab/Xcosの定数ブロックなどと比べると、なんかレスペクトの差を感じる厳めしさです(個人の感想です。)k=1という、定数を定義するだけなんだけれども。
そして中央に鎮座するのが、今回のダイアグラムのまさに中心的存在のAccelerateコンポーネントです。なんと左から入力される定数信号を加速度として右のフリンジに与えてくれるコンポーネントらしいです。その設定が以下に。
ここで、出てくる用語に慣れて置かねばなりますまい。
-
- flange
- support connector
フランジとサポート・コネクタです。コンポーネントの内部をみるとこんな感じ。
フランジは機械系の姉貴兄貴の皆さまにはお馴染みのフランジです。 よく機械部品(配管)などの接続に使われる、部品の端っこの「ツバ」状の部分です。 フランジ同士をボルトなどで固定するわけであります。コンポーネントの端っこにもフランジあり、これを接続するということみたいです。なお当然フランジの位置というものがモデル化されとります。そしてこいつは押したり引いたりして動くみたいです。
一方、サポートの方は支持点と言っても良いかもしれませぬ。 コンポーネントの位置を揺ぎ無く「固定」するためのポイントです。理想的なものなので、位置が変動したりすることはないみたい。
Accelerateコンポーネント内部もまた、テキスト・ソースを眺めることができます。こんな感じ。
そして一番右のコンポーネットがMassです。その設定が以下に。
質量は1kgです。そして左右にフランジがあります。その間1mとな。1次元的なモデルですが「点」ではありません。今回はAccelerateコンポーネントのフランジがMass左側のフランジにのみ接続されとります。加速度が与えられるとそれに応じてMassも動くっと。
シミュレーションを実行
上記のダイアグラムから、1kgのMassが、一定の加速度(1m/s^2)のもとで等加速度運動する、というモデルが理解できました。そこでシミュレーションを実行。Modelicaの場合、まず裏側でソースがコンパイルされてからシミュレーションされます。コンパイルには多少時間かかりますが、シミュレーションは速いっす。シミュレーション結果をグラフに描くためには、変数ウインドウで、コンポーネントの中の「見たい」部分を指定ないとならないデス。
位置が0.5から始まっているのは、1mの長さの物体の中心ということみたい。等加速度運動は分かったっと。