【Modelica】最小構成のMBD事例 第2章 その16【massモデル⑤】

【Modelica】最小構成のMBD事例 第2章 その16【massモデル⑤】 事例
【Modelica】最小構成のMBD事例 第2章 その16【massモデル⑤】

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

はじめに

前回はconstantForceモデルとmassモデルのシンプルなModelicaモデルをシミュレーションにて、
加速度以外の速度、移動距離のパラメータも確認した。

ある意味OpenModelicaはローコード、ノーコードを実現してくれるプラットフォームと言える。
しかし、完全にコードを読まない弄らないというのも勿体ないので、
グラフィックエディタで作成したModelicaモデルのソースコードを確認してみる。

(ソースコード内にグラフィカル情報も記載されてる?)

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

ローコード?ノーコード?

フクさん
フクさん

さて、前回までで簡単なシミュレーションを実施した。

太郎くん
太郎くん

うん。
最もシンプルっぽいモデルと動かしたってところだね。

フクさん
フクさん

Modelica自体は元々プログラミング言語なわけだが、
特にコードを弄るってことはしなかったよね?

太郎くん
太郎くん

あ!確かに!
コード弄らなくてもOKなのか?!

フクさん
フクさん

そうだね。
コードを弄らなくても結構やれることは多いね。

フクさん
フクさん

と言っても、
ある程度コードを見れる触れるくらいできた方が楽ができるのも事実。

太郎くん
太郎くん

うーん、弄らなくて良いなら弄らない方が良い気がするけど・・・。

太郎くん
太郎くん

ほら!

いま流行りのローコードとかノーコードとか。

フクさん
フクさん

まぁそういう使い方と割り切るのも悪くはないけど・・・。
ノーコードとまでは行かなくてもローコードくらいの認識で居た方がよいかな。

太郎くん
太郎くん

まぁその方がよいかー。

ローコード開発プラットフォーム (英: low-code development platform, LCDP) (ローコード(英: LowCode)とも言う)は、従来の手書きのコンピュータ・プログラミングの代わりに、グラフィカル・ユーザ・インタフェースと設定を通じてアプリケーション・ソフトウェアを作成するために使用される開発環境を提供するソフトウェアである。ローコードモデルにより、様々な経験レベルの開発者が、モデル駆動型ロジックと組み合わせたビジュアル・ユーザ・インタフェースを使用してアプリケーションを作成することが可能になる。このようなプラットフォームでは、完全に動作するアプリケーションを作成することもできるし、特定の状況のために追加のコーディングが必要となる場合もある。ローコード開発プラットフォームは、従来の手作業によるコーディングの量を減らし、ビジネス・アプリケーションの提供を加速する。共通の利点は、正式なプログラミングスキルを持つ人だけでなく、幅広い人々がアプリケーションの開発に貢献できるということである。LCDPは、セットアップ(設置)、トレーニング(訓練)、デプロイメント(展開)、およびメンテナンス(保守)の初期コストも削減できる。

Wikipediaより(https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E9%96%8B%E7%99%BA%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0)

ノーコード開発プラットフォーム (英: No-code development platform, NCDP) (NoCode(ノーコード)とも言う) は、プログラマーやノンプログラマーが、従来のコンピュータ・プログラミングの代わりに、グラフィカル・ユーザー・インタフェースや設定を通してアプリケーション・ソフトウェアを作成することを可能にする。ノーコード開発プラットフォームは、アプリケーション開発プロセスを迅速化するために設計されているため、ローコード開発プラットフォームと密接に関連している。これらのプラットフォームは、企業において、モバイル化が進行する労働力と、有能なソフトウェア開発者の供給が限られているという2つのトレンドに対処するために、人気が高まっている。プラットフォームはソフトウェアの開発基盤として、その機能、統合、市場ニッチが大きく異なる。データ収集やワークフローなどの特定のビジネス機能のみに特化したアプリケーションもあれば、エンタープライズ・リソース・プランニング (ERP)ツール全体をモバイル型機器 (mobile form factor) に統合しようとするアプリケーションもある。ノーコード開発プラットフォームは、コンピュータサイエンスではビジュアルプログラミング言語として知られている。

