Beremiz - свободная среда программирования ПЛК. Часть 2

PLC
Надеюсь, что заинтересовавшиеся, прочитав первую часть, установили себе Beremiz и пролистали руководство пользователя. Тогда у читателя совершенно закономерно должен был возникнуть вопрос: а как и кому Beremiz может быть полезен?


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

Тем не менее, благодаря ряду возможностей, Beremiz может быть полезен и иной аудитории. Об этих возможностях далее.

1. Использование компьютера в качестве ПЛК

Beremiz позволяет любой компьютер использовать в качестве ПЛК. Для запуска на ALT Linux есть значок запуска: Разработка/Beremiz-service.



Для запуска на других системах, нужно перейти в директорию с Beremiz и запустить Beremiz_service.py
После запуска появится индкатор в трее:



Как видно на скриншоте, при помощи этого индикатора можно запускать и останавливать ПЛК. Сменить имя ПЛК, IP-адрес, номер порта, рабочую директорию, куда загружается исполняемая программа. И наконец можно запустить консоль python для отладки и WX GUI Inspector для отладки уже HMI, написанного на wxWidget.

Теперь рассмотрим как подключаться к ПЛК, запущенному на компьютере. Запускаем Beremiz и открываем или создаём проект. Заходим в свойства проекта, щёлкнув мышкой дважды по значку проекта (значок PLC и имя Start на скриншоте) и заходим на вкладку «Конфигурация». URI системы исполнения указываем как PYRO://ip_адрес: номер_порта. Для ПЛК, запущенного на этой же машине запись будет как на картинке ниже. Также на этой вкладке необходимо выбрать в качестве целевой платформе ту операционную систему, на которой запущен ПЛК. Доступны варианты: Linux, Win32, Xenomai (Real-time OS + Linux для не реал-тайм приложений) и Generic (просто генерируется IEC-код на языке ST). Для всех платформ кроме Generic можно задать компилятор и компоновщик с флагами. Дефолтный компилятор gcc должен нас устроить. Правда не знаю, как там на Windows может нужно путь до gcc указать.



После того как проект настроен сохраняем его, собираем и коннектимся с ПЛК, нажав на соответствующий значок. После чего передаём программу ПЛК. После этого мы можем запустить программу или из среды Beremiz или на том компьютере, где запущена среда исполнения при помощи индикатора beremiz-service. После чего можно уже и отладкой заняться, как на скриншоте ниже.



Если нужно просто отладить программу, то нет необходимости запускать программный ПЛК, а можно просто в качестве URI системы исполнения указать: LOCAL:// А если ничего не указать, то при попытке коннекта появится вот такое диалоговое окно:



В этом диалоговом окне можно:
— Попытаться найти ПЛК автоматом, нажав кнопку Обновить
— Запустить локальный ПЛК и подключиться к нему, нажав кнопку Локальный
— Добавить IP-адрес, на котором запущен ПЛК.

Таким образом, Beremiz может быть интересен:
1. Тому, кто хочет научиться программировать на языках IEC 61131-3. Beremiz полностью соответствует стандарту, бесплатен, кроссплатформен и позволяет использовать в качестве ПЛК любой компьютер.
2. Для прототипирования проектов. В нём можно отладить базовую логику проекта ещё до выбора ПЛК.
3. Для разработчиков, которые хотят использовать персональный компьютер в качестве ПЛК. Ничего фантастического здесь нет. Использование ОС Linux с реал-тайм ядром или же Xenomai даёт гарантированное время исполнения цикла, так что ПК может выступать в качестве полноценного ПЛК. Сложность здесь одна, это отсутствие заготовок для устройств ввода-вывода. Необходимо писать плагины для использования плат ввода-вывода. Но никто не запрещает подключать устройства ввода-вывода по modbus.

Но и этими людьми целевая аудитория не ограничивается.

2. Проект YAPLC для микроконтроллеров

Как я уже и писал в первой части, YAPLC представляет собой с одной стороны набор расширений для Beremiz, а с другой систему исполнения для микроконтроллеров, пока только для STM32F4. Основными компонентами YAPLC, помимо уже известных нам beremiz, matiec и CanFestival являются:
  • YAPLC/RTE — минималистичная среда выполнения программмных ПЛК;
  • YAPLC/IDE — расширения для Beremiz, позволяющие создавать приложения YAPLC/RTE;
  • YaPySerial — динамическая библиотека для подключения к ПЛК с YAPILC-RTE;
  • GNU ARM Embedded Toolchain — набор инструментов разработчика на Си/Си++ для микроконтроллеров Cortex-Mx;
  • stm32flash — загрузчик для микроконтроллеров STM32;
  • FreeModbus — стек ModBus;
  • libopencm3 — библиотека драйверов периферии для микроконтроллеров с ядрами Cortex-Mх;
  • FreeModbus и libopencm3 нужны для сборки прошивки YAPLC/RTE.

