4. 设备信息模型标准与配套规范

OPC UA 只规定了信息模型的“语法”和“通信骨架”,真正让不同厂商设备能够被统一理解的是各类 companion specification(配套规范)。它们由不同行业组织维护,在 OPC UA 基础信息模型之上定义标准化的类型、对象、变量和方法。工程中最常遇到的是 DI、ADI、PLCopen、Machine Tools 和 Robotics 五类。理解它们各自解决什么问题、边界在哪里,才能做出正确的选用与裁剪。

五类配套规范的定位差异

DI(Device Integration,设备集成)是设备层的基础规范,定义了 DeviceType、TopologyElementType、ComponentType 等通用构件,以及 DeviceHealth、SerialNumber、Manufacturer、Model 等标识变量。它不描述具体工艺,只回答“这是什么设备、由哪些部件组成、健康状态如何”。几乎所有设备模型都应从 DI 派生。

ADI(Analyser Device Integration,分析仪器设备集成)面向在线分析仪、光谱仪、色谱仪等场景,在 DI 之上补充了分析通道、测量值、校准、维护等语义。它适合实验室或过程分析设备,普通电机、阀门并不需要。

PLCopen 规范把 IEC 61131-3 的程序组织单元(POU)映射为 OPC UA 类型,使 PLC 中的功能块、变量、任务状态可以被上位系统按标准方式浏览和调用。它解决的是“控制器内部逻辑如何暴露”,而不是设备物理结构。

Machine Tools 面向机床,定义了轴、主轴、刀具、通道、加工状态等对象,并规定了 MotionDeviceSystemType 等类型。它适合数控机床、加工中心,能表达进给轴位置、主轴转速、刀具寿命等关键量。

Robotics 面向工业机器人,定义了机器人系统、轴组、工具坐标系、运动状态、安全状态等。它适合六轴机器人、协作机器人,能表达关节角、笛卡尔位姿、程序运行状态。

配套规范选用与裁剪决策图 OPC UA 基础信息模型 DI 设备集成(必选底座) ADI 分析仪器设备 通道/校准/维护 适用:光谱/色谱 PLCopen POU 映射 功能块/变量/任务 适用:控制器逻辑 Machine Tools 轴/主轴/刀具/通道 加工状态 适用:数控机床 Robotics 轴组/工具坐标 运动/安全状态 适用:工业机器人 裁剪策略:保留必需语义,删除冗余节点 保留 标识/健康/关键工艺量 可选 诊断/统计/扩展属性 删除 未用通道/冗余方法 映射 到实际地址空间

选用原则:从设备角色出发,而非从规范名称出发

选用的第一步不是看规范列表,而是明确设备在车间中的角色。一台数控机床,其控制器内部逻辑可以用 PLCopen 暴露,机床本体结构用 Machine Tools 描述,而机床上的温度传感器、振动传感器则用 DI 建模。三者并不互斥,而是分层共存。判断依据可以归纳为三条:

  • 物理设备类型决定是否使用 Machine Tools 或 Robotics。机床用前者,机器人用后者,普通传感器和执行器用 DI 即可。
  • 是否需要暴露控制逻辑决定是否叠加 PLCopen。如果上位系统只需读取设备状态,不需要调用 PLC 功能块,则 PLCopen 可以省略。
  • 是否属于分析测量设备决定是否使用 ADI。只有在线分析仪、光谱仪等才需要,普通温度、压力变送器不需要。

裁剪策略:保留必需语义,删除冗余节点

配套规范通常定义了完整的类型体系,但实际设备往往只用到其中一部分。裁剪的目标是让地址空间既符合标准,又不臃肿。裁剪时按三个层次处理:

第一层,保留强制项。DI 中的 Manufacturer、Model、SerialNumber、DeviceHealth 属于设备身份和健康的核心信息,必须保留。Machine Tools 中的轴位置、主轴转速、通道状态属于加工关键量,也应保留。

