クライアント/サーバー アーキテクチャを使用した診断
Simulink 関数を使用した診断メッセージング
呼び出し元がエラー コードを渡す診断サービスを定義する場合に、Simulink® 関数を使用します。このサービスは発生したすべてのエラーに対するエラー コードを追跡します。このサービスを実装する 1 つの方法は、インデックス付き Data Store Memory ブロックを使うことです。それにより診断監視システムは定期的に特定のエラーの発生をチェックし、それに基づきシステムの動作を修正できます。
クライアント/サーバー アーキテクチャ
Simulink Function ブロックおよび Function Caller ブロックを使用してクライアント/サーバー アーキテクチャをモデル化することができます。このアーキテクチャの使用例にはメモリ ストレージと診断が含まれます。
例として、複数の制御アプリケーション (クライアント) で構成されるシンプルな分散システムのモデルを作成します。各アプリケーションは実行全体を通して診断をレポートできます。クライアント/サーバー アーキテクチャは通常層状に構築され、サービス層を追加して診断インターフェイスをモデル化します。
Simulink Function ブロックを使用してモデル化されたサービス (サーバー) は、別のモデルに存在します。サービス モデルを参照モデルとしてシステム モデルに追加します。
制御アプリケーション (クライアント) は Function Caller ブロックを使用して、診断インターフェイスと連携します。
修飾子パターン
Application 1 はサービス層内で reportDiagnostic
インターフェイスを呼び出すことで、診断条件をレポートします。アプリケーションは診断識別子を渡す間にこの関数を呼び出します。
Interval Test によって診断識別子を作成するタイミングが決定されます。
関数 (Simulink Function 1) の実装では関数のグラフィカル出力に値を転送することで、渡された識別子を追跡します。グラフィカル出力はサーバー インターフェイスには含まれないサーバー側の信号ですが、関数の引数を使用してサービス関数間での通信を容易にします。グラフィカル出力の値は関数呼び出し間で保持されます。
関数 reportDiagnostic
は修飾子パターンの一例です。パターンは、呼び出し元から関数へのデータ通信と、そのデータを基にしたその後の計算に役立ちます。
オブザーバー パターン
Application 2 はサービス層内で inspectDiagnostic
インターフェイスを呼び出し、診断がレポートされたかどうかを検証します。
関数 (Simulink Function) の実装はグラフィカル入力 (id
) を使用して最後にレポートされた診断を観測し、この値を出力引数 (identifier
) として呼び出し元に転送します。グラフィカル入力は、サーバー インターフェイスには含まれないサーバー側の信号です。
関数 inspectDiagnostic
はオブザーバー パターンの一例です。このパターンは関数から呼び出し元へのデータ通信に役立ちます。
参考
Simulink Function | Argument Inport | Argument Outport | Function Caller | MATLAB Function