再利用可能なアルゴリズムのインスタンス間でのデータ ストアの共有
アルゴリズムを再利用するには、ブロックをコピーして貼り付けるのではなく、個々のモデル ファイルにブロックをカプセル化します。その後、Model ブロックでモデルを繰り返し参照できるようになります。各 Model ブロックは、アルゴリズムのスタンドアロン インスタンスです。
既定では、各インスタンスで計算が実行され、モデルが含む信号の独自のコピーが格納されます。したがって、インスタンスは相互作用しません。ただし、データ ストアを使用してインスタンス間で一部のデータを共有できます。
この例では、再利用可能な制御アルゴリズムのすべてのインスタンス間で障害指標を共有する方法を示します。どのインスタンスでも障害を設定できるため、すべてのインスタンスで障害を解消するためのアクションが実施できます。
モデル例の確認
モデル例 sldemo_shared_data
を開きます。
Controller サブシステムは、3 つの Model ブロックを通じてコントローラー アルゴリズム モデル sldemo_shared_data_alg
を複数回参照します。
アルゴリズム モデルを開きます。
Data Store Memory ブロック fault_ind
は、障害指標を表します。ブロック パラメーター [信号属性]、[モデル インスタンス間で共有する] が選択されているため、sldemo_shared_data_alg
のすべてのインスタンスで指標が共有されます。ブロックは sldemo_shared_data_alg
内に存在しているため、指標はモデルに対してローカルです。sldemo_shared_data_alg
を参照する他のモデルは、指標に対して読み書きできません。
Algorithm サブシステムは PID コントローラーを使用して、(sldemo_shared_data
のブロックで表される) アクチュエータの位置コマンドを生成します。
Fault Handling サブシステムは、障害指標を設定し、解消します。アルゴリズムのインスタンスで障害状態が発生するたびに (制御される入力が 2.63 を超える)、サブシステムはデータ ストアの値を 1 ずつインクリメントします。インスタンスで障害状態が解消されるたびに、サブシステムは値を 1 ずつ減らします。
モデル例のシミュレーション
親モデル sldemo_shared_data
のシミュレーションを実行します。
シミュレーション データ インスペクターを使用して、位置コマンドと制御される信号を観察します。Simulink エディターのツール バーで、強調表示されたボタンをクリックします。
シミュレーションの途中で、制御されている信号 conc_mid
では外乱が発生します。
Current plot held
外乱は、制御アルゴリズムの対応するインスタンスで障害をトリガーします。この障害により、3 つの位置コマンド (vlv
信号) はすべてゼロでロックされます。
後で、障害状態が解消されると、すべての位置コマンドと制御されている信号がノミナル値に戻ります。