Main Content

フィードバック ループでの System object の使用

アルゴリズムで非直達データを System object™ 経由で処理する必要がある場合は、isInputDirectFeedthroughImpl メソッド、outputImpl メソッド、および updateImpl メソッドを使用します。これらのメソッドは、System object 経由で非直達データを処理します。

ほとんどの System object は、出力の生成にオブジェクトの入力が必要な直達を使用します。このような直達オブジェクトの場合、step メソッドは出力を計算して状態値を更新します。ただし、非直達では、オブジェクトの出力は入力に直接依存するのではなく、内部状態に依存します。入力または入力のサブセットは、オブジェクトの状態を更新するために使用されます。このようなオブジェクトの場合、出力の計算は状態値の更新から分離されます。これにより、オブジェクトをフィードバック ループでフィードバック要素として使用できます。

この例では、非直達をもつ遅延オブジェクトを実装する方法を説明します。

  1. MATLAB®[新規][System object][標準] を選択します。

  2. [メソッドの挿入] を選択し、outputImpl メソッドと updateImpl メソッドを実装します。

    outputImpl は状態および/または入力から出力を計算します。updateImpl は入力から状態値を更新します。

    outputImpl メソッドを実装する場合は、直達フラグが false になる System object 入力にはアクセスしないでください。

  3. System object がコード生成をサポートし、伝播を使用していない場合、Simulink® は System object MATLAB コードから直達設定を自動的に推測できます。ただし、System object でコード生成がサポートされない場合は、既定の isInputDirectFeedthroughImpl メソッドで false (直達なし) が返されます。この場合、このメソッドをオーバーライドして、非直達動作を指定します。

非直達を処理すると、Simulink エンジンのコンテキスト内でのソフトウェアの System object メソッドの呼び出し方法が変更されます。

関連するトピック