VSコマンド

VehicleSim

2019.03.03

VSコマンド

VehicleSim製品の数学モデルは、幾通りかの方法で拡張が可能です:

     1.     VS数学モデルは、Simulinkのような他のシミュレーション環境のモデルに接続可能です。
     2.     VSコマンドを使用して方程式や変数を追加できます。
     3.     Simulinkの場合と同様に、変数をカスタムプログラムで置き換えることができます。
     4.     数学モデルの変数は、C/C++ポインタをサポートするカスタムプログラムにより直接アクセス可能です。

ここでは、VSコマンドの主な使用法について解説します。

VSコマンド

VSソルバーは、入力ファイルの読み込み、出力ファイルの書き込み、内部数学モデルからの変数計算を行うVehicleSim製品内のプログラムです。
入力ファイルをスキャンしてパラメーターやテーブルに関連するキーワードを探すのに加え、VSソルバーは高度な解析(例:線形化)の適用や、VSイベントを用いた高度なプロシージャの設定、変数の追加、方程式の追加などを始めとするアクションを実行できるVSコマンドを探します。

VSソルバーは、 入力を数値的にあるいは他のモデルパラメーターや変数を含む式で表現することを許可するシンボリック式カルキュレーターをサポートします。

ソルバープログラムには高度なコマンドを伴うプリプロセッサーも含まれており、ユーザーがランタイム時に方程式を追加することによりモデルのカスタマイズや拡張ができるようにします。他のモデルの変数を含む式に入力変数を代入することが可能です。例えば、各タイヤの路面摩擦変数は、ランタイム時に定義されたモデル内の他の変数に基づく方程式で再定義できます。

新規パラメーターと変数の定義

VSコマンド

ランタイム時に新規変数が定義される場合の目的は様々で、インポート、エクスポート、出力、定数パラメーターや、他の方程式で使用される補助変数などが挙げられます。VSコマンドを使用して、該当するユーザー定義の微分方程式の数値積分によって計算される新規の状態変数の形式で自由度を追加することもできます。

≪単位≫
VSソルバーは、2つの単位セットを保持します。すべての方程式には内部SI単位が使用され、スケール係数は一切使われません。角度はラジアン、長さはメートル、時間は秒などです。ユーザー単位は、整数ではないすべての変数に代入されます。デフォルトは、関連するパラメーターや変数に一般的に使用されている単位で、角度であれば度、寸法はmm、車両速度はkm/h、加速度はgなどです。

すべてのパラメーターおよび変数のユーザー単位はすべて、VSコマンドを用いて変更可能です。
さらに、新規の単位を定義していずれのパラメーターまたは変数にも代入できます。例えば、車両前進速度は通常km/hで示されますが、mi/hやm/sあるいは他の単位で設定される場合もあります。

モデルへの方程式の追加

VSコマンドで追加された新規変数は、やはりVSコマンドで定義される方程式で計算することができます。
これは、モデル内のすべての既存および新規変数やパラメーターを含む代数方程式の場合もあります。微分方程式を追加することもでき、代数方程式は新規変数の微分係数に対してランタイム時に定義されます。
 
方程式は、初期化中や時間ステップの開始時、時間ステップの終了時など、シミュレーションの様々な時点に挿入することができます。

方程式は、外部ソフトウェアで作業するのに利用可能な既存の入力変数に対して追加することも可能です。
Simulinkのような外部ソフトウェアから力やモーメント、コントロールなどを取得するのではなく、VSコマンドで指定される方程式を用いて定義することができます。
例えば、この頁の最上部に表示されているCarSim事例またはTilt Table TruckSim事例のように、K&Cのシミュレーションテストの車両ばね上質量を拘束するために力とモーメントを指定します。

VSイベント

