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

Создание функциональных блоков и логики

 
Для добавления пользовательской логики необходимо войти в Application сервер, расположенный внутри ПЛК. По умолчанию данный блок полностью пуст. Следует создать логический объект и присвоить ему имя.
 
Добавление пользовательской логики
 
Внутри блока создаются параметры из соответствующих вкладок из панели элементов. Добавим переменные типа float. На входе – «var_a» и «var_b». На выходе – «var_c» и «var_e». Без направления – «var_d». С направления вход-выход – «var_f».
 
Добавление параметров
Внутри каждой переменной можно прописать формулу, которая описывается в отдельной вкладке (Вид → Формулы). Формулы можно прописать только переменные без направления, либо с направлением «Выход». Пусть var_d будет результатом сложения переменных var_a и var_b.
 
Конфигурация переменных
 
 Параметр var_c будет результатом деления переменной var_d на 10.
 
Настройка параметров
Организуем присвоение значения переменной var_d в переменную var_e путем создания связи-стрелки между двумя переменными.
 
Присвоение значений переменным
 
Всем параметрам можно задать начальные значения, которые будут присваиваться после запуска Alpha.Server (контроллера). Пусть переменная var_b будет иметь значение «1» в качестве начального. Для этого открываем вкладку «Атрибуты» (вызвать можно из вкладки «Вид»), клик ПКМ → «Добавить новые атрибуты». Найти параметр «Om.System» → «Начальное значение». В поле начального значения прописываем значение 1.
 
Начальное значение
Далее необходимо произвести побитовое присвоение из переменной «Word_Var» в логические переменные. Для этого необходимо создать на выходе переменные «b0», «b1», «b2». Присвоить значение Word_Var, соединив элементы стрелкой-связью.
 
Присвоение значений Word_Var
 
Линии подсвечиваются красным цветом, сигнализируя об ошибке присвоения. Необходимо нажать ЛКМ на связи и указать нужные свойства. В свойствах необходимо задать следующие параметры:
  • Действие: Передать полностью;
  • Преобразование: Получить бит;
  • Номер бита: 0 (указывается требуемый бит от 0 до 15 для типа uint2);
  • Инвертировать: Да/Нет (при необходимости).
     
Свойства связи
 
После успешного выполнения действия цвет линий связи изменится на серый.
«Рассмотрим обратную задачу: запись битов в слово (формирование слова из логических переменных). Для этого необходимо создать требуемое количество входных переменных булева типа, один выход типа «Слово» и добавить обработчик события из вкладки «Вычисления» панели элементов.
 
Обработчик события
 
Обработчик события горит красным, сигнализируя об ошибке: код отсутствует (обработчик пуст). Редактировать код обработчика можно как на вкладке «Формулы», так и непосредственно в окне обработчика. Необходимо заполнить код, как показано на рисунке ниже.
 
Код для обработчика события
 
Ниже приведено описание конструкции:
  • Math.SetBit: данная конструкция позволяет установить значение в определенный бит в числе.
  • Math.ClearBit: данная конструкция позволяет сбросить в FALSE определенный бит в числе.
  • Math.TestBit: данная конструкция позволяет проверить значения бита в числе.
     
Детальный разбор строчек кода:
1.     Math.SetBit(Word_Out, 0, In_bit1)
Word_Out – переменная (слово), над которой выполняется операция;
0 – номер изменяемого бита;
In_Bit1 – источник данных: логическая переменная, значение которой присваивается биту.
 
Важно! Данная функция возвращает измененное значение слова, но не модифицирует исходную переменную Word_Out. Для сохранения результата необходимо явное присваивание:
Word_Out = Math.SetBit(Word_Out, 0, In_bit1);
 
2.     Math.SetBit(Word_Out, 1);
Word_Out – переменная (слово), над которой выполняется операция;
1 – номер бита, в который записывается значение TRUE.
 
Важно! Функция также возвращает новое значение слова. Корректная запись:
Word_Out = Math.SetBit(Word_Out, 1);
 
3.     Word_Out=Math.ClearBit(Word_Out, 4);
Аналогично пункту 2, но выполняет сброс указанного бита в состояние FALSE.
 
4.     Bit10=Math.TestBit(Word_Out, 10);
Выполняет чтение состояния бита с номером 10 из переменной Word_Out. Полученное значение присваивается логической переменной Bit10.
 
Чтобы обработчик выполнил написанный код, необходимо сформировать его вызов. Для этого можно использовать событие изменения переменной.
 
Соединение параметров
 
Протянув линию от необходимого параметра до обработчика, формируется триггер для вызова кода обработчика. В свойствах линии-триггера можно указать по какому событию будет вызываться обработчик.
 
Свойства триггера
Обработчик можно вызывать как по событию изменения переменной, так и по таймеру, организуя тем самым цикл выполнения кода. Для этого из панели элементов необходимо добавить компонент «Timer», указать период (например, 1000 мс) и соединить его с целевым блоком триггерной связью.
 
Настройка таймера
 
Таким образом, при настройке, показанной на рисунке выше, код обработчика будет вызываться каждые 1000 мс.
 
При написании кода предусмотрена возможность вызова контекстной подсказки для отображения доступных функций с помощью комбинации клавиш Ctrl+SPACE. При этом отображается вспомогательное меню для выбора конкретной функции или метода. При вызове определенной функции использование данной комбинации также позволяет открыть меню с доступными командами и их описанием.
 
Основные логические операторы выглядят следующим образом:
  • «&&» – логическое «И»;
  • «||» – логическое «ИЛИ»;
  • «!» – логическое «НЕ».
 
Для выполнения операций с переменными строкового типа STRING используется префикс «String.». Например, вызов String.Concat(x, y); позволяет выполнить объединение строк x и y.
Онлайн помощь создана в Dr.Explain