周期的なレートベース システムへの最上位非同期トリガーの追加
Simulink® では、AUTOSAR ソフトウェア コンポーネントをモデル化して、非同期の関数呼び出しランナブルと周期的なレートベースのランナブルを相互作用させることができます。この種のコンポーネントでは、周期的なレートと非同期レート (サンプル時間) の両方を使用します。
このアプローチは JMAAB コンプレックス制御モデル型ベータ (β) アーキテクチャのモデル化に使用できます。このアーキテクチャは、MathWorks® の Web サイト (https://www.mathworks.com/solutions/mab-guidelines.html
) から利用できるドキュメント『Control Algorithm Modeling Guidelines Using MATLAB, Simulink, and Stateflow』で説明されています。
JMAAB 型ベータ モデリングでは、制御モデルの最上位で、スケジューリング レイヤーの上に関数レイヤーを配置します。たとえば次に示す AUTOSAR のモデル例 autosar_swc_fcncalls
があります。このモデルでは、モデルの最上位にある非同期の関数呼び出しランナブルは、周期的なレートベースのランナブルと相互作用します。
JMAAB 型ベータ コントローラー レイアウトの AUTOSAR モデリングには次のいくつかのガイドラインが適用されます。
IRV は Rate Transition ブロックでモデル化されなければならない。
Function-Call Subsystem は非同期レートをもたなければならない。(Function-Call Subsystem の Trigger ブロックでは、周期ではなく [サンプル時間タイプ] をトリガーしなければならない。)
非同期の各 Function-Call Subsystem では、関数呼び出しルートの Inport とサブシステムとの間に Asynchronous Task Specification タスク ブロックを挿入しなければならない。
次に示すのは、AUTOSAR ディクショナリのランナブルのビューです。イベントによって非同期の関数呼び出しランナブルをトリガーします。このイベントは DataReceivedEvent
、DataReceiveErrorEvent
、ModeSwitchEvent
、InitEvent
または ExternalTriggerOccurredEvent
型でなければなりません。
この例では、ExternalTriggerOccurredEvent
によって AUTOSAR ランナブルが有効になります。トリガー インターフェイスがイベントをトリガー受信ポートに送信します。ExternalTriggerOccurredEvent
の詳細については、AUTOSAR 外部トリガー イベント通信の受信側の設定を参照してください。
次に示すのは、コード マッピング エディターの Simulink エントリポイント関数のビューです。関数はそれぞれ AUTOSAR 関数トリガー ランナブル、初期化ランナブルおよび周期的なランナブルにマッピングされます。
参考
Rate Transition | Asynchronous Task Specification (Simulink Coder)