HILSの分類法
現在、実に様々なベンダーが、HILS用のシステムを販売しています。さまざまなHILSがある中で選定を行う場合、何らかの基準が必要です。HILSを分類する基準として、私は3つの軸があると考えています。
- なるべく分かりやすく表示してほしい
- I/Oは、なるべく多くの本数、なるべく沢山の種類を
- なるべく高速に動作してほしい
「なるべく分かりやすく表示」とは、GUIのパーツの豊富さ、ドライビングシミュレータ的なGUIの有無、データロギング機能、モデル信号モニタ機能の有無などの事を言います。このあたりは、いくつかのツールを組み合わせればだいたい実現できる話ですので、どのHILSを選んでもあまり違いは無いのではないかと思います。ですから、詳しくは触れない事にします。
「I/Oはなるべく多く」とは、HILSのもつハードウェアインタフェースの事を言っています。HILSは、ECUと接続して使用します。接続するにはアナログI/O、デジタルI/Oのようなハードウェアインタフェースが必要です。ECUがHILSに合わせてくれる事は絶対にありません。ですから、HILSがECUにあわせて多種多様なI/Oを持っている事が必要です。
「なるべく高速に」とは、モデル実行速度の事を言っています。Simulinkモデルを精度よく実行するには、ある程度高速に実行する必要があります。モデルの精度とHILSの速度とは正の相関関係にあります。
I/Oは、なるべく多くの本数、なるべく沢山の種類を(⇒ECUとの接続のし易さ)
ECUは、デジタル信号、アナログ信号などの電気信号でもって外部のセンサーやアクチュエータとやり取りをしています。その電気的な特性は多種多様です。ですからHILSも多種多様なI/Oに対応していなければいけません。
HILSが全てのI/Oに対応できればベストです。しかし現実にはそうもいきません。そこで、「Signal Conditioning」とよばれる、電気的な調整を行うモジュールを間に挟んで、ECUと接続する事になります。HILSは汎用品ですが、Signal Conditioningは基本的に特注品となり、テストの目的毎に作成される事になります。
ECUによって、必要とされるI/Oの種類は異なります。ですが、基本的には次の物を組み合わせた形となるでしょう。
- AD (アナログ入力)
- DA (アナログ出力)
- DI (デジタル入力)
- DO (デジタル出力)
- PWM IN (パルス入力)
- PWM OUT (パルス出力)
- 標準通信(UART、CAN、LIN、MOST、FlexRayその他)
- ローカル通信 (車両メーカーさん独自規格の通信)
アナログ入出力は、さらに次のプロパティがあります
- 電圧のレンジ(±12Vとか、±42Vとか)
- 分解能 (10ビットとか12ビットとか)
- 変換速度 (1変換につき何マイクロ秒など)
同様に、デジタル入出力は、
- 電圧レンジ
- Push-Pullか、Pull-Downか
などの違いがあります。これらはほんの一例で、詳しく電気的な条件を列挙していくとキリがありません。
HILSに備え付けのI/Oモジュールでは、これらの多種多様な条件に全て対応するのは困難です。そこで、Signal Conditioningによって調整を行う訳です。
HILSのI/Oについて見る時、次のような点に着目すると良いかと思います
種類がそろっているか?
アナログ入出力、デジタル入出力はだいたいどこも持っているはずです。パルス入出力については、欲しい機能が必ずしも備えられているとはかぎりませんので要注意です。そして一番重要なのが通信です。UART、CAN、LINあたりは大丈夫でしょうが、それ以外の通信規格となると、対応しているHILSとそうでないのとがあります。I/Oの種類は、とにかくなるべく沢山対応している方が、ECUとの接続時に苦労しなくて済むでしょう。
カスタム拡張がやりやすいか?
標準の通信ですべてカバーできれば問題がありません。しかし実際には、そうでないケースもあります。たとえば、ローカル通信というものがあります。これは、車両メーカーさんなどが独自に企画したプロトコルで動作するものです。ですから標準の通信モジュールではどうにもなりません。そこで、カスタム品を作成する必要があります。(ちなみに、ローカル通信ですが、昔はいっぱいあったようです。しかし最近はめっきりみなくなっている気がします。)
だいたいHILSベンダーあたりにカスタム依頼をすれば、それ相応の値段で引き受けてはくれるでしょう。しかし、拡張ベースが用意されていて、そこに独自のロジックを実装するだけで良いようになっていれば、ずいぶん楽になります。たとえば、いくつかのベンダーは、任意波形生成モジュールを持っています。これは、任意のパターンの波形を出力してくれる機能です。デジタル出力でも同じような事はできます。しかし、それよりもずっとキメ細やかな波形定義が出来るようになっています。こういったものも、一種のカスタム拡張と言えるでしょう。
もちろん、特殊なI/Oなんて一切使わない、という方には無縁の話です。
I/O数を増やしやすいか?
HILSの仕組み上、いくらでもI/Oを増やせる場合と、そうでない場合があります。大量のI/Oを必要とするHILSを構築する際には、「どれくらいまでI/O数を増やせるのか?」を確認された方が良いでしょう。
Signal Conditioningをやりやすいか?
Signal Conditioningとは、電圧レベル変換などの電気的な変換を行う物でした。先ほどは、Signal Conditioningは特注品と書きました。しかし、たとえば電圧レベル変換くらいのものであれば、毎回毎回特注するのもどうかと思われるでしょう。そこで、Signal Conditioningを内蔵しているHILSも存在します。このHILSでは、Signal Conditioningをある程度プログラマブルに調整する事が出来るようになっています。場所を取らない上に毎回特注する必要もないので、とても便利なものだと思います。
安定性があるか?
HILSはツールです。ツールなんて動いて当たり前、と考えてらっしゃる方もいるでしょう。しかし、HILSは年間何万台も出荷されるようなものではありません。ですから、安定性については必ずしも万全とは言えません。ちょっとI/Oを増やすとすぐに動作が不安定になるなど、モノによって色々とあります。個人的には、フレキシビリティと安定性とは逆相関するようなイメージを持っています。(あくまで個人的な意見です。かならずしも全てのシステムがそうだと言っているわけではありません。HILSベンダーさん、訴えないで下さいね。)
要するに、HILSはECUとつないでナンボのシステムです。ですから、なるべく本数が多く、種類が沢山用意されているほうが、ECUと接続しやすくなりますよ、という話です。
なるべく高速に動作 (⇒モデルを高精度で動作させる)
HILSは、モデルをリアルタイムに動作させる装置です。モデルの存在意義は、実機ハードウェアを模擬する事です。したがって、なるべく正確に模擬してくれた方が良いに決まっています。
いかに正確に模擬してくれるかは、「モデルそのものの精度」と「モデルの実行速度」の2つで決まります。モデルそのものの精度が重要なのは、いかにもその通りと思われるでしょう。しかし、モデルの実行速度が、なぜ精度と関係するのかは自明ではありません。そこで、すこしその説明をします。
モデルとは、微分方程式をブロック線図で表したものです。
微分とは、そもそも連続時間において定義されるものです。連続時間であるということは、無限小の変化が無限大の回数続く、という意味です。しかし、コンピュータに無限大の回数演算させる訳にはいきません。そこで、無限小とまではいきませんが、そこそこ小さな時間に区切って(たとえば、1ミリ秒刻みなどで)計算をさせることにします。この、「1ミリ秒刻み」などの時間の区切り幅の事を、「ステップサイズ」と呼ぶ事にします。
ステップサイズ=1ミリ秒であれば、1秒間に1,000回演算をします。ステップサイズ=100マイクロ秒であれば、1秒間に10,000回演算をします。
ステップサイズが小さくなるほど、無限小に近づきます。無限小に近づくほど、精度は良くなります。一方、ステップサイズを小さくするほど、1秒間に演算する回数が増えます。演算する回数が増えればCPU負荷が増えます。したがって、そこそのCPUを使って、そこそこの演算精度を出す事が求められます。
少し脱線しますが、ステップサイズに区切って演算しつつも、なるべく精度よく微分方程式を解きたい、という要望は昔からありました。そして、そのための数学的な手法がいくつか存在します。Simulinkの「シミュレーション」>「コンフィグレーションパラメータ」>「ソルバ」にて選択できる、「odeなんとか」 は、この手法の名前です。いくつか手法が選べるのは、手法に応じて得意不得意があるからです。そのため、モデルにあった手法を選べるようになっています。
さて、とにかくステップサイズが小さくなるほどモデルの精度は良くなる訳です。ですから、HILSには次の事が求められます。
ステップサイズを小さく出来るか?
HILSによって、ステップサイズを10マイクロ秒以下に設定できる物もあれば、100マイクロ秒以上にしか出来ないものもあります。このあたりは、HILSシステム自体の演算オーバーヘッドであったり、HILSのもつタイマーの精度によって違ってきます。
なるべく小さく出来るに越したことはありませんが、不必要にステップサイズを小さくしても仕方ありません。必要に応じたレベルを見定めたうえで、そのステップサイズが実現できるかどうか?をHILSベンダーに問い合わせると良いでしょう。
モーター系の試験をするのであれば、10マイクロ秒は欲しいところです。それ以外のケースであれば、500マイクロ秒、1ミリ秒でも良いでしょう。
モデルの計算を高速に出来るか?
一回の演算をなるべく高速に終えられれば、それだけステップサイズを小さくする事にもつながります。これはもう、完全にCPU依存になります。64ビット化や、周波数の向上などでスピードを稼ぐしかありません。場合によっては、CPUではなくFPGAを使用して無理やり高速化する場合もあります。
演算の高速化については、また別の機会に詳しくご説明する予定です。
要するに、なるべく速いシステムの方が、モデルの実行精度が良くなりますよ、という話です。
あと、モデルの精度について、少しだけ補足します。
本来、HILSにどんなモデルを載せようが、ユーザー様の勝手のはずです。しかし、現実にはシステムとモデルとがべったりくっついてきて、このHILSを使いたいならこのプラントモデルをつかわないとダメ、というような話もあるようです。技術的な問題なのか、単に商売上の都合なのかは分かりません。
いずれにせよ、HILS選定の際には、使いたいプラントモデルを使用できるのかどうか、確認しておく必要があるかと思います。今回は詳しく触れられませんでしたが、HILSベンダーによって、モデルの内容そのものに得意不得意があるようです。特定分野のモデルに対してノウハウを持っていると、それに適した機能を搭載したりします。このあたりは、やりたい事に対するノウハウをどれくらいHILSベンダーが持っているか、確認されると良いでしょう。
気になるお値段は?
ほとんどのベンダーさんは価格を公開されていないと思います。そんなわけで、ここで具体的な値段を公開するわけにもいきません。ですから、あくまでこんなオーダーですよ、という形でご紹介します。
まずライセンス区分というものがありまして、たいがい「開発ライセンス」と、「実行ライセンス」という2種類があるかと思います。
開発ライセンスとは、HILSのモデルを作り、実行するためのライセンスです。フル機能バージョンと言い換えても構いません。
実行ライセンスとは、開発ライセンスを使って作られたモデルを、ただ動かすだけのライセンスです。機能限定バージョンとも言えます。
開発ライセンス+各種ハードウェアですと、数百万~になるかと思います。MATLAB/Simulink等のライセンス料は別なので、持っていないなら別途購入する必要があります。また、ものすごく高性能なシステムをそろえると、数千万になる事もあります。これは、特定の領域に特化した特別なHILSの場合です。さらに、もっともっと大規模なシステムになると数億行きますが、これは日本でも数台というレベルかと思います。
実行ライセンス+各種ハードウェアですと、数百万か、もっと安いかという所が多いかと思います。物によっては、百万を切る製品もあるようです。実行ライセンスの場合には、MATLAB/Simulinkを持っていなくても動く場合があります。もしもそういうHILSであれば、トータルのライセンス料も抑えられます。
最後に、「各種ハードウェア」の部分で1点補足します。基本的に、安いものにはコンフィグ可能なSignal Conditioningは付いていません。そのため、Signal Conditioningの作成費用は別途必要です。この費用がン十万~百万くらいかかる場合もあるので、注意が必要です。(Signal Conditioningは単なる電気回路なので、自作してもかまいません。)
次回
次回は、HILSシステムの中でモデルがどのように動作しているかについてご説明します。