2017-09-20 7 views
1

私はかなり前にModelicaを使い始めました。数ヶ月前に私が取り組んでいるプロジェクトのために始めました。主に標準Modelicaの配布に含まれるMultiBodyライブラリを使用したマルチボディメカニカルシステムでの作業を行います。Modelica MultiBody Libraryでの身体位置の動的な変更

シミュレーション中に動的に計算された座標に従ってボディの位置を変更する必要がありますが、その方法を見つけることができません。

これは、所与のシステムの質量中心の位置を算出するベクトル変数である:

Modelica.SIunits.Length CMG[2]; 

CMG[1] = ... + cos(part3rotation.angles[3]) ... + part3origin[1] ...; 
CMG[2] = ...; 

Iは、(CMG [1]の座標に無質量体(FixedShape)を配置したいと思い、 CMG [2])を使用して、シミュレーション中の質量中心とその動きを表示します。

これを行う方法はありますか?

身体を固定翻訳コンポーネントに添付しようとしましたが、変数(VAR)の代わりにパラメータ(PARAM)が必要となり、エラーが発生します。

使用ソフトウェア:Modelica 3.2.2およびWolfram SystemModeler 5.0。私はあなたの体にフレームModelica.Mechanics.MultiBody.Interfaces.Frame_bを追加し、(FixedTranslationから取られた)次の式を追加します

答えて

0

frame_b.r_0 = frame_a.r_0 + xyz; 

クラスのXYZベクトルにCMGベクトルを接続ましたトリック。

1

frame_b.r_0 = your_three_d_vector; 
frame_b.R = frame_a.R; // or some other orientation 

/* Force and torque balance */ 
zeros(3) = frame_a.f + frame_b.f; // and maybe some other forces in your system 
zeros(3) = frame_a.t + frame_b.t + cross(r, frame_b.f); // and maybe some other torques and forces in your system 

Modelicaで追加のコネクタを追加するために、我々はだけでなく、考慮しなければなりません潜在的な変数(この場合は位置と方向)だけでなく、流れ変数(力とトルク)も考慮する必要があります。

input Modelica.SIunits.Position xyz[3]; 

と方程式を修正する:溶液が新しい入力を含むようにFixedTranslationクラスを変更することであった

0

全体の質量中心の位置を、慣性系に対して相対的に系と計算したとします。あなたのクラスではframe_aを完全に省略することができます。したがって、に明示的にframe_aを接続する必要はありませんが、これは明らかに廃止されています。

FixedTranslationで最初に定義されたConnections.branch(frame_a.R, frame_b.R)の代わりにConnections.root(frame_b.R)を必ず使用してください。

さらにもう1つのコメント。位置ベクトルコンポーネントではなくベクトルで直接作業し、ベクトル変換にはModelica.Mechanics.MultiBody.Framesの関数を使用することをお勧めします。

関連する問題