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: core22
architectures: [amd64, arm64]
parts:
beremiz:
# Beremiz python source and dependencies, inc. native GCC
# source tree is expected to be just aside snap directory
plugin: python
source: beremiz
source-type: local
python-requirements:
- requirements.txt
# native GCC toolchain
# note: GCC toolchain cannot be move to separate part
# otherwise there is a file conflict about lib64 in prime step
# caused apparently by libc6 (needed to have consistent sysroot)
stage-packages:
- gcc
- libc6
- libc6-dev
- linux-libc-dev
- libgcc-9-dev
- libgcc-s1
override-pull: |
snapcraftctl pull
snapcraftctl set-version `python3 $CRAFT_PART_SRC/version.py`
override-build: |
snapcraftctl build
cp -a $CRAFT_PART_SRC $CRAFT_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 $CRAFT_PART_BUILD $CRAFT_PART_INSTALL/matiec
modbus:
plugin: nil
source: Modbus
source-type: local
build-packages:
- build-essential
- automake
override-build: |
make
cp -a $CRAFT_PART_BUILD $CRAFT_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 $CRAFT_PART_BUILD $CRAFT_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 $CRAFT_PART_SRC/revisions.txt $CRAFT_PART_INSTALL
apps:
ide:
# Launcher for the IDE
environment:
SYSROOT: $SNAP
command: bin/python3 $SNAP/beremiz/Beremiz.py
extensions: [gnome]
plugs:
- network
- network-bind
beremiz:
# Beremiz Command Line interface
environment:
SYSROOT: $SNAP
command: bin/python3 $SNAP/beremiz/Beremiz_cli.py
plugs:
- network
- network-bind
runtime:
# Standalone runtime
environment:
SYSROOT: $SNAP
command: bin/python3 $SNAP/beremiz/Beremiz_service.py
plugs:
- network
- network-bind