概述
以 example_bounce_two_integrators 模型为例。它使用两个单个积分器来计算仿真过程中球的垂直速度和位置。
通过在命令行运行 open_system('example_bounce_two_integrators') 打开模型。
出现模块图后,将模型配置参数的 Solver 窗格中的 Solver details > Zero-crossing options > Algorithm 参数设置为 Nonadaptive。将模型的停止时间设置为 20 秒。您可以在 Simulink 工具条或模型配置参数的 Solver 窗格中更改此设置。
对模型进行仿真。
现在,您可以查看和分析仿真结果。
仔细检查仿真的最后一部分,您将看到速度略高于零。
将仿真 Stop time 更改为 25 秒,然后对模型进行仿真。由于 Compare To Zero 和 Position 模块连续发生过多的过零事件,仿真将停止并显示错误。
Simulink will stop the simulation of model 'example_bounce_two_integrators' because the 2 zero crossing signal(s) identified below caused 1000 consecutive zero crossing events in time interval between 20.357636989536076 and 20.357636990631594.
--------------------------------------------------------------------------------
Number of consecutive zero-crossings : 1000
Zero-crossing signal name : RelopInput
Block type : RelationalOperator
Block path : 'example_bounce_two_integrators/Compare To Zero/Compare'
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Number of consecutive zero-crossings : 500
Zero-crossing signal name : IntgLoLimit
Block type : Integrator
Block path : 'example_bounce_two_integrators/Position'
--------------------------------------------------------------------------------
虽然您可以通过调整 Model Configuration Parameters > Solver > Number of consecutive zero crossings 参数来增加此限制,但进行此更改后仍不能使仿真持续 25 秒。
将模型配置参数的 Solver 窗格中的 Solver details > Zero-crossing options > Algorithm 参数更改为 Adaptive,并再次仿真该模型 25 秒。
放大仿真的最后 5 秒,您可以看到结果更完整,更接近弹球动态的预期解析解。您看到的震颤量是系统状态接近零时的效果,这在数值仿真的预期之内。
example_bounce 模型使用 Second-Order Integrator 模块对弹球的动态建模。从求解器性能方面来说,这是首选的球动态二重积分建模方法。要比较 example_bounce_two_integrators 和 example_bounce 的求解器性能,请尝试在两个模型上运行求解器探查工具。有关两种模型的详细比较,请参阅弹球的仿真。
最后
以上就是背后手链为你收集整理的过零检测法MATLAB仿真,过零检测 - MATLAB & Simulink - MathWorks 中国的全部内容,希望文章能够帮你解决过零检测法MATLAB仿真,过零检测 - MATLAB & Simulink - MathWorks 中国所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复