Автоматизация программирования в APROL

Автор рад поделиться тремя очень полезными утилитами, которые возьмут на себя почти всю рутинную работу по подготовке проектов в SCADA B&R APROL.

Итак — APR-UTILS

  • помогают подготавливать переменные;
  • клонируют CFC-программы;
  • автоматизируют программирование трендов.
утилиты автоматизации программирования в APROL

Все 3 утилиты написаны на Qt и могут работать как на компьютере программиста, так и в инженерной среде APROL. Рассмотрим подробнее, какие преимущества дают нам каждая из упомянутых утилит

 

aprSig — подготовка списков переменных используя EXCEL

 

Факт 1. Большие проекты в APROL требуют подготовки большого количества переменных.

Возьмём, к примеру перечень переменных Modbus-list газопоршневой машины. Он содержит почти 2000 переменных!

Факт 2. Часть полей при ручном наборе переменных в APROL скрыта. А ведь они могут содержать много нужной дополнительной информации. Вот они:

  • Name (имя переменной в APROL);
  • var (имя переменной в контроллере);
  • Type (тип данных);
  • Input/Output (направление чтения/записи переменной);
  • Description (описание, может быть несколько описаний, если в  установлено системе несколько языков);
  • Unit (единицы измерения величины);
  • MSRno (шифр переменной);
  • MIN (начало диапазона изменения величины);
  • MAX (конец диапазона изменения величины);

В чем смысл. Мы подготавливаем списки переменных со всеми дополнительными полями в Excel, а aprSig переконвертирует их в файлы, готовые к импорту в APROL!

Пошаговая инструкция по применению программы aprSig (Добавляется…)

 

 

aprClon — клонирование программ APROL на несколько станций

 

Проблема: если на предприятии несколько одинаковых объектов (например, на электростанции 22 газопоршневых генератора), то приходится много раз выполнять одни и те же действия для каждого объекта, чтобы внести изменения или добавить что-то в программу.

Например, чтобы передвинуть значок насоса масла на мнемосхеме, нужно сделать это 22 раза: для машины №1, машины №2 и т. д.

aprClon позволяет выполнить действие 1 раз и клонировать его на все объекты проекта!

Правило aprClon: все переменные, все названия должны содержать «кодовое слово» — набор букв и цифр, обозначающие номер объекта.

Например: Station22, GPG_22, ГПУ 01.

Кодовых слов может быть несколько.

Как это работает: сначала, однократно, мы создаём и заполняем шаблон кодовых слов, в котором перечисляем все возможные, применимые к объекту кодовые слова и названия. Формат шаблона описан ниже.

Затем, создав программный модуль APROL (это может быть CFC, мнемосхема, список переменных и т. д.), экспортируем его в текстовый файл imp.

Загружаем его в aprClon, жмём кнопочку — и получаем набор imp-файлов для всех объектов проекта!

Фича: aprClon проверяет правильность imp-файла на содержание неправильных (с чужим номером) кодовых слов.

Пошаговая инструкция использования aprClon на примере (Добавляется…)

 

 

легко создаём CFC с сохранением переменных в тренды или алармы

 

Большое количество переменных требует большой работы по программированию CFC с однообразными (но необходимыми!) блоками записи в тренды (или алармы).

aprTRD подготовит эти CFC автоматически!

Как это работает: для начала нужно подготовить небольшой «шаблон» — CFC с записью 1-ой переменной в тренды (алармы). В него добавляем нужные поля, соединяем с библиотечным блоком (Trend/Alarm), добавляем текстовое поле описания.

Далее — загружаем экспортированный «шаблон» и созданный на этапе подготовки переменных (для aprSig) Excel-список переменных в aprTRD. Жмём кнопочку — и получаем наборы файлов imp для импорта готовых CFC в проект APROL!

aprTRD создаст столько CFC, сколько потребуется для записи всех переменных из списка.

Пошаговая инструкция использования aprTRD на примере (Добавляется…)

Событие: модернизация SCADA на котельной

В этом году, заблаговременно до начала отопительного сезона, нами были проведены работы по модернизации сервера SCADA системы на котельной по ул.Уральская, г.Днепр.
Ранее, в 2007-м году на котельной была введена в эксплуатацию АСУ ТП, управляющая 3-мя водогрейными котлами и вспомогательным оборудованием. "Центром" АСУ ТП был сервер со СКАДА-системой "STAR", Черновецкой фирмы "ПромСофт".
За 15 лет компьютер сервера физически и морально устарел, равно как и программное обеспечение, основанное на ОС Linux openSUSE 10.0.
Мы установили современные компьютеры, установили новую версию СКАДА "STAR" на ОС Linux openSUSE 15.1. Перенесли проект СКАДА со старой системы в новую, выполнив все необходимые конвертации и настройки.

