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

조회 수: 8 (최근 30일)
Kimiyasu Sasaki
Kimiyasu Sasaki 2019년 9월 26일
답변: stozaki 2020년 1월 30일
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
Atsushi Matsumoto
Atsushi Matsumoto 2019년 10월 1일
モデルファイルも添付してくれると助かります。

댓글을 달려면 로그인하십시오.

답변 (1개)

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

카테고리

Help CenterFile Exchange에서 イベント関数에 대해 자세히 알아보기

제품


릴리스

R2016b

Community Treasure Hunt

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

Start Hunting!