Здравствуйте, друзья.
Практически в канун Нового Года, решил вас порадовать новой статьей, которая в общем то назрела давно, но никак не доходили руки.
В своих предыдущих статьях я писал про исполнительную среду ПЛК (рантайм) собственной разработки. Рантайм, как я уже писал, может исполнять логику от устройства Tesys T.
Также его можно запускать как физический ПЛК на Raspberry Pi, и как виртуальный ПЛК. Рантайм, это хорошо. Но как его программировать?
В текущей реализации, рантайм считывал файл с командами один раз при запуске. Этот файл лежит там же, где находится сам рантайм.
Вообщем, всё сложно.
Очевидно, что нужна IDE - среда разработки для рядового инженера. Где можно было бы писать логику, настраивать ПЛК.
Все промышленные ПЛК идут в комплекте со своей IDE, например наш отечественный Регул с IDE Астра, которая базируется на иностранной IDE Codesys.
Значит и я решил разработать и создать свою IDE для своего рантайма.
Ну и статья о том, что уже получилось достичь в этом направлении.
Данную IDE я разрабатываю на C++ и Qt.
Разработана она была для работы из операционной системы Линукс.
Данная IDE ни на каких сторонних IDE не базируется. Она была разработана, также как и рантайм, полностью с нуля.
Поскольку IL подобный язык, используемый для написания логики в Tesys T, не очень то и простой, и имеет высокий порог входа, особенно новичкам, я решил сделать надстройку над ним и использовать более доступный для восприятия - FBD.
Получился некий гибрид FBD языка, привязанный к командам логики рантайма.
Например триггер LATCH, имеет такой аналог в моей IDE:
Вообщем, все команды, которые есть в логике Tesys T, в IDE реализованы своими аналогами, только на FBD.
IDE позволяет импортировать IL-подобную логику Tesys T, из текста, по которой выстраивает FBD блоки.
Также доступен экспорт логики из FBD в текстовые команды Tesys T.
Можно также сохранять и открывать в собственном формате файлов, где уже хранятся положение FBD блоков на холсте, линии итд.
Порты блоков.
Каждый блок свои входа и выхода - порты.
Порты могут быть двух типов - битовый и регистровые.
Бывают блоки, которые имеют только битовые входа и выхода, например AND_BIT.
Или блоки, которые имеют только регистровые входа и выхода, например AND_REG.
Или блоки, которые имеют как битовые, так и регистровые входа и выхода. Например TIMER.
Понять какой тип у портов можно по цвету.
Регистровые порты - синие точки на блоке.
Битовые порты - красные точки на блоки.
Битовые порты имеют подписи - адрес регистра и адрес бита.
Регистровые - только адрес регистра.
Надписи портов.
Порты у сложных блоков, помимо адресов, подписаны также о своем назначении. Например у таймера на скриншоте выше - таймер отработал, выход блока 27.1
Надписи у портов можно отключать, чтобы не мешали. Для этого есть специальная опция в меню (ниже смотрите на видео).
Линии.
Блоки FBD можно соединять линиями. Они конечно не играют особого значения, в применении к логике Tesys, но существенно облегчают понимание и восприятие логики.
Два порта, можно соединить линией, только если порты одного типа - оба битовые или оба регистровые. Ну, если просто, красные порты (точки) можно соединять только с красными, и синие порты - только с синими.
Все команды, которые есть в логике Тесис Т, тут представлены блоками:
В том числе, некоторые дополнительно реализованные:
Экспорт и импорт логики.
Из текстовой tesys-подобной текстовой логики, можно сделать импорт.
А также экспортировать, уже нарисованную в формате FBD логику в текстовые команды для рантайма с tesys-подобной логикой.
Сохранение и открытие логики.
Помимо импорта и экспорта, я разработал специальный формат, в который можно сохранять и открывать логику. В данном формате, помимо основных команд, также сохраняются положения блоков и линии.
Режим мониторинга.
Одной из важнейших частей IDE для работы с ПЛК, конечно же является возможность отладки уже написанной логики на самом ПЛК, и отслеживания её состояния на IDE.
Режим мониторинга - линии.
Если линии в обычном режиме редактирования черные, то линии в режиме мониторинга окрашиваются в свои цвета:
Там где битовый сигнал и есть логическая 1 - линии красные.
Там где регистровый сигнал - линии синие.
Режим мониторинга - значения.
Если включен режим мониторинга, то на линиях, в той их части, что ближе к входу блока, появляется числовое значение.
Для битовых линий - это 0 или 1.
Для регистровых линиий - это значение регистра.
При включении режима мониторинга, IDE подключается через Ethernet TCP/IP к работающему рантайму, и считывает значения регистров и битов. Затем обновляет состояния линий и числовых значений мониторинга.
Вообщем, лучше один раз увидеть на видео, как это всё получилось.
На видео показываю, как в IDE выглядят простые операции по добавлению блока, импорт-экспорт логики, открытие-сохранение в собственный формат.
В режиме мониторинга, на рантайме запущена логика, которая была описана и показана в одной из предыдущих статей.
Там же в IDE мы можем наблюдать битовые и регистровые значения на блоках и линиях.
Не стесняйтесь оставляйте комментарии, отметьте статью, если понравилось, или просто пишите мне в Телеграм - @antonovgp