plcopen v0.21.0 — Motion, Twin & Tooling Closure
v0.21.0 是围绕重写后的 core/ 运行时以及运动、孪生、工具与消费路径软件收口
批次发布的正式 pre-1.0 版本。它仍然是 pre-1.0:不声称稳定 ABI、不声称
PLCopen 或 Safety 认证、不声称真实机械上的生产级证据,也不声称长期
LTS 承诺。
本次发布仍只提供 C++ 的 source/header-only 交付。C++ 发布形式仍是 GitHub
源码归档 + CMake install/export;ConanCenter 与 vcpkg 中央仓库资产仍固定在
已发布的 v0.20.0 线上,本次发布不声称 v0.21.0 已进入这些中央仓库。
Python 包 pyplcopen==0.21.0 已在 PyPI 公开发布,包含 20 个 wheel、1 个
sdist,且 Requires-Python >=3.10。
安装
使用 FetchContent 集成 C++
include(FetchContent)
FetchContent_Declare(
plcopen
GIT_REPOSITORY https://github.com/lusipad/plcopen.git
GIT_TAG v0.21.0)
FetchContent_MakeAvailable(plcopen)
target_link_libraries(my_controller PRIVATE plcopen::plcopen)
导出的 target 为 header-only,要求 C++17 以及 CMake 3.21 或更高版本。
通过 find_package(plcopen CONFIG REQUIRED) 消费已安装包仍然是支持的下游路径。
Python
已发布包页面:https://pypi.org/project/pyplcopen/0.21.0/。
用户将获得什么
- H1 新增 48 关节原子
{q_des,dq_des,tau_ff,kp,kd}流合同,包含direct/upsample、 完整预检、keep-latest、本地 watchdog、组级断流和命令快照。tau_ff仍然只 是数据通路,不代表 T18 或真实机械完成。 - H2 新增固定容量
kin::SerialChain,支持 1-8 个转动关节的 standard/modified DH 正解和确定性的数值逆解兜底。 - H3 新增
dyn::FixedBaseChain固定基座逆动力学路径,只返回纯tau_ff数值。 浮动基座、接触、全身耦合和安全声明仍不在范围内。 - T2a 新增现有孪生路径的可选 MuJoCo/Rerun 闭环;T2b 将它扩展到仓库自有的七关节 fixture,而不改变默认依赖面。
- D1 新增 ST Language Server 和薄 VS Code client,用于多 POU 文档;D3 新增在线 commissioning Scope,支持阈值抓取与 PLCT/CSV/HTML 导出。
- Z1-Z5 把五分钟 notebook、轴/组 SI 配置、Python/C++/ST 同源旅程、Conan/vcpkg 消费者资产、结构化诊断和 trace 可视化打包成一组面向使用者的收口成果。
- X5 提供固定 ABI 的 Servo IPC 合同,包含 setpoint/feedback SPSC、状态缓冲和显式 生命周期检查。
- Y4b、Y7b1、Y7b2a 继续收敛线性、圆弧和平面 Cartesian LINE 源处理的接管与桥接 缺口,同时不扩大 kinematics ABI。
兼容性与迁移
v0.21.0仍低于 1.0。公开变更遵循 SemVer 并有文档记录,但尚不承诺 ABI 稳定性。plcopen::plcopen现在解析到重写后的core/target。只有在维护迁移或回放基线时, 才显式启用冻结实现PLCOPEN_BUILD_LEGACY=ON。- 新 C++ facade 中的公共字段继续使用
snake_case,功能块输出继续收拢在outputs下,应用通过显式周期调用推进轴/组对象。 - 仓库保留本地 Conan recipe 和草案版 vcpkg manifest,但本次发布不声称已发布到 ConanCenter 或 vcpkg registry。
API 与运行时模型变化见 migration guide。
发布制品
| 渠道 | 制品 |
|---|---|
| GitHub | 已发布的 C++ header-only 库源码 .zip / .tar.gz、CMake install/export 文件、本地 Conan recipe、示例和文档:https://github.com/lusipad/plcopen/releases/tag/v0.21.0 |
| PyPI | 已发布的 pyplcopen==0.21.0 分发,含 20 个 wheel + 1 个 sdist,Requires-Python >=3.10:https://pypi.org/project/pyplcopen/0.21.0/ |
本次发布不提供独立的 C++ 平台安装器或共享库二进制。C++ 交付按设计仍是 source/header-only。
验证快照
最终发布与验证已经绑定到公开制品和全部完成的门禁:
| 门禁 | 状态 |
|---|---|
| 发布标题 / URL | 已发布为 v0.21.0 — Motion, Twin & Tooling Closure:https://github.com/lusipad/plcopen/releases/tag/v0.21.0 |
| 最终 annotated tag | tag object 9985312fd8c862ae435bec28adcd5f2943966288 -> target commit 08d62b1b16e841a88509284b4c8c75d778592efc |
| 候选验证提交 | 候选收口提交 b4f2b87ea7a2cf5bdd0a9ee262dc5ddbcf1ca807 |
最终 main 门禁 |
tag 目标上的 Windows 30480823667、Linux 30480823343、Language Tools 30480823421、Twin 30480823345 与 Documentation 30480824589 均已通过 |
| 本地构建、安装与运行时验证 | 已通过:MSVC Debug 102/102;Release/install/find_package/ST/FetchContent/Python 3/3;RT scan 32 个文件;replay 18 个 fixture / 2409 个样本;docs strict 27 对双语页面;matrices 49/43/11 |
| Windows CI | 已通过:run 30479093819 |
| Linux CI | 已通过:run 30479093300 |
| Language Tools | 已通过:run 30479093381 |
| Twin integration | 已通过:run 30479093204 |
| Documentation | 已通过:run 30479093304,且本地 strict 构建覆盖 27 对双语页面 |
| Wheels 候选流水线 | 已通过:run 30479097551(候选通道故意跳过 publish) |
| Core Nightly | 已通过:run 30479101207 |
| Coverage Gate | 已通过:run 30479104454;full-core 行覆盖率 95.3%;motion 分支覆盖率 10319/12138 = 85.014%;ST 分支覆盖率 14811/17423 = 85.008% |
| Mutation Score Gate | 已通过:run 30479107617;20/20 = 100% |
| 标签触发的 wheel / PyPI 发布 | 已通过:run 30496916708(5/5 全绿) |
| GitHub Release | 已从核验过的 annotated tag 发布:https://github.com/lusipad/plcopen/releases/tag/v0.21.0 |
| PyPI 发布 | 已公开且未撤回:https://pypi.org/project/pyplcopen/0.21.0/ |
| 公开冷用户旅程 | 已通过:run 30497974380;公开 wheel Notebook、C++ installed package、ST 与文档入口全部通过 |
已知限制
- 这是一个可嵌入内核,不是完整的 PLC IDE,也不是完整的 IEC 61131-3 平台。
- 不包含 PLCopen 批准、安全认证、SIL/PL 声明或官方 logo 使用权。
- 不声称稳定 ABI、真实机械 72 小时证据或长期硬件验证。
- H1 q/dq 流已经可用,但
tau_ff/kp/kd消费与 H3 输出集成仍受 T18 门控; 树里已有这些数据通路,不等于允许消费它们。 - Cartesian Y7b2b 仍然是 NO-GO;Cartesian ARC/chain/window 与 dynamic PCS/tracking 仍是独立合同。
- EtherCAT 产品集成与真实总线握手仍属于独立 F 轨与硬件工作,不属于这份 source/header-only 发布。
- ConanCenter 和 vcpkg 中央仓库发布仍固定在已发布的
v0.20.0线上;v0.21.0还不声称已有中央仓库资产。