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

7 Ansichten (letzte 30 Tage)
Kimiyasu Sasaki
Kimiyasu Sasaki am 26 Sep. 2019
Beantwortet: stozaki am 30 Jan. 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 Kommentar
Atsushi Matsumoto
Atsushi Matsumoto am 1 Okt. 2019
モデルファイルも添付してくれると助かります。

Melden Sie sich an, um zu kommentieren.

Antworten (1)

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

Kategorien

Mehr zu イベント関数 finden Sie in Help Center und File Exchange

Produkte


Version

R2016b

Community Treasure Hunt

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

Start Hunting!