Найти в Дзене

Создание энергонезависимых переменных с привязкой к адресам памяти.

В проектах, где используется панель ЧМИ в паре с одним или несколькими контроллерами, возникает необходимость передачи данных в энергонезависимую память контроллера. Например, уставки или ручные настройки должны обрабатываться таким образом, чтобы данные, которые ввёл оператор сохранялись при отключении питания системы. А при следующем включении питания они должны автоматически применяться и отображаться на панели HMI.

В оборудовании HCFA общение между панелью оператора и контроллерами обычно организуется с использованием протокола Modbus TCP. Использование этого и подобных протоколов предполагает привязку данных к конкретным ячейкам в памяти, так как данные должны располагаться последовательно друг за другом для ускорения обмена. При этом, в Codesys 3.5 получается, что переменные, не привязанные к адресам можно сохранять в энергонезависимой памяти, но нельзя использовать для протокола Modbus TCP. А переменные привязанные к адресам можно использовать для обмена с панелью оператора, но они не сохраняются в Retain.

Решить данную проблему можно несколькими способами, самый простой из которых – прописать заранее привязанные в локальных таблицах переменные в таблицу PersistentVars.

Разберём этот способ на примере:

В качестве контроллера в примере будем использовать HCQ0-1100-D

Для записи данных из ячейки по адресу %MW100 в энергонезависимую память сначала надо добавить таблицу PersistentVars в наше приложение. Для этого щёлкнем правой кнопкой мыши по Application в дереве проекта и выберем Add Object -> Persistent Variables.

Далее создадим переменную в одном из POU и привяжем её к требуемой ячейке, указав атрибуты Retain и Persistent. Это можно сделать, кликнув правой кнопкой мыши на поле ввода переменных и открыть менеджер создания переменных Refactoring -> Add Variable. В открывшемся окне укажем имя, тип, адрес и отметим необходимые атрибуты. Для примера назовём переменную “save_1”, зададим 16-разрядный тип INT чтобы соответствовать размерности ячейки с адресом %MW100:

Также можно просто вручную написать Retain таблицу и прописать в ней необходимую переменную с привязкой к адресу с помощью команды прямого указания адреса AT:

VAR RETAIN PERSISTENT

Save_1 AT %MW100 : INT;

END_VAR

После создания переменной необходимо скомпилировать проект. При этом POU, в которой мы разместим нашу переменную, обязательно должна находиться в выполняемой задаче, чтобы компилятор учитывал эту переменную:

-2

После компиляции зайдём в таблицу PersistentVars и, кликнув правой кнопкой мыши, выберем Add All Instance Paths в выпадающем меню. При этом Codesys 3.5 проанализирует скомпилированную часть проекта, найдёт все переменные, указанные как Persistent и автоматически добавит ссылки на них в энергонезависимую таблицу. В данном случае у нас отобразится ссылка на переменную “PLC_PRG.save_1”:

-3

Теперь значение этой переменной будет сохраняться при отключении или пропадании питания. При этом, к нему можно обращаться через сетевые протоколы напрямую по адресу %MW100.

Таким образом Codesys 3.5 предоставляет широкий и гибкий инструментарий для оптимальной интеграции ПЛК HCFA в проекты с самыми разнообразными применениями.

🌐 МЫ В СОЦИАЛЬНЫХ СЕТЯХ

🔸
YouTube
🔹
ВКонтакте
🔸
Telegram
🔹
Сайт компании