RSS RSS

自動車業界では、MATLAB/Simulinkをベースとしたモデルベース開発が有望視されています。
なぜかと言うと、適用方法によってはそれなりに工数削減や品質向上が出来ると言う事が実証されてきたからです。
一方ではモデルベース開発によって逆に工数が増加してしまうケースもあり、まだまだ課題が山積みです。
これは、ユーザー様にとっては課題が山積みと言えますが、私にとっては仕事のネタが山積みとも言えます。
このブログでは、そういったモデルベース開発に関わっていく中で思った事について書いていきます。
更新日は月曜日+気が向いた日です。連絡先: yositake@smooth-works.net

  • Links

  • Categories

  • Meta

  • Archives

  • SHOW/HIDE NAVIGATION
    7月
    2

    HILSとは

    Posted In: モデルベース開発, HILS by yositake

    HILSとは、より便利に使える検査装置です。何がどう便利なのか?という点について、従来型の検査装置と比較してこれからご説明します。

    そもそも何を検査するのかといいますと、ECUの検査を行います。ECUとHILSの間は、電気的(デジタル、アナログ、PWM)あるいは通信(CAN、LIN、UART)で接続します。

    別にHILSでなくっても、こういう電気的に接続した状態でテストする環境はいくらでもありますよね。では、HILSにはどんな特徴があって、何がうれしいんでしょうか?

    続きを読む

    7月
    13

    今回は、FPGAによるHILS高速化についてご説明します。FPGAを使う事で何ができるのか?を理解する事で、HILSを構築する際の、技術的な引き出しが1つ増える事になります。

    さて、HILSの高速化方法ですが、CPUを使った演算をする限りは、もう限界に達してしまいました。これ以上高速化するには、FPGAに頼るしかありません。(FPGAって何?

    blog090713_00

    CPUは、クロックは数GHzととても高速です。それに、ソフトウェアも比較的柔軟に書く事ができます。しかし残念ながら、処理を行うのは逐次実行です。1つ1つ処理していかないといけません。

    一方、FPGAというものがあります。これは、クロックは数百MHzですし(もちろん、もっと高速なものもありますが)、処理内容を柔軟に書く事も難しいです。そのかわり、処理を並列実行できます。

    この並列実行という性質のおかげで、ものすごく高速に処理ができます。たとえばモデルを1マイクロ秒ステップで動かす、というのは、CPUには無理です。しかし、FPGAであればこれが可能です。

    ただし、FPGAは高速に実行できる一方で、固定小数点しか扱えません。浮動小数点を扱えない事もないのですが、そうしてしまうとスピードが犠牲になってしまいます。

    このように、FPGAは素晴らしいものではありますが、簡単にCPUを置き換えられるようなものではありません。

    そこで今回は、FPGAをHILSに使用するための原理をご紹介します。

    続きを読む

    7月
    6

    前回は、マルチレートモデルを作る事によって並列処理を行うための方法をご紹介しました。

    今回は、それをマルチノードという仕組みを使って行う方法をご紹介します。マルチノードシステムを組むのは、なんとかしてHILSを高速化するためです。なんとかして高速化するためには、マルチノードの原理を理解しておくことが重要です。原理を理解すれば、マルチノードのシステムを組む際に、何に注意すれば良いのかが分かるようになります。

    さて、マルチノードHILSの基本的な考え方は、『複数のノードを使って処理を分散しよう』というものです。

    blog090706_00

    ノードが複数あれば、モデルの演算や、I/O処理などの負荷を分散させる事ができます。マルチノードシステムとは、これらを並列実行することにより、トータルでの実行速度を稼ごう、というアイデアです。

    続きを読む

    6月
    29

    今回から数回に分けて、HILS高速化のための方法をご説明します。

    いま持っているHILSのパフォーマンスを上げたい。でも、どうやっていいのかがよく分からない、という場合があります。そういう時は、まずHILS高速化のための基本的な概念を理解する必要があります。そうすれば、どんな手を打てばHILS高速化ができそうかイメージが湧いてくるようになります。

    さて、HILSのボトルネックは何と言ってもモデルの演算時間です。HILSを高速化するには、演算速度を向上させる必要があります。そのためには、基本的にCPUを高速化するしかありません。

    CPUの高速化といってまず思い浮かぶのは動作クロックです。しかこれは、もう頭打ちになっていてこれ以上の向上は望めなさそうです。

    次に思い浮かぶのは64ビット化です。これはかなり強力で、同じモデルでも32ビットマシンと64ビットマシンとでは全然スピードが違います。

    これらの事はもうやりつくされていますので、最近は並列化に傾いています。とにかくコア数を増やす事で、全体のスピードを稼ぐ方向に向かっています。

    blog090622_00

    そこで、この並列化の流れに着目しつつ、Simulinkモデルと並列化との間にはどんな関係があるのかについて、ご説明します。今回は、ほとんど全てのHILSで使えるテクニックのご紹介です。
    続きを読む

    6月
    15

    今回は、HILS構築上の注意点についてご説明します。ちょっとした注意点ではありますが、ここに気をつけるだけで随分とトラブルが減るはずです。

    前々回の記事では、HILSの分類法について3つの軸を導入しました。

    これらのうち、「表示機能」と「I/Oの種類、数」については、あまりトラブルにはなりません。目に見える部分なので、自然としっかり詰められる部分だからです。

    問題は、「なるべく高速に」という部分です。スピードは目に見えません。目に見えない部分については、人間どうしても詰めが甘くなります。場合によっては、まったく考慮されない場合もあるでしょう。

    blog090615_00

    前回の記事で、ステップ毎の処理は「モデル演算」+「I/O処理」であるとご説明しました。今回は、これらの処理時間についてご説明します。
    続きを読む

    6月
    8

    HILSの動作原理

    Posted In: モデルベース開発, HILS by yositake

    これまで、HILSとはシミュレーションを実行するもの、というお話をしてきました。しかし、そもそも「シミュレーションをするとは何か?」について触れてきませんでした。

    そこで今回は、HILSの中でどのようにしてシミュレーション実行が行われているのかについてご説明します。

    blog090608_00シミュレーションの目的は、実ハードウェアの動作を模擬する事でした。「模擬する」を言いかえると、「ハードウェアがどのような時間変化をするのか、計算する」となります。

    たとえば、クルマが斜面にあるとします。ブレーキを外してギアをニュートラルにすると、クルマは勝手に坂を下り始めます。その時、このクルマは5秒後にどうなっているでしょうか?10秒後はどうでしょう?30秒後には?こういった疑問に答える事が、ハードウェアを模擬する事と言えます。

    ハードウェアがどのような時間変化をするのか、計算する」を、もう少し丁寧に見て行きましょう。

    ここでステップサイズを1ミリ秒としたとします。その時に、次のような計算をします。

    時間=0ミリ秒の状態 を元に 時間=1ミリ秒の状態を計算する
    時間=1ミリ秒の状態 を元に 時間=2ミリ秒の状態を計算する
    時間=2ミリ秒の状態 を元に 時間=3ミリ秒の状態を計算する
    (以後、くりかえし)

    これはすなわち、時間=0ミリ秒の時の状態、時間=1ミリ秒の時の状態、・・・と、あらゆる時間におけるシステムの状態をすべて求める事と言えます。あらゆる時間における状態を、上記のようにステップバイステップで計算していく訳です。

    今回は、こういった処理がHILSの中で実行されている様子について、少しだけ詳しくご説明します。
    続きを読む

    6月
    1

    HILSの分類法

    Posted In: モデルベース開発, HILS by yositake

    現在、実に様々なベンダーが、HILS用のシステムを販売しています。さまざまなHILSがある中で選定を行う場合、何らかの基準が必要です。HILSを分類する基準として、私は3つの軸があると考えています。

    blog090601_00

    • なるべく分かりやすく表示してほしい
    • I/Oは、なるべく多くの本数、なるべく沢山の種類を
    • なるべく高速に動作してほしい

    「なるべく分かりやすく表示」とは、GUIのパーツの豊富さ、ドライビングシミュレータ的なGUIの有無、データロギング機能、モデル信号モニタ機能の有無などの事を言います。このあたりは、いくつかのツールを組み合わせればだいたい実現できる話ですので、どのHILSを選んでもあまり違いは無いのではないかと思います。ですから、詳しくは触れない事にします。

    「I/Oはなるべく多く」とは、HILSのもつハードウェアインタフェースの事を言っています。HILSは、ECUと接続して使用します。接続するにはアナログI/O、デジタルI/Oのようなハードウェアインタフェースが必要です。ECUがHILSに合わせてくれる事は絶対にありません。ですから、HILSがECUにあわせて多種多様なI/Oを持っている事が必要です。

    「なるべく高速に」とは、モデル実行速度の事を言っています。Simulinkモデルを精度よく実行するには、ある程度高速に実行する必要があります。モデルの精度とHILSの速度とは正の相関関係にあります。

    続きを読む

    5月
    25

    前回の記事では、HILS構築においてプラントモデルがボトルネックになる、という事をご説明しました。

    今回は、このプラントモデルにどのような種類の物があるのかを、ざっくりと分類してみます。blog090525_00

    およそ、プラントモデルには既製品とオーダーメードとがあり、それぞれに得意な用途があります。

    続きを読む

    5月
    18

    前回の記事では、HILSのメリットだけを強調しました。実際、HILSそのものは確かに有用なものです。しかしそれは、「HILS構築にかかるコスト」を無視した場合の話です。

    現実には、HILS用のシステムを購入し、さらにそこからモデル開発をする必要があり、それなりの時間とコストが掛ってしまいます。HILSを構築する事が、必ずしも正解とは言えないわけです。

    そこで今回は、HILS構築のコストとメリットの兼ね合いについてご説明します。
    続きを読む

    5月
    11

    HILSとは?

    Posted In: モデルベース開発, HILS by yositake

    まず始めに、HILS(Hardware – In – the – Loop – Simulation) の基本的なアイデアをご説明します。

    blog090511_00HILSとはECUの検査装置に使われるシステムです。HILSの中には、実機をシミュレーションするモデルが入っています。実機をうまく模擬してやると、制御ソフトウェアからは実機とつながっているのと同じに見えます。つまり、実機が無くてもECUの試験が出来るわけです。

    HILSのメリットとしまして、次のような事があげられます。

    • ハードの完成を待たなくても良い
    • 実ハードでは出来ないような危険な動作もさせられる
    • 結果として品質が向上する

    続きを読む