Swept Sine

Swept Sine eventは、大きさが一定で周波数が時間と共に高くなる正弦波ステアリング入力が適用された状態で、一定の速度で走行する車両をシミュレートします。車両の状態変数、タイヤ力、タイヤの状態変数を測定するために、Output Requestsが組み込まれています。Drive torque controllerを使用して、車両を一定速度に維持します。結果をプロットするために、プロットテンプレートが用意されています。

一部の自動車産業OEMは、このテストを周波数応答テストと呼んでいます。このテストは、正弦波ステアリング入力に対する車両の動的な応答を測定するために設計されています。



図 1. Swept Sine event


図 2. Swept Sine eventの上面図

説明

このイベントは、MotionView Assembly Wizardを使用して構築したフルビークルモデルで動作するように設計されています。Task Wizardを使用して追加したこのイベントは、自動的にモデルに付加されます。また、イベントのアタッチメント方式に厳密に従っていれば、手動で構築したモデルでもこのイベントを使用できます。

ハンドルでの正弦波ステアリング入力により、車両の周波数応答特性が決定します。イベント全体を通して、45mphの車両速度が維持されます。2秒後、車両は初期値からステアリングの最大値(0.2750Hz/秒の周波数増加率で45度)までハンドル操作されます。このイベントは、0.25Hzから3Hzまでの最小周波数範囲に対応します。このイベントは、ステアリングホイール角、ヨーレート、ロール角、横加速度の決定に役立ちます。

初期車両速度、初期ステア値と最大ステア値、初期周波数と最大周波数、周波数変化率、開始時間と終了時間、および時間ステップは、イベントフォームで変更できます。ホイール回転速度は計算された値で、変更できません。


図 3.
ステアリングホイール角入力を定義するために使用する簡略式は次のとおりです:(1)
θ = θ max sin ( ( ω i n i t + ω r a t e t i m e ) t i m e )

ここで、

θ = 入力ステアリングホイール角

θmax = 最大ステア値

ω i n i t = 初期ステア周波数

ω r a t e = 周波数変化率

time = シミュレーション時間

ステアリングホイール角を定義するために使用する実際の方程式には、角度からラジアンに変換する項、入力周波数を定義済みの最大周波数に制限する項、0のステアリング初期値から正弦関数に移行するための項などが追加されます。この方程式を実現するTemplex式は次のとおりです。
`{ds_swept_sine.max_str.value}*DTOR
*STEP(TIME, {ds_swept_sine.st_tim.value}, 0.0, {ds_swept_sine.st_tim.value}+0.001, 1.0)
*SIN(2*PI
*(min({ds_swept_sine.max_frq.value},{ds_swept_sine.ini_frq.value}+(({ds_swept_sine.frq_rt.value}/2)
*(TIME-{ds_swept_sine.st_tim.value}))))*(TIME-{ds_swept_sine.st_tim.value}))`
この方程式は以下のように評価されます。
45*DTOR*STEP(TIME, 2, 0.0, 2+0.001, 1.0)*SIN(2*PI*(min(3,0.25+((0.275/2)*(TIME-2))))*(TIME-2))
この式で実行される関数を行ごとに分解すると、次のようになります:
`{ds_swept_sine.max_str.value}*DTOR
ds_swept_sine.max_str.valueは、Swept sineイベントにあるデータセット“ds_swept_sine”に記述された最大ステア値の記号表現です。 .valueは、式で入力値を使用することを示しています。DTORは、角度からラジアンへの変換係数です。
*STEP(TIME, {ds_swept_sine.st_tim.value}, 0.0, {ds_swept_sine.st_tim.value}+0.001, 1.0)
STEP関数は、ds_swept_sine.st_tim.value(Swept Sineの開始時間)の前は0と評価され、ソリューション時間が(Swept Sineの開始時間 + 0.001)になると1と評価されます。このステップは、ステアリングホイール角が0の状態から、時間と共に周波数が高くなる正弦波への移行に使用されます。
*SIN(2*PI
sin(2*PIは、方程式の残り部分のsinを取得します。2*PIは周波数をラジアンに変換します。
*(min({ds_swept_sine.max_frq.value},{ds_swept_sine.ini_frq.value}+(({ds_swept_sine.frq_rt.value}/2) *(TIME-{ds_swept_sine.st_tim.value}))))*(TIME-{ds_swept_sine.st_tim.value}))`
min関数は、最大周波数値と周波数変化率から計算された周波数値の2つのうち、小さい方を取得します。

最大周波数は周波数制限にすぎないことに注意してください。シミュレーションで取得される実際の最大周波数は、初期周波数、周波数変化率、および開始時間と終了時間の関数です。ステアリングホイールの正弦波は、開始時間に初期周波数で始まり、終了時間でイベントが終了するまで、周波数変化率で毎秒高くなります。終了時間と周波数変化率に基づく時間が一致しない場合にのみ、最大周波数が有効になります。

イベントを定義するために、6種類のモデリング要素コンテナーを使用します。イベントには2つのサブシステム(駆動トルクコントローラーと出力リクエスト)もあります。

アタッチメント

イベントは標準のイベントアタッチメントを使用します。Model Wizardを使用してモデルを構築している場合、アタッチメントは自動的に定義されます。アタッチメントには、イベントが解析を実行するために必要な最小限のデータが格納されています。アタッチメントは、大半のイベントで標準です。

