今回から数回に分けて、HILS高速化のための方法をご説明します。
いま持っているHILSのパフォーマンスを上げたい。でも、どうやっていいのかがよく分からない、という場合があります。そういう時は、まずHILS高速化のための基本的な概念を理解する必要があります。そうすれば、どんな手を打てばHILS高速化ができそうかイメージが湧いてくるようになります。
さて、HILSのボトルネックは何と言ってもモデルの演算時間です。HILSを高速化するには、演算速度を向上させる必要があります。そのためには、基本的にCPUを高速化するしかありません。
CPUの高速化といってまず思い浮かぶのは動作クロックです。しかこれは、もう頭打ちになっていてこれ以上の向上は望めなさそうです。
次に思い浮かぶのは64ビット化です。これはかなり強力で、同じモデルでも32ビットマシンと64ビットマシンとでは全然スピードが違います。
これらの事はもうやりつくされていますので、最近は並列化に傾いています。とにかくコア数を増やす事で、全体のスピードを稼ぐ方向に向かっています。

そこで、この並列化の流れに着目しつつ、Simulinkモデルと並列化との間にはどんな関係があるのかについて、ご説明します。今回は、ほとんど全てのHILSで使えるテクニックのご紹介です。
続きを読む
何やら「モデルベース開発」がいいらしい、という話はあちこちで耳にします。これは、UMLによるモデルでも、Simulinkモデルでも同じです。
UMLモデルが嬉しいのは、システムの中身を理解しやすくなるからです。システムの「構造」をモデルで表す事で、システムの中身を理解しやすくします。UMLモデルを見る事で、このシステムって要するに何なの?という事が分かります。
一方、Simulinkモデルによる嬉しさは全然別の所にあります。一言でいうと、それは「動く」から嬉しいのです。
オーケー。「モデルベース開発」というものはいいらしい。特に制御系なら、Simulinkモデルを使うのがいいらしい。じゃあ早速、ツールベンダーのいいなりになってツールを買いあさり、モデルベース開発を導入したらいいのか?というと、必ずしもそれが正しいとは限りません。
そこで今回は、Simulinkによるモデルベース開発の何が嬉しいのか?何が嬉しくないのか?をご説明します。

嬉しい点、嬉しくない点を理解することで、「モデルベース開発を導入するべきなのか?」あるいは「モデルベース開発を導入する際に、何から手を付けたらいいだろう?」といったことを考えるときに、多少なりとも判断材料になるのではないかと思います。
続きを読む
今回は、HILS構築上の注意点についてご説明します。ちょっとした注意点ではありますが、ここに気をつけるだけで随分とトラブルが減るはずです。
前々回の記事では、HILSの分類法について3つの軸を導入しました。
これらのうち、「表示機能」と「I/Oの種類、数」については、あまりトラブルにはなりません。目に見える部分なので、自然としっかり詰められる部分だからです。
問題は、「なるべく高速に」という部分です。スピードは目に見えません。目に見えない部分については、人間どうしても詰めが甘くなります。場合によっては、まったく考慮されない場合もあるでしょう。

前回の記事で、ステップ毎の処理は「モデル演算」+「I/O処理」であるとご説明しました。今回は、これらの処理時間についてご説明します。
続きを読む
これまで、HILSとはシミュレーションを実行するもの、というお話をしてきました。しかし、そもそも「シミュレーションをするとは何か?」について触れてきませんでした。
そこで今回は、HILSの中でどのようにしてシミュレーション実行が行われているのかについてご説明します。
シミュレーションの目的は、実ハードウェアの動作を模擬する事でした。「模擬する」を言いかえると、「ハードウェアがどのような時間変化をするのか、計算する」となります。
たとえば、クルマが斜面にあるとします。ブレーキを外してギアをニュートラルにすると、クルマは勝手に坂を下り始めます。その時、このクルマは5秒後にどうなっているでしょうか?10秒後はどうでしょう?30秒後には?こういった疑問に答える事が、ハードウェアを模擬する事と言えます。
「ハードウェアがどのような時間変化をするのか、計算する」を、もう少し丁寧に見て行きましょう。
ここでステップサイズを1ミリ秒としたとします。その時に、次のような計算をします。
時間=0ミリ秒の状態 を元に 時間=1ミリ秒の状態を計算する
時間=1ミリ秒の状態 を元に 時間=2ミリ秒の状態を計算する
時間=2ミリ秒の状態 を元に 時間=3ミリ秒の状態を計算する
(以後、くりかえし)
これはすなわち、時間=0ミリ秒の時の状態、時間=1ミリ秒の時の状態、・・・と、あらゆる時間におけるシステムの状態をすべて求める事と言えます。あらゆる時間における状態を、上記のようにステップバイステップで計算していく訳です。
今回は、こういった処理が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の速度とは正の相関関係にあります。
続きを読む