Watchdog таймер ПЛК
Watchdog (сторожевой таймер) — аппаратный или программный механизм ПЛК, который сбрасывает контроллер при «зависании» программы. Если основной цикл не успевает «погладить» таймер в заданное время — watchdog перезапускает ПЛК, переводя систему в безопасное состояние.
Watchdog timer (сторожевой таймер, WDT) — критически важный элемент надёжности ПЛК и встроенных систем. Обеспечивает автоматический выход из состояния «зависания» программы через аппаратный сброс.
Как работает
- ПЛК имеет аппаратный таймер (отдельный от основного CPU)
- При старте таймер взводится на заданное время (например, 500 мс)
- Основная программа периодически «гладит» (kick, feed, pet) таймер — сбрасывает его в ноль
- Если программа «зависла» и не гладит таймер — он доходит до нуля и аппаратно перезапускает CPU
- После перезапуска ПЛК переходит в безопасное состояние (все выходы в 0, уведомление оператору)
Два уровня watchdog в ПЛК
Аппаратный (hardware WDT)
- Отдельная микросхема или встроенный в MCU таймер
- Нельзя отключить программно (большинство современных ПЛК)
- Триггерится если прошивка ОС «зависла» полностью
- Время обычно 100–1000 мс
Программный / циклический (cycle watchdog)
- Проверка максимального времени одного цикла PLC
- Задаётся в настройках программы (например, 100 мс)
- Если цикл длится дольше — ПЛК переходит в STOP с кодом ошибки
- Защищает от бесконечных циклов в пользовательской программе
Что происходит при срабатывании
- ПЛК в STOP — все дискретные выходы в 0, аналоговые в safe-state (0 мА или замороженное значение)
- Светодиод ERROR — красный индикатор на фронте ПЛК
- Запись в журнал — timestamp, причина, адрес цикла
- Передача ошибки по сети — для систем с диспетчеризацией (OPC UA, Modbus)
- Переход на резерв — для систем 1oo2 / 2oo3 (горячее резервирование)
Типичные настройки
| ПЛК | WDT default | Настраивается | |-----|-------------|---------------| | Siemens S7-1200 | 150 мс | Да, 1–6000 мс | | Siemens S7-1500 | 150 мс | Да, 1–20000 мс | | ОВЕН ПЛК200 (CODESYS) | 100 мс | Да, в task-настройках | | Beckhoff CX | 20 мс (base task) | Да, per-task | | Rockwell CompactLogix | 500 мс | Да, 1–65535 мс | | Segnetics SMH4 | 100 мс | Нет (фиксировано) |
Что делать после срабатывания
- Проверить журнал — найти причину (длинный цикл, цикл-из-цикла, задержка ввода-вывода)
- Проанализировать Scan Time Max — максимальное время цикла за все наблюдения
- Распределить нагрузку по задачам — медленные операции в low-priority task с большим периодом
- Избегать блокирующих вызовов — ожидание ответа по сети, большие расчёты в main cycle
Watchdog в сети
Modbus Watchdog
Master-ПЛК периодически посылает запрос slave. Если slave не получает запросов N секунд — считает связь потерянной и переходит в безопасное состояние. Реализуется на обеих сторонах.
Profinet IO Watchdog
Для каждого модуля ввода-вывода задаётся Update Time (например, 8 мс) и Watchdog Factor (например, 3). Если за 24 мс (8×3) модуль не получил update от CPU — модуль сам переходит в safe state. Это защищает от «молчаливых» сбоев CPU.
CANopen Node Guarding / Heartbeat
Контроль присутствия узлов на шине. Если heartbeat не поступает за T_heartbeat_consumer — узел считается упавшим.
Применение в ответственных системах
- СИС (система ПАЗ) — watchdog обязателен по IEC 61511
- Автоматика с резервированием 2oo3 — срабатывание WDT триггерит голосование и переход на резерв
- Критичные процессы — криогенные установки, реакторы, подачи горячей воды в бойлеры (защита от перегрева)
- Автоматика безопасности — противопожарные системы, газоанализ, HIPPS
Watchdog — не роскошь, а необходимый минимум надёжности. В промышленных ПЛК отключить его обычно нельзя.
Частые вопросы
Как узнать что ПЛК перезагрузился по watchdog?
В журнале ошибок ПЛК ищите записи типа «Scan time overrun», «Cycle time exceeded», «CPU in STOP by WDT». В Siemens TIA Portal — Online → Diagnostics buffer, в CODESYS — Device → Log, в Rockwell — Controller Properties → Major Faults. Timestamp и код ошибки позволяют найти цикл где зависло. Если причина не очевидна — включите на этой задаче опцию «Save context on timeout» (CODESYS) или просто логируйте Scan Time Max и Scan Time в OPC UA/SCADA для долгосрочного анализа.Можно ли отключить watchdog для отладки?
В большинстве промышленных ПЛК аппаратный watchdog отключить нельзя — он часть архитектуры CPU. Можно только увеличить время (например, с 150 мс до 1000 мс), чтобы отладочные операции не триггерили его. Для разработки — в CODESYS есть симулятор на ПК без WDT; в TIA Portal — PLCSIM. На реальном железе никогда не рекомендуется убирать watchdog даже «временно» — забудете вернуть, объект уедет в прод, в первый же сбой — застревание на долгое время с опасностью аварии.
Источники
- IEC 61131-2 — Programmable controllers. Part 2: Equipment requirements and tests — IEC
- IEC 61508 — Functional safety of electrical/electronic/programmable electronic safety-related systems — IEC