跳到主要内容

数据转发

数据转发把 TGateway 已采集到的变量、设备状态、报警和事件发送到外部系统,也可以写入实时数据、历史数据或历史报警目标。

页面只需要理解两个对象:转发组决定“发送哪些数据、什么时候发送”,转发目标决定“发送到哪里”。

最短配置流程​

  1. 进入“开发配置 → 数据转发”,新建一个转发组。
  2. 变量范围选择“手动选择”,触发模式选择“定时”,定时间隔填 1000,保存。
  3. 重新编辑这个组,在下方“转发变量”中搜索一个已有变量,选中后点击旁边的加号,再点击“保存”。具体见维护组变量。
  4. 在转发组下新增目标,选择目标插件,填写连接参数并保存。需要外部字段或地址时,再维护目标的“变量属性”。
  5. 启用转发组和目标,确认目标运行正常。
  6. 到接收端查看这个变量的数据;仅看到目标在线,还不能说明已经上传成功。

页面入口​

菜单路径:开发配置 → 数据转发。

数据转发中的转发组、目标和运行状态

区域用途
转发组列表新增、编辑、删除、启停和重启转发组。
转发目标列表管理所选转发组下的目标、变量属性和目标运行状态。
详情区查看详细信息、组日志、目标日志和调试页。

配置转发组与目标​

配置转发组​

点击转发组面板的新增按钮,打开转发组配置抽屉。

转发组配置抽屉

配置项说明
名称转发组显示名称,建议体现业务范围,例如“生产线A_实时上传”。
排序控制组导航顺序,数字较小的在前;修改排序不会改变变量采样或目标发送顺序。
启用控制该组是否运行。禁用后组下目标不会启动。
日志级别组级日志详细程度。联调时可临时提高,稳定后恢复 Info。
变量范围可选全部变量、手动选择、采集设备或采集组。
范围配置使用采集设备或采集组范围时,填写对应名称;多个名称用英文逗号分隔。
触发模式变化、定时、定时或变化。
定时间隔触发模式包含定时时填写毫秒数或 Cron;常规周期优先填毫秒数,例如 1000。
在线过滤开启后只发送在线变量。
分批模式不分批、全部、按数据组、按设备或按采集组分批。
最大批量组交付给目标的一个快照批次最多包含的变量记录数。目标还会按自身分片、Topic 和格式生成出站消息。
描述记录组用途、范围和维护说明。

变量范围怎么选​

范围适用场景
全部变量整站上传。
手动选择只转发少量关键点位或试点变量。
采集设备按设备名称筛选,适合同一设备或一组设备。
采集组按变量的采集组筛选,适合按业务分组。

触发和分批怎么选​

需求建议
值改变就发送选择“变化”。
固定周期上报选择“定时”,填写毫秒数。
变化和周期都要发送选择“定时或变化”。
按设备组织输入批次分批选择“按设备”,再核对目标实际出站消息。
按业务分组组织输入批次分批选择“按数据组”或“按采集组”。
数据量小、目标自行处理批量选择“不分批”。

分批决定组向目标交付的记录边界,不直接决定外部消息的最终数量。目标还会按 Topic、列表或字典开关、模板和上传分片生成载荷。例如“按设备”再配置不同变量 Topic,仍可能形成多条 MQTT 消息;字典也可能把同一变量的多条记录合并为一个键。对接验收应查看接收端的完整消息,配置方法见上传模板与消息格式。

维护组变量​

手动选择范围下,组变量列表就是该组的成员名单;其它范围下,组变量主要用于覆盖变量级设置。

只上传指定的几个变量​

  1. 新建转发组,把“变量范围”设为“手动选择”,先点击“保存”。新组尚未保存时,不能添加变量。
  2. 在转发组列表中编辑刚保存的组,向下找到“转发变量”。
  3. 在“选择转发变量或覆盖配置”中输入变量名,选中正确的“设备名.变量名”。
  4. 点击选择框旁的加号。确认变量出现在下面的表格中,且“启用”已打开。
  5. 重复添加其他变量,点击弹窗底部“保存”。只选下拉选项而没点加号,不会加入该组。
  6. 重新打开组检查成员。要停止上传其中一个变量,可关闭该行“启用”并保存;要移出该组,删除该行并保存。这不会删除原来的采集变量。

新增变量后,检查该行“更新”与本次要求一致:固定值也要周期发送时选择“定时”或“定时或变化”。数据组和别名无额外要求时可留空。

将演示变量加入转发组后,表格中出现一条成员记录

配置项说明
变量选择要加入或覆盖配置的变量。
启用控制该变量是否参与当前组。
数据组用于“按数据组”分批。
更新覆盖该变量的触发方式。
组触发开启后变量变化可以唤醒整个转发组。
别名当前组中的外部命名设置,是否进入载荷取决于目标、模板或脚本;默认 MQTT 实体不会自动用它替换变量名。

变量覆盖与整组触发​