Теперь рассмотрим коротко установку YAPLC.
Для ALT Linux подготовлен пакет yaplc-ide (смотреть тему: forum.altlinux.org/index.php?topic=39088.0).
Для Windows есть инсталлятор: github.com/nucleron/YAPLC/releases
Проблемы по установке на Windows github.com/nucleron/YAPLC/issues/2
Инструкция для Debian/Ubuntu от разработчика: electronix.ru/forum/index.php?showtopic=132105&view=findpost&p=1491640

Теперь коротко разберём, как подключаться к плате STM32F4DISCOVERY (сразу оговорюсь, что у меня этой платы нет, у меня есть образец NUC-243, но я буду рад если кто-нибудь в комментариях отпишется, работает ли эта инструкция). Итак, заходим в свойства проекта на вкладку конфигурация. URI системы исполнения для Linux YAPLC:///dev/ttyUSB0 Для Windows URI:YAPLC://COM28 А в качестве целевой платформы выбираем YAPLC.



Руководство есть только по NUC243, но его можно использовать и для черпания информации и для STM32F4DISCOVERY: github.com/nucleron/YAPLC/files/892874/NUC-243.468333.004.rev4.pdf
Стартовый проект: github.com/nucleron/YAPLC/files/918725/StartProject.zip

В комментариях попробую ответить на возникшие вопросы и проблемы.

И наконец есть ещё один вариант использования Beremiz.

Проект OpenPLC

Возможно наиболее интересным вариантом для читателей we.easyelectronics.ru будет проект OpenPLC. Проект ставит перед собой задачу создание полностью открытого ПЛК. Есть концептуальные схемы, сделанные в kiCAD: www.openplcproject.com/concept-hardware

Но интересен проект скорее другим, а именно в вариантах использования:
1. ПЛК на Raspberry PI: www.openplcproject.com/getting-started-rpi
2. Компьютер в качестве ПЛК плюс Arduino или ESP8266 в качестве устройства ввода-вывода: www.openplcproject.com/getting-started-arduino В этом варианте Arduino или ESP8266 прошивается специальной прошивкой, превращающей их в устройство ввода-вывода для ПК.

Думаю у многих есть Arduino или Raspberry, так что можете попробовать.

Только это уже не Beremiz. Beremiz базируется на PLCOpenEditor. В остальном это независимые проекты.
Надеюсь, что обзор возможного применения Beremiz будет кому-нибудь да полезен.

Комментарии (16)

RSS свернуть / развернуть
Beremiz позволяет любой компьютер использовать в качестве ПЛК. Для запуска на ALT Linux есть значок запуска: Разработка/Beremiz-service.
А как у этого дела с реалтаймовостью? Похожее решение от сименса работает внутри RTOS, которая запускается совместно с виндой (WinRTX вроде), а в Beremiz?
0
  • avatar
  • Vga
  • 30 июля 2017, 13:49
А как у этого дела с реалтаймовостью? Похожее решение от сименса работает внутри RTOS, которая запускается совместно с виндой (WinRTX вроде), а в Beremiz?

Реал-таймовость зависит от ОС, на которой запускается Beremiz. На Windows и Linux с не реал-тайм ядром её, разумеется, не будет. Для реал-таймовости нужен дистрибутив Linux с ядром preempt-rt. К сожалению, в ALT Linux этого ядра нет в репозитории.
0
Например, YAPLC использует FreeRTOS в качестве ОСРВ. Можно сделать ПЛК вообще без ОС, тогда его реакция будет зависеть от того, насколько эффективно сделана обработка ввода-вывод и как часто вызывается цикл ПЛК.
В Beremiz нет каких-то привязок к ОСРВ на целевой платформе, просто есть несколько доступных и готовых к использованию платформ.
+1
Немного попутал. Именно YAPLC не использует FreeRTOS, но есть другие ПЛК на основе Beremiz, которые используют.
0
Прежде всего ты попутал то, что вопрос касался исключительно реалтаймововсти «сфот-ПЛК» на обычном ПК с Beremiz.
0
Мы делаем контроллер, программируемый на Beremiz'е на базе FreeRTOS. Удалось добиться точности в районе 5 мс, в перспективе доведем до 1 мс.
0
Вопрос-то читать не пробовал, не?
0
А как у этого дела с реалтаймовостью?
Как измерить реалтаймовость, если не в миллисекундах отклонения времени исполненения пользовательского цикла?
0
Или речь шла про реалтаймовость конкретно виндового рантайма?
0
Речь шла про реалтаймовость софт-плк «Beremiz в режиме ПЛК запущен на ПК». И ты уже второй, кто плохо прочитал вопрос.
0
  • avatar
  • Vga
  • 01 сентября 2017, 08:54
