Уменьшайте переходные сигналы при помощи логики 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 )

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

Похожие темы