Integrator7の時間 1.2349999999999999 における状態 '1' の導関数が有限ではあ​りません。シミュレー​ションを停止します。​解に特異点が存在する​可能性があります。そ​うでない場合は、(固​定ステップ サイズを小さくする、​または許容誤差を厳し​くすることによって) ステップ サイズを減らしてみてください

初めてMATLAB Answersで質問させていただきます.
私は大学でドローンの研究にMATLAB Simulink(R2023a)を利用していて,追実験という形でzipファイル内の'3M1-01.pdf'を参考にしながらチルトロータの制御系を組み,今後の別の形のドローンの制御系を組もうとしています.
そこで,pdfの中身を参考にしながら作成したものの,エラーが起こったため教えていただきたいです.
エラーメッセージを全て概要に含めることができなかったので,以下に示させていただきます.
シミュレーションの実行中にエラーが発生したため、シミュレーションを終了しました
原因:
  • ブロック 'x1012_graph_re/Subsystem5/Subsystem4/Integrator7' の時間 1.2349999999999999 における状態 '1' の導関数が有限ではありません。シミュレーションを停止します。解に特異点が存在する可能性があります。そうでない場合は、(固定ステップ サイズを小さくする、または許容誤差を厳しくすることによって) ステップ サイズを減らしてみてください
エラーメッセージに記載されていることは試しましたが同じエラーが起こりました.
そこで,同じような質問をされている方の回答を参考にブロック内部を見ていたら,x1012_graph_re/Subsystem5/Subusystem4/Integrator7の前で発散していることが原因とわかりました.
現状としては,Simulink内部を発散しないようする方法がわからないです.
私が作成したSimulinkが正しいのかもわからない状況なので,システム内部の間違い等があれば教えていただきたいです.
(参考にしている論文のpdfもzipファイルに添付させていただきました)
[zipファイルの中身に,x1012_graph_re.slx(全体)とchiruto_1017.slx(理想チルト角の計算)とmatlab.mat等があるのですが,初めはすべて統合してシミュレーションをしていたのですが,エラーが起こったため一部(理想チルト角の計算の部分)を分けてシミュレーションして,それぞれに使う値は.matファイルに格納して送受信することで全体をシミュレーションするようにしています.分かりにくくなっていて申し訳ございません.]

 Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 25 Oct 2023
可変ステップソルバー「ode23t」に設定すると、エラーなく動作しました。固定ステップソルバーでは、「ode1be」に設定すると、エラーなく動作しました。
おそらく、固定ステップのサンプリングタイムステップが荒すぎるために発散しているのではないかと思います。

4 Comments

Tosinobu Shintai様
ご返信ありがとうございます.
Tosinobu Shintai様のご助言通り,可変ステップソルバー「ode23t」,固定ステップソルバー「ode1be」に設定してそれぞれ実行すると,再び同じようなエラーが起こりました.
エラーの内容は以下の通りです.
シミュレーションの実行中にエラーが発生したため、シミュレーションを終了しました
原因:
  • ブロック 'x1012_graph_re/Subsystem5/Subsystem4/Integrator7' の時間 3.7 における状態 '1' の導関数が有限ではありません。シミュレーションを停止します。解に特異点が存在する可能性があります。そうでない場合は、(固定ステップ サイズを小さくする、または許容誤差を厳しくすることによって) ステップ サイズを減らしてみてください
また,コンフィギュレーション パラメータを固定ステップソルバー「ode1be」と設定したときの画面を添付させていただきます.
何か間違いや,その他のパラメータ設定等がありましたら教えていただきたいです.
お忙しいところ恐縮ですが,よろしくお願いいたします.
添付した手順で行って、私の環境ではエラーが出ませんでした。私の環境はR2023bなので、バージョン違いが影響しているかもしれません。
鈴木さんの画像では、サンプリングタイムステップを0.1と、元々の10倍荒い設定にしていますが、これのせいではないでしょうか。確かに、0.1にするとエラーになります。
Tosinobu Shintai様
ご返信ありがとうございます.
サンプリングタイムステップを0.01に設定しても同じようなエラーが起こりました.
Tosinobu Shintai様と同じR2023bの環境に合わせてもう一度シミュレーションしてみます.
Tosinobu Shintai様  
先ほどご助言いただいた通り,R2023bの環境で実行したらエラーは起こりませんでした.
誠にありがとうございます.
しかし,シミュレーション終了時間を伸ばしたり,x1012_graph_re.slx内部のstepの最終値を変更すると再びエラーが起こりました.
エラーが起こったstepの最終値は,上から順に1, 0, 0, 5, 10, 30です.
このように終了時間やstepの最終値によってエラーが起こるときはどのように対処すればよろしいでしょうか.

Sign in to comment.

More Answers (0)

Products

Release

R2023a

Community Treasure Hunt

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

Start Hunting!