標準ブロックのブロックパラメータで設定するものがチューナブルパラメーターであれば、MATLAB 関数と併用して、外部ブロックなどにより設定できます。
R2011a 以降では、MATLAB Function ブロックを使います。MATLAB Function のパラメータで値を更新するための関数を指定し、指定した関数の内部で関数 set_param を用いて更新処理を記述します。
R2011a より前のバージョンの場合、Embedded MATLAB Function ブロックを使用します。
関数 set_param を使うことで Switch など標準ブロックの Function Block Parameter の値を外部から設定します。set_param の使い方に関して、 sample_a.mdl を参照してください。MATLAB コマンドプロンプト上、
>> ws_val = 1; % 任意の値
>> open_system('example_a')
の実行でモデルが開きますので、モデルウィンドウでシミュレーションを開始し、下記コマンドを実行します。
>> ws_val = 3; % 上記の設定と異なる値
>> set_param('example_a', 'SimulationCommand', 'update')
これでモデルの値が更新されることが確認できます。
同じように example_aa.mdl の場合、Switch ブロックの閾値として ws_val を設定すれば、例えばシミュレーション最中に
>> ws_val = -1; % 上記の設定と異なる値
>> set_param('example_aa', 'SimulationCommand', 'update')
を実行することで値を更新することができます。
また、set_param によりシミュレーションの値の更新を自動的に行うことも可能です。
そのため、example_b.mdl 同様に MATLAB Function ブロックを利用します。今度は
>> ws_val = 1; % 任意の値
>> open_system('example_b')
でモデルを開き、シミュレーション実行中の状態で
>> ws_val = 3; % 上記の設定と異なる値
とすれば変更された値はモデル上で反映されること確認できます。
なお、MATLAB Function はシミュレーション開始前に実行ファイルが生成されますので、事前に mex -setup によりコンパイラーを設定する必要があります。
上記以外でも、Switch ブロックを用いたサンプル例 example_c.mdl, example_d.mdl をお試しください。