ブロックを積みながら(214) OpenModelica 並進運動、等加速度運動

Joseph Halfmoon

前回は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
      1. Translational
      2. Rotational
      3. MultiBody

Mechanicsの中は上のように3カテゴリに分類されているみたいです。第1のTranslationalは、1自由度(1次元)の並進運動をモデル化するためのもの。第2のRotationalは、1自由度だけれども回転運動。そして第3のMultiBodyになると、3次元空間の中で並進と回転、合計6自由度で動かすモデルが作れるっと。前回のアニメーションはMultBodyの例題を使わせてもらいました。

今回、最初の一歩とて選んだExampleは、Translationalの中のAccelerateというExampleです。Mass(質量だけでなく、1次元的な大きさもある)に一定の加速度を与えて1次元的に動かすもの。その選択は以下で。Accelerate

さてダイアグラムはこんな感じ。AccelerateDiagramEC

上記のようなダイアグラムでの表現ができる一方、以下のようなテキスト・ソースでも眺めることができるのがModelicaですな。上記のダイアグラムのソース表現は以下のようでした。AccelerateDiagramText

ソース表現でも、わかるっちゃ、分かる? そして末尾の上のExperimentのところに相当するのは、OMEdit上ではこんな感じ。SimulationSetup

コンポーネント3個

上記ダイアグラムは、3個のコンポーネントからできてます。左からみていくと、最初は「定数信号」を生成するためのConstantコンポーネントです。その設定はこんな感じ。Constant

Scilab/Xcosの定数ブロックなどと比べると、なんかレスペクトの差を感じる厳めしさです(個人の感想です。)k=1という、定数を定義するだけなんだけれども。

そして中央に鎮座するのが、今回のダイアグラムのまさに中心的存在のAccelerateコンポーネントです。なんと左から入力される定数信号を加速度として右のフリンジに与えてくれるコンポーネントらしいです。その設定が以下に。accelerateSetting

ここで、出てくる用語に慣れて置かねばなりますまい。

    • flange
    • support connector

フランジとサポート・コネクタです。コンポーネントの内部をみるとこんな感じ。

accelerateSources

フランジは機械系の姉貴兄貴の皆さまにはお馴染みのフランジです。 よく機械部品(配管)などの接続に使われる、部品の端っこの「ツバ」状の部分です。 フランジ同士をボルトなどで固定するわけであります。コンポーネントの端っこにもフランジあり、これを接続するということみたいです。なお当然フランジの位置というものがモデル化されとります。そしてこいつは押したり引いたりして動くみたいです。

一方、サポートの方は支持点と言っても良いかもしれませぬ。 コンポーネントの位置を揺ぎ無く「固定」するためのポイントです。理想的なものなので、位置が変動したりすることはないみたい。

Accelerateコンポーネント内部もまた、テキスト・ソースを眺めることができます。こんな感じ。accelerateText

そして一番右のコンポーネットがMassです。その設定が以下に。MassSetting

質量は1kgです。そして左右にフランジがあります。その間1mとな。1次元的なモデルですが「点」ではありません。今回はAccelerateコンポーネントのフランジがMass左側のフランジにのみ接続されとります。加速度が与えられるとそれに応じてMassも動くっと。

シミュレーションを実行

上記のダイアグラムから、1kgのMassが、一定の加速度(1m/s^2)のもとで等加速度運動する、というモデルが理解できました。そこでシミュレーションを実行。Modelicaの場合、まず裏側でソースがコンパイルされてからシミュレーションされます。コンパイルには多少時間かかりますが、シミュレーションは速いっす。シミュレーション結果をグラフに描くためには、変数ウインドウで、コンポーネントの中の「見たい」部分を指定ないとならないデス。AccelerateVariables

描いてもらったグラフが以下に。AcceleratePlot

位置が0.5から始まっているのは、1mの長さの物体の中心ということみたい。等加速度運動は分かったっと。

ブロックを積みながら(213) OpenModelica アニメーション表示 へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です