user12261777

user12261777

Геннадий Антонов
Пикабушник
104 рейтинг 1 подписчик 0 подписок 1 пост 0 в горячем
4

Разработка IDE + рантайм ПЛК. Совместная работа. Отладка ST 61131-3⁠⁠

Предысторию разработки собственного рантайма, IDE, поддержка 61131-3
смотрите в моем блоге - ссылка в конце статьи.

В целом была идея, разработать отечественный рантайм для ПЛК и IDE к нему, которые были бы шустры, легки и производительны.
Пока, как мне кажется, это удается. Скомпилированный бинарник IDE сейчас занимает около 1 мб.
Запущенный рантайм, в текущей реализации, занимает около 5 мб ОЗУ и несколько процентов цпу ( до 5%) на Распберри 4, на нескольких одновременно работающих конфигурациях.
В общем, понемногу движемся в правильном направлении, товарищи. Сегодня, хотел бы показать дальнейшую эволюцию этой идеи.

Немного про стек разработки.
Напомню, что IDE и рантайм для ПЛК у меня разработаны под Линукс. Пишу на C++, собираю под Cmake как под x86-64, так и под ARM. В качестве внутренней коммуникации реализовал свой бинарный протокол, на базе ZeroMQ и FlatBuffers.
Транслятор с промышленного языка — ANTLR.
Из промышленных протоколов коммуникации, пока поддержка - Modbus. Планирую добавить в дальнейшем OPCUA.
IDE — написан на чистом C++ и Qt
Рантайм — чистый C++
IDE с рантаймом общаются по собственному бинарному асинхронному протоколу, о котором писал выше.

IDE поддерживает два типа логики IL и ST.
Зачем IL спросите вы?
Исторически, случилось так, что рантайм начался с этого языка. И это не совсем IL — это полный аналог языка устройства Tesys T.
Сами разработчики писали о нем как об structural text языке.
Короче, я собирался реализовать рантайм, и чтобы он полностью поддерживал программы, которые были написаны для Tesys.
Также мне понравилась как он был реализован. Вот так с тех пор он и остался, и благополучно работает.

Дерево элементов конфигураций ПЛК.

Фокус на элементе логики на IL

Фокус на элементе логики на IL

Фокус на элементе логики ST

Фокус на элементе логики ST

Один элемент конфигурации — это 1 логика своего типа (IL или ST).
Он же, отдельный выделенный поток для исполнения данной логики. Каждый поток, работает независимо и в параллель. Сколько элементов — столько и параллельно работающих потоков, исполнителей логики.

Компиляция.
Для компиляции ST 61131-3 я написал свой транслятор на базе ANTLR. Перед загрузкой, логика компилируется в IDE и проверяется на ошибки. Успешно или нет логика скомпилирована, информация выводится в панель снизу.

Ошибочная компиляция программы на ST

Ошибочная компиляция программы на ST

Компиляция успешна!

Компиляция успешна!

Сохранение и открытие.
Теперь конфигурации можно открыть и сохранить из IDE. И да, это банальный элемент, но без этого никуда. Что кстати требует довольно приличного времени на проектирование, разработку итд.

Настройки подключения и проверка связи.

Подключаем к ПЛК очень просто. Нужно на вкладке настроек подключения вбить настройки IP адреса и кнопку «Подключиться».

Настройки подключения

Настройки подключения

Если подключение успешно, в статус панели значок подключения сменит цвет на зеленый.
Если связи нет, или был обрыв — иконка сменит цвет на красный.

Есть связь с ПЛК! Кнопка подключения сверху - как кнопка питания.

Есть связь с ПЛК! Кнопка подключения сверху - как кнопка питания.

Связи нет.

Связи нет.

Завел кнопку для запроса у работающего ПЛК перечень конфигураций в работе.

Перечень конфигураций в работе на ПЛК.

Перечень конфигураций в работе на ПЛК.

На ПЛК летит команда, с запросом. Список конфигураций высвечивается в нижней панели.

Три конфигурации - логики активны, и работают в параллель на ПЛК

Три конфигурации - логики активны, и работают в параллель на ПЛК

Набор кнопок, с разным функционалом.

Кнопка отправить все конфигурации на ПЛК

Кнопка отправить все конфигурации на ПЛК

Спокойно, загружаем и выгружаем через IDE с ПЛК конфигурации.

Автозапуск.
Загрузив через IDE в рантайм 1 раз конфигурации, которые он благополучно сохранит и при его перезагрузке стартует снова с ними же.

В одной из прошлых статей, писал про разработку программного осциллографа, чтобы писать аварийные события в формате COMTRADE. Это больше для устройств РЗА, конечно, но скажем в устройстве Tesys T осциллографа сильно не хватало. Короче он также может запускаться в составе рантайма, хотя его можно и отключать.
В той прошлой статье, я писал про него подробно. У него крутая возможность — с его помощью можно генерировать самые разные осциллограммы, причем можно создавать различные аварийные режимы.

Отладка.

Код на ST 61131-3 у меня в IDE можно отлаживать на «живом» рантайме ПЛК. Завел кнопку Отладка.

Кнопка с жуком - это отладка.

Кнопка с жуком - это отладка.

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

Отладка переменных - пока всё по нулям

Отладка переменных - пока всё по нулям

Ставим точку останова, там где программа заходит в участки кода на ST. Может и не зайти, если там есть условия итд.
Наблюдаем в окне имена и значения переменных в зоне видимости участка кода программы.

Тут логика активирована сигналом - переменные со значениями.

Тут логика активирована сигналом - переменные со значениями.

Инфо в панели вывода информации об отладке.

Инфо в панели вывода информации об отладке.

Оригинал моей статьи тут

https://dzen.ru/a/arE1JIoPezZOL4lJ

Показать полностью 14
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества