集成 · PLC

把 OPC UA 接入 CODESYS

产品CODESYS
类别PLC
OPC UA 角色Server

CODESYS 在其运行时中提供 OPC UA 服务器,而由于 CODESYS 是许多中小型 PLC 品牌的内核,你常常会在机柜上没有标注的情况下遇到它。符号通过 Symbol Configuration 对象发布,服务器通常需要运行时许可证。

开始之前

  • 一个包含 OPC UA 服务器组件的运行时,以及激活它的许可。许可按运行时计,通常由设备厂商而非 CODESYS 直接负责,这正是它容易被忽略的原因。
  • CODESYS Development System,版本需与设备上的运行时兼容。
  • 应用中的一个 Symbol Configuration 对象。没有它就没有可发布的内容,而添加它是一次代码变更,需要下载。
  • 用于处理证书的运行时文件系统或配置访问权限,以及了解该设备厂商把 PKI 目录放在了哪里。

配置方法

  1. 弄清楚你实际运行的是什么确认设备厂商、CODESYS 运行时版本,以及 OPC UA 服务器组件是否已安装并授权。在 OEM 贴牌控制器上这需要打一个电话,而先打这个电话能省下一天时间。厂商对该选件的命名不会与 CODESYS 文档一致。
  2. 添加 Symbol Configuration 并选择符号把 Symbol Configuration 对象添加到应用程序中,编译,然后勾选你要发布的变量、程序实例或全局变量列表,并为每一项设置只读或读写权限。选中整个 GVL 是通常的务实做法;全选则会让你在小型控制器上得到一个无法浏览的地址空间。
  3. 确认符号配置已针对 OPC UA 发布做好设置Symbol Configuration 中有控制符号如何暴露、以及 OPC UA 服务器是否发布这些符号的设置。请检查这些设置,而不要以为勾选一个变量就够了,因为同一个对象也服务于其他客户端。
  4. 编译并下载,必要时重启运行时符号变更随应用下载生效;有些运行时需要重启后才会重建其地址空间。请通过浏览来验证,而不是通过查看项目来验证。
  5. 浏览并记录命名空间 URI连接一个客户端,读取 NamespaceArray,记下该应用命名空间的 URI。在配置中保存 URI 加标识符;索引会变动。
  6. 完成信任交换在安全端点上连接一次、任其失败,然后把客户端证书移入运行时的信任库,并在客户端信任服务器证书。如果设备厂商通过 Web 界面或设备工具而非文件系统提供证书管理,请走那条路径。
  7. 检查运行时的限值并据此设置间隔小型 CODESYS 目标设备往往是你会遇到的、在会话、订阅和 MonitoredItem 数量上最紧张的服务器。创建你打算在生产中运行的那个订阅,回读服务器修正后的采样和发布间隔,并按这些数值来设计。

地址空间是什么样子

发布出来的地址空间遵循应用程序结构:先是应用程序的命名空间,然后是程序节点和全局变量列表节点,再是你选中的符号,结构体和数组成员嵌套在下面。标识符是由符号路径派生的字符串,因此读起来和代码一样,并且会在代码重命名时改变。除非设备厂商在其上添加了信息模型,否则不存在伴随规范内容:有些厂商会加,多数不会。由于同一份 Symbol Configuration 也服务于 CODESYS 的其他通信路径,OPC UA 视图并不总是运行时所暴露内容的全貌,浏览树是客户端可见内容的唯一可靠依据。

陷阱

  • 授权是按运行时计的,由设备厂商控制。一台在实验台上浏览正常、到了现场却因从未应用授权而拒绝服务的控制器,是常见且完全可以避免的工期损失。请向设备厂商确认授权情况,而不是依据通用的 CODESYS 资料。
  • 由于 CODESYS 是 OEM 引擎,文档漂移很严重:厂商手册、CODESYS 手册和运行时的实际行为,在选项名称和证书存放位置上可能互相矛盾。以你面前的设备为准。
  • 重命名变量或重构应用会改变字符串标识符,使客户端以 BadNodeIdUnknown 失败。符号的选择就是一套公开接口;要对它做版本管理。
  • 应用程序下载后命名空间索引会偏移。请在每次连接时从 NamespaceArray 解析它们。
  • 证书信任是最大的部署障碍,而在 OEM 硬件上,放置受信任证书的机制正是没人写文档的那一部分。在推广到五十台之前,先在一台上弄清它是怎么运作的。
  • 以只读方式发布的符号会接受写入并返回 Bad 状态。请回读并检查 StatusCode。
  • 小型目标设备上的会话和监控项上限很低。一个历史库、一台 HMI 和一名开着浏览器的工程师同时在线就可能耗尽它们,而故障表现为连接问题,而不是容量提示。

从中获取 OEE 数据

能拿到什么完全取决于应用程序计算了什么。在基于 CODESYS 的设备上,这通常意味着要求设备制造商发布四项内容:一个带有文档化枚举的状态或模式变量、一个合格品计数器、一个不合格品计数器,以及一个故障或原因代码。计数器必须在应用程序中维护;不要通过订阅对运行位做边沿检测,运行时可能已经放宽了该订阅的采样间隔。由于这类目标设备的订阅资源受限,应使用单一会话、单一发布间隔,对模拟量设置死区,并加入心跳,以便把连接静默与设备停机区分开。可用率和计数是可以实现的;如果故障表有文档,原因也可以实现。计划生产时间、班次日历、订单上下文和标准节拍不在控制器中。

在依赖它之前请先核实:OPC UA 服务器组件是否存在、是否需要运行时许可以及设备厂商如何称呼它、你的控制器支持哪些 CODESYS 运行时版本、其证书存储位于何处,以及它的会话、订阅和 MonitoredItem 限值是多少,这些都必须针对你确切的控制器向设备厂商确认,而不是依据通用的 CODESYS 资料,也不是依据本页。在 OEM 贴牌硬件上,厂商的答复高于一切,包括 CODESYS 文档。

最后核对日期 2026 年 9 月 7 日,对照 OPC UA 1.05.07。OPC UA Connect 是教育资源,与 OPC Foundation 无隶属关系。

免费下载
OPC UA Machine Data → OEE Mapping Kit
该订阅哪些节点、它们如何变成可用率、性能和质量,以及哪一个伴随规范已经给出了答案:从此不必再自己发明标签。
获取免费映射工具包 →
免费,无需课程,无需登录