OPC UA 定义了对象,对象类型,结构化组织能力和定义对象之间关系的能力,利用这些基础和衍生类型及对象,用户还可以搭建出更复杂的类型,关系和对象。
如果不同的厂商或者用户定义的信息模型不同,将会影响系统的互操作性,对于设备而言,如果采用统一标准的信息模型,将会提高设备的互操作。
OPC 基金会在OPC UA标准的基础上,与众多的行业机构展开合作,针对行业的特点,制定各种配套标准,也称为伴随标准。这些配套标准促进了专业设备的互操作性。另一方面,使用同样的信息模型标准, 建模的工作将变的简单有效。
在本博文中,我们介绍其中一个配套标准,机器人。
OPC 40010-1: Robotics - Vertical Integration
国外一些机械臂制造厂商已经为他们的机械臂构建了符合OPC-40010-1 的OPCUA 服务器 。在学习该标准的同时,我们也参考了UR 公司的OPC UA 服务器。
机器人OPC UA 模型
模型的根是MotionDeviceSystemType的对象,名称 Robot,在OPCUA for Device 模型的ComponentType之下,也可以直接在服务器的Objects目录下,它包括下面三个对象:
- MotionDevices
- Controllers
- SafetyStates
运动设备(MotionDevices)
运动设备(MotionDeviceType)
MotionDevics目录包含了MotionDeviceType对象,取名为RobotArm 这是连接到控制器的物理机械臂的模型。
轴(Axes)
该目录包含了机械臂6个轴的对象
- 基轴Base
- 肩部轴Shoulder
- 肘部轴Elbow
- 腕部轴Wrist1
- 腕部轴Wrist2
- 腕部轴Wrist3
每个轴包括的变量
- MotionProfile: 1 (ROTARY,ROTATARY_ENDLESS,LINEAR)
- AdditionalLoad 在该轴上的负载,例如焊接机的变压器
- 参数ParameterSet:
- 实际位置ActualPosition: 对应的关节位置,单位:弧度。
- 实际速度ActualSpeed: 相应的关节的速度 单位rad/sec
- 实际加速度
动力总成(PowerTrains)
该文件夹包含6个电机类型(MotorType)对象:
- 基电机Base
- 肩部电机Shoulder
- 肘部电机Elbow
- 腕部电机Wrist1
- 腕部电机Wrist2
- 腕部电机Wrist3
电机类型(MotorType)
基础属性
- 序列号
- 制造商
- 型号
- 生产号
参数集(ParameterSet)
- 刹车释放
- 电机温度
- 有效载荷率
齿轮类型(GearType)
- 序列号
- 制造商
- 型号
- 生产号
- 齿轮比
- 齿轮距(Pitch)
安全状态(SafetyStates)
控制器(ControllerType)
- 序列号
- 制造商
- 型号
- 生产号
- 当前用户
- 软件
- 任务控制
- 参数集
- 总开机时间
- 开机时间
- UPS 状态
- 总能耗
- 机箱风扇速度
- CPU风扇速度
- 输入电压
- 温度
辅助组件类型(AuxiliaryComponentType)
驱动类型(DriveType)
只有一个生产编号
任务控制TaskControls
组件名称ComponentName
参数集ParameterSet
- 任务程序装入TaskProgramLoaded
- 任务程序名称TaskProgramName
- 执行模型ExecutionMode
任务程序名称: 在UR 中,是装入Polyscope 的程序名称,例如:"/programs/palletizer.urp"
执行模型: 枚举类型,CYCLE, CONTINUOUS, STEP
注:UR 的程序
UR 的程序不是OPCUA Robot 模型的一部分。
用户可以通过两种办法给优傲机器人编程:
- URP程序------用户使用示教器的图形界面编程可直接生成URP程序,即机器人可读代码。用户不需要具备任何编程水平即可生成或修改程序。URP程序还可以调用多个SCRIPT子程序,具有延展功能。
- SCRIPT程序------SCRIPT是优傲的UR Script编程语言所生成的程序文件。就像其他编程语言那样,UR Script有变量、类型、控制流程指令、函数等功能。另外,UR Script包括内置的变量与函数可以控制机器人输出入信号以及运动。
这两种编程方式各有所长:你可以无需编程水平在示教器上直接生成URP程序;也可以使用SCRIPT增加编程功能,另外,SCRIPT还可用于远程控制机器人驱动。
心得
OPCUA For Robot 是机械臂的信息模型,包含了许多Robot 零部件的相关信息和一些状态,但是没有包括控制的方法。机械臂的控制程序是通过下载SCRIPT 程序实现的。OPCUA 信息模型只是提供了文件名称,甚至没有下载程序的接口。
感觉这样的OPCUA 模型实用性不大。