IndustryKit OPC UA
OPC UA source 支持 subscribe 和 poll。subscribe 建立订阅后接收 Server 推送,
poll 按 source 的 interval 主动 Read。
配置层级¶
一个 OPC UA 采集实例由三层配置组成:
[[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_statustag。 Basic256Sha256需要客户端证书、客户端私钥和 Server 证书,并校验 Server 证书。- 当前只读取或订阅节点,不提供节点写入和自动发现。