plcopen v0.20.0
v0.20.0 is the first formal pre-1.0 checkpoint built around the rewritten
core/ runtime. It packages the C++17 header-only motion kernel, the
motion-oriented IEC 61131-3 ST runtime, and the Python simulation facade as one
versioned release for evaluation, integration, and simulation.
This is still a pre-1.0 release. It does not claim a stable ABI, PLCopen or Safety certification, or production validation on real machinery.
Install
C++ with FetchContent
include(FetchContent)
FetchContent_Declare(
plcopen
GIT_REPOSITORY https://github.com/lusipad/plcopen.git
GIT_TAG v0.20.0)
FetchContent_MakeAvailable(plcopen)
target_link_libraries(my_controller PRIVATE plcopen::plcopen)
The exported target is header-only and requires C++17 and CMake 3.21 or newer.
Installed-package consumption through find_package(plcopen CONFIG REQUIRED)
is also supported.
Python
Published wheels cover CPython 3.10-3.13 on Windows, manylinux x86_64, and macOS x86_64/arm64. An sdist is provided for other supported source-build environments.
What users get
- A C++17 header-only motion-control kernel with deterministic cyclic execution, jerk-limited online trajectory generation, fixed-time solving, blending/look-ahead, gear/cam, Cartesian motion, coordinate systems, kinematics, and trajectory streaming.
- The rewritten
core/tree as the defaultplcopen::plcopenconsumer target. The previoussrc/implementation remains available only as an opt-in, P0-only migration and replay baseline. - PLCopen-style software surfaces covering Part 1 single-axis motion, 68/68 Part 4 same-name facades, and 11/11 Part 5 homing and online-reference function blocks. Unsupported modes and formal declaration gaps remain explicit instead of silently degrading.
- A deterministic, motion-oriented IEC 61131-3 ST compiler and bytecode VM. The declared L0-L7 and L-all feature set contains 134 standard function blocks and 1,476 pins with no pending native-adapter entries.
pyplcopensimulations for single-axis motion, trajectory streams,PoseArmSim, cam-table generation, and SI-unit cycle configuration.- A reference planning-to-committed-trajectory-to-RT executor, replay fixtures, cycle traces, RT-safety checks, diagnostics, and production integration guides.
Compatibility and migration
v0.20.0remains below 1.0. Public changes follow SemVer and are documented, but ABI stability is not promised yet.plcopen::plcopennow resolves to the new header-onlycore/target. Enable the frozen implementation explicitly withPLCOPEN_BUILD_LEGACY=ONonly when maintaining a migration or replay baseline.- Public fields in the new C++ facades use
snake_case, function-block outputs are grouped underoutputs, and applications advance axis/group objects with explicit cyclic calls. - The repository contains a local Conan recipe and a draft vcpkg manifest, but this release does not claim publication in ConanCenter or the vcpkg registry.
See the migration guide for API and runtime-model changes.
Release artifacts
| Channel | Artifact |
|---|---|
| GitHub | Automatically generated source .zip and .tar.gz containing the C++ header-only library, CMake install/export files, local Conan recipe, examples, and documentation |
| PyPI | CPython 3.10-3.13 wheels for Windows and manylinux x86_64 |
| PyPI | CPython 3.10-3.13 macOS wheels for x86_64 and arm64 |
| PyPI | pyplcopen-0.20.0 source distribution |
There are no standalone C++ platform installers or shared-library binaries in this release. The C++ delivery is source/header-only by design.
Verification snapshot
The release candidate was frozen and verified on commit
5a5cf81.
The later release-documentation changes do not modify the runtime, package
version, or build contract.
| Gate | Result |
|---|---|
| Windows CI | Passed |
| Linux GCC, Clang, and ARM64 CI | Passed |
| Windows, Linux, macOS wheels and sdist | Passed; publish step intentionally skipped on the non-tag candidate run |
| Core Nightly | 7/7 jobs passed, including fuzz and sanitizer/TSAN lanes |
| Coverage | Full-core line 95.5%; production motion-stack branch 85.0%; ST branch 85.1% |
| Mutation score | 20/20 registered mutations killed |
| Documentation | Strict build and deployment passed |
| Local release gate | 91/91 CTest entries, 27-file RT scan, and 18 replay fixtures / 2,409 samples passed |
Known limits
- This is an embeddable kernel, not a complete PLC IDE or a complete IEC 61131-3 platform.
- No PLCopen approval, Safety certification, SIL/PL claim, or official logo use is included.
- EtherCAT product integration, real-machine 72-hour evidence, and long-term hardware validation remain open work.
- The Feetech adapter is a protocol layer and simulator without production IO; dynamic units and some status bits still require official-source and real-device validation.
- vcpkg/ConanCenter registry publication and stable ABI/LTS commitments remain out of scope for this checkpoint.