最も強力な機能の1つがVSイベントです。保留イベントが設定され、そこでは変数が監視され式(数字、別の変数、または他の変数や内蔵関数を含むシンボリック式)と比較されます。
比較(<、>、=など)が真の時は、オープンループからクローズドループループへの移行、タイヤの置換、路面の変更、一部車両条件の再設定、ファイルへの書き込みの有効化や無効化など、モデル内のほぼいかなるものでも変更が可能な新規データファイルがロードされます。
イベントは一般的に、複雑な試験プロシージャをスクリプト化し、新たな感度を追加することにより数学モデルを拡張するのに使用されます。例として、Sine with Dwell CarSim事をご覧ください。

線形化

VehicleSim製品の車両数学モデルには、非線形の常微分方程式(ODE)が含まれます。
これは、ドライバーコントロールや地面との相互作用などに対するモデルの応答を時刻関数として計算するために使用されます。
通常のオペレーションでは、シミュレーション試験の結果は実車テストに使用するのと同じ手法で表示され解析されます。
高速デジタルコンピューターが利用可能になる以前は、研究者やエンジニアは通常、固有値やボード線図のような解析周波数領域手法によって運動システムを検討していました。
こういった手法は自動車の運動解析には1950年代から、オートバイの運動解析には1970年代から使用されています。

古典的な周波数領域手法はすべて、運動の線形方程式を持つシステムモデルに基づきます。すべてのVSモデルの方程式は非線形ですが、全システムの挙動は微小変更を加えることによりシミュレーションラン中に随時線形システムとして近似させることができます。
シミュレーションラン中に随時VSコマンドLINEARIZEを使って内蔵の微小変更アルゴリズムを適用し、線形化システムのためのA、B、CおよびD行列を作成してMATLAB Mファイルに書き込むことができます。
シミュレーションランの終了後、ラン中に生成されたMファイルをMATLABにロードして解析できます。
この機能は、一般的には振動のモードを特定するためにBikeSimの解析に使用されます。
VS機能として、すべての時間領域モデルにも利用可能です。

注:微小変更手法は、HILシステムあるいは独自のODEを持つ外部ソフトウェアで拡張されたモデルには有効ではありません。

時間を遡って保存状態に戻る

VSソルバーには、VS数学モデルの現在の状態の「スナップショット」を取り、将来使用できるようメモリ内に保存する内蔵機能があります。
スナップショットは、現在のシミュレーション時間に加え、すべての状態変数の現在の値(内蔵変数、VSコマンドで追加されたもの、またVS API関数で追加されたものを含む)と、(存在している場合)すべてのアクティブな入力変数の現在の値から構成されます。これは、VSコマンドSTART_SAVE_TIMERを用いて一定の間隔で実行することもできますし、あるいは対象としたい時点でのみ、VSイベントがトリガーされる時にVSコマンドSAVE_STATEを用いて実行することも可能です。

保存された状態に復元するには、別のコマンドRESTORE_STATEを使用します。このコマンドは、VSイベントでトリガーされ、次回のトライで挙動を変更するためにモデルパラメーターを変更した後に実行されます。
保存/復元機能は、LINEARIZEコマンドの根底にある微小変更を実施するため内部的に使用されます。
この機能は、最適化や先進制御アルゴリズムのような反復的な状況に関わる上級ユーザーが利用することもできます。

例えば、TruckSim PBSにはフロントタイヤのサイドウォールが50 mmの公差で指定された軌道に追従するようドライバーが車両を操舵することが求められる試験が含まれます。これは、横方向エラーを確認する保存/復元手法で実施され、失敗が発生すると目標が調整され、コントローラーの新たな目標で継続するようモデルが時間を遡って戻ります。
CarSimエンジニアは、NASCAR、Formula 1、ALMSやIndyCarシリーズのレースエンジニアと連携し、旋回でのブレーキとスロットルコントロールを制限するため同様のコントロールストラテジーを設定してきました。
車両が軌道に追従できなければ、モデルが時間を遡って戻り、修正されたコントロールが試されます。


※ 記載された会社名・商品名・製品名は、各社の登録商標または商標です

この記事のシェアはこちらから