Скидка на подшипники из наличия!
Новое поступление товара в 2026 году!
Детекторы фронта R_TRIG и F_TRIG — это стандартные функциональные блоки языков программирования ПЛК по МЭК 61131-3, которые отслеживают изменение логического сигнала. R_TRIG срабатывает по переднему (нарастающему) фронту, когда сигнал переходит из 0 в 1; F_TRIG — по заднему (спадающему) фронту, при переходе из 1 в 0. В момент фронта выход блока становится истинным ровно на один рабочий цикл контроллера. Ниже разобрано, как работают R_TRIG и F_TRIG, чем передний фронт отличается от заднего, зачем детекторы фронта нужны в программах ПЛК и как их применяют для обработки кнопок и счёта событий.
Программа ПЛК выполняется циклически, поэтому уровневый сигнал — например, удерживаемая кнопка — остаётся истинным множество циклов подряд. Детектор фронта позволяет отреагировать на само изменение сигнала, а не на его уровень, то есть выполнить действие однократно.
Фронт — это момент изменения логического сигнала. Различают два вида:
У обоих блоков один логический вход CLK (отслеживаемый сигнал) и один логический выход Q (признак фронта). Разница только в том, какой переход считается фронтом.
CLK
Q
Выход Q становится истинным ровно на один рабочий цикл ПЛК в момент фронта, а на следующем цикле автоматически сбрасывается в 0 — даже если входной сигнал остаётся неизменным.
Контроллер работает по кругу: считывает входы, выполняет программу, обновляет выходы — и снова сначала. Один такой проход называется рабочим циклом (сканированием); его длительность обычно составляет от единиц до десятков миллисекунд и зависит от контроллера и объёма программы.
Если реагировать на уровень сигнала, то удерживаемая кнопка будет истинной сотни раз подряд, и привязанное к ней действие выполнится на каждом цикле. Это приводит к «дребезгу логики»: счётчик набивает лишние значения, операция запускается многократно, флаг переключается туда-обратно. Детектор фронта решает проблему, выделяя единственный цикл, в котором произошло изменение.
Блок детекции фронта нужно вызывать в каждом рабочем цикле. Если поместить его в ветвь условия, которая иногда не выполняется, блок может пропустить фронт, потому что сравнение с предыдущим состоянием перестанет обновляться каждый цикл.
R_TRIG и F_TRIG — это функциональные блоки, а не функции: между вызовами они хранят внутреннее состояние — предыдущее значение входа. Именно сравнение текущего входа с сохранённым предыдущим и даёт признак фронта.
Q := CLK AND NOT M;
M := CLK;
M
Поскольку блок хранит состояние, ему требуется собственный экземпляр (instance). Для каждого отслеживаемого сигнала объявляют отдельный экземпляр R_TRIG или F_TRIG. Использование одного экземпляра сразу для нескольких сигналов — типичная ошибка: состояния конфликтуют, и фронты определяются неверно.
Поведение в самом первом цикле после запуска зависит от того, как инициализирована внутренняя память блока в конкретной среде программирования. Если начальное состояние критично (например, вход уже активен на старте), это следует проверять по документации на используемую систему.
Детекторы фронта применяют везде, где нужно отреагировать на событие однократно, а не удерживать реакцию, пока держится сигнал.
Чтобы посчитать нажатия кнопки, сигнал кнопки подают на вход CLK блока R_TRIG, а выход Q — на счётный вход счётчика (например, прибавляющего счётчика CTU).
R_TRIG.CLK
R_TRIG.Q
R_TRIG по сигналу кнопки даёт реакцию на нажатие, F_TRIG — на отпускание. Это позволяет, например, по одной и той же кнопке запускать действие при нажатии и завершать при отпускании.
Детектор фронта не устраняет дребезг механических контактов кнопки. Если контакт «звенит» при замыкании, фронтов может оказаться несколько. Подавление дребезга — отдельная задача, которую решают аппаратно или программно (например, фильтром или таймером выдержки), а уже к очищенному сигналу применяют детектор фронта.
Блоки R_TRIG и F_TRIG используют в текстовом языке структурированного текста (ST) и в языке функциональных блоковых диаграмм (FBD). В языке релейно-контактных схем (LD) тем же целям служат контакты детекции фронта: контакт положительного фронта (обозначается P) и контакт отрицательного фронта (обозначается N). Логика у них та же — импульс на один цикл при соответствующем переходе сигнала; различается только форма записи в конкретном языке программирования.
P
N
Это стандартные функциональные блоки МЭК 61131-3 для детекции фронта сигнала в ПЛК. R_TRIG определяет передний фронт (переход 0→1), F_TRIG — задний фронт (переход 1→0). При обнаружении фронта выход Q становится истинным на один рабочий цикл.
Передний (нарастающий) фронт — это переход сигнала из 0 в 1, например момент нажатия кнопки. Задний (спадающий) фронт — переход из 1 в 0, например момент отпускания. R_TRIG реагирует на передний фронт, F_TRIG — на задний.
Блок сравнивает текущее значение входа с сохранённым предыдущим. Условие фронта выполняется лишь в том цикле, когда значение изменилось; на следующем цикле предыдущее состояние обновляется, и выход сбрасывается. Так гарантируется однократная реакция на событие.
Программа ПЛК циклична, и уровневый сигнал остаётся истинным много циклов подряд. Без детектора фронта привязанное действие повторялось бы каждый цикл. Детектор выделяет единственный момент изменения, что нужно для счёта событий, обработки кнопок, однократного запуска операций и переключения флагов.
Сигнал кнопки подают на вход CLK блока R_TRIG, а выход Q — на счётный вход счётчика. Счётчик увеличивается на единицу за каждое нажатие. Если завести кнопку на счётчик напрямую, он будет прибавлять на каждом цикле удержания.
R_TRIG и F_TRIG — функциональные блоки с внутренней памятью предыдущего состояния. Если использовать один экземпляр для нескольких сигналов, их состояния смешаются и фронты будут определяться неверно. Поэтому на каждый отслеживаемый сигнал объявляют свой экземпляр.
Нет. Детектор фронта реагирует на любой переход, в том числе на ложные из-за дребезга. Подавление дребезга выполняют отдельно — аппаратно или программно (фильтром, таймером выдержки), а детектор фронта применяют уже к очищенному сигналу.
Вы можете задать любой вопрос на тему нашей продукции или работы нашего сайта.