GAIO CLUB

2006年01月01日

複雑な自動車制御ソフトを短期開発する「モデルベース開発」とソフト検証工程でのマイコンシミュレータ活用手法について

GAIO CLUB 特集
GAIO CLUB【2006/1月号】
複雑な自動車制御ソフトを短期開発する「モデルベース開発」とソフト検証工程でのマイコンシミュレータ活用手法について
~ガイオMATLAB/Simulink連携シミュレータの運用例~


本特集では、自動車用電子制御ユニット(ECU)に実装する組み込みソフトの開発手法として注目を集めている「モデルベース開発」について取り上げます。また、この「モデル」を利用して、開発した組み込みソフトの検証する手法について解説します。

自動車業界の動向

自動車用電子制御ユニットの開発手法として、モデルベースの開発が浸透し始めています。自動車業界では、制御システム開発用ソフトウエアツールとして、「MATLAB/Simulink(R)」(MathWorks社製)が事実上のデファクトとなっていますが、これを利用しているユーザー会議体「MAAB(MATLABAutomotiveAdvisory Board)」では、モデルベース開発手法の業界標準の策定を行っています。日本ではJ-MAAB、北米ではNA-MAAB、欧州ではEU-MAABといったように地域毎の要求をまとめる活動も活発化しています。特にここ1年で急速に立ち上がっている感があります。
J-MAABの活動は、オープンカンファレンスという場で、自動車メーカやECUメーカ以外に対してもその活動成果がオープンにされています。モデルベース開発で行った事例なども多数発表されるようになってきました。このオープンカンファレンスの中で、自動車のECUが複雑で大規模になってきていることや、開発期間を短縮するためには、モデルを基にした開発の導入が急務となってきていることが発表されています。では、この「モデルベース開発」とはどの様な開発手法なのでしょうか?

モデルベース開発の基点「フィードバック制御」

現在、制御系機器のほとんどは、マイコンを使った電子制御が行われており、制御対象は複雑化しています。自動車においても、制御対象のほとんどは電子制御化されており、1台の車には膨大な数の制御対象があります。
  • 制御系機器での制御の基本は「フィードバック制御」です。これは、右の図のように、まず制御対象を動かし、制御の目標値に対してどのくらいのズレがあるかをフィードバックして、次の制御量を補正すると言うものです。何度かこの制御ループを実行することで、制御対象が目標値に近づいて行きます。
フィードバック制御では、制御対象を1つのブラックボックスとして、出力結果を使った制御をします。ここでは、制御対象の内部の詳細なメカニズムがどうなっているかは、考える必要がありません。このため、制御ソフトの設計にとっては、次のような利点があります。

・ソフト設計者が制御対象を厳密に知らなくても制御できる
・ 制御対象が経年変化などで状態を変えてしまう場合でもそれに追従した制御が可能


自動車の様な多数の制御対象を持つシステムでは、制御対象の内部動作をソフト開発者が全て理解するのは現実には不可能であり、より大きな機能をブロックとして捉え、これをブラックボックスとしたフィードバック制御で、ソフトを設計する方が、より現実的な手法となります。モデルベース開発とは、エンジンなど制御対象の動作を数学演算アルゴリズムやステートマシンなどで表現した「モデル」を作成、このモデルに対してECUを設計することを指します。

フィードバック制御設計に必要なシミュレーション

フィードバック制御は、制御ブロックを動作させた結果をフィードバックして、徐々に目標値へ近づける制御方法です。実際の制御内容の設計においては、制御量や応答速度などに影響する要素を、変更可能なパラメータにしておき、実験を行いながら、制御に最適なパラメータを見つける方法で設計されます。
このため、「実験」のための手段が必要となり、ここに、机上で行えるシミュレーションツールが使われることが多くなっています。MATLAB/Simulinkは、ブロック線図などで作成した制御モデルの動作をシミュレーションして、その結果をグラフなどに出力する機能を持っており、作成したシステムを上で検証することができます。

自動車V字開発における要求仕様書としてのモデル

自動車業界では、MATLAB/Simulinkによる車輌モデルを、ECUソフト設計のための要求仕様書の一部として採用する動きも見えてきました。
従来は、自動車メーカーがECUを開発する場合、紙に文書化された仕様書を作成して電装品メーカーに発注するスタイルでしたが、これでは、仕様動作に関する意思の疎通が十分に行えないことが多く、開発の効率化への大きな障害となっていました。
そこで、V字開発の最初の「要求仕様設計」の段階で、ECUを「MATLAB/Simulinkを使用したモデル」として記述し、「実行可能な仕様書」として発注先(ECUメーカー)に提示することで、要求仕様を明確化する動きが出てきました。発注先からの納品時には、このモデルの動作と実際のECUの動作が一致することを条件とするのです。

モデルを構成する自動車プラントと制御プログラム

モデルには、制御対象となる自動車部品(プラント)と、これを制御するロジックがあります。プラントとは、メカそのものの仕組みや、メカの物理的な挙動をモデル化した部分を示します。また、制御ロジックは、言うまでもなく、ECUに実装されるマイコンの組み込みソフトに対応します。
つまり、製品化のためには、要求仕様作成段階で作成し動作の検証が行われたモデルから、制御ロジックのみを切り出して、ECUのマイコンソフトにして実装することが必要になります。
J-MAAB では、この制御ロジック部分をC 言語ソースコードに変換するいわゆる「オートコードツール」の適用事例に関する発表もなされています。従来は、生成されるコードの品質の問題で、研究部門や先行開発部門での試用に留まっていますが、オートコードツールの性能が向上し、現段階では一部量産に適用されるまでになってきました。今後のソフト開発手法の1つとして、期待されています。

