OpenPLC
文章平均质量分 88
OpenPLC Runtime v4
Li.kg
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenPLC Editor v4 OPC UA 与 S7Comm 服务器
这两种服务器协议均遵循编辑器中建立的端口与适配器模式,types.ts中的PLCServer类型作为规范的领域模型,通过protocol字段('opcua''s7comm')进行辨识。前端配置组件负责填充这些类型,随后通过特定协议的生成器将其序列化为运行时 JSON 文件。OPC UA 生成器额外依赖于编译后的debug.c文件来解析变量索引,而 S7Comm 生成器则直接执行 camelCase 到 snake_case 的转换。原创 2026-07-11 23:38:29 · 195 阅读 · 0 评论 -
OpenPLC Editor v4 Modbus 配置
OpenPLC 运行时通过五个非标准 Modbus 功能码暴露调试功能,这些功能码运行在标准 Modbus ADU/TDU 帧结构之上。TCP 和 RTU 两种传输方式共享完全相同的功能码,仅帧结构和错误检测层有所不同。功能码十六进制名称方向用途DEBUG_INFO0x41调试信息请求保留用于信息查询DEBUG_SET0x42调试设置请求→响应在目标上写入或强制修改变量值DEBUG_GET0x43调试获取请求→响应通过索引读取单个变量0x44调试获取列表请求→响应。原创 2026-07-11 23:22:13 · 193 阅读 · 0 评论 -
OpenPLC Editor v4 EtherCAT 架构
OpenPLC 编辑器的 EtherCAT 子系统在 IEC 61131-3 自动化领域与 EtherCAT 现场总线协议之间实现了一个。它横跨两个 Electron 进程——主进程负责 ESI 持久化与运行时 HTTP 通信,渲染进程负责项目状态管理、设备配置 UI 与运行时 JSON 生成。本页将从类型系统基础到完整的端到端生命周期:ESI 导入 → 设备发现 → 项目配置 → 固件构建输出,对该架构进行深入剖析。原创 2026-07-11 23:18:47 · 529 阅读 · 0 评论 -
OpenPLC Editor v4 编译流水线
编译流水线是一个严格的顺序执行过程——每个阶段消费其前一个阶段的输出,并为下一个阶段生成产物。这里没有并行的编译阶段,因为后续步骤依赖于已生成的中间文件(例如,defines.h需要program.st的内容;OPC-UA 配置需要debug.c唯一的并行处理发生在启动时的工具可用性检查中。流水线区分了三种编译器类型——和simulator——它们决定了最终的构建阶段。路径生成原生固件二进制文件,并可选择将其刷写到已连接的硬件上。原创 2026-07-11 23:12:44 · 350 阅读 · 0 评论 -
OpenPLC Editor v4 FBD 与 SFC 图形编辑器
层级组件职责特性FbdEditor流与项目同步,差异检测,Zod 验证,编排FBDBody分子FBDBodyReactFlow 画布,拖放处理,调试边着色,剪贴板,视口持久化,防抖存储同步原子单个节点渲染,内联编辑,句柄渲染,调试徽章原子计算句柄几何和默认数据的节点工厂函数FBDBody中的防抖本地状态镜像模式是关键的性能优化——没有它,每次拖动移动都会触发完整的存储写入、Zod 验证和项目 JSON 序列化。200ms 的防抖确保仅持久化稳定的状态,而dragging标志在主动拖动期间完全抑制同步。原创 2026-07-11 22:55:41 · 555 阅读 · 0 评论 -
OpenPLC Editor v4 梯形图编辑器
LD 编辑器遵循与项目 Atomic Design 组织方式相契合的三层组合Atom 层负责节点类型定义、构建器工厂、SVG 视觉效果及手柄系统。Molecule 层将 Atom 组合为梯级结构——即梯形图程序的基础水平逻辑单元。Organism 层则将完整的梯级实例与其头部、主体及创建交互编排在一起。持有所有梯级状态(节点、边、流元数据),是画布的唯一数据源。React Flow 的默认Handle组件被封装,后者通过全局和相对位置坐标扩展了标准的。原创 2026-07-11 22:51:59 · 319 阅读 · 0 评论 -
OpenPLC Editor v4 Monaco 代码编辑器集成
Monaco 集成被组织为编辑器域下的一个独立功能模块。每个关注点——语言定义、主题、补全、拖放、AI 和 LSP——都位于monaco/目录中,顶层index.tsx通过连接到 Zustand 存储的 React 副作用和回调将它们全部协调起来。该组件的属性被刻意精简——只有pathname和language——因为所有丰富的上下文(POU 数据、变量、调试状态、设备信息)都是通过 Zustand 存储和平台提供程序钩子流入的。这种设计保持了组件公共接口的稳定,同时其内部数据订阅可以独立演进。原创 2026-07-11 22:31:52 · 340 阅读 · 0 评论 -
OpenPLC Editor v4 技术栈
OpenPLC 编辑器是一款跨平台的桌面 IDE,基于运行时构建,结合了 React 驱动的渲染进程与 Node.js 主进程,提供专业的 PLC 编程能力。该技术栈中的每一项技术选择都有其明确目的:从 IEC 61131-3 语言编辑器到实时工业协议通信,整个技术栈针对工业自动化工具的独特需求进行了深度优化。原创 2026-07-10 21:27:02 · 384 阅读 · 0 评论 -
OpenPLC在PREEMPT_RT实时Linux上部署
绑定到特定 CPU 核心 (例如 CPU 2)# 设置实时调度策略和优先级 (99 为最高)target 不需要 enable。# 允许锁定内存,防止被换出。找到文件路径后,使用。原创 2026-07-07 16:56:11 · 166 阅读 · 0 评论 -
OpenPLC Editor v4 端口接口契约
OpenPLC Editor 采用(六边形)架构,使其共享的 React UI 与平台特定机制完全解耦。端口接口是——纯 TypeScriptinterface定义,声明了 UI能做什么,而不规定如何做。每个端口代表一个内聚的领域功能(编译、调试、项目管理等),且每个方法要么返回一个带类型的结果对象,要么返回一个用于事件订阅的清理函数。这种设计使得相同的组件树能够在 Electron(通过 IPC 桥接)或浏览器(通过 HTTP/WebRTC)中保持不变地运行,适配器在应用启动时接入具体的实现。原创 2026-06-28 21:45:17 · 352 阅读 · 0 评论 -
OpenPLC Editor v4 之架构概述
OpenPLC Editor 是一款桌面 IDE,支持使用 IEC 61131-3 语言(结构化文本、梯形图、功能块图、指令表)以及 Python 和 C++ 扩展进行 PLC 编程。该架构遵循(六边形)模式,强制执行严格的依赖倒置:前端从不直接导入后端或 Electron API——所有特定于平台的行为都通过带类型的端口接口传递,使得相同的 UI 代码库可在 Electron 编辑器和 Web 应用程序中复用。本页提供了系统的结构蓝图:其分层、层间关系以及支配其交互的规则。原创 2026-06-28 21:40:59 · 432 阅读 · 0 评论 -
OpenPLC Runtime v4 可靠性与安全性
三层恢复机制构成了一个同心保护模型:看门狗线程监控最内层的执行循环,信号处理程序捕获致命的程序故障,而 Web 服务器进程监视器处理灾难性的进程级故障。每一层都会将 PLC 转换为ERROR状态,用户可以通过 REST API 观察到该状态并采取相应操作。安全模型遵循清晰的关注点分离原则。中的CertGen类负责处理所有证书操作。JWT 生命周期管理完全通过 Flask-JWT-Extended 驻留在中。配置密钥由引导生成,供两个层级共同使用。核心协调点是中的。原创 2026-06-24 14:54:32 · 336 阅读 · 0 评论 -
OpenPLC Runtime v4 编译与构建
OpenPLC Runtime v4 中,PLC 程序从上传、编译到运行时加载的完整生命周期。该处理流程将基于 Web 的管理界面与 C 语言运行时核心连接起来,将打包为 ZIP 压缩包的 IEC 61131-3 程序转换为扫描周期执行的动态加载共享库。原创 2026-06-24 14:16:25 · 339 阅读 · 0 评论 -
OpenPLC Runtime v4 插件驱动系统
方面C 运行时 (Python Web 服务器 (解析方法带逗号分隔符的strtok格式错误行的处理静默跳过(少于 4 个标记)从返回None注释保留不适用(只读)保留原始行位置强制最大插件数是 (解析时不强制执行名称/路径长度限制64 / 256 字节(固定缓冲区)无显式限制文件缺失回退从复制从复制路径验证无检查存在性该桥接跨越了两个语言边界和三个独立层级:嵌入在插件驱动程序中的 C 侧编排层、通过PyCapsule。原创 2026-06-24 12:00:56 · 595 阅读 · 0 评论 -
OpenPLC Runtime v4 进程间通信
OpenPLC Runtime 采用双通道 Unix 域套接字设计。命令套接字承载从 Python Web 服务器发往 C 运行时的控制消息,而日志套接字则将结构化日志数据从 C 运行时回流至 Python 层。两个通道均使用AF_UNIX(面向连接、可靠、字节流)以及换行符分隔的文本帧格式。命令套接字路径在 C 头文件中硬编码为,而日志套接字路径默认为。如果这些目录不存在,会在启动时动态创建它们。原创 2026-06-24 11:44:02 · 391 阅读 · 0 评论 -
OpenPLC Runtime v4 PLC 运行时核心
下图展示了扫描周期如何与更广泛的系统相集成——从程序加载、稳态执行到关闭:核心架构不变式在于,PLC 程序绝不在加锁窗口之外运行。所有插件对映像表的读取,要么在同一个互斥锁的保护下进行(原生插件的周期钩子),要么通过日志缓冲区进行(来自独立线程的异步插件写入)。这确保了数据一致性,同时允许插件与扫描周期并发运行。在排查计时问题时,应区分超限(scan_time > ticktime)和延迟(周期启动延迟)。超限表明当前的逻辑和插件负载没有足够的 CPU 余量。原创 2026-06-24 11:23:53 · 517 阅读 · 0 评论 -
OpenPLC Editor v4 入门
OpenPLC Editor 是一款,用于使用 IEC 61131-3 标准语言(结构化文本、梯形图、功能块图和指令表)以及 Python 和 C++ 扩展对 PLC(可编程逻辑控制器)进行编程。它基于 Electron 和 React 构建,提供了从编写到部署的完整工作流:创建项目、使用多种 PLC 语言编写程序、编译为原生固件、通过 Modbus 或 WebSocket 调试实时变量,以及上传至物理硬件或内置 AVR 模拟器。原创 2026-06-19 08:39:20 · 699 阅读 · 0 评论 -
OpenPLC Runtime v4 REST API 服务器
REST API 被构造为一个restapi_bp),注册在专用的 Flask 应用()上,该应用与用于 Flask-Login 会话管理的旧版app对象是分离的。该 Blueprint 使用回调分发模式:两个通用的全捕获路由(用于 GET 和 POST 的/<command>)委托给从app.py注册的处理程序字典,从而将路由定义与运行时交互逻辑解耦。服务器绑定到,并使用在启动时通过中的CertGen类生成的自签名 TLS 证书。如果缺少或,服务器将自动为localhost和127.0.0.1生成它们。原创 2026-06-18 20:05:45 · 358 阅读 · 0 评论 -
OpenPLC Runtime v4 双进程架构
系统从单一入口点启动,该脚本会准备虚拟环境,然后启动 Python Web 服务器。此后,Python 进程承担起进程监督者的角色:它将编译好的 C 二进制文件作为子进程衍生出来,在轮询循环中监控其健康状态,并在发生故障时协调优雅重启。相应地,C 运行时绑定一个 Unix 域套接字并进入其扫描周期,仅响应通过该套接字接收到的命令。原创 2026-06-18 19:03:58 · 437 阅读 · 0 评论 -
OpenPLC Runtime v4 快速开始
OpenPLC Runtime 包含一个用于硬件 I/O 的插件驱动系统。插件在(一个格式为类型值语言示例Python0Python 3Modbus 从站、Modbus 主站、OPC UA原生1C/C++S7 通信所有插件默认处于禁用状态。要启用插件,请编辑并将enabled字段从0更改为1,然后重启运行时。当存在文件时,启动脚本会自动为每个插件创建并维护独立的 Python 虚拟环境。CLAUDE.md。原创 2026-06-18 17:58:10 · 693 阅读 · 0 评论 -
OpenPLC Runtime v4 概述
OpenPLC Runtime v4 是一个无界面的工业可编程逻辑控制器 (PLC) 运行时,能够在标准计算硬件上执行 IEC 61131-3 程序。不同于需要专有硬件的传统 PLC,该运行时通过以具有确定性的实时扫描周期运行编译后的控制逻辑,将任何 Linux 机器、Docker 容器,甚至 Windows(通过 MSYS2)转变为功能完备的 PLC。它被设计为由。原创 2026-06-18 17:44:07 · 540 阅读 · 0 评论
分享