集成 · PLC

把 OPC UA 接入 Beckhoff TwinCAT

产品Beckhoff TwinCAT
类别PLC
OPC UA 角色客户端与服务器

TwinCAT 通过 TF6100 功能提供 OPC UA:一个服务器、一个客户端和一个网关,在目标设备上配置,而不是在 PLC 程序中配置。符号通过代码中的属性 pragma 发布,这使得对外发布的接口成为编译期决策。TF6100 是需要许可的功能,请向 Beckhoff 确认许可事宜。

开始之前

  • 在目标设备上安装并为其授权的 TF6100 OPC UA 功能。Beckhoff 目标设备上的授权是一道实实在在的门槛;调试前先弄清需要哪种授权以及如何应用。
  • 一个你可以编译并激活的 TwinCAT 项目,因为符号发布由源码中的属性控制,并在激活时生效。
  • 对目标设备 OPC UA 服务器配置的访问权限,无论是通过 Configurator 工具还是服务器的配置文件,外加对其 PKI 目录的文件系统访问权限以便处理证书。
  • 一个关于暴露哪个运行时端口的决定。一台 TwinCAT 目标设备通常承载不止一个 PLC 运行时,每一个都是服务器可以发布的独立 ADS 端点。

配置方法

  1. 在目标设备上安装并授权 TF6100该功能必须在提供服务的那台设备上存在并获得授权,在 Beckhoff IPC 或嵌入式控制器上指的是控制器本身,而不是工程师的笔记本。在排查其他任何问题之前,先确认授权状态。
  2. 标记需要发布的符号发布是通过声明中的属性 pragma 显式开启的,例如在变量、结构体或整个全局变量列表上方写 {attribute 'OPC.UA.DA' := '1'},并由配套的访问属性控制该符号可读、可写还是二者皆可。把 pragma 应用于 GVL 或结构体会发布其成员,这正是让接口保持精简、便于审查的方式。
  3. 重新编译并激活配置pragma 会被编译进符号信息,因此地址空间变化之前必须重新编译并激活。工程师改完 pragma 后纳闷为何浏览树没有变化,几乎总是漏掉了这一步。
  4. 把服务器指向运行时并检查命名空间配置服务器发布哪个 ADS 设备和运行时端口,然后浏览生成的树。读取 NamespaceArray 并记录该运行时命名空间的 URI;你的客户端配置中应保存这个 URI,而不是索引。
  5. 在目标设备上完成证书交换服务器保有一个 PKI 目录,包含常见的 trusted、issuer、rejected 和 CRL 文件夹。先用你的客户端连接一次,让它失败,然后在目标设备上把客户端证书从 rejected 文件夹移到 trusted 文件夹;如果服务器缓存信任列表,则重启服务器。同时在客户端侧信任服务器证书。
  6. 如果设备有信息模型就导入它在已安装的 TF6100 版本支持节点集导入的情况下,加载伴随规范的 NodeSet2 并把发布的符号绑定到模型的变量上,这样客户端看到的是标准类型而不是 ADS 符号树。在围绕它设计之前,请先确认你的版本所支持的导入机制。
  7. 按 ADS 的实际能力调整订阅服务器通过 ADS 对运行时采样,因此你的 OPC UA 采样间隔受限于该层和任务周期所能提供的能力。把发布间隔设为消费方需要的节奏,对模拟量应用死区,并读回服务器返回的修订后间隔。

地址空间是什么样子

默认地址空间映射的是已发布运行时的 ADS 符号树:先按设备和运行时端口构成层级,然后是全局变量列表和程序实例,再是你标记的变量,结构体成员按声明方式嵌套。标识符是由符号路径构成的字符串,因此一个变量呈现出来就是它在代码中的完全限定名,这让映射清晰易读,但也把客户端与代码命名耦合在一起。较新的版本可能还会呈现一个由 Device Information 模型派生的设备模型式文件夹。在已导入并绑定 nodeset 的情况下,标准伴随规范类型会与符号树并存或取而代之,对于任何期望复用的集成,都值得坚持要求这种形式。

陷阱

  • TF6100 是需要许可的,而许可位于目标设备上。这是采购和工期风险而不是技术风险,与 PLC 厂商的服务器选件属于同一类陷阱:在承诺日期之前先向 Beckhoff 确认许可。
  • 重命名变量、在 GVL 之间移动变量或修改结构体都会改变字符串标识符,客户端随即以 BadNodeIdUnknown 失败,尽管设备本身毫无变化。请把 pragma 标记的符号集当作有变更流程的公开 API 来对待。
  • 命名空间索引在服务器启动时分配,并可能在已发布的运行时集合或服务器配置发生变化时改变。请在连接时从 NamespaceArray 解析它们。
  • 和别处一样,证书信任在这里也是最大的实际障碍,而且还多了一层麻烦:信任存储是控制器上的一个目录。调试投运时需要有人拥有该控制器的文件系统访问权限,而这个人往往不是负责 OPC UA 任务的人。
  • 写访问属性与是否发布是两回事。以只读方式发布的符号是可见的,会接受写请求并返回 Bad 状态,因此务必检查返回的 StatusCode。
  • 服务器通过 ADS 读取,因此每个任务周期更新一次的符号,无论你请求什么间隔,都不可能比该周期采样得更快。请求过快的间隔换来的是 CPU 负载,而不是分辨率。
  • 整体发布的结构体可能以结构化数值的形式到达,客户端必须解码。在决定使用结构体而非扁平变量之前,请确认你的客户端能处理该服务器的类型描述机制。

从中获取 OEE 数据

TwinCAT 是较适合采集 OEE 数据的 PLC 平台之一,因为 pragma 机制让设备制造商可以发布一个小而明确的接口:一个状态变量、一个合格品计数器和一个不合格品计数器、一个故障或原因代码、一个周期时间戳。要坚持要这样的接口,而不是一份符号的批量导出。计数必须在 PLC 中以计数器方式维护;以 OPC UA 的采样速率对布尔量做边沿检测会漏掉短周期,因为采样受任务周期和发布间隔的限制。如果制造商已导入 machinery nodeset 并把符号绑定到标准状态机和计数器上,可用率和计数映射就具备可移植性,客户端可以在其他厂商的设备上复用。计划生产时间、班次日历和标准节拍不在控制器中。

在依赖它之前请先核实:TF6100 的许可模式、它涵盖哪些组件、支持的平台和 TwinCAT 版本,以及你的版本是否支持信息模型导入、PubSub 或客户端与网关组件,全都由厂商决定,并且在不同版本间发生过变化。确切的 pragma 名称和访问属性编码,应当以你所安装版本的官方文档为准,而不是取自任何第三方页面,包括本页。在围绕它们构建接口之前,请先向 Beckhoff 确认许可、平台支持和 pragma 语法。

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

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