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