simulink ifブロックのエラーについて
21 views (last 30 days)
Show older comments
simulinkでifを用いて条件分岐させたいと思い使用しているのですがif subsystem内でintegratorブロックを使った際に以下のエラーが表示されます
untitled/If Action Subsystem2/Integrator' のサンプル時間 0 が、実行を制御する If ブロック 'untitled/If' のサンプル時間 0.1 と一致しません。
integratorブロックのプロパティを見てみてもサンプル時間を変更できる項目は見当たらず困っています
2 Comments
Atsushi Matsumoto
on 5 Oct 2018
Edited: michio
on 28 Oct 2019
If Action Subsystemの中にIntegratorブロックを置いただけでは同様のエラーは発生しないようです。モデルを添付するか、設定条件など詳細を書いてもらえませんか?
 
こちらのExampleと比較して、設定はどのように異なるでしょうか? https://jp.mathworks.com/help/releases/R2018b/simulink/examples/if-then-else-blocks.html
Answers (4)
Hiroumi Mita
on 5 Oct 2018
状況によると、Simulinkモデルでは、VariableStepDiscreteソルバーをお使いのようです。
VariableStepDiscreteソルバーを用いた場合、
モデルでは連続の状態量(=Integrator Blockの出力)を持つことができません。
そこで、添付のようにIntegrator Blockではなく、
Discrete Time Inytegrator Block(離散系の積分)を使えば
問題は回避できると思います。
1 Comment
Atsushi Matsumoto
on 5 Oct 2018
または、コンフィギュレーションパラメータ/ソルバー設定を  
タイプ:可変ステップ  
ソルバー:自動  
などにすればIntegratorブロックを使えるのではないでしょうか。
Hiroumi Mita
on 9 Oct 2018
画像を見る限りでは、以下のような状況とお見受けしました。
連続系でシステムをモデリングしたいようですね。
制御工学で言えば、連続系とはラプラス演算子sで表現した系です。 離散系とはz演算子zで表現した系です。
このどちらでモデル化するかの判断は、以下となります。 系が時間微分d/dt、時間積分、連続系の伝達関数など (A)
(A)を1つでも含むのであれば、連続系でモデル化しなくてはいけません。
連続系にするには、Atsushi Matsumotoさんのコメントのように
コンフィギュレーションの設定を
ソルバーの選択 タイプ:可変ステップ、ソルバーの選択を自動かode45
にしてください。これであれば、連続系の積分器(Integrator Block)、連続系の伝達関数(Transfer Function)が 問題なく使えます。
Hiroumi Mita
on 9 Oct 2018
Switch Case Block が離散系(サンプル時間1)で動いているようです。
どこかで、このブロックの動作指示がサンプル時間1で起動しています。
これを解消して、連続系(サンプル時間=0)で動くように変更してください。
0 Comments
See Also
Categories
Find more on シミュレーション条件の構成 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!