第二层,按需保留可选项。例如 Machine Tools 中的刀具寿命统计、Robotics 中的碰撞检测历史,如果上位系统不做相关分析,可以删除对应节点,但要在设备说明中记录裁剪依据。

第三层,删除未实例化的类型和方法。规范中定义但设备不具备的通道、方法、事件,不应出现在地址空间中。例如一台三轴机床不需要保留第四轴、第五轴的占位节点。

裁剪不是随意删减,而是有依据的取舍。建议在设备模型设计文档中记录:保留了哪些强制项、删除了哪些可选项、删除原因是什么。这样在后续对接 MES 或 SCADA 时,双方对地址空间的理解才能一致。

实操示例:一台数控机床的信息模型裁剪

假设一台三轴立式加工中心需要接入车间 OPC UA 服务器,上位系统需要读取设备身份、健康状态、三轴位置、主轴转速和当前加工程序号。选用与裁剪过程如下:

  1. 以 DI 的 DeviceType 为根,实例化 Manufacturer、Model、SerialNumber、DeviceHealth。
  2. 叠加 Machine Tools 的 MotionDeviceSystemType,实例化 X、Y、Z 三个轴对象,每个轴保留 ActualPosition 和 AxisState。
  3. 实例化主轴对象,保留 ActualSpeed 和 SpindleState。
  4. 实例化通道对象,保留 CurrentProgram 和 ChannelState。
  5. 删除刀具寿命、冷却液状态、第四轴占位等未使用节点。
  6. 不引入 PLCopen 和 ADI,因为上位系统不调用 PLC 功能块,也不涉及分析测量。

裁剪后的地址空间结构可以用如下节点路径表示(示例):

Objects/
  Machine_01 (DeviceType)
    Manufacturer = "示例机床厂"
    Model = "VMC-850"
    SerialNumber = "SN-2024-00123"
    DeviceHealth = Good
    MotionDeviceSystem (MotionDeviceSystemType)
      Axes/
        X_Axis (AxisType)
          ActualPosition = 125.340
          AxisState = Running
        Y_Axis (AxisType)
          ActualPosition = -48.210
          AxisState = Running
        Z_Axis (AxisType)
          ActualPosition = -210.500
          AxisState = Running
      Spindle (SpindleType)
        ActualSpeed = 8000.0
        SpindleState = Running
      Channel (ChannelType)
        CurrentProgram = "O1024"
        ChannelState = Active

上述数值为教学示例,实际工程中应根据设备真实数据填写。裁剪后的模型只保留了上位系统真正需要的节点,地址空间清晰,浏览和订阅效率更高。

常见误区与判断依据

实际工程中容易出现两类偏差。一类是“全量照搬”,把配套规范中所有类型都实例化,导致地址空间庞大、维护困难。另一类是“过度裁剪”,删掉了上位系统后续可能需要的节点,导致二次开发时不得不重新建模。判断依据是:如果某个节点在未来 6 到 12 个月内没有明确的使用场景,可以先不实例化,但要在设计文档中标注为“预留”。

另一个常见问题是规范版本混用。DI、Machine Tools、Robotics 都有多个版本,不同版本的类型定义可能不兼容。选用时应确认设备端和上位端使用同一版本,或在网关侧做版本映射。对于新项目,建议统一采用较新的稳定版本,避免后期升级困难。

裁剪后的模型必须经过一次完整的浏览测试:用 OPC UA 客户端连接设备,逐层展开地址空间,确认保留的节点都能正常读取,删除的节点不会导致引用断裂。如果某个节点被其他节点引用,删除前必须先解除引用关系。

总结来说,DI 是设备建模的通用底座,ADI、PLCopen、Machine Tools、Robotics 分别面向分析仪器、控制器逻辑、机床和机器人四类特定对象。选用时从设备角色出发,裁剪时按强制项、可选项、未实例化项三层处理,并保留裁剪记录。这样得到的地址空间既符合标准,又贴合实际工程需要。