news 2026/9/15 11:47:43

如何用 TDengine 零代码数据接入对接 OPC UA 服务器采集工业设备数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 TDengine 零代码数据接入对接 OPC UA 服务器采集工业设备数据

如何用 TDengine 零代码数据接入对接 OPC UA 服务器采集工业设备数据

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

TDengine 通过 taosExplorer 与 taosX 提供零代码数据接入能力:在浏览器中配置数据源与点位映射,即可从 OPC UA 服务器持续读取数据并写入 TDengine,完成工业设备数据的实时入库,无需编写 ETL 代码。该能力属于TDengine 企业版功能,操作入口在 taosExplorer 的“数据写入”页面。

适用前提:

  • 已部署 TDengine 企业版并可访问 taosExplorer;
  • 能连通的 OPC UA 服务器(官方支持版本参考 KeepWare KEPServerEx 6.5);
  • 若 taosX 与 OPC UA 服务器之间网络不能直接连通(例如服务器在隔离的工控网段),需先在与服务器同网段部署一台 taosX-Agent,由 Agent 代理转发数据,详见后文可选分支。

判断是否需要安装 taosX-Agent

默认情况下 taosX 直接连接 OPC UA 服务器。只有当两段网络不能直连时才需要 Agent:OPC UA 服务器在隔离工控网段、或 taosX 部署在公有云无法访问内网。此时只要 taosX ↔ taosX-Agent、taosX-Agent ↔ OPC UA Server 两段网络分别连通即可。

创建 Agent 的流程(Linux 为例):在 taosExplorer 的数据写入 → 代理标签页点击+创建新的代理,下载 taosX-Agent 安装包并在数据源侧主机完成安装;然后在agent.toml(Linux 路径为/etc/taos/agent.toml)中填入 taosExplorer 显示的endpointtoken

endpoint="http://localhost:6055" token="eyJ0eX...BhA"

执行sudo systemctl start taosx-agent启动服务,再回到 taosExplorer 点击检查代理是否连接正常,显示正常即完成。之后创建写入任务时在下拉框选择该代理。两点说明:数据源所在主机不必安装 TDengine;后续修改采集参数、点位映射不需要重装 Agent。

创建 OPC UA 数据写入任务

在 taosExplorer 左侧导航栏进入数据写入,点击+新增数据源

  1. 名称:输入任务名称,例如environment-monitoring
  2. 类型:下拉列表选择OPC UA
  3. 代理:非必填,仅在需要 Agent 转发时选择。
  4. 目标数据库:选择数据要写入的数据库,也可点击右侧+创建数据库新建。

配置连接信息

连接配置区域填写OPC UA 服务地址,例如文档示例:192.168.168.1.66:53530/OPCUA/SimulationServer(以你的服务器 IP、端口和端点路径替换)。然后配置安全模式,共三种:

  • None:通信数据明文传输;
  • Sign:使用数字签名验证通信数据,保护数据完整性;
  • SignAndEncrypt:签名加加密,保证完整性、真实性和保密性。

若安全模式选择SignSignAndEncrypt,必须选择有效的安全策略,可选:Basic128Rsa15Basic256Basic256Sha256Aes128Sha256RsaOaepAes256Sha256RsaPssNone策略仅在安全模式为 None 时可选)。同时必须填写安全通信证书安全通信私钥,生成方法见下一节。

认证方式通过 tab 切换,可选:匿名用户名和密码证书访问(证书可以与安全通信证书相同,也可以不同)。

配置完成后点击连通性检查。注意:如果使用了安全通信证书或认证证书,证书必须先被 OPC UA 服务端信任,否则检查无法通过。

生成客户端证书(安全模式为 Sign / SignAndEncrypt 时)

taosX 加载证书的要求:格式必须为PEM,且证书 SAN 中必须包含URI:urn:taosx-opc:client,否则服务端会报StatusBadCertificateUriInvalid。证书可在任意机器上生成,把结果上传到 taosExplorer 即可。

Linux / macOS 上可用以下命令生成(有效期 10 年):

# 创建配置文件 cat > /tmp/opcua_client_ext.cnf << 'EOF' [req] distinguished_name = req_dn x509_extensions = v3_ext prompt = no [req_dn] CN = taosx-opc-client O = TDengine [v3_ext] basicConstraints = CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = clientAuth, serverAuth subjectAltName = URI:urn:taosx-opc:client EOF # 生成证书与私钥 openssl req -x509 -newkey rsa:2048 -nodes \ -keyout client_key.pem \ -out client_cert.pem \ -days 3650 \ -config /tmp/opcua_client_ext.cnf

生成后用如下命令确认 SAN 包含必需的 Application URI(文档示例输出):

