If ブロックの条件切り替え時の値について

8 visualizaciones (últimos 30 días)
Kimiyasu Sasaki
Kimiyasu Sasaki el 26 de Sept. de 2019
Respondida: stozaki el 30 de En. de 2020
MATLAB R2016b
以下のようにモデルを組みました。
model.png
シミュレーション時間は10sです。固定ステップでソルバーは離散です。サンプリング時間は0.1sです。
flag: 0sから5.0sまで1, 5.1sから10.0sまで0です。
data: 0sのとき1でサンプリング時間ごとに1増えるデータです。ですので、10.0sのときは101です。
Ifブロックでflag = 1のとき0を出力し、flag = 0のとき'data'を出力をしたいのですが、下記のように5.0sのときflag = 1ですが、結果は(simout)は0ではなく、'data'の51出力しています。
ためしに、MATLAB Functionで下記のようにコードを書きました。
function y = fcn(flag,data)
if flag == 1
y = 0;
else
y = data;
end
end
結果は同じでした。
excel.png
Actionブロックのパラメータは下記の通りです。
blockparam.png
flag = 1のときに0を出力させるにはどのようにしたらよろしいでしょうか?
大変恐縮ですが、お分かりの方いらっしゃいましたら、ご回答よろしくお願いいたします。
  1 comentario
Atsushi Matsumoto
Atsushi Matsumoto el 1 de Oct. de 2019
モデルファイルも添付してくれると助かります。

Iniciar sesión para comentar.

Respuestas (1)

stozaki
stozaki el 30 de En. de 2020
問題は解決されましたでしょうか?
添付のモデルにて、
時刻5.0[s]のとき : flag = 1, simout = 0
時刻5.1[s]のとき : flag = 0, simout = 52
となります。
条件付き実行サブシステムの出力をMergeブロックに接続する際は、モデルの振る舞いが分かりにくくなります。
Mergeブロックのガイドラインに従った設定を行うようにしてください。Sasaki様のモデルを拝見していないのでわかりませんが、ブロックの設定だけでなく、コンフィギュレーションセットの設定、入力信号のタイミング等見直してみてください。

Categorías

Más información sobre イベント関数 en Help Center y File Exchange.

Productos


Versión

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!