ステアリングとスプリングトラベルのロック
ステアリングとスプリングトラベルをロックするために必要なMotionSolveの.xmlステートメントの説明。
ロックを容易にするには、ロックする対象と場所に関する情報をモデルに追加し、その情報をモデルからサブルーチンに渡す必要があります。この情報を渡すには、この処理に対応するユーザーサブルーチン“REGISTER_TRAVEL_LOCK”と“REGISTER_STEERING_LOCK”を呼び出します。これらのユーザーサブルーチンで使用するSTRING_READ APIによって、シミュレーションの開始時に、これらの関数を一度呼び出すことができます。この情報は内部で登録され、ホイールトラベルに起因するステア軸や、ある瞬間軸を計算するルーチン使用されます。ロックの概念は、ステアリングシステムとスプリングシステムにのみ定義したモデリング特性としてロックを捉えることにあります。これにより、どのような情報も、アタッチメントを使用してモデリングレベルで試験装置に転送されることがありません。Reference_String要素が、その意図された目的とは異なる方法で使用されてきたことに留意してください。このAPIの本来の目的は、モデルで必要とされる文字列を、ユーザーサブルーチンで生成して提供することにあります。ロックメカニズムでは、このAPIを使用して、モデルからユーザーサブルーチンに情報が渡されます。サブルーチンから返される文字列は、モデルでは使用されません。
ステアリングロック
<Reference_String
id = "325001"
label = "SolverString-LockRegistration"
usrsub_dll_name = "msautoutils"
usrsub_param_string = "USER( 0, 32500100 )"
usrsub_fnc_name = "REGISTER_STEERING_LOCK"
/>
この例では、2つの引数を指定してユーザーサブルーチンを呼び出しています。1番目の引数である“0”は配列のバージョンです。現在のところ、バージョン0のみがサポートされています。2番目の引数は、参照配列のソルバーIDです。この配列には以下の5つの要素があります。
Index | 名前 | 想定される型 | 制約 | 例 | 目的 |
---|---|---|---|---|---|
0 | Axle ID | 符合なし整数 | 0 | 要求で使用するアクスルIDへのリンクを指定します。通常、この値はフロントアクスルでは0、リアアクスルでは1です。 実装上は任意の整数値を指定でき、この値に基づいてロックがアクスルに割り当てられます。IDが1のアクスル上でスクラブ半径を要求する場合は、アクスルIDが0のロックは使用されませんが、アクスルIDが1のロックがあれば、それが使用されます。 |
|
1 | Full varname | 整数 / 文字列ID | ss_strg_jt_fullvar.id | モデル階層またはメッセージングの中でステアリングジョイントを特定します。 | |
2 | Marker 1 ID | 整数 / マーカーID | spr.i.id | インデックス4の要素が正の値である場合は、ロックする場所とボディを指定します。 インデックス3の要素に値の指定がなく(-1)、インデックス4の要素が正の値である場合は、z軸を基準としたロック方向を指定します。 インデックス3の要素に値が指定されている場合は(2番目のマーカー)、目的の方向の参照ポイントを指定します。 |
|
3 | Marker 2 ID | 整数 / マーカーID | spr.j.id | インデックス4の要素が負の値である場合は、ロックする場所とボディを指定します。 目的の方向の2番目のポイントが定義されていれば、それを指定します(2番目のマーカー)。 |
|
4 | Lock Mode | 整数 | {-6; -5; … -1; 1; 2; … 6} | 3 | インデックス3の要素が定義されていない場合に、ロックにどの軸を使用するかを指定し、マーカー1と2を入れ替えるかどうかを指定する整数。 この値が負の場合は、ロックする場所と親ボディを、マーカー2を使用して指定するように要求されます。2つのマーカーを使用している場合は、これらのマーカーを通過するラインが目的の方向になるので、“-1”のみが有効な値です。 この値が正の場合は、ロックする場所と親ボディを、マーカー1を使用して指定するように要求されます。この場合は、マーカー2を定義していない場合にのみ絶対値が有効です。この場合は、値1を指定すると、マーカー1に対してX軸方向の並進をロックする要求になります。 値5を指定すると、マーカー1に対してy軸を中心とする回転をロックする要求になります。 1: x方向の並進 2: y方向の並進 3: z 方向の並進 4: x軸を中心とする回転 5: y軸を中心とする回転 6: z軸を中心とする回転 現時点の実装では、3、6、-1の各値のみがサポートされています。 |
トラベルロック
<Reference_String
id = "310002"
label = "SolverString-LockRegistration-right"
usrsub_dll_name = "msautoutils"
usrsub_param_string = "USER( 0, 31000200 )"
usrsub_fnc_name = "REGISTER_TRAVEL_LOCK"
/>
この呼び出し自体では、上記とは別のエントリポイントと別の配列を使用します。この配列のサイズは6です。この配列にはステアリングロックと同じ情報が記述されていますが、そのほかに、車両のどちら側をロックするかの情報がこの配列から渡されます。
Index | 名前 | 想定される型 | 制約 | 例 | 目的 |
---|---|---|---|---|---|
0 | Axle Index | 符合なし整数 | 0 | 要求で使用するアクスルIDへのリンクを指定します。通常、この値はフロントアクスルでは0、リアアクスルでは1です。 実装上は任意の整数値を指定でき、この値に基づいてロックがアクスルに割り当てられます。IDが1のアクスル上でスクラブ半径を要求する場合は、アクスルIDが0のロックは使用されませんが、アクスルIDが1のロックがあれば、それが使用されます。 |
|
1 | Full varname | 整数 / マーカーID | ss_lock_ent_fullvar_l.id | モデル階層またはメッセージングの中でスプリングを特定します。 | |
2 | Side | 符合なし整数 | {0;1} | 0 | この情報は現在の実装では使用されません。どのスプリングロックを車両のどちら側に配置するかを指定します。将来の実装では、サスペンションの片側のみをロックする必要がある場合に、この情報が有用となります。 |
3 | Marker 1 ID | 整数 / マーカーID | spr.i.id | インデックス4の要素が正の値である場合は、ロックする場所とボディを指定します。 インデックス3の要素に値の指定がなく(-1)、インデックス4の要素が正の値である場合は、z軸を基準としたロック方向を指定します。 インデックス3の要素に値が指定されている場合は(2番目のマーカー)、目的の方向の参照ポイントを指定します。 |
|
4 | Marker 2 ID | 整数 / マーカーID | spr.j.id | インデックス4の要素が負の値である場合は、ロックする場所とボディを指定します。 目的の方向の2番目のポイントが定義されていれば、それを指定します(2番目のマーカー)。 |
|
5 | Lock Mode | 整数 | {-6; -5; … -1; 1; 2; … 6} | -1 | インデックス3の要素が定義されていない場合に、ロックにどの軸を使用するかを指定し、マーカー1と2を入れ替えるかどうかを指定する整数。 この値が負の場合は、ロックする場所と親ボディを、マーカー2を使用して指定するように要求されます。2つのマーカーを使用している場合は、これらのマーカーを通過するラインが目的の方向になるので、“-1”のみが有効な値です。 この値が正の場合は、ロックする場所と親ボディを、マーカー1を使用して指定するように要求されます。この場合は、マーカー2を定義していない場合にのみ絶対値が有効です。この場合は、値1を指定すると、マーカー1に対してX軸方向の並進をロックする要求になります。 値5を指定すると、マーカー1に対してy軸を中心とする回転をロックする要求になります。 1: x方向の並進 2: y方向の並進 3: z 方向の並進 4: x軸を中心とする回転 5: y軸を中心とする回転 6: z軸を中心とする回転
現時点の実装では、3、6、-1の各値のみがサポートされています。 |
Assembly Wizardを使用して生成したモデルには、スプリングとステアリングのロックサブシステムがあります。このサブシステムによって、マーカーや目的の方向などの選択が自動的にロックモードにエンコードされます。このようなモデルは、他のすべての値を定義するうえで有効なサンプルにもなります。