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

Правила работы с проектом при резервировании ПЛК

 
Важно! В резервированной паре при настройке и отображении каналов модулей конфигуратором можно подключаться только к одному контроллеру.
Резервирование ПЛК НЕ будет работать, если:
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
Онлайн помощь создана в Dr.Explain