跳转至

IndustryKit OPC UA

OPC UA source 支持 subscribe 和 poll。subscribe 建立订阅后接收 Server 推送, poll 按 source 的 interval 主动 Read。

配置层级

一个 OPC UA 采集实例由三层配置组成:

[[sources]]
  [sources.opcua]
    [[sources.opcua.points]]
  • [[sources]] 定义采集实例、measurement、采集周期和公共标签。
  • [sources.opcua] 定义该实例使用的 Endpoint、认证和安全连接。
  • 每个 [[sources.opcua.points]] 将一个 Node ID 映射为一个输出字段,可重复配置多个点位。

type = "opcua" 时只能配置 [sources.opcua] 这一种协议子表,并且至少配置一个 point。 下面的完整片段需追加到 IndustryKit 主配置中。

配置

[[sources]]
id = "opcua-line-1"
type = "opcua"
measurement = "opcua_metrics"
interval = "10s"
tags = { device = "opcua-server-01" }

[sources.opcua]
endpoint = "opc.tcp://192.0.2.20:4840"
mode = "subscribe"
auth = "anonymous"
security_policy = "None"
security_mode = "None"
publishing_interval = "1s"

[[sources.opcua.points]]
field = "pressure"
node_id = "ns=2;s=Plant/Pump/Pressure"
sampling_interval = "500ms"
queue_size = 10

[[sources.opcua.points]]
field = "alarm"
category = "logging"
node_id = "ns=2;s=Plant/Pump/Alarm"
sampling_interval = "500ms"
queue_size = 10

使用用户名认证和加密连接时,将上面的 [sources.opcua] 替换为:

[sources.opcua]
endpoint = "opc.tcp://192.0.2.21:4843"
mode = "poll"
auth = "username"
username = "<OPCUA_USERNAME>"
password = "<OPCUA_PASSWORD>"
security_policy = "Basic256Sha256"
security_mode = "SignAndEncrypt"
certificate_file = "pki/opcua-client.pem"
private_key_file = "pki/opcua-client-key.pem"
server_certificate = "pki/opcua-server.pem"

参数

[[sources]]

字段 默认值 说明
id 无 必填且在当前配置中唯一;作为 source_id 标签上报。
type 无 必须为 opcua。
measurement industrial 输出的指标集或日志来源名称。
interval 10s poll 的 Read 周期,必须大于 0;subscribe 不使用该值控制数据频率。
tags {} 当前 source 的静态标签,会与全局标签合并。

[sources.opcua]

字段 默认值 说明
endpoint 无 必填的绝对 opc.tcp://host[:port] 地址;不得包含账号、query 或 fragment。
mode subscribe 采集方式:subscribe 或 poll。
auth 有 username 时为 username,否则为 anonymous 认证方式:anonymous、username 或 certificate;目标 Endpoint 必须声明支持所选方式。
security_policy None 安全策略:None 或 Basic256Sha256。
security_mode None 消息安全模式:None、Sign 或 SignAndEncrypt。Basic256Sha256 不能搭配 None。
username 空 auth = "username" 时必填;设置 password 时也必须设置。
password 空 用户名认证的密码。
certificate_file 空 客户端证书;必须与 private_key_file 成对配置。证书认证或 security_policy 不是 None 时必填。
private_key_file 空 客户端 RSA 私钥;必须与 certificate_file 成对配置。
server_certificate 空 security_policy 不是 None 时必填;用于校验 Server 实际宣告的证书。
publishing_interval 1s 必须大于 0;subscribe 的发布周期,poll 不使用。

证书相关相对路径按主配置文件所在目录解析,且文件必须允许 IndustryKit 服务账号读取。 security_policy = "None" 时 security_mode 必须为 None;使用 Basic256Sha256 时必须选择 Sign 或 SignAndEncrypt,并配置客户端证书、私钥和 Server 证书。

[[sources.opcua.points]]

字段 默认值 说明
field 无 必填的输出字段名。metric 以该名称写入字段;logging 以该名称组成 message,并输出 status 和 value。
node_id 无 必填的 OPC UA Node ID;同一 source 中不能重复。
sampling_interval 1s 必须大于 0;subscribe 的 Server 侧采样周期,poll 不使用。
queue_size 10 必须大于 0;subscribe 的 monitored item 队列长度,队列满时丢弃最旧值;poll 不使用。
category metric 输出类型:metric 或 logging。
tags {} 点位静态标签,会与全局和 source 标签合并。
scale 1 当前 OPC UA 采集尚未应用该转换,请保持默认,不要配置。
offset 0 当前 OPC UA 采集尚未应用该转换,请保持默认,不要配置。
on_change false metric 设为 true 后仅在值变化时发送;logging 本身按变化发送。
emit_initial false 是否发送启用变化检测后的首次观察值;否则首次值只用于建立基线。
status info category = "logging" 时输出的状态。

poll 会按 source 的 interval 主动读取;subscribe 使用 publishing_interval、 sampling_interval 和 queue_size。后面三项在 poll 中不生效,但配置校验仍要求其为正值, 省略时会使用默认值。通用安装、运行和验证方法见 IndustryKit。

数据与限制

  • 优先使用有效的 OPC UA SourceTimestamp,否则使用接收时间。
  • Bad quality 不发送伪值;Uncertain 值附加 quality 和 opcua_status tag。
  • Basic256Sha256 需要客户端证书、客户端私钥和 Server 证书,并校验 Server 证书。
  • 当前只读取或订阅节点,不提供节点写入和自动发现。

文档评价

文档内容是否对您有帮助?