Правила работы с проектом при резервировании ПЛК
Важно! В резервированной паре при настройке и отображении каналов модулей конфигуратором можно подключаться только к одному контроллеру.
|
Резервирование ПЛК НЕ будет работать, если:
1) Использовать указатели (pointer) и ссылки (reference) в резервируемой задаче. В случае необходимости использования указателей в проекте нужно создавать отдельную нерезервируемую программу и передавать значения указателей/ссылок через глобальные переменные.

Указатель в области резервирования
2) Применять указатели и ссылки внутри функциональных блоков и функций независимо от глубины их вложенности, если они функционируют в резервируемой области.
Пример:
а) создаётся блок FB_1, и в нём объявляется указатель, как показано на рисунке. Данное действие не запрещается, если блок FB_1 никак не будет связан с областью резервирования;

Функциональный блок с указателем
б) создаётся блок FB_2, и в нём объявляется блок FB_1. Данное действие не запрещается, если блок FB_2 никак не будет связан с областью резервирования;

Объявление функционального блока, который содержит указатель
в) создаётся резервируемая задача PLC_PRG, и в ней объявляется блок FB_2. Данное действие не позволит работать в режиме резервирования, так как указатель, объявленный в блоке FB_1, будет связан с областью резервирования. Данное действие изображено на рисунке ниже.

Объявление функционального блока, который содержит функциональный блок с указателем в области резервирования
3) В задаче резервирования (по умолчанию «MainTask», см. главу «Настройка резервирования») вызвать любые типы «программ», кроме POU. Только эта программа может быть выбрана как единственная программа в зарегистрированной области. Работа с остальными программами должна выполняться с помощью глобальных переменных как показано на рисунке.

Название задачи резервирования

Зарегистрированные области
4) Резервировать глобальные переменные, Persistent и Retain с использованием указателей. Глобальные переменные, Persistent, Retain резервировать разрешается, но без использования «pointer to». Работа с глобальными переменными в резервированной системе показана на рисунках ниже.

Использование глобальной переменной в задаче для передачи значения в область резервирования

Присвоение значения переменной через глобальную переменную
5) Использовать следующие объекты в области резервирования:
-
функциональные блоки MDB, MBMaster и MBMastersRun для работы с Modbus;
-
переменные типа VAR_IN_OUT;
-
функциональный блок SharedTags из стандартной библиотеки AbakPLCUtils;
-
функциональные блоки из библиотеки Sysmem.6) Попытаться загрузить проект в пассивный контроллер, даже если его ID = 1, но произошло аварийное переключение.
При попытке загрузки проекта на экране отобразится всплывающее окно с сообщением об отмене.

Уведомление об отмене загрузки
7) Не вызвать таймеры МЭК в синхронизируемой программе, которая будет вызываться в задаче синхронизации. Иначе может наблюдаться несинхронное выполнение таких таймеров либо возникновение аномальных значений.
Пример аномального поведения:
Если задача синхронизации называется DiagTask.


Задача синхронизации DiagTask
А таймер МЭК вызывается в задаче MainTask в программе PLC_PRG.




MainTask в программе PLC_PRG