Уменьшайте переходные сигналы при помощи логики Debouncing

Почему Debounce сигнализирует

Когда переключатель открывается и закрывается, контакты переключателя могут возвратиться друг от друга перед переключателем полностью переходы к на или от состояния. Возвращаемое действие может произвести переходные сигналы, которые не представляют истинное изменение состояния. Поэтому при моделировании логика переключения, важно отфильтровать переходные сигналы при помощи debouncing алгоритмов.

Если вы моделируете контроллер в графике Stateflow®, вы не хотите, чтобы ваш логик переключения переутомил контроллер путем включения и выключения его в ответ на каждый переходный сигнал, который он получает. Чтобы избежать этого, разработайте контроллер Stateflow, который использует временную логику для debounce ваши входные сигналы, и определите, включен ли переключатель на самом деле или выключен.

Как к Debounce сигнал

Существует два пути к debounce сигнал при помощи Stateflow:

  1. Отфильтруйте переходные сигналы при помощи темпорального оператора duration.

  2. Отфильтруйте переходные сигналы при помощи промежуточного графического состояния. Используйте промежуточное графическое состояние для усовершенствованных методов фильтрации, таких как обнаружение отказа.

Оператор duration поддерживается только в диаграммах Stateflow в модели Simulink®.

Сигналы Debounce с оператором duration

Модель sf_debouncer_using_duration иллюстрирует шаблон разработки, который использует оператор duration, чтобы отфильтровать переходные сигналы.

График Debouncer содержит эту логику.

Проект debouncer использует оператор duration(n), чтобы реализовать абсолютно-разовую временную логику.

Начальным состоянием для этой модели является Off. Используя оператор duration, можно управлять тем, что утверждает, что модель находится в на основе того, сколько времени сигнал переключателя, sw, был больше или меньше, чем нуль. Если sw был больше, чем или равным нулю для дольше, чем 0,1 секунды, перемещения переключателя от Off состояния, чтобы утвердить On. Затем если sw был меньше, чем нуль для дольше, чем 0,01 секунды, перемещения переключателя от On состояния, чтобы утвердить Off.

Логика состояния

debouncer имеет два состояния, On и Off. Средства управления оператором duration, какое состояние активно. Логика работает, как описано в этой таблице.

Входной сигналСостояниеРезультат

Сохраняет положительное значение в течение 0,1 секунд

На

Включите повороты

Сохраняет отрицательную величину в течение 0,01 секунд

'off'

Переключатель выключает

Запустите Debouncer

  1. Откройте модель sf_debouncer_using_duration.

  2. Откройте диаграмму Stateflow Debouncer и блок Scope.

  3. Моделируйте график.

    Осциллограф показывает, как debouncer изолирует переходные сигналы от шумного входного сигнала.

Сигналы Debounce с обнаружением отказа

Модель sf_debouncer иллюстрирует шаблон разработки, который использует временную логику и промежуточное состояние, чтобы изолировать переходные сигналы. С этим шаблоном разработки можно также включать логику, чтобы обнаружить отказы и позволить системному времени восстанавливаться.

График Debouncer содержит эту логику.

Проект debouncer использует оператор after(n, sec), чтобы реализовать абсолютно-разовую временную логику. sec ключевого слова задает время симуляции, которое протекло начиная с активации состояния.

Логика состояния

График debouncer содержит промежуточное состояние под названием Debounce. Состояние Debounce изолирует переходные входные параметры путем проверки, сохраняют ли сигналы свои положительные или отрицательные величины или колеблются между нулевыми пересечениями за предписанный период. Логика работает как показано в этой таблице.

Входной сигналСостояниеПереходыРезультат

Сохраняет положительное значение в течение 0,1 секунд

Debounce. На

На

Включите повороты

Сохраняет отрицательную величину в течение 0,1 секунд

Debounce. 'off'

'off'

Переключатель выключает

Колеблется между нулевыми пересечениями в течение 0,3 секунд

Debounce

'off'.

Примечание

Debounce к Прочь. Переход отказа прибывает из более высокого уровня в иерархии графика и заменяет переходы от Debounce. Прочь и Debounce. На подсостояниях.

График изолирует вход как переходный сигнал и дает ему время, чтобы восстановиться.

Запустите Debouncer

  1. Откройте sf_debouncer.

  2. Откройте диаграмму Stateflow Debouncer и блок Scope.

  3. Моделируйте график.

    Осциллограф показывает, как debouncer изолирует переходные сигналы от шумного входного сигнала.

Используйте основанную на событии временную логику

Как альтернатива абсолютно-разовой временной логике, можно применить основанную на событии временную логику, чтобы определить истинное состояние в графике Debouncer при помощи оператора after(n, tick). tick ключевого слова задает и неявно генерирует локальное событие, когда график просыпается.

Блок Error Generator в модели sf_debouncer генерирует сигнал импульса каждые 0,001 секунды. Поэтому, чтобы преобразовать абсолютно-разовую временную логику, заданную в графике Debouncer к основанной на событии логике, умножьте аргумент n на 1 000, можно следующим образом.

Абсолютная основанная на времени логикаОснованная на событии логика
after ( 0.1, sec )after ( 100, tick )
after ( 0.3, sec )after ( 300, tick )
after ( 1, sec )after ( 1000, tick )

Смотрите также

Похожие темы