Skip to content

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

pip install pyplcopen==0.20.0

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 default plcopen::plcopen consumer target. The previous src/ 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.
  • pyplcopen simulations 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.0 remains below 1.0. Public changes follow SemVer and are documented, but ABI stability is not promised yet.
  • plcopen::plcopen now resolves to the new header-only core/ target. Enable the frozen implementation explicitly with PLCOPEN_BUILD_LEGACY=ON only when maintaining a migration or replay baseline.
  • Public fields in the new C++ facades use snake_case, function-block outputs are grouped under outputs, 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.

Full engineering record