Wikipediaより(https://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E9%96%8B%E7%99%BA%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0)

massモデルのソースコード

フクさん
フクさん

見比べるようにグラフィカルエディタ上のアイコン配置も再掲。

constantForce1、constantForce2、mass、-1N、2N、m=1kg
フクさん
フクさん

今回使用したmassモデルのソースコードは以下。
OpenModelica Connection Editorが自動で生成したコードになる。

model masstest
  Modelica.Mechanics.Translational.Components.Mass mass(L = 0.1, m = 1, s(fixed = true, start = 0), v(fixed = true, start = 0)) annotation(
    Placement(visible = true, transformation(extent = {{-20, -10}, {0, 10}}, rotation = 0)));
  Modelica.Mechanics.Translational.Sources.ConstantForce constantForce2(f_constant = 2)  annotation(
    Placement(visible = true, transformation(origin = {32, 0}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));
  Modelica.Mechanics.Translational.Sources.ConstantForce constantForce1(f_constant = -1) annotation(
    Placement(visible = true, transformation(origin = {-48, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(constantForce1.flange, mass.flange_a) annotation(
    Line(points = {{-38, 0}, {-20, 0}}, color = {0, 127, 0}));
  connect(constantForce2.flange, mass.flange_b) annotation(
    Line(points = {{22, 0}, {0, 0}}, color = {0, 127, 0}));
  annotation(
    uses(Modelica(version = "3.2.3")));
end masstest;
太郎くん
太郎くん

先頭の方で、各モデルの実体を定義して、
equationで方程式を定義してるんだっけか?

フクさん
フクさん

うん。
その認識であってるが、
今回のequationは方程式というか、
関係性を示している
って感じだね。

太郎くん
太郎くん

関係性?
そういわれると、方程式じゃなくてconnectってキーワードが使われてるね?

フクさん
フクさん

なんとなく察したかもしれないけど、
OpenModelica Connection Editor上の線の接続関係をconnectキーワードで表現してる。

太郎くん
太郎くん

constantForce1.flangeとmass.flange_aを結んで、
constantForce2.flangeとmass.flange_bを結んでるのか。

太郎くん
太郎くん

flangeって確かconnecterキーワードで定義されたインターフェースだったね。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

確かここで説明してた。

annotation?

太郎くん
太郎くん

あと、気になったところで、
モデルの実体定義とconnectの両方ともだけど、
annotationってキーワードがいるね?
これは何を表してるんだろう??

フクさん
フクさん

annotationは日本語訳すると「注釈」ってことになるんが、
グラフィカルな情報、シミュレーションの条件や使用するライブラリなどを記述するところだね。
今回に於いては、「グラフィカルな情報」に該当して、以下が表記されてる。

  • 配置位置
  • 線の開始/終点
  • アイコンの反転や回転
太郎くん
太郎くん

ほー。
グラフィカルエディタの情報もModelicaコード上に記載されてたんだねー。

フクさん
フクさん

そうだね。
コード上に集約されるんで管理はし易いね。
その分コード量が肥大して読みにくくなることもあるが、
まぁ、「コード上に集約」の利点の方が大きいかな。
実際、この手のannotationはトップ階層の接続関係を占めるモデルでしか出てこないし。

太郎くん
太郎くん

なるほど。
確かにそれだったら影響範囲が絞られてるから利点の方が利きそうだ。

まとめ

フクさん
フクさん

まとめだよ。

  • OpenModelicaはローコード、ノーコードの性質がある。
    • しかし、コードの読み書きも出来ていた方が良い。
  • massモデルのソースコードを確認。
    • equationではconnectキーワードで接続と定義。
    • annotationキーワードでグラフィカルな情報が追記されソースコード内で情報が完結している。

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

コメント

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