Инструкция ONS не активирует OTE в лестничной логике Studio 5000
Инструкция ONS срабатывает, но катушка OTE никогда не фиксируется в Studio 5000, потому что одноимпульсный сигнал истинен только в течение одного цикла скани...
В окне онлайн-мониторинга иногда видно, как бит хранения ONS переходит в активное состояние, тогда как соответствующий OTE, предназначенный для запуска стартера насоса или соленоида, так и не выглядит активированным. В Studio 5000 Logix Designer это обычно не означает неисправность выходной карты. ONS — это детектор нарастающего фронта, который становится истинным только на одну проверку подпрограммы. OTE записывает условие своей ветви при каждом сканировании и не имеет внутреннего удержания. Если соединить их напрямую, получится импульс длительностью один цикл сканирования — часто 5–20 мс, — который контакторы, частотно-регулируемые приводы и даже анимация HMI фактически игнорируют, а более медленная частота обновления IDE полностью пропускает этот импульс.
Интуиция релейной логики здесь подводит: запись Logix длительностью 10 мс — не то же самое, что удерживаемый вспомогательный контакт.
Физика сканирования
| Сканирование | Фронт входа | Выход ONS | Тег OTE |
|---|---|---|---|
| n-1 | 0 | 0 | 0 |
| n | 0→1 | 1 | 1 (один цикл сканирования) |
| n+1 | 1 | 0 | 0 |
| n+2 | 1 | 0 | 0 |
Реальным пускателям часто требуется устойчивый сигнал запуска длительностью 50–100 мс. Одиночная цепочка ONS→OTE не может его обеспечить. Окна наблюдения Studio 5000 обновляются гораздо медленнее периода задачи, поэтому вероятность поймать импульс длительностью 10 мс мала — отсюда и миф, что «ONS никогда не сработал».
Диагностическое растягивание импульса
- Параллельный TOF с уставкой 1–2 с на событии ONS; наблюдайте .TT/.DN в IDE
- Добавляйте 1.0 в счётчик REAL при каждом фронте; отслеживайте счётчик на тренде
- Используйте Studio Trend с периодом выборки около 10 мс для тега OTE, чтобы увидеть фактический рабочий цикл
Схемы с самоподхватом или OTL/OTU превращают одноразовое решение в устойчивую команду запуска.
Решение A — OTL / OTU
[Pump1_RunCmd_ONS] ----(OTL Pump1_RunCmd) [Pump1_Stop_PB] ----(OTU Pump1_RunCmd) [Pump1_Fault] ----(OTU Pump1_RunCmd)
Помните: по умолчанию защёлки сохраняют состояние после циклов отключения и включения питания. Добавьте сброс при первом сканировании или сбросы для технического обслуживания, если выходы не должны повторно запускать двигатель после перезагрузки.
Решение B — самоподхват вокруг OTE
|--[Start_ONS]-+----------(OTE RunCmd)--| | | | |--[RunCmd]----+ | |--[Stop_PB]---/ |
Это аналог трёхпроводной схемы пускателя, рекомендуемый в практике программирования Logix: ONS формирует фронт запуска, а контакт RunCmd в цепи самоподхвата поддерживает OTE до тех пор, пока кнопка остановки или блокировка не разомкнёт цепь.
Решение C — бит состояния и командный OTE
Для оборудования, работающего по последовательности, при появлении фронта установите выбранный шаг с помощью OTL, активируйте OTE запуска, пока шаг выбран и отсутствует обратная связь о работе, затем сбросьте Selected с помощью OTU после получения обратной связи. HMI по-прежнему видит реальную команду запуска, пока защёлка управляет шагом.
Контекст ведущего/резервного насоса и подводные камни
Секвенсоры насосов по наработке часто неправильно используют ONS в сравнениях «этот насос теперь ведущий». После исправления структуры «фронт — команда» добавьте таймеры минимального времени работы (защита от слишком частых пусков и остановок), блокировки ротации ведущего насоса и пути сброса OTU при аварии. Выполните перекрёстную проверку тега OTE на наличие дублирующих катушек, расположенных ниже по программе и незаметно перезаписывающих удерживаемую 1 значением 0. Для каждого BOOL предпочтительна одна управляющая катушка.
Также проверьте топологию ветвей: параллельный путь, обходящий ONS, может оставить OTE в ложном состоянии, даже если бит хранения кратковременно меняется, а вторая подпрограмма, записывающая тот же BOOL, может отменить идеально работающий самоподхват уже в следующей задаче. Если импульс требуется нескольким потребителям, один раз сформируйте промежуточный BOOL от ONS, а затем распределяйте от этого бита удерживаемую или защёлкнутую логику.
// Временное растягивание — удалить перед финальным вводом в эксплуатацию [Pump1_Start_ONS] ---(TOF Stretch_Timer, 2.0 s) [Stretch_Timer.TT] ---(OTE Diagnostic_Stretch_On)
После добавления растягивания Diagnostic_Stretch_On остаётся видимым в IDE и на мигающем индикаторе HMI, подтверждая частоту появления фронтов до того, как вы начнёте доверять рабочей логике самоподхвата. После FAT удалите диагностический путь или заблокируйте его, чтобы операторы не продолжали бесконечно искать причину срабатывания сервисной лампы.
Последовательно применяйте эти правила владения сигналами на всех платформах PLC и PAC, чтобы изменения, внесённые ночной сменой, не возвращали в следующий пакет открытые ветви ONS→OTE.
Об авторе
Mark Townsend | Ведущий инженер по автоматизации — системы Allen-Bradley
Mark Townsend — ведущий инженер по автоматизации с более чем 18-летним опытом работы с платформами Allen-Bradley, включая ControlLogix, CompactLogix и устаревшие SLC-500. В его повседневную работу входят разработка логики RSLogix / Studio 5000 и ввод в эксплуатацию HMI FactoryTalk View на устаревших и смешанных парках оборудования.