2023年04月17日
【第9回】結合検査
MBD実践ステップアップガイド
結合検査は、単体検査では評価することが困難な制御モデルの挙動や状態を検証することが主眼となりますので、制御モデルをECUに実装して評価する必要があります。
開発初期段階では、幾つかの制御モジュールを直接つないでシミュレーションテストすることはありますが、部分的な機能評価しかできませんので、制御プログラム全体としての評価は、ECUへ実装した状態で行うことが基本となります。
その場合、テスト内容自体は従来手法とMBDで特に大きな違いはありませんが、MBDならではの効率的な方法もありますし、現場に合わせた工夫も必要となります。
テスト環境
結合検査は制御プログラムの検査であって、制御システムの評価を行うものではありません。
先に、ECUへ実装することが基本と述べましたが、ECUとしての機能・性能が評価できれば、実機や試作機を準備することは、コスト的にも時間的にも負担が大きくなりますので、結合検査ではHILSを用いることが一般的です。(モデルのまま結合テストを実行できるシミュレーション環境を構築することができる場合もありますが、特殊な技術や装置が必要となりますので、ここでは制御モデルを実装したECUを使ったHILSについて説明を行います。)
開発段階ではシステム挙動を評価するため、試作機が準備できるならそれに越したことはありませんが、その場合でも、事前にHILSで動作確認や試験内容の確認を行った方が安全で効率よく検査を行うことができます。
また、制御プログラムの結合検査という意味ではHILSの方が優れています。
特に大規模な制御系のシステムでは、実機を使って制御プログラムの詳細な動きを計測することは困難ですが、HILSであればプラントの挙動と同期して制御データを計測することが可能であり、制御プログラムの動作やプラントの応答を同期して状態を計測可能であり、システムの状態や挙動を詳細に検証することができます。
この場合、プラントの状態や制御マイコンの内部データを大量に精度よく計測する必要がありますので、シミュレーション演算能力の他、計測能力(データ容量、データ精度、計測速度など)もHILS構築の際の重要なポイントとなります。
制御マイコンのRAMデータをリード/ライトするI/Fボードを使えば、プラントの挙動と同時に制御マイコンのRAMデータを計測できますので、システムの詳細な動作解析に役立ちます。この場合JATG(※注1)やCANなどのシリアル通信を使用することもできますが、計測できるデータ数に制約があります。
ターゲットマイコンのエバリュエーションボードを用いた場合、RAMやレジスタの全てのデータを計測することができ、制御プログラムの実行に負荷をかけませんので、開発段階や量産開発の初期段階では使用すると良いでしょう。
単体検査と結合検査の違い
開発段階においても制御モジュールの動作検証を行うための結合検査を行っていますので、量産段階での結合検査は制御モデル全体での動作検証が主眼となります。
結合プログラムの実行条件やルートの組み合わせは無数に存在しますので、コードカバレッジを100%達成できるテストベクターをコンピュータ解析で求めることはほぼ不可能ですが、プログラムの詳細な動作については単体検査で確認済みですので、結合検査では制御項目の全てについて仕様通りに動作していることを確認することが重要となります。
単体検査では、検査対象となる制御モジュールの入力や動作条件を直接設定することができますが、結合検査では、検査対象の制御条件を直接設定することはできません。
検査対象外の制御モジュールも条件成立にかかわっていますので、プラントモデルの操作入力や外部環境条件の設定を制御手順に添って調整し、対象とする制御項目の実行条件が成立する状態を作り出さなければなりません。このため、試験者は制御の手順に添って操作を行い、いくつかの制御の状態遷移を経て、制御条件を成立させてから、制御項目の実行結果を測定する作業が必要となります。
また、仕様項目の確認の他、仕様外の条件下でシステムに致命的な問題が発生しないことや制御限界の測定、過去不具合の対策確認など、これまでのノウハウを活用した検査も必要となりますので、結合検査には試験者のスキルと多くの時間が必要となります。
結合検査の効率化
テストシーケンスの自動化
前述のように、結合検査では検査手順が複雑なものとなりますが、HILSをつかうことで実行条件の設定や実行結果の計測、物理量への変換までの一連の作業(テストシーケンス)をプログラム化することができます。
テストシーケンスのプログラム設計にはPython(※注2)やJenkins(※注3)を使う方法や、タイミングチャートや時系列波形を使って計測条件の設定や切り替え、計測点の設定などをグラフィカルに設計できるツールもあります。多くの制御開発で差分開発が行われていますので、一度テストシーケンスをプログラム化しておけば、自動化による効果は大きいと考えます。
ただし、テストシーケンスの設計には制御に関する知識、経験が必用となり、テストシーケンス自体に問題が無いこと(異常を検出できること)を確認する事も忘れてはなりません。
テストパターンの活用
制御項目を一つ一つテストする方法は確実ですが、すべての項目を実施するには自動化されていても多くの時間が必要となります。制御項目の実行条件を成立させる過程では、関連する制御が幾つか実行されていますので、テストシーケンスの組み方によっては、複数の制御項目を一度のテストで確認することができます。
実際には、関連する制御を意識しながらテストシーケンスを設計することは難しいと思われますが、標準的な運転パターンを幾つか実行することで複数の制御項目を同時に確認することはできます。
自動車の場合、加速、減速、停止などの走行パターンを複数回実行することで排出ガスの測定が行われます。このような試験走行パターンには、制御の状態遷移がありますので、制御項目の多くをテストすることができます。
走行パターンはプログラム化できますので、多少時間がかかっても自動実行することで検査者の負担は少なくなります。このような試験走行パターンを改良し、蓄積すれば、開発効率化と品質向上に繋がる重要な資産となるでしょう。
解説
注1※ JTAG:シリアル通信でマイコンと通信する規格(IEEE1149.1)
注2※ Python:データの収集や解析、アプリケーション開発など多用途で使われるインタープリタ型言語
注3※ Jenkins:開発プロセスの自動化を行うツールで、豊富なプラグインがある。
筆者紹介
入社時は電気系エンジニアでしたが、数年間はエンジン実験や試験走行が主な仕事でした。その後、制御プログラム開発を担当している時にデバッグ用にシミュレータを開発しましたが、入社時の経験が大いに役立ちました。今では仮想開発環境が一般的となりましたが、実物を使った実験をする事がMBDにおいても重要だと考えています。