HILSとは?
まず始めに、HILS(Hardware – In – the – Loop – Simulation) の基本的なアイデアをご説明します。
HILSとはECUの検査装置に使われるシステムです。HILSの中には、実機をシミュレーションするモデルが入っています。実機をうまく模擬してやると、制御ソフトウェアからは実機とつながっているのと同じに見えます。つまり、実機が無くてもECUの試験が出来るわけです。
HILSのメリットとしまして、次のような事があげられます。
- ハードの完成を待たなくても良い
- 実ハードでは出来ないような危険な動作もさせられる
- 結果として品質が向上する
イントロダクション
あまり一般的な話ばかりだと分かりにくいでしょうから、ここでとある玩具メーカーを例に出し、具体例とともにHILSの説明をしていきます。
日本はここのところ少子高齢化が進んでいます。内閣府の調査によると、1952年には200万人もあった出生数が、2003年には112万人まで下がってしまいました。この意味するところは、玩具メーカーの主要顧客である子供の数が、ほぼ半分になってしまっているという事です。このままでは会社は傾く一方です。
その対抗策として、30~50代の大人をターゲットとし、昔なつかしいオモチャを少し高度にして販売するといった流れがあります。この試みは実際に功を奏しているようで、大人市場と呼べるものが出来上がりつつある模様です。(ここまでは本当の話です)
ここで、とある玩具メーカ『ガング・トイズ』の例を考えてみましょう。(ここからは完全にフィクションです)
玩具メーカー『ガング・トイズ』でも少子高齢化による売り上げ減に悩まされており、今回社長の肝いりで大人市場に参入することとなりました。商品は、昔流行ったミニ四駆的な物にします。ミニ四駆の楽しみ方としてレースをして勝敗を競う、という物があります。この玩具メーカーでは、大人のための「勝てる!ミニ四駆」制作のために、電子制御ソフトウェアを搭載したミニ四駆を作成する事にしました。
(ちなみに「ミニ四駆」はタミヤの登録商標です。『ガング・トイズ』が作った物はミニ四駆を名乗る事はできませんが、ここでは便宜的にミニ四駆と呼ぶ事にします。販売の際には、社長にいいネーミングを考えてもらう事にしましょう。)
ミニ四駆は、電気モーターを単三電池で駆動し、その力をギヤとシャフトでタイヤに伝えて推進力とします。レースに勝つためには、シャーシの軽量化やモーターの強化などが重要なファクターになります。『ガング・トイズ』では、これらの最適化に加え、電子制御でギアを切り替えて最適なギア比で駆動するようなミニ四駆を作る事にしました。自動車でいう所のオートマチック車です。
開発体制としては、制御ソフトウェア担当が1人、ギヤ等のハードウェア担当が1人、の計2人で作業する事にしました。
HILSを使わない場合のソフトウェア開発
まず始めに、ソフトウェア担当とハードウェア担当に分かれて、ソフトとハードのインタフェースを決める事にします。
協議の結果、ギヤの切り替えに必要なインタフェースを次のように定めました。
- 車速を知るために、車輪からパルス入力を受ける
- デジタル信号で入力を受ける
- マイコンのパルスカウンター入力用のポートに接続
- ギヤは2段階とし、マイコンでアクチュエータを操作する
- デジタル出力のON/OFFでアクチュエータを操作する
- ハードウェア簡略化のため、なるべくドライブ能力の高い出力ポートを使用すること
- 具体的なポート配置については、ハードウェアの設計完了時まで保留とする
さて、ここからは個別に作業が始まります。ソフトウェア担当者は、次のようなアルゴリズムを考えました。
- 車速が A を超えたら、ギヤ出力をONにする (ギヤ High)
- 車速が B を下回ったら、ギヤ出力をOFFにする (ギヤ Low)
要するに、単純なシュミットトリガー式の切り替えです。ここで出てきたA、Bはチューニングパラメータとし、実機で動かしながら調整することとしました。
このソフトは非常にシンプルなものです。ソフト担当者は非常に優秀であったため、マイコンの評価用ボードに、ロジアナや波形生成器を接続し、ソフトの実装や、あらかたの試験を終えてしまいました。ハードが完成しないと、これ以上何もできません。ここでソフト担当者には待ちが入ってしまいました。
・・・
・・・
さて、ようやくハードが完成したようです。そもそも、出来上がったばかりのハードがマトモに動くかどうかなんて、さっぱりわかりません。その上、ソフトがきちんと動くという保証すらないのです。ソフト担当者はドキドキしながらソフトを焼きこみ、実際に動かしてみることにしました。
大概、まずソフトの焼きこみが出来るかどうかでひと悶着あるものですが、そこは今回たまたまうまく行ったようです。そして、電源をONすると・・・とりあえず走る!!!という所までは分かりました。
ただしこのままでは、ギアが切り替えられているかどうかは分かりません。そこでテスト用のLEDを付けて、ギアLowなら消灯、ギアHighなら点灯、としました。すると、初動はテスト用LEDが消灯していますが、ある程度スピードが出るとLEDが点灯しています。どうやらうまく行っているようです!
悲劇はこの後起こりました。ある程度動いている所を見ていたハード担当者が、おもむろにミニ四駆を手でつかみ、無理やり手で逆走させたのです。その直後、何かが焼けるようなイヤーな匂いが。。。
今回の設計では、ミニ四駆が前進する事しか考えていませんでした。そのため、「車速は常に正」という前提で設計を行っていました。ですから、前進しているのか後進しているのか、マイコンには分かりません。手で勢いよく逆走させられた際、マイコンは車速が出ている!と判定し、ギアをHighに入れてしまいました。そのため、通常よりも高い逆起電力がモーターに発生し、そのせいで基板が焼けてしまったようです。
ソフト担当者は思いました。「これはやっかいだな。この手のテストをするのに、今後どれくらいの基盤を焼かないと行けないんだろう。。。」
HILSを使ってみよう
今回、何が困ったかというと、ハードが無いとソフトの試験が出来ない、という所です。もしもハードではなく、ハード的な何か別の物で試験できたら、かなり楽になるのではないか?と思います。
もしも、ミニ四駆っぽい振る舞いをするような装置があったとしたら、どうでしょう。ECUから見れば、パルスがやってきて、それに対してアクチュエータを動かす。それさえ出来るのであれば、相手がミニ四駆であろうが、ミニ四駆っぽい何かであろうが、関係ありません。
その為に、HILSを使用する事にしましょう。HILSとは、Simulinkモデルをリアルタイムに動作させる事が出来る装置です。
そもそも物理現象は線形微分方程式であらわす事が出来ます。(そうではない非線形の振る舞いの方が、実は多かったりするのですが、それはまた別の機会に。)ですから、HILSを「ミニ四駆っぽく」したいのであれば、ミニ四駆の振る舞いを微分方程式で書き下してやれば良いのです。その微分方程式をSimulinkモデルにすれば、HILSで走らせる事が出来るようになります。
Simulinkモデルにするとは、たとえばこうです。
こんな分圧器があったとします。入力電圧を R / ( R + R ) = 0.5 倍したものが出力電圧となります。この「二分の一になるよ」という振る舞いをSimulinkモデルで書くとこうなります。
あまり単純すぎてありがたみが分かりませんね。ですが、これにCやRが入ってきたらどうでしょう。積分要素や微分要素が入ったシステムの振る舞いをシミュレートするのは少々骨の折れる作業です。ですが、Simulinkモデルでは、微分積分はお手の物で、ブロックを1つ配置するだけで実現できてしまいます。
こんな具合に、優秀なソフト担当者はミニ四駆をSimulinkモデルとし、それをリアルタイムシミュレータの上で動かす事にしました。そして、そのHILSにECUを接続することで、「どんな車速の時、マイコンがどんな出力を出しているのか」を簡単に見る事が出来るようになりました。もう、ハードの完成を待たなくても良いのです。
しかも、たまたま車両モデルにも詳しかったソフト担当者は、実機に近いモデルを組みました。そのため、チューニングパラメータ A,B についても、かなり最適に近い所まで絞り込むことができました。なにしろ、どんな車速の時にマイコンがどんな振る舞いをしていたのか?を、HILSを使う事で簡単にロギング、グラフ化が出来るのです。その結果、かなりチューニング作業が楽になりました。
また、HILS上の仮想モデル上では、いくらミニ四駆を逆走させても回路が焼ける事はありません。モデル上でミニ四駆を逆走させた結果、問題となりうる逆起電力が発生する事をつきとめたソフト担当者は、すぐにハード担当者の所に行って善後策を検討する事が出来ました。
この様に、ミニ四駆そのものではなく、ミニ四駆っぽい振る舞いをするHILSを使用する事で、制御ソフトウェアの開発はかなり楽になりました。
今回は制御ソフトウェアだけを対象にしましたが、シャーシの軽量化の効果や、さまざまな路面のシチュエーション等、シミュレーションの幅を広げていく事で、より「勝てる!ミニ四駆」を開発していく事も可能となるでしょう。
開発担当者の仕事はここまでです。いかにこれを売りこむかについては、社長に頑張ってもらう事にしましょう。。。
次回
ここまで書いておいて申し訳ないのですが、今回の話はかなりの夢物語です。HILSを使用するには様々な課題があって、なかなかこうは行きません。かと言って、HILSが全く役に立たないのかというと、そういう訳でもありません。
次回は、HILSを開発に適用する際の問題点と、それに対応した最近のトレンドについてご説明します。