データセット

システム内ではデータセットが1つ使用され、そこにはSwept sineイベントを記述するために使用するデータが格納されています。このイベントでは、車両の初期速度、ステアリングの初期値および最大値、初期および最大周波数、周波数変化率、開始時間、終了時間、タイムステップを設定できます。ホイール回転速度および地面の高さは計算された値で、変更できません。

フォーム

Formは、Swept sineイベントを変更する唯一の場所です。変更可能なパラメータは、車両の初期速度、ステアリングの初期値、ステアリングの最大値、初期周波数、最大周波数、周波数変化率、開始時間、終了時間、タイムステップです。ホイール回転速度は計算された値で、変更できません。

ジョイント

Swept sineイベントには球ジョイントが1つ組み込まれています。ジョイントは、ダミーボディをステアリングラックに付加します。ジョイントは、特定のイベントをADAMSで動作させるために含まれています。モデルを手動で構築する場合にダミーボディをステアリングラックに付加します。

モーション

3つのモーションがイベントに組み込まれています。ステアリングモーションはテンプレート内で使用され、車両を操作し、ハンドルを車体に接合する回転ジョイントに対して作用させるための入力を提供します。ステアリングコラムがモデルに含まれない場合、モーションがステアリングラックのインプットシャフトと車体の間のジョイントに作用します。

Front Wheel MotionおよびRear Wheel Motionは、ホイールのハブをナックルに繋ぐホイールのスピンドル回転ジョイントに作用します。ホイールがナックルに固定されていることから、当初のこのモーションは0なので、モデルは静的に収束します。動的解析中にタイヤが回転できるように、静解析の収束後、ホイールロッキングモーションは非アクティブ化されます。

ソルバー変数

Swept sineは、数式であるソルバー変数、Swept Sine Variableのみで構成されています。これはテンプレート内で使用されます。

Templates

Swept sineイベントタスクにはテンプレートが組み込まれています。このテンプレートはソルバー固有で、MotionSolveテンプレートのみがドキュメント化されています。このテンプレートは、</Model>コマンドの後にソルバーデックに挿入されて、このイベントの実行を制御します。
このイベントのテンプレートを以下に示します:
<ResOutput
     angle_type          = "YPR"
  />
  <ResOutput
     mrf_file            = "TRUE"
  />
  <ResOutput
     plt_file            = "TRUE"
  />
  <H3DOutput
     switch_on           = "TRUE"
     increment           = "1"
  />
  <ResOutput
     abf_file            = "TRUE"
  />
{if (tire_dataset.opt_omega.ival ==1)}
<!--Initial static analysis -->

<Simulate
	analysis_type = "Static"
	end_time      = "0.0"
/>	
{endif}

 <Deactivate
	element_type = "MOTION"
	element_id = "{mot_frnt_wheel.l.idstring}"
/>

<Deactivate
	element_type = "MOTION"
	element_id = "{mot_frnt_wheel.r.idstring}"
/>

<Deactivate
	element_type = "MOTION"
	element_id = "{mot_rear_wheel.l.idstring}"
/>

<Deactivate
	element_type = "MOTION"
	element_id = "{mot_rear_wheel.r.idstring}"
/>
{if (tire_dataset.opt_omega.ival ==2)}
<!--Initial static analysis -->

<Simulate
	analysis_type = "Static"
	end_time      = "0.0"
/>	
{endif}
<Deactivate
	element_type = "JPRIM"
	element_id = "{j_clamp_1_body.idstring}"
/>

<Deactivate
	element_type = "JPRIM"
	element_id = "{j_clamp_2_body.idstring}"
/>    

{if ds.inp_type.value == "Angle"}
  <Deactivate
	element_type = "FORCE"
	element_id = "{tor_str.idstring}"
  />
  <Motion_Joint
     id                  = "{wh_motion.idstring}"
     expr                = "IF(TIME-.5:{-ds.str_mag.value}D*STEP(TIME,0,0,0.001,1),{-ds.str_mag.value}D,{-ds.str_rate.value}D*(TIME-.5)-{ds.str_mag.value}D)"
  />                                
                                 
 <Simulate
      analysis_type       = "Transient"
      end_time            = "{(ds.max_str.value-ds.str_mag.value)/ds.str_rate.value+.5}"
      num_steps           = "{((ds.max_str.value-ds.str_mag.value)/ds.str_rate.value+.5)*100}"
  />
 
 {else}
 <Deactivate
 	element_type = "MOTION"
 	element_id = "{wh_motion.idstring}"
/>

<Force_Scalar_TwoBody
     id                  = "{tor_str.idstring}"
     type		 = "Torque"
     val_expression      = "IF(TIME-.5:{-ds.str_mag.value},{-ds.str_mag.value},{-ds.str_rate.value}*(TIME-.5)-{ds.str_mag.value})"
  />
  
  <Simulate
        analysis_type       = "Transient"
        end_time            = "{(ds.max_str.value-ds.str_mag.value)/ds.str_rate.value+.5}"
        num_steps      = "{((ds.max_str.value-ds.str_mag.value)/ds.str_rate.value+.5)*100}"
  />
  {endif}
  
 <Stop/>

参考資料

ISO +7401-2003 - Road vehicles — Lateral transient response test methods — Open-loop test methods