openssl x509 -in client_cert.pem -noout -subject -ext subjectAltName
subject=CN=taosx-opc-client, O=TDengine X509v3 Subject Alternative Name: URI:urn:taosx-opc:client

两个文件与 taosExplorer 字段的对应关系:client_cert.pemSecure Channel Certificate(安全通信证书),client_key.pemCertificate's Private Key(安全通信私钥)。上传后第一次连通性检查通常会失败,因为服务端尚未信任该证书——需要先在服务端完成“信任证书”操作后重新检查。

厂商差异提醒:从 Ignition、GE 等服务器下载的证书(例如ignition-server.der)是服务器自身的证书,不能直接用作客户端证书,必须按上述方法自行生成。如果你使用的是 Ignition 或 GE CSS OPC UA Server,建议先阅读对应的专属集成指南,获取经过验证的服务端信任流程与配置参考,见 Ignition 集成指南 与 GE CSS OPC UA Server 集成指南。

配置点位集:选择点位或上传 CSV

点位集通过 tab 切换,提供三种互斥模式:选择数据点位(默认)、上传 CSV 配置文件告警与事件

方式一:选择数据点位

  1. 筛选点位:通过根节点 ID命名空间节点类型节点 ID 表达式节点名称表达式等条件筛选,点击查看点位列表在右侧预览符合条件的点位,勾选要采集的点位。
  2. 超级表名:指定数据写入的超级表,支持占位符{type}(替换为点位值列的 TDengine 数据类型)。表达式中的.会自动替换为_,例如opc_{type}在点位类型为Float64时生成超级表opc_double
  3. 表名称:指定子表,OPC UA 点位 ID 形如ns=<namespace>;<prefix>=<identifier>prefix可为i/s/g/b)。支持占位符:{ns}(命名空间)、{id}(去掉前缀后的标识符)、{id#/_}(将{id}中所有/替换为_并修剪首尾)。可与静态文本拼接,如t_{ns}_{id#/_}。替换后残留的.和反引号会被替换为_
  4. 值列名称、值变换:值列默认名val,同一超级表下多个点位共享该列名。值变换使用 Rhai 表达式对原始值二次计算,例如val * 1.8 + 32(摄氏度转华氏度)、val / 1000(毫秒转秒)、if val < 0 { 0 } else { val }(负值截断);留空则不做变换。布尔、字符串、二进制等非数值类型当前不支持值变换。
  5. 时间戳列:可选origin_ts(OPC 点位原始时间戳)、request_ts(请求时间戳)、received_ts(接收时间戳),时间戳列名默认ts
  6. 自定义标签:格式为<DataType>::<TagName>::<Pattern>,多个标签以;分隔,例如:
VARCHAR(1024)::name::{id#/.};VARCHAR(1024)::browse::{BrowseName};VARCHAR(200)::location::{Path#/_};INT::version::1

该示例生成四个标签:name(点位 ID 中/.)、browse(节点 BrowseName)、location(Path 中/_)、version(常量 1)。节点属性占位符仅支持{BrowseName}DisplayName}{Description}{Path}四个属性;{Attr#XY}形式的字符替换优先级高于普通{Attr}

方式二:上传 CSV 配置文件

适合点位数量较多的场景。可以在 taosExplorer 中下载 CSV 空模板,也可以按已配置的筛选条件从服务器导出数据点位为 CSV。核心规则:

  • 文件编码必须为UTF-8(带不带 BOM 均可),其他编码(如 GBK)会被拒绝;
  • 第一行 Header 包含point_idstabletbname等列,point_id在整个任务中唯一,且ts_col/request_ts_col/received_ts_col至少配置一列作为时间戳;
  • point_id是字符串型(含s=)时,一律用双引号包裹整个单元格,避免其中的逗号被当作分隔符;内部含双引号时按 RFC 4180 规则重复一次;
  • 导出模板已自动把每个点位的BrowseNameDisplayNameDescriptionPath写入对应 Tag 列,通常只需调整enabledstabletbname等列。

推荐写法:stable = opc_{type}(按数据类型分超级表)、对象节点stable = opc_objecttbname = t_{ns}_{id}(保证重启后同一数据点落入同一子表)。完整列定义见 OPC UA CSV 映射文件参考。上传后先点击检查连接并查看解析后的表头,确认行结构正确。

告警与事件(企业版,可选)

告警与事件tab 用于采集 OPC UA Server 推送的告警与事件(A&E):必选事件类型(树形多选,选中即包含其所有子类),可选事件源过滤最小严重度(1–1000),提交前可通过配置规则预览静态预览将建的超级表结构与过滤条件。选择该 tab 后采集模式自动锁定为event。入库命名规则与查询示例见 OPC UA 告警与事件采集。

采集配置与高级选项

采集模式可选三种:

  • subscribe:订阅模式,数据有变化时主动上报并写入 TDengine,用于普通点位采集;
  • observe:按采集间隔轮询数据点最新值,默认 10 秒;同一任务内的普通点位共用该间隔,不支持按点位设置不同轮询频率——若部分点位需要不同周期,请拆成多个任务(可共用同一 OPC 服务器与 Agent);
  • event:A&E 采集模式,由点位集选择联动锁定。

采集超时:向 OPC 服务器读取点位超过设定时间未返回则读取失败,默认 10 秒,仅在observe模式可配置。

使用选择数据点位方式时,还可配置点位更新模式None/Append/Update)与点位更新间隔(默认 600 秒,最小 60):开启后,任务运行期间 OPC Server 新增或删除的点位会自动进入任务,无需重启 OPC 任务。

高级选项用于进一步调整性能与日志:日志级别(默认info)、最大写入并发数(默认 0 表示自动)、批次大小(单次发送最大消息数)、批次延时(超时后即使不满批次也立即发送)。缓存实时数据默认关闭,开启后数据先落本地文件再被后台任务读出发送,用于下游消费卡顿时削峰,数据消费完毕自动清理文件,详见 存储转发。

提交任务与验证结果

点击提交完成创建,回到数据源列表页面查看任务执行情况。验证要点:

  1. 健康状态(自v3.3.5.0起在任务管理列表展示):Ready表示数据源和目标端健康检查通过;Active表示任务正常运行且活跃;Idle表示监测时段内无数据处理;Pending表示写入消息数为 0;Busy表示写入队列繁忙(可能存在性能瓶颈,但不说明存在错误);Bounce表示写入过程中存在错误且一定周期内超出阈值;SourceError/SinkError表示数据源或写入端错误,工作负载会尝试重连;Fatal为严重或无法恢复的错误。健康状态为空表示尚未有数据开始入库。
  2. 运行指标:对运行中的任务点击指标的查看按钮,可看详细运行指标,包括写入的记录条数、流量等,每 2 秒自动刷新。
  3. 提交失败时,可通过查看该任务的活动日志查找错误原因。

常见连接问题与限制

错误信息原因解决方法
StatusBadIdentityTokenInvalid (0x80200000)认证方式不匹配或证书未被服务器接受Certificate 认证可改用 Username 认证;确认服务端 User Source 配置正确
StatusBadUserAccessDenied (0x801F0000)用户名密码正确但无权限确认用户存在于服务端指定的用户源中
StatusBadSecurityChecksFailed证书未被 Trust 或两端 Security Policy 不匹配在服务端 Trust 客户端证书;确认两端安全策略一致
StatusBadCertificateUriInvalid证书 SAN 缺少客户端 Application URI重新生成证书,确保 SAN 包含URI:urn:taosx-opc:client
连接超时网络不通或服务端未监听正确地址确认服务端监听地址与端点包含服务器 IP,防火墙放通对应端口

其他限制与日常维护:

  • 采集间隔是任务级参数,同一任务内不能按点位分组设置不同轮询频率;
  • 任务运行中可通过编辑 → 增加数据点位在 CSV 中追加少量点位规则,不需要重启任务,不会产生数据丢失;
  • 已入库子表的标签值维护,建议优先在 TDengine IDMP 中完成,未使用 IDMP 时可用 SQLALTER TABLE … SET TAG批量修改;
  • OPC UA Property(如limit)如何自动映射为 TAG,见 OPC UA Property 到 TAG 示例;
  • 除 taosExplorer 外,也可通过 SQL 管理接入节点、任务与 Agent,见 数据接入(Xnode)。

【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 11:44:39

Semantica合规实战:FDA 21 CFR Part 11与ICH E6 GCP落地的7步指南

Semantica合规实战&#xff1a;FDA 21 CFR Part 11与ICH E6 GCP落地的7步指南 【免费下载链接】semantica Graph-Native Infrastructure for Context and Accountable AI Systems 项目地址: https://gitcode.com/GitHub_Trending/sema/semantica Semantica 是一个面向受…

作者头像 李华
网站建设 2026/9/15 11:44:34

dede如何手机网站和电脑网站的数据同步更新新手入门避坑指南

dede如何手机网站和电脑网站的数据同步更新新手入门避坑指南 很多新手刚接手企业官网,发现用现成的模板网站太丑不够用,改代码又容易把后台搞崩,这种“想改改不动,不改又难看”的焦虑感简直让人抓狂。特别是涉及到 DedeCMS 这种老牌的开源系统,很多新手在尝试让手机端(M 站)和电脑端(PC…

作者头像 李华