当开关打开和关闭时,开关触点可以在开关完全转换到打开或关闭状态之前相互弹跳。弹跳动作会产生不代表真实状态变化的瞬态信号。因此,在对开关逻辑建模时,利用反跳算法。
如果模型在Stateflow的控制器®图表,你不希望你的开关逻辑在控制器接收到的每一个瞬变信号时,通过打开和关闭控制器而使其过度工作。为了避免这种情况,设计一个Stateflow控制器,它使用时态逻辑来消除输入信号的影响,并确定开关是否实际打开或关闭。
有两种方法可以使用Stateflow来解除信号的影响:
通过使用期间
时间运算符。
使用中间图形状态过滤掉瞬态信号。为高级过滤技术(如故障检测)使用中间图形状态。
这个期间
运营商只支持在State万博1manbetxflow图中的Simulink万博1manbetx®模型。
期间
操作员模型使用持续时间的sf_debouncer_
说明使用期间
操作员过滤掉瞬态信号。
Debouncer图表包含了这个逻辑。
debouncer设计使用持续时间(n个)
语句来实现绝对的时态逻辑。
此模型的初始状态为离
. 使用期间
操作员,你可以根据开关信号的时间来控制模型的状态,西南
,已大于或小于零。一次西南
已经大于或等于零的时间超过0.1秒时,从状态的开关动作离
国家上
. 那么,如果西南
小于零超过0.01秒,开关从状态移动上
国家离
.
该反跳有两种状态,上
和离
.这个期间
操作员控制激活的状态。该逻辑按此表所述工作。
输入信号 | 国家 | 结果 |
---|---|---|
保留正值0.1秒 |
上 |
开关打开 |
保留负值0.01秒 |
离 |
开关关闭 |
打开使用持续时间的sf_debouncer_
模型。
打开Stateflow chart Debouncer和Scope块。
模拟图表。
范围显示了如何去抖从有噪声的输入信号隔离瞬态信号。
模型sf_debouncer
说明了一种使用时序逻辑和中间状态来隔离瞬态信号的设计模式。使用这种设计模式,您还可以包含检测故障和允许系统时间恢复的逻辑。
Debouncer图表包含了这个逻辑。
debouncer设计使用之后(n个,秒)
语句来实现绝对时间时序逻辑。关键字秒
定义自激活状态以来经过的模拟时间。
debouncer图包含一个称为Debounce的中间状态。去噪状态通过检查信号是否保持其正值或负值,或在规定时间内在过零点之间波动来隔离瞬态输入。逻辑工作如表所示。
输入信号 | 国家 | 过渡 | 结果 |
---|---|---|---|
保留正值0.1秒 |
打开 |
上 |
开关打开 |
保留负值0.1秒 |
断开 |
离 |
开关关闭 |
过零点之间波动0.3秒 |
脱泡 |
Off.Fault 注意去泡沫关闭故障转换来自图表层次结构中的更高级别,并覆盖来自断开以及打开子状态。 |
图表将输入隔离为一个瞬态信号,并给它时间来恢复。 |
打开sf_debouncer
.
打开Stateflow chart Debouncer和Scope块。
模拟图表。
范围显示了如何去抖从有噪声的输入信号隔离瞬态信号。
作为替代绝对时态逻辑,则可以通过使用应用基于事件的时间的逻辑来确定去抖图表中真状态之后(n个,打勾)
陈述。关键字蜱
指定和隐含当图表唤醒产生一个本地事件。
在误差发生器块sf_debouncer
该模型每0.001秒产生一个脉冲信号。因此,要将Debouncer图中指定的绝对时间-时间逻辑转换为基于事件的逻辑,请将n个
论证1000,如下。
基于时间的绝对逻辑 | 基于事件的逻辑 |
---|---|
之后(0.1秒) |
后(100,蜱) |
之后(0.3秒) |
之后(300,勾选) |
后(1,秒) |
之后(1000,蜱) |