Найти в Дзене
Геннадий Антонов

IDE для рантайма

Здравствуйте, друзья. Практически в канун Нового Года, решил вас порадовать новой статьей, которая в общем то назрела давно, но никак не доходили руки. В своих предыдущих статьях я писал про исполнительную среду ПЛК (рантайм) собственной разработки. Рантайм, как я уже писал, может исполнять логику от устройства Tesys T.
Также его можно запускать как физический ПЛК на Raspberry Pi, и как виртуальный ПЛК. Рантайм, это хорошо. Но как его программировать? В текущей реализации, рантайм считывал файл с командами один раз при запуске. Этот файл лежит там же, где находится сам рантайм.
Вообщем, всё сложно.
Очевидно, что нужна IDE - среда разработки для рядового инженера. Где можно было бы писать логику, настраивать ПЛК. Все промышленные ПЛК идут в комплекте со своей IDE, например наш отечественный Регул с IDE Астра, которая базируется на иностранной IDE Codesys. Значит и я решил разработать и создать свою IDE для своего рантайма.
Ну и статья о том, что уже получилось достичь в этом направл
Оглавление

Здравствуйте, друзья.

Практически в канун Нового Года, решил вас порадовать новой статьей, которая в общем то назрела давно, но никак не доходили руки.

В своих предыдущих статьях я писал про исполнительную среду ПЛК (рантайм) собственной разработки. Рантайм, как я уже писал, может исполнять логику от устройства Tesys T.
Также его можно запускать как физический ПЛК на Raspberry Pi, и как виртуальный ПЛК. Рантайм, это хорошо. Но как его программировать?

В текущей реализации, рантайм считывал файл с командами один раз при запуске. Этот файл лежит там же, где находится сам рантайм.
Вообщем, всё сложно.
Очевидно, что нужна IDE - среда разработки для рядового инженера. Где можно было бы писать логику, настраивать ПЛК.

Все промышленные ПЛК идут в комплекте со своей IDE, например наш отечественный Регул с IDE Астра, которая базируется на иностранной IDE Codesys.

Значит и я решил разработать и создать свою IDE для своего рантайма.
Ну и статья о том, что уже получилось достичь в этом направлении.

Данную IDE я разрабатываю на C++ и Qt.
Разработана она была для работы из операционной системы Линукс.
Данная IDE ни на каких сторонних IDE не базируется. Она была разработана, также как и рантайм, полностью с нуля.
Поскольку IL подобный язык, используемый для написания логики в Tesys T, не очень то и простой, и имеет высокий порог входа, особенно новичкам, я решил сделать надстройку над ним и использовать более доступный для восприятия - FBD.
Получился некий гибрид FBD языка, привязанный к командам логики рантайма.
Например триггер LATCH, имеет такой аналог в моей IDE:

Триггер LATCH - FBD блок в IDE
Триггер LATCH - FBD блок в IDE

Вообщем, все команды, которые есть в логике Tesys T, в IDE реализованы своими аналогами, только на FBD.
IDE позволяет импортировать IL-подобную логику Tesys T, из текста, по которой выстраивает FBD блоки.
Также доступен экспорт логики из FBD в текстовые команды Tesys T.
Можно также сохранять и открывать в собственном формате файлов, где уже хранятся положение FBD блоков на холсте, линии итд.

Порты блоков.

Каждый блок свои входа и выхода - порты.
Порты могут быть двух типов - битовый и регистровые.
Бывают блоки, которые имеют только битовые входа и выхода, например AND_BIT.

Команды AND_BIT - его аналог в FBD
Команды AND_BIT - его аналог в FBD

Или блоки, которые имеют только регистровые входа и выхода, например AND_REG.

Команды AND_REG - его аналог блок в FBD
Команды AND_REG - его аналог блок в FBD

Или блоки, которые имеют как битовые, так и регистровые входа и выхода. Например TIMER.

Команда TIMER_K_TENTHS - реализация в FBD в моей IDE
Команда TIMER_K_TENTHS - реализация в FBD в моей IDE

Понять какой тип у портов можно по цвету.
Регистровые порты - синие точки на блоке.
Битовые порты - красные точки на блоки.
Битовые порты имеют подписи - адрес регистра и адрес бита.
Регистровые - только адрес регистра.

Надписи портов.

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

Линии.

Блоки FBD можно соединять линиями. Они конечно не играют особого значения, в применении к логике Tesys, но существенно облегчают понимание и восприятие логики.

Типичное соединение блоков линиями.
Типичное соединение блоков линиями.

Два порта, можно соединить линией, только если порты одного типа - оба битовые или оба регистровые. Ну, если просто, красные порты (точки) можно соединять только с красными, и синие порты - только с синими.

Все команды, которые есть в логике Тесис Т, тут представлены блоками:

На левой панели весь перечь команд - блоков в FBD
На левой панели весь перечь команд - блоков в FBD

В том числе, некоторые дополнительно реализованные:

Реализация блока SET_IF - это команды нет в логике Tesys T
Реализация блока SET_IF - это команды нет в логике Tesys T

Экспорт и импорт логики.

Из текстовой tesys-подобной текстовой логики, можно сделать импорт.
А также экспортировать, уже нарисованную в формате FBD логику в текстовые команды для рантайма с tesys-подобной логикой.

Сохранение и открытие логики.

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

Режим мониторинга.

Одной из важнейших частей IDE для работы с ПЛК, конечно же является возможность отладки уже написанной логики на самом ПЛК, и отслеживания её состояния на IDE.

Режим мониторинга - линии.

Если линии в обычном режиме редактирования черные, то линии в режиме мониторинга окрашиваются в свои цвета:
Там где битовый сигнал и есть логическая 1 - линии красные.
Там где регистровый сигнал - линии синие.

Режим мониторинга - значения.

Если включен режим мониторинга, то на линиях, в той их части, что ближе к входу блока, появляется числовое значение.
Для битовых линий - это 0 или 1.
Для регистровых линиий - это значение регистра.
При включении режима мониторинга, IDE подключается через Ethernet TCP/IP к работающему рантайму, и считывает значения регистров и битов. Затем обновляет состояния линий и числовых значений мониторинга.
Вообщем, лучше один раз увидеть на видео, как это всё получилось.

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

Не стесняйтесь оставляйте комментарии, отметьте статью, если понравилось, или просто пишите мне в Телеграм - @antonovgp