新增行会以当前组触发模式作为起点;保存后,该行“更新”就是变量在当前组内的独立覆盖配置,之后修改组触发模式不会自动替换已有行。组选择定时,不代表每个已覆盖为变化更新的成员都会按相同周期产生记录。排查漏发时,应重新打开成员行检查实际设置。

“组触发”用于一个关键变量变化时带出当前组的相关状态。例如设备运行标志变化时需要同时上报温度、压力,可将关键变量设为组触发,并确认这些伴随变量也在范围内。它不能把范围外的变量自动加入,也不等于每个变量都产生了新采样。

建议先使用两个测试变量:固定 B、改变 A,在接收端核对是否只收到 A;再开启 A 的组触发,改变 A,核对 B 是否按配置一同发送。保存后用新的值和时间检查,避免把保留消息或之前的批次算作本次结果。

关闭某行“组触发”不会移除成员,也不会禁止它随定时或其他触发发送;它只是不再用自身变化唤醒组。启用、更新模式、组触发分别控制成员资格、记录更新方式和唤醒来源,应逐项检查。

用四个变量验证分批​

  1. 选择两个设备、每台两个测试点,先确认四点都在范围内并正常更新。
  2. 先用“全部”形成快照,再比较最大批量为 1 与较大值时的入口批次和接收载荷。
  3. 改用“按设备”或“按采集组”,按变量身份检查每个集合。
  4. 需要跨设备业务分组时,在当前组的覆盖行中设置数据组,例如两个跨设备点归 Fast,另两个归 Slow。
  5. “按数据组”下空数据组按未分组单点处理。需要严格分类时,应为全部成员填写数据组,再结合目标上传分片核对。

“不分批”将符合条件的变量按单点交给目标;“全部”等模式形成组快照,目标出站仍可能再次合并或拆分。采集组来自变量配置,数据组只属于当前转发组,二者不会互相修改。

验证在线过滤时,可以在维护窗口停止测试源:关闭过滤应保留离线质量及最后值,开启过滤应从新快照排除离线点。成员数量不因此改变;恢复源端后用新的在线采样确认重新进入,不能用外部空窗口单独判断目标断线。

配置转发目标​

先选中转发组,再点击目标面板的新增按钮。

转发目标配置抽屉

配置项说明
所属转发组当前目标归属的转发组;目标只消费该组范围内的数据。
目标名称同一转发组内唯一,用于日志、冗余和导入导出定位。
启用控制目标是否运行。启用后才会进入运行态并支持调试。
允许方法调用默认关闭。允许直接调用此目标公开的全部方法;作为 MQTT 或 UA 入口调用别的实例时,检查那个实例的开关。详见插件方法调用。
插件选择数据转发插件;选择后显示对应的插件属性。
日志级别控制目标日志详细程度。
启动超时目标连接或初始化的等待时间,单位秒。
描述记录目标用途和维护说明。
插件目标属性由具体插件提供,字段含义见对应插件手册索引。

插件参数在哪里看​

公共页面只说明目标的创建和启停。MQTT、Kafka、RabbitMQ、Webhook、Modbus、OPC UA、IEC104、IEC61850、数据库和 SyncBridge 的专用参数、模板、调试页及排障方法,统一放在对应的数据转发插件手册。

目标变量属性​

目标变量属性是“某个变量在某个目标下的外部映射”,不是转发组成员范围。

常见用途包括:

  • 外部字段名、别名和自定义数据字段。
  • Modbus 从站地址、数据类型和写入权限。
  • MQTT、Kafka、RabbitMQ、Webhook 等目标的上传字段。

历史数据存储的采样范围和触发方式在转发组中配置,不在“目标变量属性”中重复设置。

配置前先选择有效的转发目标和变量。变量必须先进入转发组范围,目标变量属性才会生效。

  1. 选中目标,打开“变量属性”。
  2. 选择要配置的变量,填写当前插件要求的映射字段。
  3. 点击“新增变量属性”;修改已有记录时点击“更新变量属性”。
  4. 确认记录出现在列表中,再到接收端核对字段或地址。不要用这里代替上面的“转发变量”成员设置。

转发目标变量属性面板

运行、调试与恢复​

启停和验证​

保存后依次确认:

  1. 转发组已启用。
  2. 目标已启用并显示运行状态。
  3. 目标的变量范围不是空集。
  4. 目标日志没有连接、认证或发送错误。
  5. 外部系统能看到一条测试数据。

目标在线不等于数据已经送达;必须结合目标日志和外部系统接收结果判断。

调试和日志​

选中目标后,点击详情区的“调试”。不同插件会显示不同的专用调试页,例如发布、订阅、客户端列表、服务端状态或协议操作。

MQTT 客户端发布调试页

目标无法启动或数据没有发出时,先看“转发目标日志”,再看“转发组日志”。

现象先检查
目标没有启动组和目标是否启用,插件是否启用,目标参数是否完整。
没有数据发出变量范围、变量启用状态、触发模式和在线过滤。
目标显示在线但外部没有数据目标日志、外部账号权限、Topic/URL/表名和数据格式。
定时转发不触发触发模式是否包含定时,定时间隔是否为毫秒数或 Cron。
变化转发不触发变量是否真实发生变化;需要唤醒整组时检查“组触发”。
离线缓存持续增长外部系统是否恢复,磁盘空间、上传分片和并发数是否足够。

