name: beremiz
adopt-info: beremiz
title: Beremiz
summary: Beremiz Open Source PLC.
description: |
Beremiz is a framework for machine automation. It is meant to add PLC-like programing to embedded systems.
Beremiz is [Free Software](https://en.wikipedia.org/wiki/Free_software), and conforms to
[IEC_61131](https://en.wikipedia.org/wiki/IEC_61131-3) and [PLCopen](https://plcopen.org/technical-activities/xml-exchange) among other standards.
Beremiz supports all languages described in IEC_61131:
* Structured Text (ST)
* Instruction List (IL)
* Function Block Diagram (FBD)
* Sequencial Function Chart (SFC)
* Ladder Diagram (LD)
IDE also includes tools to create Human-Machine Interfaces (HMI), and to connect your PLC programs to existing supervisions, databases, or fieldbuses:
* Modbus
* OPC-UA
* CANopen
* SVG HMI
* Wx HMI
* Python
* ...
Runtime can be programmed remotely and allows variables tracing and forcing.
icon: snap/gui/beremiz.png
contact:
- https://beremiz.org
- snap@beremiz.fr
grade: devel
confinement: strict
base: core20
architectures: [amd64, arm64]
parts:
python-deps:
# This part provides all python2 dependencies, including interpreter
# More particularily, it builds latest PIP supporting python2 from git
# and uses it to collect and buid other Beremiz dependencies.
#
# rational:
# - python plugin doesn't support python2 anymore on core20+
# - attempts to get python2+pip+virtualenv in a core20 based snap failed
plugin: nil
source: https://github.com/pypa/pip/archive/refs/tags/20.3.4.tar.gz
build-packages:
- libssl-dev
- libgtk-3-dev
- libgl1-mesa-dev
- libglu1-mesa-dev
- python2-dev
stage-packages:
- python2
- python-setuptools
- python-lxml
override-build: |
# For some reasons site-packages needs to be created and
# added to PYTHONPATH during PIP (own) build.
# Apparently not anymore when snap is executed.
mkdir $SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages
PYTHONPATH=$SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages \
$SNAPCRAFT_PART_INSTALL/usr/bin/python2 $SNAPCRAFT_PART_SRC/setup.py \
install --prefix $SNAPCRAFT_PART_INSTALL/usr
PYTHONPATH=$SNAPCRAFT_PART_INSTALL/usr/lib/python2.7/site-packages \
$SNAPCRAFT_PART_INSTALL/usr/bin/pip install \
future \
matplotlib \
msgpack_python \
u-msgpack-python \
zeroconf2 \
enum34 \
pyro \
sslpsk \
posix_spawn \
twisted \
nevow \
autobahn \
click \
opcua \
pycountry \
fonttools \
Brotli \
wxPython==4.1.1
beremiz:
# Beremiz python source + GCC toolchain
# source tree is expected to be just aside snap directory
plugin: nil
source: beremiz
source-type: local
stage-packages:
- gcc
- libc6
- libc6-dev
- linux-libc-dev
- libgcc-9-dev
- libgcc-s1
override-pull: |
snapcraftctl pull
snapcraftctl set-version `python2 $SNAPCRAFT_PART_SRC/version.py`
override-build: |
cp -a $SNAPCRAFT_PART_SRC $SNAPCRAFT_PART_INSTALL/beremiz
matiec:
# Matiec ST, SFC and IL compiler.
# source tree is expected to be just aside snap directory
plugin: nil
source: matiec
source-type: local
build-packages:
- build-essential
- automake
- flex
- bison
override-build: |
autoreconf -i && ./configure && make
cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/matiec
modbus:
plugin: nil
source: Modbus
source-type: local
build-packages:
- build-essential
- automake
override-build: |
make
cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/Modbus
open62541:
plugin: nil
source: open62541
source-type: local
build-packages:
- build-essential
- cmake
override-build: |
mkdir build && cd build && cmake .. && make
cp -a $SNAPCRAFT_PART_BUILD $SNAPCRAFT_PART_INSTALL/open62541
inkscape:
# CLI only, used in SVGHMI build
# GUI fails to launch couldn't find a way
plugin: nil
stage-packages:
- inkscape
- libgtk-3-0
# libgtk3 needs to be explicitely given
# otherwise wxGtk doesn't start, with this error :
# libgtk-3.so.0: undefined symbol: pango_font_family_get_face
# ... why ?
revisiontxt:
# Makefile generated "revisions.txt"
plugin: nil
source: .
source-type: local
override-build: |
cp $SNAPCRAFT_PART_SRC/revisions.txt $SNAPCRAFT_PART_INSTALL
apps:
ide:
# Launcher for the IDE
environment:
SYSROOT: $SNAP
command: usr/bin/python2 $SNAP/beremiz/Beremiz.py
extensions: [gnome-3-38]
plugs:
- network
- network-bind
beremiz:
# Beremiz Command Line interface
environment:
SYSROOT: $SNAP
command: usr/bin/python2 $SNAP/beremiz/Beremiz_cli.py
plugs:
- network
- network-bind
runtime:
# Standalone runtime
environment:
SYSROOT: $SNAP
command: usr/bin/python2 $SNAP/beremiz/Beremiz_service.py
plugs:
- network
- network-bind