И - да! - новая "STAR" успешно работает с контроллерами котельного оборудования B&R 2003-ей серии.


Хотим выразить благодарность техподдержке "Промсофта" за помощь в установке и настройке системы, а также специалистам службы КИПиА котельной за тестирование и ввод в эксплуатацию системы и организации работ.
А это - мнемосхемы одного из котлов КВГМ 20Гкал и вспомогательного оборудования котельной.

Мнемосхема котла водогрейного

Мнемосхема вспомогательного оборудования

Событие: завершение ПНР на Ласунке!

Недавно мы завершили пуско-наладочные работы по автоматике линии дозирования мороженого «Рожок» на производственной площадке №2 компании «Ласунка«, город Днепр. Теперь ждём внедрения линии в производство, чтобы увидеть работу её с продуктом — свежим, вкусным, сладким мороженым. Мощность линии составляет от 3000 до 6400 порций в час.

В обязанности автомата входит дозирование мороженого, шоколада, каплей джема в стаканчики, закрытие крышек и фиксация, передача продукта на транспортер фризера.

Под «капотом» шкафа управления автоматики — панель-контроллер B&R PPC70, два сервопривода ACOPOS, объединенные интерфейсом Powerlink v.2, модули X20 на шине Х2Х. Ну и конечно же программа управления, разработанная специалистами ЧП Микротех под чутким руководством специалистов компании Ласунка.

Ниже — несколько фотографий линии, пока что без продукта.

http://mikroteh.zp.ua/wpblog/wp-content/uploads/2021/08/1628233220003-900x600.jpg
Общий вид автомата (во время ПНР)
Шкаф управления
HMI
Интерфейс пользователя панель-контроллера
Циклограмма работы дозатора

Симуляция контроллера и утилита IO Switchboard

Симуляция контроллера нужна, если самого контроллера в наличие нет, или ещё нет. А писать программу уже надо! Или необходимо проимитировать работу программы существующего объекта.

Сразу возникает вопрос: а как же имитировать входные-выходные сигналы?  А если входной сигнал имеет сложный закон изменения во времени? Именно для этого и создан IO Switchboard.

Итак, попробуем, как оно работает:

Рисунок 1 — Создание проекта

Создаём новый проект в Automation Studio. В примере использована версия AS4.2

Рисунок 2 — Имя проекта

Как обычно, задаём имя проекта

Рисунок 3 — Определить устройства вручную
Рисунок 4 — Добавить контроллер

Добавляем в проект контроллер X20CP1585. Галочки «Use automation runtime simulation» и «Activate simulation» я не ставил.

Рисунок 5 — Активируем симуляцию

Нажав на кнопку с изображением светофора активируем симуляцию.

Рисунок 6 — Статус контроллера

В статусной строке (внизу справа) проверим, запустился ли процесс симуляции. В нашем случае — «RUN» — всё нормально.

Рисунок 7 — Дерево компонентов

Добавим к нашему контроллеру пару модулей: X20AI4622 — модуль аналоговых входов и X20AO2622 — модуль аналоговых выходов

Рисунок 8 — Загрузка проекта в контроллер

Нажав кнопочку «Transfer» загрузим проект в контроллер

Рисунок 9 — Добавление Simulation Device

К интерфейсу ETH добавим специальное устройство SimDevice

Рисунок 10 — Описание глобальных переменных

Для нашей программы определим массив типа INT

Рисунок 11- Конфигурация модуля

Далее, настроим наши модули. Кликнув правой кнопкой мыши по модулю вызовем конфигурацию (Configuration). В поле Simulation device выберем устройство SimDevice (его мы добавили ранее, см рис. 9)

Рисунок 12 — IO mapping

Привяжем к каналам входов-выходов модулей (IO Mapping) переменные. К тем каналам ввода-вывода, которые мы будем симулировать, нужно применить симуляцию — поставить галочку в столбике Simulate.

Рисунок 13 — IO mapping

То же (добавить SimDevice и привязать переменные) нужно сделать и со вторым модулем.

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

