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