MotionSolveモデルでのCD-Tireの使用

MotionViewおよびMotionSolveでCD-Tireをモデル化するには、ソルバーに投入されたデックに以下のアイテムが存在する必要があります。
アイテム 説明
タイヤファイル タイヤのデータモードを含むタイヤファイル。通常試験機関またはタイヤサプライヤーから取得されます。
路面ファイル シミュレーションで使用される路面の説明。
タイヤ力ステートメント タイヤ力を表すMBS要素(GFOSUB)。
タイヤの方向 タイヤを方向付ける一連のマーカー。GFORCEステートメント上で参照されます。
リクエスト タイヤの挙動に関する情報のリクエスト。いくつかの異なる座標フレームに関して、各種のフォースおよび状態を指定できます。
文字列 文字列は、ソルバーで必要な各種ファイルおよびデータを特定します。

完全なCD-Tire定義を含むタイヤシステムが、MotionViewの今後のリリースで計画されています。

既存のADAMS(.adm)ファイルを使用したMotionSolveでの実行

ADAMS/carまたはADAMS/viewから書き出された既存の.admファイルは、MotionSolveで実行するために変更する必要はありません。

CDTireユーザー定義路面

ユーザー路面の定義は、タイヤのモデル化の重要な機能です:MotionSolveでCD-Tireを使用することで(バージョン10.0 SA205以降)、ユーザー定義の路面をサポートできます。
ユーザー定義の路面を定義して使用するには、以下のプロセスに従います:
  1. 一連のユーザー路面のソースファイルをコンパイルしてリンクすることで、user road dllを作成します。
  2. GFORCEユーザーパラメータリストでユーザー路面オプション(1100)を選択します。
    <Force_Vector_TwoBody
       id                  = "20"
       label               = "CDTire2"
       type                = "ForceAndTorque"
       i_marker_id         = "1621"
       j_floating_marker_id= "2305"
       ref_marker_id       = "7"
       usrsub_param_string = "USER(838,1611,1612,1613,1614,2303,2200,2,4,1,1,20,21,1100,21)"
       usrsub_dll_name     = "cdtire"
       usrsub_fnc_name     = "gfosub"
    />
  3. 使用する路面ファイルに対応する適切なユーザー路面ファイル名の文字列を定義します。
    <Reference_String
       id                  = "25"
       label               = "CDTire2_roadfile_root"
       string              = "./prop_files/cdt_data/road_data/rsm1_"
    />

    ユーザー路面ファイルがCDTireによって開かれ、そのファイル入出力単位が引数としてユーザー路面DLLエントリ関数に渡されます。

  4. dll_nameと関数名が2つのコロン(::)で区切られたユーザー路面DLL関数名を定義します。
    <Reference_String
       id                  = "16"
       label               = "CDTire1_user_road_dll_fname"
       string              = "cdt_zbuser::ZB1100"
    />

    上記のコードは、ユーザーDLL“cdt_zbuser.dll”を読み込んで“ZB1100”関数を呼び出すサンプルモデルに相当します。例えば、DLLが使用できないことやZB1100エクスポートシンボルの欠落に起因して、この読み込みと呼び出しが失敗すると、このプロセスは停止します。

ユーザーDLLのコンパイルとリンクは、ユーザー路面のシミュレーションを正常に実行するうえで重要な手順です。これを実現するには、ユーザー路面関数を記述する必要があります。ユーザー関数はCDTireによって呼び出されるので、定義済みの署名が必要です。
SUBROUTINE ZB1100( X, Y, Z, MUE, IBINIT, INSTANCE, IUNIT, OUNIT, IERR )
CDTire DLLはユーザー路面DLLを呼び出しますが、ユーザー路面関数に次の引数があることを想定しています。
INPUTS: X, Y ....... Road coordinates relative to P5 marker in [mm]
        IBINIT ..... Initialization flag ( =0 init, <>0 eval )
        INSTANCE ... CDTire instance number ( PAR(8) of GFORCE )
        IUNIT ...... FORTRAN unit of road data file, already open
        OUNIT ...... FORTRAN unit of road log  file, already open
 
OUTPUTS: Z ......... Road surface height in [mm] at (X,Y) relative P5
         MUE ....... Friction coefficient of road surface at (X,Y)
         IERR ...... Error flag ( =0 success, <>0 stop calculation )

FORTRANまたはC/C++でもユーザー路面を記述できますが、呼び出し元関数からは、ユーザー路面ファイル名が文字列として渡され、ファイルの単位が必ず整数として渡されます。

ユーザー路面関数から数理関数やMotionSolveのユーティリティ関数を呼び出す場合、リンカーの要件を満足するために、必要な依存関係をユーザー側で定義する必要があります。最後に、DLLからエンティティポイント名(この場合はZB1100)をエクスポートできるようにすることも必要です。DLLからさまざまな方法でシンボルをエクスポートできますが、ここではそれらには触れません。