Beremiz

Материал из ALT Linux Wiki
ALT-review logo.png
[[Annotation::Beremiz — это интегрированная среда разработки для ПЛК с открытым исходным кодом. Она опирается на открытые стандарты, которые не зависят от целевых устройств, так что вы можете превратить любой процессор в ПЛК.]]

Автор: Author::Антон Мидюков   Раздел: Section::технологии   Выпуск: Issue::next   Тег: Tag::электроника


Beremiz — это интегрированная среда разработки для ПЛК с открытым исходным кодом, которая полностью соответствует стандарту МЭК-61131-3. Beremiz опирается на открытые стандарты, которые не зависят от целевых устройств. Так что вы можете превратить любой процессор в ПЛК. Также Beremiz включает инструменты для создания HMI и подключения ваших программ PLC к наблюдению, базам данным или полевым шинам.

Beremiz01.png

Введение

Для программирования ПЛК используются 5 языков, описанных стандартом МЭК 61131-3:

  • LD — релейно-контактные схемы;
  • FBD — функциональные блоковые диаграммы;
  • SFC — последовательностные функциональные диаграммы;
  • ST — структурированный текст;
  • IL (Instruction List) — список инструкций.

Тем не менее ведущие производители ПЛК используют собственные варианты этих языков, несовместимых с этим стандартом. Например, у фирмы Siemens это соответственно языки: LAD, FBD, SFC, SCL, STL. Исключением являются компании, использующие в качестве сред программирования ISAGRAF и Codesys. Обе эти среды полностью соответствуют стандарту МЭК 61131-3.

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

Beremiz же являясь свободным программным обеспечением, может быть модифицирован производителем ПЛК для работы на новой аппаратной платформе. Гибкость в изменении существующих и добавлении новых компонентов достигается с помощью языка Python (и соответствующих библиотек для пользовательского интерфейса, работы с сетью и т.д.) и xsd (XML Schema) файлов, применяемых для описания компонентов среды разработки: модулей работы с компиляторами целевой архитектуры, плагинов внешних источников данных и т.д.

Beremiz используется:

  1. ПАО «ИНЭУМ им. И.С.Брука» в качестве среды разработки и исполнения на ПЛК серии СМ1820М на базе отечественных микропроцессоров «Эльбрус» и SPARC, а также линеек, основанных на микропроцессорах ARM и x86.
  2. ООО НПК «Нуклерон» (г. Пермь) тестирует линейки программируемых реле NUC-24x/251. В основе программируемых реле используется микроконтроллер STM32F4. В качестве среды разработки используется YAPLC-IDE, представляющая собой набор расширений для среды Beremiz. Для ПЛК параллельно разрабатывается среда исполнения YAPLC-RTE. Исходные коды YAPLC доступны на github.
  3. ООО НТЦ «Арго» МУР 1001.3 СВ
  4. ООО «НГП Информ»
  5. Smarteh LPC-2.MC8

Полный список компаний, использующих Beremiz.

Особенности Beremiz

Среда разработки Beremiz позволяет работать в конфигурационном режиме и в режиме исполнения прикладной программы. В конфигурационном режиме происходит создание прикладной программы, написание алгоритмов и логики её основных программных модулей и их связывание с внешними модулями УСО (устройство связи с объектом). В режиме исполнения прикладная программа передаётся на целевое устройство и может быть запущена с режимом отладки и без отладки.

Основными компонентами Beremiz являются:

— редактор PLCOpen для текстовых (IL и ST) и графических языков (FBD, LD, SFC) стандарта IEC 61131-3; компилятор MatIEC, преобразующий логику и алгоритмы программных модулей (из которых состоит прикладная программа), описанных на языках стандарта IEC 61131-3, в эквивалентный С-код;

— механизм плагинов, позволяющий связывать внешние источники данных, такие как модули УСО (их параметры, состояния), SCADA-системы с логикой и алгоритмами программных модулей;

— средства отладки прикладной программы в режиме исполнения;

— элементы для создания человеко-машинного интерфейса управления прикладной программой.

Таким образом Beremiz преобразует LD, FBD, SFC или IL в код на ST, а MatIEC конвертирует ST в C. Код С компилируется на конечную платформу.

Установка и запуск

Исходный код и инсталлятор под Windows можно скачать на официальном сайте. Для дистрибутива ALT Linux есть готовый пакет beremiz[1] в репозитории. Для дистрибутивов Debian/Ubuntu есть инструкция.

Для Windows и ALT Linux есть соответствующие значки запуска в меню Пуск. А для остальных дистрибутивов Linux запускать из каталога beremiz исполняемый файл BeremizIDE.py

Руководство пользователя beremiz

Кому Beremiz может быть полезен?

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

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

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

Beremiz02.png

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

Beremiz03.png

Как видно на скриншоте, при помощи этого индикатора можно запускать и останавливать ПЛК. Сменить имя ПЛК, 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 указать.

Beremiz04.png

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

Beremiz05.png

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

Beremiz06.png

В этом диалоговом окне можно:

— Попытаться найти ПЛК автоматом, нажав кнопку Обновить

— Запустить локальный ПЛК и подключиться к нему, нажав кнопку Локальный

— Добавить IP-адрес, на котором запущен ПЛК.

Таким образом, Beremiz может быть интересен:

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

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

Проект 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[2] (смотреть тему на форуме).

Для Windows есть инсталлятор.

Проблемы по установке на Windows

Инструкция для Debian/Ubuntu от разработчика.

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

Beremiz07.png

Руководство есть только по NUC243, но его можно использовать и для черпания информации и для STM32F4DISCOVERY. Стартовый проект.

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

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

Проект OpenPLC

Возможно наиболее интересным вариантом для читателей будет проект OpenPLC. Проект ставит перед собой задачу создание полностью открытого ПЛК. Есть концептуальные схемы, сделанные в kiCAD.

Но интересен проект скорее другим, а именно в вариантах использования:

  1. ПЛК на Raspberry PI
  2. Компьютер в качестве ПЛК плюс Arduino или ESP8266 в качестве устройства ввода-вывода. В этом варианте Arduino или ESP8266 прошивается специальной прошивкой, превращающей их в устройство ввода-вывода для ПК.

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

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


__SHOWFACTBOX__