集成 · PLC

把 OPC UA 连接到 Siemens S7-1500

产品Siemens S7-1500
类别PLC
OPC UA 角色Server

S7-1500 的 CPU 固件中内置了 OPC UA 服务器,在 TIA Portal 中启用,可通过 opc.tcp://<plc-ip>:4840 访问。问题在商务而非技术:服务器通常需要运行时许可或选件,该许可和最低固件级别都必须向 Siemens 确认。

开始之前

  • 包含 OPC UA 服务器的 CPU 固件级别,以及激活它的运行时许可或选件。二者都不能仅凭读过一次的数据手册来假定;都取决于确切的 CPU 订货号。
  • 版本与 CPU 固件匹配的 TIA Portal。在较旧 TIA 版本上开发的项目可能不会显示你要找的服务器设置。
  • 在服务器能对外服务之前,CPU 上必须已有许可证。请把许可证采购当作项目计划中的交付周期,而不是调试当天做的一个配置步骤。
  • 从客户端运行位置到 TCP 4840 的网络通路;如果 CPU 位于只允许出站连接的 Purdue 层边界之下,则需要反向连接的安排。
  • 一个校准良好的时钟。CPU 会校验证书的有效期,因此 PLC 与客户端之间的时钟偏差会表现为证书故障,而不是时间问题。

配置方法

  1. 在 CPU 属性中启用服务器在设备组态中打开 CPU 属性,找到 OPC UA 服务器设置。启用服务器并记下 TIA 报告的端点,通常是 opc.tcp://<plc-ip>:4840。有意识地设置应用名称:它会传播到 ApplicationUri 和 CPU 自身的应用实例证书中,之后再修改会使你已建立的每一个信任关系失效。
  2. 逐个标签决定暴露什么PLC 标签和数据块成员带有可访问性属性,控制它们是否对 HMI 和 OPC UA 可见、是否允许写入。清除了可见性属性的标签根本不会出现在地址空间中;可见但不可写的标签会出现,然后拒绝写入。把这些属性作为有意识的接口决策来设置,而不是保留默认值。
  3. 构建服务器接口,而不是暴露整个程序TIA 允许你定义服务器接口:一组经过筛选、由你命名、与内部符号名解耦的节点。请这样做。它提供了一份稳定的契约,使程序内部的重构不会破坏客户端,同时让地址空间保持足够小,嵌入式服务器可以快速浏览。
  4. 如果你有伴随规范,就把它映射到接口上用 SiOME 导入伴随规范的 NodeSet2 文件,把 PLC 标签映射到模型的变量上,再把结果导出回 TIA 项目作为服务器接口。客户端此后浏览到的是 MachineIdentificationType 和一个状态机,而不是数据块树,同一套客户端代码在下一台设备上照样能用。
  5. 先配置安全和证书,再配置数据选择 CPU 将提供的安全策略和消息安全模式,决定使用匿名还是用户名身份令牌,并通过项目的全局安全设置生成 CPU 的服务器证书。该证书的 Subject Alternative Name 中必须包含客户端实际会连接的每一个主机名和 IP 地址,以及作为 URI 条目的 ApplicationUri。
  6. 编译、下载,然后用独立客户端浏览下载硬件组态,然后先用 UaExpert 或 opcua-commander 连接 security None 端点以证明可达性,之后再连接签名并加密的端点。第一次安全连接尝试通常以 BadCertificateUntrusted 失败;把客户端证书从 CPU 的拒绝列表移到信任列表,并在客户端侧信任 CPU 的证书。
  7. 读取 NamespaceArray 并在运行时解析索引每次连接读取一次服务器的 NamespaceArray,建立命名空间 URI 到索引的映射,并在配置中保存命名空间 URI 加标识符。绝不要保存裸的 ns= 数字。正是这一点能避免下一次程序下载破坏你的客户端。
  8. 在规划订阅规模前先查看 CPU 自身的限制CPU 的技术数据会给出最大会话数、订阅数、监控项数以及支持的最小采样间隔和发布间隔。按这些数字规划客户端规模,并记住服务器与循环程序共用同一个 CPU。