Рисунок 14 — Программа

Теперь добавим и напишем такую нехитрую программу (в примере Automation Basic). Смысл такой: со входа buffer[0] к сигналу прибавляем 5 и кладём на выход buffer[8]

Рисунок 15 — Transfer

Заливаем проект в контроллер

Рисунок 16 — IO Switchboard

Запускаем утилиту имитации ввода-вывода IO Switchboard

Рисунок 17 — Кнопка RUN

Нажав на кнопку Run программа io switchboard свяжется с виртуальным контроллером и считает из него имитируемые вводы-выводы

Рисунок 18 — Считанные каналы ввода-вывода

Перетягиваем канал AnalogInput01 в поле Board1 (к этому каналу в нашем проекте привязана переменная buffer[0])

Рисунок 19 — Настройки поля отображения

Теперь нужно немного настроить поле отображения:

  • минимум-максимум канала
  • добавить graph
  • минимум-максимум graph
  • signal (здесь задаём файл-источник сигнала. Какой файл — см. ниже)
Рисунок 20 — Файл — закон изменения сигнала

В этом файле в виде xml-таблицы описываем закон изменения сигнала. Х — это время, Y — значения сигнала.

Рисунок 21 — Поле отображения канала вывода

Точно так же перетягиваем и настраиваем поле отображения канала вывода AnalogOutput01

Рисунок 22 — Циклическое выполнение

Нажав на кнопку с изображением синей стрелки запускаем циклическое выполнение симуляции

Рисунок 23 — Работа симуляции

Результат! IO Switchboard по закону изменения сигнала из файла имитирует входной сигнал. Этот входной сигнал обрабатывается программой виртуального (симулированного) контроллера и обработанное значение выводится на аналоговый выход модуля (тоже симулированный). Программа IO Switchboard рисует график выходного сигнала.

 

Доступ к переменным контроллера через PVI → DDE server → в Эксель

Привет! Недавно столкнулся с задачей быстро показать результаты работы программы, работающей в контроллере B&R. Причём в виде графиков. Самый простой и быстрый путь — через PVI — DDE — в Excel.

Итак, теперь подробнее. Сразу замечу, что тип контроллера не имеет значения. Лишь бы это был контроллер фирмы B&R и у него на Ethernet-интерфейсе работал PVI. В 95% случаев PVI-таки работает 🙂

Внимание! PVI manager имеет таймаут коннекта в триал режиме! Полчаса оно поработает, а потом надо перезапускать PVI Manager. Ну, или покупать лицензию.

1. Устанавливаем PVI Development из установочного диска AS (раздел Automation Net Kit)
(можно установить всё из раздела PVI)

2. Запускаем PVI DDE Server

3. Настраиваем девайс (их должно быть 2 с одинаковыми настройками):
один с вашим именем,
второй — с именем device
Options→ Device Parameters:

настройки устройств pvi dde server

4. Прописываем переменные. File → Edit Configuration

cpu1301:#cp1301{},ERR=»E#»;
sStep:»CPU{/DAIP=10.1.10.51 /REPO=11159}/tcpServ/sStep», RF=1,DA=cpu1301;
ItemDiag:»CPU{/DAIP=10.1.10.51 /REPO=11159}/errDiag», RF=1;
aiG:»CPU{/DAIP=10.1.10.51 /REPO=11159}/aiG», RF=1;

Эти настройки прописываются в файлах
ProgamFiles/BrAutomation/PVI/V4.2/PVI/Cfg/
PviDDE.ini
PviDDE_Ina2.cfg

Сохраняем. Всё, должно работать.

Если перейти в Display → Variables, то появится список переменных.
Двойной клик по переменной и откроется окошко со значением.

5. При активном соединении PVI DDE Server получить значения в Экселе проще простого.

Просто пишем формулу:
=PVIDDE|cpu1301!sStep

6. Чтобы записать значение, нужно прописать макрос:
(пример под VBA)

ChannelNumber = Application.DDEInitiate(«PVIDDE», «cpu1301»)
Set SendValue = Worksheets(«Лист1»).Range(«D8»)
Application.DDEPoke ChannelNumber, «aiG», SendValue
Application.DDETerminate ChannelNumber

7. Примечание: чтобы корректно отображалась дробная часть необходимы следующие настройки региональных стандартов:
Разделитель дробной части = «.» (точка)
Разделитель групп разрядов = «,» (запятая)