О моделировании систем управления
Поскольку без компьютерного моделирования невозможно создание цифровых двойников, например, электростанций и производств, желательно иметь возможность описывать в модели сложные (с большим количеством сигналов) системы управления в простой и читаемой форме.
Подход к моделированию, предложенный в Ява-пакете org.engitex.controllogic, не только поможет с моделированием сложных АСУ, но и с переносом (при необходимости) кода из модели на язык релейной логики, используемый для программирования ПЛК.
Другая "горячая" тема - это выбор ПК вместо ПЛК при проектировании некоторых систем управления. Современные ПК имеют более широкие возможности для симуляций в реальном времени, обработке данных и сетевому взаимодействию за счет многопоточности, мощных CPU, доступности различных сред для написания программ. Однако ПЛК будут по-прежнему использоваться, по крайней мере в тех задачах, где необходимо строгое соблюдение задержек, временных интервалов. ОС на ПК намного менее "строгая" в этих вопросах.
Ява-пакет от НТЦ Энжитек полезен как для моделирования АСУ, так и для непосредственной реализации системы управления на ПК (в среде Java). Примеры, включенные в пакет, доступный для скачивания, содержат:
- Систему управления в реальном времени, т.е. http-запросы на сервис погоды (HttpResponseTester.java);
- Моделирование управления нагревателем (HeatDiffusion1D.java).
Рассмотрим 2-ой пример.
Нагреватель постоянной мощности установлен в левом конце пластины. Температура измеряется на правом конце. Положим, что нагреватель необходимо отключать, если правый конец перегрет.
Пакет позволяет сделать код, описывающий АСУ читаемым - внутри цикла по временным шагам будут только условия if для задания логических входных сигналов (перегрев и остывание). Все остальное, имеющее отношение в АСУ, может быть вынесено в отдельный блок кода или класс.
Итак, после симуляций (графики приведены выше), возможны два пути:
- Создать систему управления на ПК. В этом случае нагреватель и термистор будут управляться через порты GPIO, USB или даже по сети, в зависимости от "железа".
- Другой путь - выбор ПЛК.
Опишем для данного примера, что необходимо изменить для переноса модельной АСУ в реальную на ПК:
- Объект класса ControlSimulator следует заменить на объект класса ControlRealtime (оба класса - прозводные от Control).
- Очевидно, убрать цикл по временным шагам вместе с методом setTime.
- Задача sourceControlTask уже будет запускаться в цикле (см. изменения в коде ниже, см. на инициализацию sourceControlTask и Runnable loop). Также будут добавлены методы для коммуникации с нагревателем и датчиком температуры getSensorTemp, setHeaterOff, setHeaterOn:
Так, при переходе к реальной системе управления код, описывающий логику управления, терпит минимальные изменения.
В случае необходимости переноса кода на язык релейной логики, такую логику несложно построить, смотря на блоки кода, описывающие триггеры (т.е. цифровые сигналы) и задачи (tasks). В этом случае вместо продвижения с временным шагом симуляции dt, продвижение в реальности будет с шагом ПЛК (т.н. cycle time).