讨论二阶导数过零检测
变步解算器动态调整时间步长,使其增加当一个变量变化缓慢,减少变量变化时迅速。这种行为使解算器采取许多小步骤不连续,因为附近的变量是本地区快速变化。这提高了准确性,但可以导致过度的仿真时间。
的仿真软万博1manbetx件®软件使用技术被称为讨论二阶导数过零检测精确定位一个不连续不必诉诸过小的时间步长。通常这种技术提高了仿真运行时间,但它可能会导致一些模拟停止之前预期的完成时间。
两种算法仿真软件中提供的软件:非适应和适应。万博1manbetx关于这些技术的信息,请参阅零交点的算法。
展示过多讨论二阶导数过零检测的影响
仿真软件万博1manbetx的软件有三种模式,说明零交点行为:sldemo_bounce_two_integrators
,sldemo_doublebounce
,sldemo_bounce
。
的
sldemo_bounce_two_integrators
模型演示了如何过度零交叉会导致仿真停止之前预期的完成时间,除非你使用自适应算法。的
sldemo_bounce
模型使用一个更好的模型设计sldemo_bounce_two_integrators
。的
sldemo_doublebounce
模型演示了如何自适应算法成功地解决了一个复杂的系统,有两个不同的零交点的要求。
有两个集成商的反弹模型
在MATLAB®命令提示符下,键入
sldemo_bounce_two_integrators
加载的例子。一旦出现框图,设置模型配置参数>解算器>算法参数
非适应
。还在解算器窗格中,设置停止时间参数到20年代。
运行模型。在模型编辑器中万博1manbetx,选择模拟>运行。
仿真完成之后,单击范围块窗口看到结果。
您可能需要点击自动定量查看全部结果。
使用变焦范围控制来仔细检查的最后部分模拟。可以看到,速度是徘徊在略高于零在最后时间点。
改变模拟停止时间在模型编辑器中编辑框工具栏到25万博1manbetx秒,并再次运行仿真。
这次模拟中断的错误后不久通过模拟20次。
过度地球不断地趋于零速度导致仿真超过1000的默认限制连续的数量允许零交叉。虽然你可以通过调整增加这个极限模型配置参数>解算器>连续的零交叉参数。在这种情况下,使这一变化不允许仿真模拟了25秒。
还在解算器窗格中,从算法下拉菜单中,选择自适应算法。
再次运行仿真。
这一次模拟运行时完成,因为自适应算法防止过多的零交叉出现。
二阶积分器反弹模型
Double-Bounce模型
在MATLAB命令提示符,键入
sldemo_doublebounce
加载的例子。模型和动画窗口打开。在动画窗口中,两个球放在两个平台。在动画窗口中,单击非适应按钮来运行示例使用非适应算法。这是默认设置为所有模型仿真软件使用的软件。万博1manbetx
右边的球被赋予一个较大的初始速度。因此,在不同的时间两球撞到地面和反冲。
仿真14秒后停止,因为球在左边超过零交叉的数量限制。右边的球挂在半空中。
一个错误信息对话框打开。点击好吧关闭它。
点击自适应按钮来运行仿真和自适应算法。
注意,这次模拟运行时完成,即使地面变化从下面左边的球在20秒。
模拟器可以零交点小姐事件如何
弹跳和double-bounce模型表明,高频波动对不连续(“喋喋不休”)会导致模拟过早地停止。
也有可能为解决完全零交叉小姐如果解决错误公差太大。这是可能的,因为零交点检测技术检查的价值信号改变了大时间步后签署。迹象表明,零交叉发生变化,和零交点的算法将寻找精确的穿越时间。然而,如果出现零交叉在一个时间步,但步骤的开始和结束的值不显示信号变化,穿越没有检测它的求解步骤。
下面的图显示了一个信号,过零。在第一种情况下,积分器的步骤在事件因为信号之间没有改变时间的步骤。第二,解算器检测到的变化信号,所以检测零交点的事件。
防止过度的零交叉
使用下面的表格来防止过度的零交点模型中的错误。
使这种变化…… | 如何使这种变化…… | 使这种变化的理由…… |
---|---|---|
增加的数量允许零交叉 |
增加的价值连续的零交叉。选择在解算器面板的配置参数对话框。 |
这可能给您的模型足够的时间解决零交叉。 |
放松信号阈值 |
选择自适应从算法下拉和增加的价值信号阈值选择在解算器面板的配置参数对话框。 |
解算器需要更少的时间来精确定位零交叉。这可以减少仿真时间和连续消除过多的零交点错误。然而,放松信号阈值可能会降低精度。 |
使用自适应算法 |
选择自适应从算法下拉的解算器面板的配置参数对话框。 |
该算法动态调整零点交叉阈值,从而提高了精度和减少的数量连续零交叉检测到。这个算法可以选择指定的时间的宽容和信号阈值。 |
禁用零交点检测为一个特定的块 |
|
禁用本地零交点检测防止特定的块连续停止仿真,因为过度的零交叉。所有其他块继续受益于零交点检测提供增加的准确性。 |
禁用零交点检测整个模型 |
选择 |
这可以防止零交叉检测到任何地方在您的模型中。结果是,你的模型不再讨论二阶导数过零检测提供受益于增加的准确性。 |
如果使用 |
选择一个值 |
有关更多信息,请参见最大的订单。 |
减少最大的步长 |
输入一个值 |
这可以保证足够小的解算器需要步骤解决零交叉。然而,减少步长可以增加仿真时间,很少有必要在使用自适应算法。 |
零交点的算法
仿真软件万博1manbetx的软件包括两个讨论二阶导数过零检测算法:非适应和适应。
选择算法,使用算法在解算器窗格中选择配置参数对话框,或使用ZeroCrossAlgorithm
命令。命令可以被设置为“非适应”
或“自适应”
。
非适应算法提供向后兼容旧版本的模型,是默认的。万博1manbetx括号零交点事件并使用越来越小的时间步长确定零交叉时发生。虽然足够的对于许多类型的模拟,非适应算法会导致很长的仿真时候高度的“唠叨”(高频振荡在零交点点)。
自适应算法动态地将托架,和是一个很好的选择:
该系统包含大量的嚷嚷起来。
您想要指定一个保护带(公差)的零交叉检测。
自适应算法关闭零交点托架(停止迭代)如果满足以下:
零交叉错误超过。这是由指定的值信号阈值在解算器窗格中选择的配置参数对话框。这也可以设置的
ZCThreshold
命令。默认值是汽车
,但您可以输入任意实数大于零容忍。连续系统的数量已经超过零交叉中指定连续的零交叉在解算器窗格中选择的配置参数对话框。或者,这可以设置
MaxConsecutiveZCs
命令。
理解信号阈值
自适应算法自动设置一个容忍零交点检测。另外,您可以通过输入一个实数设置公差大于或等于零的配置参数解算器窗格中,信号阈值
下拉。这个选项只有当零交点的算法将变得活跃自适应
。
这个图表显示了信号阈值设置一个窗口周边地区零交点。这个窗口内信号下降被认为是零。
零交点事件将被时间T的步骤n - 1和Tn。迭代解算器减少了时间步骤,直到状态变量在定义的频带信号阈值,或者直到连续零交叉的数量等于或超过该值在配置参数解算器窗格中,连续的零交叉
下拉。
从图很明显,增加了信号阈值增加时间步长之间的距离将被执行。这往往导致更快的仿真时间,但可能会减少精度。
讨论二阶导数过零检测模块是如何工作的
一块可以注册一套零交点变量,每一个都是一个状态变量的函数,可以不连续。零交点函数通过零从正面或负面价值对应的中断发生时。注册零点交叉变量是每个仿真步长更新结束时,任何变量,改变了标志被认为是有一个零交点的事件。
如果检测到任何零交叉,之间的模型软件篡改之前和现在的每个变量的值改变信号的估计时万博1manbetx间零交叉(即不连续)。
请注意
讨论二阶导数过零检测算法可以架双零交点事件只有信号的数据类型
块零交叉注册
下表登记列表块零交叉,解释了块使用零交叉:
块 | 零交叉的描述 |
---|---|
一:检测当输入信号过零上升或下降的方向。 |
|
二:一个检测当上阈值,和一个低阈值时检测。 |
|
一:检测当信号等于一个常数。 |
|
一:检测当信号等于零。 |
|
两个:一个检测时死区输入(输入信号减去下限),和一个检测死区退出时(输入信号减去上限)。 |
|
一:如果一个启用端口是里面的一个子系统,它提供的功能检测零交叉。有关详细信息,请参阅启用子系统的块使用启用子系统。 |
|
一:检测当输入信号不连续的上升或下降的方向 |
|
一:检测当输入信号不连续的上升或下降的方向 |
|
一个或两个。如果没有输出端口,只有一个零交叉检测,当输入信号阈值。如果有一个输出端口,第二个零交叉是用于将输出重新从1创建一个impulse-like输出为0。 |
|
一:如果条件满足时检测。 |
|
如果存在复位端口,检测时发生复位。 如果输出是有限的,有三个零交叉:一检测,达到饱和上限,一个检测达到更低的饱和限制时,和一个检测当饱和了。 |
|
一:为每个元素的输出向量,来检测当一个输入信号是新的最小值或最大值。 |
|
一:检测时指定的关系是正确的。 |
|
一:如果继电器,检测接通。如果继电器,检测关闸。 |
|
两个:一个检测达到上限或离开时,和一个检测当达到下限或离开。 |
|
五:两个检测时的状态x达到上限或下限;两个检测时的状态dx/dt达到上限或下限;和一个检测当叶子饱和状态。 |
|
一:检测时通过零输入十字架。 |
|
一:检测当输入信号不连续的上升或下降的方向 |
|
一:检测步骤。 |
|
一:检测开关条件发生时。 |
|
一:检测当条件满足的情况。 |
|
一:如果一个触发端口是一块子系统,它提供的功能检测零交叉。有关详细信息,请参阅触发子系统块:使用触发子系统。 |
|
两个:一个用于启用端口,一个用于触发端口。有关详细信息,请参阅启用并触发子系统块:使用启用并触发子系统 |
请注意
讨论二阶导数过零检测Stateflow也是可用的®图表,使用连续时间模式。看到配置一个Stateflow图表更新在连续时间(Stateflow)的更多信息。
实现示例:饱和
仿真软件块寄存器零交叉的一个例子万博1manbetx是饱和。讨论二阶导数过零检测识别这些饱和状态事件块:
输入信号到达上限。
输入信号的叶子的上限。
输入信号到达下限。
输入信号的叶子下限。
万博1manbetx仿真软件模块,定义自己的国家事件被认为是内在的零交叉。使用了交叉块接收零交点的显式通知事件。看到块零交叉注册将零交叉的块列表。
国家事件的检测取决于内部讨论二阶导数过零信号的建设。这个信号是无法访问的框图。饱和的块,用于检测的信号零交叉的上限zcSignal = UpperLimit
- - - - - -u
,在那里u
是输入信号。
讨论二阶导数过零信号方向有一个属性,它可以有这些值:
不断上升的——零交叉发生在信号上升或通过零,或者当一个信号叶零,变得积极。
下降——零交叉时落在一个信号或通过零,或者当一个信号叶零,变得消极。
要么——出现零交叉如果出现上升或下降状态。
饱和的块的上限,零交叉的方向要么。这使得进出饱和度事件检测信号使用相同的零交点。