介绍

OPC Unified Architecture(OPC-UA)是由 OPC Foundation 开发的用于工业自动化的机器对机器通信协议。

OPC-UA 适配器集成了gopcua,并专注于与工业 OPC-UA 设备和系统进行通信,以便在边缘侧进行数据收集和数据处理。

注册信息

版本注册名称端点 Socket是否可用
v1alpha1adaptors.edge.cattle.io/opcuaopcua.sock*

支持模型

类型设备组版本是否可用
OPCUADevicedevices.edge.cattle.iov1alpha1*

支持平台

操作系统架构
linuxamd64
linuxarm
linuxarm64

使用方式

  1. kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/opcua/deploy/e2e/all_in_one.yaml

权限

对 Octopus 授予权限,如下所示:

  1. Resources Non-Resource URLs Resource Names Verbs
  2. --------- ----------------- -------------- -----
  3. opcuadevices.devices.edge.cattle.io [] [] [create delete get list patch update watch]
  4. opcuadevices.devices.edge.cattle.io/status [] [] [get patch update]

Example

  • 指定一个 “OPCUADevice”设备链接来连接 OPC-UA 服务器。

    1. apiVersion: edge.cattle.io/v1alpha1
    2. kind: DeviceLink
    3. metadata:
    4. name: opcua
    5. spec:
    6. adaptor:
    7. node: edge-worker
    8. name: adaptors.edge.cattle.io/opcua
    9. model:
    10. apiVersion: "devices.edge.cattle.io/v1alpha1"
    11. kind: "OPCUADevice"
    12. template:
    13. metadata:
    14. labels:
    15. device: opcua
    16. spec:
    17. parameters:
    18. syncInterval: 5s
    19. timeout: 10s
    20. protocol:
    21. # replace the address if needed
    22. endpoint: opc.tcp://10.43.29.71:4840/
    23. properties:
    24. - name: datetime
    25. description: the current datetime
    26. readOnly: true
    27. visitor:
    28. nodeID: ns=0;i=2258
    29. type: datetime
    30. - name: integer
    31. description: mock number. Default value is 42
    32. readOnly: false
    33. visitor:
    34. nodeID: ns=1;s=the.answer
    35. type: int32
    36. value: "1"
    37. - name: string
    38. description: mock byte string. Default value is "test123"
    39. readOnly: false
    40. visitor:
    41. nodeID: ns=1;s=myByteString
    42. type: byteString
    43. value: "newString"

更多的 “OPCUADevice “设备链接示例,请参考deploy/e2e目录,并使用deploy/e2e/simulator.yaml进行快速体验。

OPCUADevice

参数描述类型是否必填
metadata元数据metav1.ObjectMeta
spec定义OPCUADevice的预期状态OPCUADeviceSpec
status定义OPCUADevice的实际状态OPCUADeviceStatus

OPCUADeviceSpec

参数描述类型是否必填
extension指定设备的插件OPCUADeviceExtension
parameters指定设备的参数OPCUADeviceParamters
protocol指定访问设备时使用的协议OPCUADeviceProtocol
properties指定设备的属性OPCUADeviceProperty

OPCUADeviceStatus

参数描述类型是否必填
properties上报设备的属性*OPCUADeviceStatusProperty

OPCUADeviceParamters

参数描述类型是否必填
syncInterval指定默认的设备同步时间间隔,默认为15sstring
timeout指定默认的设备的连接超时时间,默认为10sstring

OPCUADeviceProtocol

参数描述类型是否必填
endpoint指定 OPC-UA 服务器端点的 URL,以 “opc.tcp://“开头。string
securityPolicy指定访问 OPC-UA 服务器的安全策略,默认为 “None”。OPCUADeviceProtocolSecurityPolicy
securityMode指定访问 OPC-UA 服务器的安全模式,默认为 “None”。OPCUADeviceProtocolSecurityMode
basicAuth指定客户端连接 OPC-UA 服务器的用户名和密码。OPCUADeviceProtocolBasicAuth
tlsConfig指定客户端连接 OPC-UA 服务器的 TLS 配置。OPCUADeviceProtocolTLS

OPCUADeviceProtocolSecurityPolicy

参数描述类型
None无安全策略string
Basic128Rsa15使用 Basic128Rsa15 安全策略string
Basic256使用 Basic256 安全策略string
Basic256Sha256使用 asic256Sha256 安全策略string
Aes128Sha256RsaOaep使用 Aes128Sha256RsaOaep 安全策略string
Aes256Sha256RsaPss使用 Aes256Sha256RsaPss 安全策略string

OPCUADeviceProtocolSecurityMode

参数描述类型
None不加密string
Sign仅签名string
SignAndEncrypt签名且加密string

OPCUADeviceProtocolBasicAuth

参数描述类型是否必填
username指定访问 OPC-UA 服务器的用户名string
usernameRef指定 DeviceLink 的引用关系,将该值作为用户名引用edgev1alpha1.DeviceLinkReferenceRelationship
password指定访问 OPC-UA 服务器的用户密码string
passwordRef指定 DeviceLink 的引用关系,将该值作为用户密码引用edgev1alpha1.DeviceLinkReferenceRelationship

OPCUADeviceProtocolTLS

参数描述类型是否必填
certFilePEM指定证书(公钥)的 PEM 格式内容,用于客户端对 OPC-UA 服务器的认证string
certFilePEMRef指定 DeviceLink 的引用关系,将该值作为客户端证书文件 PEM 内容引用。edgev1alpha1.DeviceLinkReferenceRelationship
keyFilePEM指定密钥(私钥)的 PEM 格式内容,用于客户端对 OPC-UA 服务器的认证。string
keyFilePEMRef指定 DeviceLink 的引用关系,将该值作为客户端密钥文件 PEM 内容引用。edgev1alpha1.DeviceLinkReferenceRelationship

OPCUADeviceProperty

参数描述类型是否必填
name指定属性名称string
description指定属性的描述string
type指定属性的类型OPCUADevicePropertyType
visitor指定属性的 visitorOPCUADevicePropertyVisitor
readOnly指定属性的是否只读,默认值为falseboolean
value指定属性的值,只在可写属性中可用string

OPCUADeviceStatusProperty

参数描述类型是否必填
name属性名称string
type属性类型OPCUADevicePropertyType
value属性值string
updatedAt修改属性时留下的时间戳metav1.Time

OPCUADevicePropertyVisitor

参数描述类型是否必填
nodeID指定 OPC-UA 节点的 id,例如 “ns=1,i=1005”string
browseName指定 OPC-UA 节点名称string

OPCUADevicePropertyType

参数描述类型
boolean属性数据类型为布尔值string
int64属性数据类型为 int64string
int32属性数据类型为 int32string
int16属性数据类型为 int16string
uint64属性数据类型为 uint64string
uint32属性数据类型为 uint32string
uint16属性数据类型为 uint16string
float属性数据类型为 floatstring
double属性数据类型为 doublestring
string属性数据类型为 stringstring
byteString属性数据类型为 bytestring,将转换为 string 显示string
datetime属性数据类型为 datetimestring

OPCUADeviceExtension

参数描述类型是否必填
mqtt指定 MQTT 的设置*v1alpha1.MQTTOptionsSpec