MV-1060:MDLステートメントを用いた振子モデルの構築
本チュートリアルでは、モデル定義言語(MDL)を用いて振子モデルを作成し、モデルの動的シミュレーションを実行し、振子の回転のプロッティングとアニメーションの確認を行う方法について学習します。
- 任意のテキストエディタで開いて編集が可能
- モデルのデバッグを補助
- カスタムモデリングの要件に条件ステートメント"if"を使用可能
- モジュールモデルおよび再使用可能モデルの構築が可能
- モードのパラメータ化が可能
- GUIで使用できないモデリングエンティティ(CommandSetsなど)の使用が可能
- Section 1:MDLのエンティティ
- モデリングエンティティは、MDLステートメントのかたちでMDLに保存されます。全てのMDLステートメントは、アスタリスク(*)で始まります。 エンティティには以下の2つのタイプがあります:
- 一般的なエンティティ
- 定義ベースのエンティティ
- 一般的なエンティティ
-
- エンティティの定義に1つのステートメントのみを有します。プロパティの設定には1つまたは複数のステートメントを有します。
- 例として、ポイント、ボディ、ジョイントなどが挙げられます。
- 各一般的エンティティは、そのタイプに応じたプロパティを有します。例えば、1つのポイントはx座標、y座標、z座標、ラベル、ステート、および変数名のプロパティを有しています。
- 定義ベースのエンティティ
-
- 定義と呼ばれるブロックステートメントで定義され、そのインスタンスはインスタンス生成ステートメントによってモデル内に生成されます。
- ブロックは通常*Define()ステートメントで始まり、*EndDefine()ステートメントで終わります。
- エンティティ(またはブロック)は、一連のMDLエンティティまたは部材で構成されています。
- これらのエンティティは、再使用可能です。一旦定義されると、同じエンティティ定義は同じモデルまたは別のモデルファイル内で何度もインスタンス生成されることが可能です。
- Section 2:エンティティのプロパティ
-
- 各エンティティは、変数、ラベル、およびエンティティに関連したその他の特性を有しています。
- 各エンティティには、固有の変数名が付けられていなくてはなりません。
- 以下は、推奨される変数名の命名規則です。これによって、ユーザーはデバッグ中にモデリングエンティティを特定することができます。この規則は強制するものではありませんが、適用が推奨されます。
- Section 3:グローバル変数
- MotionViewはデフォルトで、モデル内のあらゆる箇所で使用可能なグローバル変数を伴います。これらの変数は、大文字小文字の別が識別されます。 下の一覧は、一般的に使用されるキーワードおよびそれらの意味を示すものです。
表 3. MotionViewでの一般的なキーワード B_Ground
グラウンドボディ P_Global_Origin
全体座標系原点 V_Global_X, V_Global_Y, V_Global_Z
全体座標系のXYZ軸に沿ったベクトル Global_Frame
全体座標系参照マーカー MODEL
モデルのトップレベルのシステムへの参照 - Section 4:MDLステートメントの分類
-
- トポロジーステートメント
- エンティティを定義し、1つのエンティティとその他のものとのトポロジー的な関係を確立します。例えば、
*Body(b_body, “Body”, p_cg)
。この例では、*Bodyステートメントはポイントp_cg
に重心のあるボディを定義します。このステートメントを介して、ボディ(b_body
)はポイントp_cg
とトポロジー的に結合されます。 - プロパティまたはSetステートメント
- トポロジー的エンティティによって生成されたエンティティにプロパティを割り当てます。例えば、*SetBody()は、*Body()を使って定義されたボディに質量と慣性プロパティを割り当てるステートメントです。ほとんどのプロパティステートメントは“*Set”から始まるため、これらは一般的にSetステートメントと呼ばれます。
- 定義とデータ
- 定義ブロックのコンセプトを踏まえ、これらの用語は特に、システム、アセンブリ、アナリシスなどのコンテナエンティティに関して使用されます。*Define()ブロックに含まれている場合、ステートメントのブロックは『定義』と呼ばれます。ブロック内のステートメントには下記が含まれます:
- エンティティを定義するトポロジーステートメント
- プロパティを割り当てるSetステートメント。定義ブロック内のこれらのSetステートメントは定義内のエンティティのデフォルト値と考えられるため、"Default Sets"と呼ばれます。
*Define()ブロックのコンテキストの外側にあるステートメントまたはブロックは、データと呼ばれます。それらは:- システム、アセンブリ、またはアナリシス内のエンティティに関連した*BeginContext()ブロック内のSetステートメント
- *BeginAssemblySelectionや*BeginAnalysisなどの*Beginステートメントの一部
- Section 5:MDLモデルファイルの概要
-
- MDLモデルファイルはASCIIファイルであり、テキストエディタを使うことで編集が可能です。
- モデル内の全てのステータスは、*BeginMDL() - *EndMDL()ブロック内に含まれます。
- MDLステートメントのシンタックスは、アスタリスク(*)に続いて、引数が定義された有効なステートメントです。
- 先頭にアスタリスク(*)のついていないステートメントは、コメントとみなされます。本チュートリアルでは、コメントステートメントには読みやすいよう先頭に//を付けてあります。コメントはMotionViewグラフィカルユーザーインターフェースによっては読み出されず、モデルのMDLが元のファイルまたは別のファイルに保存されると削除されます。
MDLは、いくつかの例外を除き、任意の順序でステートメントを受け入れます。
この言語の習得に役立つよう、チュートリアル例内のコードをこの構造の後ろに示します://comments about the MDL file *BeginMDL(argument list) //Topology section *Point… *Body… *System(…) // definitions sub-section *DefineSystem(..)… .. .*EndDefine() //Property of entities directly in *BeginMDL()//Property section for entities within Systems and analysis *BeginContext() .. .. *EndContext() . *EndMDL
MDLモデルファイルの作成
このステップでは、振子モデルにMDLモデルファイルを作成します。
エンティティ宣言の作成
ここでは、この問題に必要なエンティティ宣言を作成します。
MDLモデルファイルの読み込みと実行
このステップでは、ステップで作成したMDLファイルを実行します。エンティティ宣言の作成。
結果のアニメーション表示とプロッティング
ここで、振子のMDLモデル実行の結果をアニメーション表示、およびプロッティングします。