新着情報
採用情報
日本語
|
English
ユーザーサポート
資料ダウンロード
お問い合わせ
3つの強み
組み込みソフト開発・検証ツール
Windows開発環境向けユニットテストツール
カバレッジマスターwinAMS
カバレッジマスターwinAMS MBTオプション
Linux開発環境向けユニットテストツール
QTE(Quality Town for Embedded grade)
パフォーマンス検証ツール
PLAS-Qlite
テストデータ生成ツール
PROMPT
C/C++ 組込み用プログラム仕様書作成・解析ツール
Caseplayer2
共有変数自動解析ツール
SharedVariableChecker2
ISO 26262セーフティ&セキュリティ
Salutem(サルテム)
Safilia(セイフィリア)
Seculia
HighTec社 TriCore/Power Architecture クロスコンパイラ
HighTec社 TriCore 開発プラットフォーム
HighTec社 Power Architecture 開発プラットフォーム
動作タイミング解析ツール
Timing-Suite T1(ティーワン)
組込みシステム仮想検証環境
シミュレータベーストファミリ仮想検証ツール
実機連携 組込みソフト自動テストシステム
リアルタイムファンクションテスター
モデルガイドラインチェック製品
Model Dr. MDiA
エンジニアリングサービス
MCD -モデル中核開発事業-
MBD Back-to-Backテスト 定着運用サポート
モデルベース開発(MBD+MDD)のプロセス構築とツールの導入支援
IS&S
-サイバーセキュリティ 向け エンジニアリング支援-
ガイオ サイバーセキュリティサービス
(サイバーセキュリティ 現場業務)
ガイオ サイバーセキュリティサービス
(サイバーセキュリティワークパッケージ)
ガイオ サイバーセキュリティサービス
(サイバーセキュリティ 教育支援)
セキュリティ脅威分析支援サービス
セキュリティ検証支援サービス
-機能安全開発効率化支援-
Safilia導入支援サービス
機能安全に対応した派生開発の影響分析サービス
SAQT -先進品質技術ソリューション事業-
テストパートナーSQV
ユニットテスト・オンザトラック
QEMUを使った仮想検証環境構築サービス
Salutem導入支援サービス
SAQT HILSエンジニアリングサービス
HILS テストシナリオ作成及びシナリオ実行自動化サービス
HILS 車両モデル作成サービス
HILS CANモデル作成サービス
リアルタイムハードとSimulinkモデルの割り付けソフト設定サービス
道路、交通流CGの設定・作成サービス
大規模ソフトウェア開発者向けテストツール導入支援
QTE導入支援サービス
GAIO CLUB
導入事例
セミナーイベント
企業情報
ガイオ・テクノロジーの3つの強み
モダン型開発/従来型開発について
組込みソフト開発・検証ツール
Windows開発環境向けユニットテストツール
カバレッジマスターwinAMS
カバレッジマスターwinAMS MBTオプション
Linux開発環境向けユニットテストツール
Quality Town for Embedded grade(QTE)
パフォーマンス検証ツール
PLAS-Qlite
テストデータ生成ツール
PROMPT
C/C++ 組込み用プログラム仕様書作成・
解析ツール
CasePlayer2
共有変数自動解析ツール
SharedVariableChecker2
ISO 26262セーフティ&セキュリティ
Salutem
Safilia
Seculia
HighTec社 クロスコンパイラ
HighTec社 TriCore 開発プラットフォーム
HighTec社 Power Architecture 開発プラットフォーム
動作タイミング解析ツール
Timing-Suite T1(ティーワン)
組込みシステム仮想検証環境
シミュレータベーストファミリ仮想検証ツール
実機連携 組込みソフト自動テストシステム
リアルタイムファンクションテスター
モデルガイドラインチェック製品
Model Dr. MDiA
エンジニアリングサービス
モデル中核開発事業
リバースモデリング代行サービス
MBD Back-to-Backテスト 定着運用サポート
モデルベース開発(MBD+MDD)のプロセス構築と
ツールの導入支援
セキュリティサービス
サイバーセキュリティ 現場業務
サイバーセキュリティワークパッケージ
サイバーセキュリティ 教育支援
セキュリティ脅威分析支援サービス
セキュリティ検証支援サービス
機能安全開発効率化支援
Salutem導入支援サービス
Safilia導入支援サービス
機能安全に対応した派生開発の影響分析サービス
先進品質技術ソリューション事業(SAQT)
テストパートナーSQV
ユニットテスト・オンザトラック
SAQT HILSエンジニアリングサービス
HILS テストシナリオ作成及びシナリオ実行自動化サービス
HILS 車両モデル作成サービス
HILS CANモデル作成サービス
リアルタイムハードとSimulinkモデルの割り付けソフト設定サービス
道路、交通流CGの設定・作成サービス
QEMUを使った仮想検証環境構築サービス
企業情報
新着情報
採用情報
導入事例
セミナーイベント
資料ダウンロード
動画一覧
GAIOサイバーチャンネル
GAIO CLUB
お問い合わせ
プライバシーポリシー
情報セキュリティ基本方針
ユーザーサポート
GAIO CLUB
HOME
>
GAIO CLUB
>
複雑な自動車制御ソフトを短期開発する「モデルベース開発」とソフト検証工程でのマイコンシミュレータ活用手法について
2006年01月01日
複雑な自動車制御ソフトを短期開発する「モデルベース開発」とソフト検証工程でのマイコンシミュレータ活用手法について
GAIO CLUB 特集
GAIO CLUB【2006/1月号】
複雑な自動車制御ソフトを短期開発する「モデルベース開発」とソフト検証工程でのマイコンシミュレータ活用手法について
~ガイオMATLAB/Simulink連携シミュレータの運用例~
本特集では、自動車用電子制御ユニット(ECU)に実装する組み込みソフトの開発手法として注目を集めている「モデルベース開発」について取り上げます。また、この「モデル」を利用して、開発した組み込みソフトの検証する手法について解説します。
目次
自動車業界の動向
モデルベース開発の基点「フィードバック制御」
フィードバック制御設計に必要なシミュレーション
自動車V字開発における要求仕様書としてのモデル
モデルを構成する自動車プラントと制御プログラム
制御プログラムをISSで実行する検証システム
マイコンシミュレータを使うメリット
ガイオソリューション1「MATLAB/Simulink連携シミュレータ」
ガイオソリューション2「カバレッジマスターwinAMS」
まとめ
自動車業界の動向
自動車用電子制御ユニットの開発手法として、モデルベースの開発が浸透し始めています。自動車業界では、制御システム開発用ソフトウエアツールとして、「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社の登録商標です。
今すぐ資料ダウンロード!
前のコラム
コラム一覧に戻る
次のコラム
人気のコラム
OSの無い環境でC言語プログラムを動かすときは、マイコンのメモリを意識する必要があります。今回は、メモリとCソースプログラムの関係についての話です。
シミュレータによる製品開発のメリットについては多く語られていますが、目的に応じたシミュレータの選択や使い方について正しく理解していないと、思ったような成果を得ることができません。ここでは、xILSの構成と利用上の注意点について簡単に説明を行います。
これまでメモリの話や変数初期化の話などをしてきましたが、今回は関数の機械語化についての話です。CコンパイラはC言語プログラムをアセンブリ言語に変換(翻訳)します。
最新のコラム
Google Test
Google Mock使用例の最後に、C言語プログラムのテストで使ってみようと思います。前回までに使用したプログラムをC言語に書き換え、Google Mock使ってテストします。
Google Test
前回は、Google Mockで子関数の戻り値をあらかじめ決めた後にテストを実施してみました。Google Mockの感じをつかんだので、今回はGoogle Mockでどんなことができるのか、いくつか見て行こうと思います。
Google Test
Google Mockは、単体テストの対象関数が使用している子関数の代理関数とその関数の振る舞いを定義する環境を提供します。今回は簡単な例を見ながらGoogle Mockの使い方を見てみます。
Google Test
単体テストをする際、対象関数の動作確認のために、その関数が使用する(読む)変数に値を入れておく必要があります。関数の動作結果は前回お話ししたアサーションによって確認しますが、繰り返しテストをする際に異なる値を設定したい時はどうするのでしょうか。また、致命的なエラーが起きた時にテストを中止する方法はあるでしょうか。今回は、Google Testを使ってテストドライバーを書く時の、そんな話です。
技術情報
近年、自動車産業を取り巻く環境は大きく変化しており、100年に1度の大変革時代と言われている。欧米をはじめとして、中国及び日本でも車載ECUの統合化(ADAS Domain Controller, Cockpit Domain Controller等)が進み、2020年頃からSDV化された車両が増えてきている。本寄稿では、車載業界のSDVされたシステムの進化の流れを説明し、SDV化の進展により新たに発生する機能安全対応の課題と対策について、事例を交えて説明する。
Google Test
前回お話ししたように、Google Testはテストドライバーを作る環境を提供しています。今回は、Google Testを使ってテストドライバーをどのように書いて動かすのか、見て行こうと思います。
Google Test
皆さんはテストがお好きでしょうか。テストは面倒かもしれません。でも、プログラムを書いたら動かしたいですよね。正しく動いてくれることを確認したくなると思います。テストが嫌いだと思っていても、テストしない開発者はいないでしょう。
お問い合わせ・お見積りはこちら
03-4455-4767
[代表]9:00~17:30
(土・日・祝日・年末年始・夏季休暇を除く)