离线缓存与历史补录​

缓存容量、队列与分片组合及完整断网测试见离线缓存与补传;实时、历史、报警和时序库的选型与查询验收见数据库存储配置。

网络恢复后能否补齐历史,取决于发送端是否缓存了每条采样、消息是否保留来源时间,以及接收端是否启用了历史存储。

业务插件缓存与时间行为
MQTT 客户端、MQTT 服务端、Kafka、RabbitMQ、Webhook、ZeroMQ(PRO)支持通用失败重试缓存,原始变量采样保留采集、变化和记录时间。列表上传可保留多条同点记录;字典、模板和脚本可能合并记录或省略时间。外部接收端需按所选格式处理。MQTT 服务端发布成功不代表离线订阅者已收到消息。
SyncBridgeEdge 使用通用缓存,恢复后等待 Hub 应用确认再删除;Hub 可将收到的旧采样和同值采样交给历史数据存储,实时值不回退。
ThingsBoard支持缓存重试,遥测时间 ts 使用来源采集时间 CollectTime;按 ThingsBoard 接口写入。
历史数据存储支持自身缓存和失败重试;中心接收 Gateway MQTT 或 SyncBridge 采样后,可按来源时间写入关系库和时序库。
实时数据存储保存最新状态,不能用来补齐完整历史;更新时间表示本次写入,采集时间单独保留。
历史报警存储缓存实际产生的报警事件;不会根据补发的旧变量值重新推演离线期间的报警。
Modbus 从站、OPC UA 服务端、IEC104 服务端(PRO)主要维护实时协议状态,不提供逐条持久历史补发。OPC UA 历史读取需要另行配置历史库;IEC104 内存变化队列也不等同于持久历史缓存。
IEC61850 服务端(PRO)可配置关系库 Journal 及其离线缓存,保存协议事件。变量更新队列会合并最新状态,不等同于逐变量采样补录。

数据库中的时间​

中心使用“历史数据存储”目标,并将镜像变量加入该目标所属组。收到的历史采样独立入库,遵循组范围、启用和来源在线状态过滤;不会因为当前值未变化或已更新而丢弃。中心本地定时采样仍可产生额外记录。

时间字段含义与存储规则
CollectTime边缘采集时间。标准历史数据保留此字段,用于核对现场采样时刻。
CreateTime边缘转发组生成记录的时间;补录时不改成中心接收时间。标准关系库按此列分表;QuestDB、TDengine 和 IoTDB 的标准历史模型使用它作为主记录时间。
ChangeTime来源值或状态最近变化的时间;随同步采样保留,标准历史表不单独存储此列。

配置数据库时区后,时间按目标时区转换保存。自定义 SQL、表结构和动态脚本需自行保留所需字段,并决定相同测点、相同时间记录的覆盖或去重规则。补录使用来源已处理的值,中心读取表达式不会重放。

断网验收​

  1. 在边缘启用目标缓存,确认变量范围、触发方式和在线过滤满足采样要求;在中心启用对应历史目标。
  2. 记录几次测试值及其采集时间,在维护窗口断开上传链路,继续产生多条采样。
  3. 确认缓存增加,恢复链路后确认缓存逐步减少。
  4. 在中心查询断线期间的历史范围,逐条核对值、采集时间、记录时间和在线状态,确认实时值仍为最新值。

缓存不能恢复未采集、未被转发组生产或因容量超限被淘汰的数据。通用缓存按成功结果删除,不提供跨消息系统与数据库的唯一写入保证;确认丢失、QoS 重投、快照或批次重试都可能形成重复记录。

Gateway MQTT 大量补发时,超过中心每秒消息上限或并发处理容量的消息会被拒绝,已获 Broker 确认的消息不会因此自动回到边缘缓存。请根据补发峰值配置分片、发送速率和中心处理容量,并检查拒绝计数。

目标冗余​

目标冗余用于主备目标切换。

  1. 主目标和备用目标必须在同一转发组内。
  2. 备用目标建议使用相同插件,并单独填写连接参数和认证信息。
  3. 备用目标不能同时作为其它目标的备用目标,也不要开启自己的冗余。
  4. 上线前手动切换一次,确认备用目标能够发送。

导入导出​

  1. 点击转发组面板的“导出配置”,保留一份原始文件作为备份。
  2. 修改副本,保留导出的工作表名称、列名及组与目标之间的关联。换网关使用前,先在新网关准备好同名采集设备和变量。
  3. 点击“导入配置”,选择修改后的文件。选择文件后即开始导入,不是只预览。
  4. 查看导入结果中的各工作表和失败行。发生错误时,先检查当前配置,不能假定整份文件都没有写入。
  5. 重新打开转发组,检查成员、目标插件和变量属性,再确认目标连接和接收结果。

相关链接​