4. OPC UA核心概念

在CODESYS中集成OPC UA,如果只停留在“勾选服务器、填个端口”的层面,往往会在客户端连不上、变量读不到、权限被拒绝时无从下手。真正决定OPC UA能否稳定工作的,是它背后那套自描述的信息模型与地址空间机制。理解这些核心概念,才能把PLC变量正确地“暴露”给上位系统。

一、信息模型:把设备抽象成可理解的对象

OPC UA不是简单的“变量搬运协议”,它首先是一套信息模型。传统通信只关心“地址+值”,而OPC UA要求每个数据都带有语义:它是什么、属于谁、类型是什么、能否被写入。CODESYS把PLC中的变量、结构体、功能块映射为OPC UA的信息模型对象,使客户端无需事先约定就能发现数据结构。

信息模型由三层构成:对象(Object)表示设备或功能实体,如“电机1”;变量(Variable)表示可读写的数据点,如“转速”;方法(Method)表示可被远程调用的操作,如“复位”。这三者通过引用相互连接,形成一棵可浏览的树。

二、地址空间与节点:一切皆节点

OPC UA把所有可访问内容统一组织进地址空间(Address Space)。地址空间是一张有向图,图中的每个顶点称为节点(Node)。节点用NodeId唯一标识,格式通常为ns=2;s=Motor1.Speed,其中ns是命名空间索引,s表示字符串标识符。

节点不是孤立的,它们通过引用(Reference)连接。最常见的引用类型是Organizes(组织关系)和HasComponent(组成关系)。客户端浏览地址空间时,实际就是沿着引用从一个节点走到另一个节点。CODESYS默认把符号配置中的变量挂在Objects节点下,形成层级路径。

关键点:NodeId是寻址的“身份证”,引用是节点之间的“道路”。客户端读变量,本质是先按NodeId定位节点,再读取其Value属性。

三、数据类型:跨平台一致性的基础

OPC UA定义了一套内建数据类型,如Boolean、Int16、UInt32、Float、Double、String、DateTime。CODESYS在编译符号配置时,会把IEC 61131-3类型映射到对应的OPC UA类型。若类型映射不匹配,客户端可能显示“BadTypeMismatch”。

对于结构体(STRUCT),OPC UA会将其展开为带子节点的复杂变量;数组则映射为带索引的变量节点。自定义类型需要确保在符号配置中启用“支持OPC UA”选项,否则不会出现在地址空间中。

四、服务集与安全模型

OPC UA客户端与服务器之间的交互,全部通过服务集(Service Set)完成。常用服务包括:Browse浏览地址空间、Read读数据、Write写数据、Subscribe订阅变化、Call调用方法。CODESYS OPC UA服务器实现了这些标准服务,因此任何合规客户端都能接入。

安全模型则决定“谁能连、能连什么”。它包含三层:传输安全(None/Sign/Sign&Encrypt)、用户认证(匿名/用户名密码/证书)、访问权限(节点级读写控制)。在CODESYS中,安全策略在“OPC UA服务器”配置页设置,证书需在“安全屏幕”中生成或导入。

OPC UA 地址空间与安全访问链路 OPC UA 客户端 Browse / Read Write / Subscribe Call 安全模型 传输:Sign / Encrypt 认证:用户名 / 证书 权限:节点级读写 CODESYS OPC UA 服务器 服务集实现 命名空间管理 证书与用户配置 地址空间(Address Space) Root Objects Types Motor1.Speed Motor1.Start Motor1.Reset() HasComponent HasComponent

五、典型配置与排障清单

在CODESYS中启用OPC UA服务器后,需要在“符号配置”中勾选要发布的变量,并设置访问权限。以下是一个最小配置示例:

OPC UA 服务器配置
  端口: 4840
  安全策略: None, Basic256Sha256
  用户: admin / ******
  符号配置:
    Motor1.Speed   : Read
    Motor1.Start   : ReadWrite
    Motor1.Reset   : Call
现象 可能原因 排查方向
客户端浏览不到变量 符号未发布或命名空间未启用 检查符号配置中“支持OPC UA”勾选
读取返回 BadNodeIdUnknown NodeId拼写错误或命名空间索引不对 用客户端浏览确认实际NodeId
写入被拒绝 节点权限为只读或用户无写权限 检查变量访问权限与用户角色
连接被安全策略拒绝 客户端与服务器加密策略不匹配 统一为Basic256Sha256并交换证书
实践建议:先用匿名+None策略打通通信,确认地址空间和NodeId正确后,再逐步启用加密和用户认证。这样能把“连不上”和“权限不足”两类问题分开定位。
常见误区:把OPC UA当成Modbus式的寄存器映射,只记地址不关心信息模型。一旦结构体或数组发布,客户端若按扁平地址读取就会失败。正确做法是先Browse地址空间,再按NodeId和类型读取。

掌握信息模型、地址空间、节点引用、数据类型、服务集与安全模型这六个概念后,CODESYS OPC UA的配置就不再是“碰运气”。它们共同决定了数据如何被描述、如何被寻址、如何被安全访问,也是后续与MQTT网关、SCADA、MES对接的基础。