当开关打开和关闭时,在开关完全过渡到开或关状态之前,开关触点可以相互弹开。弹跳动作可以产生不代表真正状态变化的瞬态信号。因此,在对开关逻辑进行建模时,对瞬态信号进行滤波是非常重要的消除抖动算法。
如果你在statflow中建模一个控制器®图表,您不希望您的开关逻辑过度工作的控制器通过打开和关闭响应它收到的每个瞬态信号。为了避免这种情况,设计一个statflow控制器,它使用临时逻辑来解除输入信号,并确定开关实际上是开还是关。
使用statflow有两种方法来解除信号:
通过使用持续时间
时态算子。
使用中间图形状态过滤掉瞬态信号。将中间图形状态用于高级过滤技术,如故障检测。
的持续时间
仅在Simulink中的金宝app状态流图中支持操作符金宝app®模型。
持续时间
操作符此示例演示了使用持续时间
运算符滤除瞬态信号。
Debouncer图包含了这个逻辑。
逻辑状态
这个模型的初始状态是从
.通过使用持续时间
操作员,你可以根据开关信号的时间长短来控制哪个状态是主动的,西南
,是负的或非负的。
当西南
已经非负超过0.01秒,开关从状态移动从
州在
.
当西南
已经负0.01秒以上,开关从状态移动在
州从
.
运行防反跳
打开模型。
打开Scope块。
打开状态流图Debouncer。
模拟模型。示波器显示了脱扣器如何隔离瞬态信号和噪声输入信号。
此示例演示了使用中间状态隔离瞬态信号的设计模式。脱扣器设计采用后
运算符来实现绝对时间时态逻辑。使用此设计模式,您还可以检测错误并允许系统时间恢复。
Debouncer图包含了这个逻辑。
逻辑状态
Debouncer图包含一个中间状态,称为防反跳
.这种状态通过检查信号是否隔离瞬态输入西南
保持正或负,或者在规定的时间内在零交叉点之间波动。
当西南
大于0.1秒的正数,开关移动到状态在
.
当西南
已经负超过0.1秒,开关移动到状态从
.
当西南
在零交叉之间波动超过0.3秒,开关移动到状态掉了。的错
、隔离西南
作为一个瞬态信号,给它恢复的时间。
运行防反跳
打开模型。
打开Scope块。
打开状态流图Debouncer。
模拟模型。示波器显示了脱扣器如何隔离瞬态信号和噪声输入信号。
作为绝对时间时态逻辑的一种替代方法,您可以应用基于事件的时态逻辑来确定Debouncer图中的真实状态后
操作符。关键字蜱虫
指定并隐式生成图表唤醒时的本地事件。
中的错误生成器块sf_debouncer
模型每0.001秒产生一个脉冲信号。因此,要将Debouncer图中指定的绝对时间时态逻辑转换为基于事件的逻辑,请将后
运算符乘以1000,如表所示。
绝对的基于时间的逻辑 | 基于事件的逻辑 |
---|---|
后(0.1秒) |
后(100年,蜱虫) |
后(0.3秒) |
后(300年,蜱虫) |
后(1秒) |
后(1000年,蜱虫) |