АБАК ПЛК
Руководство по настройке и программированию
×

Реализация резервирования ПЛК в среде Abak.IDE

 
В резервированной системе контроллера два контроллера функционируют параллельно. При этом один контроллер имеет статус Активный (Active) и непосредственно обеспечивает управление технологическим процессом, а его партнер – Пассивный (Standby) – находится в режиме «горячего» резерва. Оба контроллера осуществляют сбор данных с модулей ввода-вывода и производят выполнение прикладной программы пользователя, однако передача управляющих сигналов на модули ввода-вывода осуществляется исключительно активным контроллером.
Контроллер в составе резервированного ПЛК может находиться в одном из следующих состояний:
- Запуск;
- Инициализация;
- Синхронизация;
- Активный;
- Пассивный;
- Автономный;
- Эмуляция;
- Ошибка синхронизации;
- Ошибка цикла.
 
Запуск – это состояние контроллера после подачи напряжения питания, в котором он находится перед Инициализацией. В период Запуска выполняется самодиагностика (самотестирование) и запуск встроенного ПО. Если контроллер находится в этом состоянии продолжительное время, то оно приравнивается к Ошибке синхронизации.
Инициализация – это промежуточное состояние контроллера, в котором он находится в момент запуска, перезагрузки или после восстановления связи с контроллером-партнером. В состоянии Инициализация контроллер производит сравнение своей версии программного обеспечения с версией, запущенной на контроллере-партнере. В случае необходимости контроллер обновляет свое прикладное программное обеспечение до версии, полученной от контроллера-партнера. Если в состоянии Инициализация контроллер не обнаруживает контроллера-партнера, то он переходит в состояние Автономный.
Синхронизация – это действие, которое выполняется сразу после Инициализации. Во время синхронизации происходит копирование данных между контроллерами. При успешной синхронизации контроллер переходит в состояние Пассивный.
Активный – это штатное состояние для основного контроллера в резервированной паре. Контроллер выполняет пользовательское приложение и отправляет сообщения Пассивному контроллеру для обмена данными и синхронизации выполнения задачи. На этапе загрузки настроек резервирования, Активному контроллеру присваивается идентификатор (далее ID) равный единице.  
Пассивный – это штатное состояние для резервного контроллера в резервированной паре. Контроллер получает загрузочное приложение от Активного контроллера, загружает его, выбирает текущие значения переменных и синхронизирует выполнение задачи. Затем он выполняет приложение и получает сообщения от Активного контроллера для обмена данными и синхронизации выполнения задачи. Пассивный контроллер периодически отвечает на эти сообщения синхронизации. На этапе загрузки настроек резервирования Пассивному контроллеру присваивается ID = 2.  
Активный контроллер осуществляет управление технологическим процессом, а Пассивный контроллер в любой момент времени готов принять управление по команде на переключение либо при отказе активного контроллера.
Если происходит потеря связи между Активным и Пассивным, контроллер,  имеющий
ID = 1, переходит в состояние Автономный, а контроллер, имеющий ID = 2, переходит в состояние Эмуляция (переключение контроллеров происходит в течении одного цикла резервированной задачи. Минимальное время этой задачи 200 мс). Это позволяет избежать «двойного управления» при обрыве канала Redundancy Ethernet, и достигается наличием дополнительного канала связи по шине CAN.
Автономный – нештатное состояние для контроллеров в резервированной паре. Контроллер отправляет загрузочное приложение другому контроллеру, пытаясь синхронизировать задачи. Автономный контроллер осуществляет управление технологическим процессом, и ожидает восстановления связи с контроллером-партнером. После восстановления связи контроллеры переходят в штатные режимы (Активный, Пассивный).
Эмуляция – это нештатное состояние одного из контроллеров в резервированной конфигурации. Обусловлено отсутствием обмена между контроллерами-партнерами или ошибками на шине CAN. Переключение в состояние эмуляции контроллера, имеющего ID = 2, также может происходить при обновлении пользовательского ПО на контроллере, имеющего ID = 1, либо по команде.
Ошибка синхронизации – возникает при сбое в момент синхронизации контроллеров, например, при несоответствии областей синхронизируемых данных или при наличии в проекте более одной задачи для синхронизации.
Ошибка цикла – нештатное состояние контроллеров, проявляющееся при возникновении исключения на одном из контроллеров. 
Онлайн помощь создана в Dr.Explain