地址空间是什么样子

除非你构建服务器接口,否则地址空间是一棵 Siemens 形状的树,而不是伴随规范模型:一个以 PLC 命名的节点,下面是全局数据块和背景数据块、输入、输出、存储器、计数器和定时器的文件夹。标识符是镜像 TIA 符号名的字符串,因此一个数据块成员表现为类似 ns=3;s="MyDB"."Speed" 的形式,数组元素在标识符中带下标。程序中声明的结构体以结构化数值出现,只有当客户端支持服务器所选的类型描述机制时才能解码。服务器接口会用你定义的名称和层次替换上述全部内容,而经 SiOME 映射的伴随模型则把它替换为标准命名空间 URI 下的标准类型。

陷阱

  • 许可证是整个集成过程中最常见的进度风险。因为没订选件而启动不了的服务器,在第一个下午看起来和防火墙问题一模一样。在任何人安排调试工时之前,请向 Siemens 确认当前的许可证和固件要求。
  • 命名空间索引在服务器启动时分配,可能在程序下载或固件变更后发生位移。硬编码了 ns= 数字的客户端随后会在依然完好存在的节点上以 BadNodeIdUnknown 失败。请在连接时从 NamespaceArray 解析索引。
  • 让 CPU 接受客户端证书是实践中最大的部署障碍,而且这是双向操作:客户端必须信任 CPU,CPU 也必须信任客户端。请在第一台设备之前就规划好信任列表流程或 PKI,而不是等到第十台。
  • 一个可见但未标记为可写的标签会接受写请求并返回 Bad 状态。调试期间请始终在写入后回读,并检查返回的 StatusCode,而不是以为没有抛出异常就没问题。
  • 嵌入式服务器在会话、订阅和监控项上的限制远低于基于 PC 的服务器。三个客户端各自打开自己的会话、各用自己的发布间隔,就可能耗尽一个单一良好设计的客户端根本不会让它吃力的 CPU。
  • PLC 内嵌服务器的时间戳行为往往很单薄:SourceTimestamp 可能并不比 ServerTimestamp 提供更多信息,CPU 时钟也可能是没有偏移量的本地时间。请决定存储哪个时间戳,验证 CPU 实际填充了什么,并在所有设备上保持 NTP 同步。
  • 证书有效期是按 CPU 时钟校验的。长时间断电后丢失时钟的 CPU 会以时间错误拒绝有效证书,直到时钟被校正为止。

从中获取 OEE 数据

可以从 S7-1500 取到可用率、计数和原因,但仅限于程序本身计算出来的内容。默认情况下没有任何标准化:状态取决于编程人员使用的布尔量或整数,计数取决于现有的计数器,原因取决于故障字。应要求在 PLC 中提供状态模型和计数器,而不是在客户端对运行位做边沿检测,因为客户端只能看到采样值,会漏掉采样间隔之间的短停机。如果能说服机器制造商发布一个映射到 Machinery 或 MachineTool 类型的服务器接口,可用率和计数就能在不同厂商之间通用,映射也不再是逐台机器的工作。计划生产时间、班次日历、标准节拍和订单上下文不在 CPU 中,必须来自 MES 或 ERP。

在依赖它之前请先核实:你的 CPU 是否需要 OPC UA 服务器许可证或选件、它叫什么、如何计量,服务器、客户端和 PubSub 功能的最低固件版本,以及每 CPU 在会话、订阅、监控项和最小采样间隔上的限制,全部由厂商决定,并且在各代固件之间发生过变化。在确定进度之前,请针对你确切的 CPU 订货号和固件逐项向 Siemens 确认,不要把论坛帖子或本页上的数字当作采购依据。

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

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