Для использования компьютера в качестве ПЛК не нужна дополнительная надстройка. И уж тем более изучение довольно специфических языков из пула IEC 61131-3.
На РС это делается проще, в среду интегрируется специализированная DLL ввода\вывода, управление оборудованием производится из ЯВО.
0
Для использования компьютера в качестве ПЛК не нужна дополнительная надстройка. И уж тем более изучение довольно специфических языков из пула IEC 61131-3.
На РС это делается проще, в среду интегрируется специализированная DLL ввода\вывода, управление оборудованием производится из ЯВО.

Использование устройств ввода-вывода не превращает ПК в ПЛК. Даже работа операционной системы ПК в режиме реального времени не является достаточным признаком программного ПЛК. Программный ПЛК должен исполнять программу циклически. А сами программы должны представлять собой конечные автоматы. И именно поэтому должны быть написаны на языках IEC 61131-3, которые удовлетворяют этому условию.
0
рограммный контроллер Сименса WinAC RTX работает на выделенном ядре многоядерного процессора независимо от ОС, крутящейся на других ядрах… при этом Винду можно программно перегружать, а программа WinAC RTX будет как ни в чём не бывало работать на выделенном ядре.
Является это дополнительной надстройкой или подстройкой? :)

1. В данном изложении не увидел заманчивой красоты в виде простоты самой концепции применения языков программируемых логических контроллеров…
2. Некоторые моменты в реализации и дизайне программы не нравятся… надо брать из других сред самое лучшее.
0
рограммный контроллер Сименса WinAC RTX работает на выделенном ядре многоядерного процессора независимо от ОС, крутящейся на других ядрах… при этом Винду можно программно перегружать, а программа WinAC RTX будет как ни в чём не бывало работать на выделенном ядре.

На счёт этой технологии. Siemens, несколько лет развивает гипервизор Jailhouse: www.opennet.ru/opennews/art.shtml?num=38473 Не уверен, что он применяется в WinAC. Но реализует этот гипевизор ровно тоже самое. Jailhouse открыт, так что можно реализовать аналог такого WinAC на базе любого многоядерного компьютера. На одном ядре будет установлен реал-тайм Linux или xenomai, на котором будет крутиться Beremiz в качестве софтПЛК, а на остальных ядрах будет работать операционная система общего назначения Linux или Windows. Увы пока никто такой контроллер не сделал :-)

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

Цель сего изложения показать те моменты, которые не описаны в руководстве программиста от ИНЭУМ. Да и вообще просто показать возможные варианты применения.

2. Некоторые моменты в реализации и дизайне программы не нравятся… надо брать из других сред самое лучшее.

Расскажите. Что именно не нравится? Может имеет смысл написать разработчику свои пожелания…
0
Нет желания написать, как создавать свой собственный таргет для Beremiz'а?
0
Спасибо за статью! Несколько комментариев.

1. По поводу пути в Windows до компилятора могу сказать, что он не понадобится,
если брать дистрибутив с сайта beremiz.org, то gcc для Windows уже входит в состав установщика и путь до него автоматически добавляется в PATH, тут тоже указывать путь до компилятора не нужно.
Также не надо его указывать, если он уже находится в PATH, либо добавляется туда перед запуском Beremiz.

2. Целевая платформа Generic не просто генерирует IEC-код на языке ST (а потом ещё и из ST код на C). Она выполняет сборку целевого исполняемого файла с помощью GNU Make. Примеры её использования:
— лёгкая интегрирация Beremiz в уже существующие проекты, использующие для сборки make;
— создание сложных сценариев сборки с автоматическим разрешением зависимостей, которые в противном случае бы пришлось кодировать на python;
— быстрое создание новой целевой платформы без необходимости модификации кода Beremiz и написания каких-либо расширений.
+1
  • avatar
  • skv
  • 30 августа 2017, 11:55
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.