地址空间是什么
OPC UA 把服务器里所有可访问的东西组织成一张有向图,图中每个顶点叫节点,每条边叫引用。节点可以是对象、变量、方法、对象类型、变量类型、数据类型、引用类型或视图;变量节点上挂着实时值,对象节点用来分组,方法节点可以被调用。这张图就是信息模型,它自我描述:客户端连接后可以浏览、查询类型定义、读取属性,从而在不需要第三方地址表的情况下知道每个数据的含义。
基本信息
| 标准依据 | IEC 62541 系列,OPC UA 规范 Part 3 定义地址空间 |
|---|---|
| 节点标识 | 命名空间索引 + 标识符(数值、字符串、GUID 或不透明字节) |
| 节点类别 | 对象、变量、方法、对象类型、变量类型、数据类型、引用类型、视图 |
| 属性 | 浏览名、显示名、描述、值、数据类型、访问级别等 |
| 引用 | 分层引用(组织、组件、属性、子类型)与非分层引用(类型定义) |
| 命名空间 | 索引 0 为规范内置,厂商与配套规范各占独立命名空间 |
典型使用场景
- 客户端自动发现数据:先浏览目录结构,再按类型筛选变量,减少人工配点
- 机组数据建模:把一台设备的温度、转速、状态组织在同一对象下
- 跨厂商互操作:配套规范约定类型名与结构,不同品牌的上位机可通用解析
- 语义映射:把现场寄存器封装成有单位、有工程上下限的变量
- 按类型批量处理:按对象类型筛选某型号机组的全部实例
- 历史与报警接入:变量节点上再挂历史属性与报警事件定义
八类节点速查
| 节点类别 | 作用 | 举例 |
|---|---|---|
| 对象 | 分组容器或设备实例 | 某台泵、某条产线 |
| 变量 | 承载数值或状态,可订阅 | 温度、转速、运行状态 |
| 方法 | 可被调用的动作 | 启动、清计数 |
| 对象类型 | 定义对象的结构模板 | 泵类型,含温度与转速变量 |
| 变量类型 | 给变量增加语义分类 | 模拟量类型、离散量类型 |
| 数据类型 | 定义值的结构 | 自定义结构体、枚举 |
| 引用类型 | 定义节点间关系种类 | 组织、组件、属性、子类型 |
| 视图 | 地址空间的筛选子集 | 只看设备层,忽略诊断层 |
节点标识两种常见写法
节点标识两种常见写法
# 字符串标识:可读性好,便于人工定位
ns=2;s=Line1.Pump3.Temperature
# 数值标识:紧凑,厂商常用,但可读性差
ns=2;i=1034
# 命名空间索引可能随服务器不同而变,稳妥做法是用命名空间 URI 解析出索引
# 读值前先读 Value 属性;订阅前先确认 AccessLevel 是否允许读命名空间索引是运行时分配的,同一台设备重启或换版本后索引可能变化;持久化配置里存命名空间 URI 比存索引更可靠。
把信息模型做成一张扁平变量清单,等于用 OPC UA 的通道传输 Modbus 式的数据,既拿不到类型与语义的好处,后续维护也会迅速失控。