MIL、SIL、PIL、HILのテストは、モデルベースデザインアプローチの検証部分で行われます。これは、開発しているコンポーネントやシステムの要件を認識し、それらがシミュレーションレベル(例:Simulinkプラットフォーム)でモデル化された後に行われます。モデルがハードウェアに展開される前に、以下のような検証ステップが行われます。ここでは、DCモーターのコントローラを設計し、コントローラのモデルから生成されたコードを対応するシステムオンチップに配置する例を挙げます。
- Model-in-the-Loop (MIL)シミュレーションまたはモデルベーステスト まず、シミュレーション環境(例:Simulink)で実際のプラント(ハードウェア)のモデルを開発し、ハードウェアシステムの重要な特徴をキャプチャします。プラントモデルが作成されたら、コントローラモデルを開発し、コントローラがプラント(この場合はモーターのモデル)を要件に従って制御できるかどうかを確認します。このステップはModel-in-Loop (MIL)と呼ばれ、シミュレートされたプラントモデルでコントローラのロジックをテストしています。コントローラが期待通りに動作する場合、後の検証ステージで使用するためにコントローラの入力と出力を記録しておくべきです。 モデルベーステストを促進するMathWorks製品についてはこちら
- Software-in-the-Loop (SIL)シミュレーション MILシミュレーションでモデルが検証されたら、次のステージはSoftware-in-Loop (SIL)です。このステージでは、コントローラモデルからコードを生成し、コントローラブロックをこのコードに置き換えます。次に、コントローラブロック(Cコードを含む)とプラント(依然としてソフトウェアモデル)でシミュレーションを実行します。このステップでは、コントロールロジック、つまりコントローラモデルがコードに変換され、ハードウェアで実装可能かどうかを確認します。ここで入力と出力をログに記録し、前のステップで達成したものと一致するか確認します。大きな違いがある場合、MILに戻り必要な変更を行い、ステップ1と2を繰り返す必要があります。SILでテストされ、性能が許容範囲内であるモデルがある場合、次のステップに進むことができます。 Embedded Coderを使用したSILシミュレーションの実行方法についてはこちら
- Processor-in-the-Loop (PIL)またはFPGA-in-the-Loop (FIL)シミュレーション 次のステップはProcessor-in-the-Loop (PIL)テストです。このステップでは、コントローラモデルを組み込みプロセッサに配置し、シミュレートされたプラントとともに閉ループシミュレーションを実行します。したがって、コントローラサブシステムをPILブロックに置き換え、そのブロックにハードウェア上でコントローラコードを実行します。このステップは、プロセッサが開発されたコントロールロジックを実行できるかどうかを確認するのに役立ちます。不具合がある場合は、コード、SIL、またはMILに戻って修正します。 Embedded Coderを使用したPILシミュレーションの実行方法についてはこちらFPGA上でシミュレーションを実行する場合は、FPGA-in-the-Loop (FIL) シミュレーションと呼ばれます。HDL Verifierを使用したFILシミュレーションの実行方法についてはこちら
- Hardware-in-the-Loop (HIL) シミュレーション 組み込みプロセッサを実際のハードウェアに接続する前に、シミュレートされたプラントモデルをリアルタイムシステム(例:Speedgoat)で実行できます。リアルタイムシステムは決定論的なシミュレーションを行い、物理的なリアル接続を組み込みプロセッサに提供します。例えば、アナログ入力と出力、CANやUDPなどの通信インターフェースです。これにより、アナログチャネルによって導入される減衰や遅延などの通信チャネルやI/Oインターフェースに関連する問題を特定するのに役立ちます。これらの動作はシミュレーションでは捕捉できません。HILテストは安全性が重要なアプリケーションで一般的に行われ、自動車や航空宇宙の検証基準で要求されます。
MathWorksのHILテスト用製品についてはこちら- 実際のハードウェア PILを使用してプラントモデルが検証されたら、プラントモデルをオリジナルのハードウェア、例えばラボモデルに置き換え、テストを実行します。例えば、DCモーターの速度コントローラを設計し、コントローラをFPGA/プロセッサに配置し、センサーやトランスデューサの適切なポイントで入力と出力/状態を接続してDCモーターにインターフェースします。