制御プログラムをISSで実行する検証システム

  • 現在のECUの開発者の多くは、要求仕様モデルを仕様書にして、ハンドコードにより制御ソフトを開発しています。そこで、実機での検証の前に、MATLAB/Simulinkで作成した要求仕様モデルのうち、制御ロジック以外の「プラント」部分を使用して、このモデルをマイコンシミュレータ(ISS)に接続して、開発したソフトの動作検証を行うシステムが提案されています。
    J-MAABの検証標準化ガイドライン(J-MAABのHPからダウンロード可能)でも、ECU ソフト検証に使用するプラントモデルは、検証のために専用に作成するのでなく、要求仕様段階で作成された制御モデルをそのまま使用すれば良いとしています。

マイコンシミュレータを使うメリット

ECU開発の検証工程においては、実機ハードそのものや、エミュレータ(HIL-S環境)を使用した検証スタイルが採られています。しかしながら、開発環境にかかるコストなど多くの課題を抱えています。
では、マイコンシミュレータを使用した開発環境のメリットはどうでしょうか?主なメリットを次にあげて見ます。

・ハードの完成を待たずにシステム動作検証が行える
・ 複数人が同時開発できる環境を低コストで利用できる
・例外条件下での不具合に関する再現性が高い
・ 使用するマイコンの変更が容易に行える
・ 実機では取り出しにくい情報を容易に取り出せる
・ カバレッジ情報などソフト検証の定量的データが得やすい
・ISSを使用する場合 ROM/RAMなどのリソース、動作性能の見積もりが可能
・ 実機を壊す可能性がないので、安心してデバッグできる


当然の事ながら、シミュレータを使用しても全ての問題が解決出来るとは限りません。ハードウェアレベルの細かいタイミングなどによる問題は実機やエミュレータで確認するしかありません。しかしながら、上記に挙げたように使用するメリットはたくさんあり、全問題のうち、大部分が解決すると思われます。実際お客様がシミュレータを使って開発した結果として、

・ 実機による結合試験では潜在化してしまう例外動作系のバグを多く発見できた
・ 実機では見逃しやすい不正メモリアクセスを発見できた
・ 従来の1/3の工期で開発できた
・ シミュレータ上で開発したソフトが実機実装時に一発で動作した


という事例もあります。シミュレータを使用すると、実機ベースでの検証環境では困難な検証内容を補完可能であり、検証プロセス全体でのソフト品質向上につながることになります。

※図1



※図1は、制御開発のVプロセスにおいて、制御仕様設計完了後の、ソフトウェア詳細設計からソフトウェア合体検証までを対象とした検証プロセス(「J-MAAB 検証標準化ガイドライン」で定義)とそれに対応したガイオ製ツールが適用できるポジションを示しています。

ガイオソリューション1「MATLAB/Simulink連携シミュレータ」

ガイオは、モデルベース開発におけるECUソフトの検証ツールとして、「MATLAB/Simulink連携シミュレータ」を提案しています。 このシミュレータは、※図1に示す「機能単体のソフトウエア検証」と「「ソフトウエア合体検証」の両方のフェーズで利用することができます。

下の図※図2は、エンジン制御モデルにおいて、アクセルの急激な踏み込みに対する空気流入量の制御結果を示したものです。同一の制御モデルが上下に並べられており、下は全てをMATLAB/Simulinkでモデリングしたもの、上は制御部分をISSで実行されるソフトウエアに置き換えたものです。
図中赤いSimulinkブロックが、ガイオマイコンシミュレータ「System-G」とのインタフェースブロックとなっており、MATLAB/Simulinkから、マイコンのメモリマップトI/Oにアクセスできる仕組みになっています。ISSとMATLAB/Simulinkの動作の同期は、単位時間毎に交互に実行プロセスを切り替える仕組みとなっています。
図中のグラフは、MATLAB/Simulinkのスコープ機能(グラフ表示機能)を使用して、両者の制御結果の比較を示したものです。このサンプルでは、制御対象である空気流入量「Airflow」の制御結果(グラフC)がよく一致していることが分かります。

※図2

ガイオソリューション2「カバレッジマスターwinAMS」

さらにガイオは、※図1に示す「機能単体のソフトウエア検証」で利用可能なシミュレータとして、モジュール単体コードカバレッジツール「カバレッジマスター」を提供しています。 「J-MAAB 検証標準化ガイドライン」の中では、モデルとコードの一致検証方法と機能単体検証では、テストデータの要件に対する網羅率を定量化するためにコードカバレッジも定義されています。
このツールは、関数モジュール単体テストの動作エンジンとして、マイコンシミュレータ(ISS)を使用しており、C言語レベルのコードカバレッジではなく、組み込みマイコンの命令コードを実行してコードカバレッジを行う仕組みになっています。実装に使用するクロスコンパイラでコード化したオブジェクトコードをISSで実行してテストを行います。
  • テストのためのソースコードの書き換えや追記は一切必要なく、作成したテストデータをCSVファイルにより与えるだけで、オブジェクトコードに含まれる任意の関数のコードカバレッジを取ることができます。カバレッジマスターは、「組み込み」用途を強く意識しており、自動車業界での厳しいECU品質評価基準に適したツールとして多くの導入実績を持っています。

まとめ

本特集では、多くの時間と労力を要し、かつヒューマンエラーを生みやすい従来の手作業による組み込みソフト開発を解決し、また担当者間での意思の疎通の障害となりがちな紙の仕様書による設計プロセスを改善する「モデルベース開発」について解説しました。
今後も、ガイオは、自動車業界のみならず、組み込み業界全体にわたり、ソフト開発の課題解決に挑戦し、皆様の組み込みソフト品質向上に対するソリューションを提供して参ります。

※MATLAB/Simulinkは、米国MathWorks社の登録商標です。

人気のコラム

最新のコラム