Main Content

再利用可能なアルゴリズムの複数のインスタンス間でのデータの共有

この例では、Data Store Memory ブロックを使用して、モデル内のアルゴリズムの複数のインスタンス間でデータを共有する方法を示します。

この例では、複数の Model ブロックが障害処理アルゴリズムを表すモデルを参照します。各 Model ブロックは、アルゴリズムのスタンドアロン インスタンスです。各インスタンスで計算が実行され、モデルが含む信号の独自のコピーが格納されます。

モデル インスタンスは対話しないため、この例ではデータストアを使用して、再利用可能な制御アルゴリズムのすべてのインスタンス間でデータ (この場合は障害指標) を共有します。どのモデル インスタンスでも障害を設定できるため、すべてのモデル インスタンスで障害を解消するためのアクションが実施できます。

モデルを開く

最上位モデル sldemo_shared_data は閉ループ フィードバック システムを表します。このループ内のプラントは、3 つの状態をもつ状態空間モデルによって表されます。各状態は信号によって表されます。プラントからの出力信号は、コントローラー アルゴリズムを含む Model ブロックへの入力となります。このモデルでは、プラントの出力信号は Model ブロックの入力端子に 1 対 1 でマッピングされます。

コントローラー アルゴリズムはモデル sldemo_shared_data_alg によって表され、このモデルは 3 つの Model ブロックによって参照されています。sldemo_shared_data_alg モデル内の Data Store Memory ブロックは、変数 fault_ind を使用して障害指標を保存します。複数のモデル インスタンス間で障害指標データを共有するには、[Data Store Memory ブロック] パラメーター ダイアログ ボックスで、[信号属性]、[モデル インスタンス間で共有する] を選択します。

データストアは sldemo_shared_data_alg に存在するため、指標はモデルに対してローカルです。そのため、sldemo_shared_data_alg を参照している他のモデルでは指標の読み書きができません。

Algorithm サブシステムは PID コントローラーを使用してアクチュエータの位置コマンドを生成します。

Fault Handling サブシステムは、障害指標を設定し、解消します。アルゴリズムのインスタンスで障害状態が発生する (コントローラー入力が 2.63 を超える) たびに、サブシステムはデータストアの値を 1 ずつ増やします。インスタンスで障害状態が解消される (コントローラー入力が 0.87 未満になる) たびに、サブシステムはデータストアの値を 1 ずつ減らします。

モデルのシミュレーション

親モデル sldemo_shared_data のシミュレーションを実行します。シミュレーション データ インスペクターを使用して、位置コマンドと制御される信号を観察します。t = 7.5 s で、Controller_instance2 信号に外乱が発生します。

外乱は、制御アルゴリズムの対応するインスタンスで障害をトリガーします。この障害により、3 つの位置コマンド (Position_instance 信号) はすべてゼロでロックされます。

後で、障害状態が解消されると、すべての位置コマンドと制御されている信号がノミナル値に戻ります。

参考

| |

関連するトピック