数据转发
数据转发把 TGateway 已采集到的变量、设备状态、报警和事件发送到外部系统,也可以写入实时数据、历史数据或历史报警目标。
页面只需要理解两个对象:转发组决定“发送哪些数据、什么时候发送”,转发目标决定“发送到哪里”。
最短配置流程
- 进入“开发配置 → 数据转发”,新建一个转发组。
- 变量范围选择“手动选择”,触发模式选择“定时”,定时间隔填
1000,保存。 - 重新编辑这个组,在下方“转发变量”中搜索一个已有变量,选中后点击旁边的加号,再点击“保存”。具体见维护组变量。
- 在转发组下新增目标,选择目标插件,填写连接参数并保存。需要外部字段或地址时,再维护目标的“变量属性”。
- 启用转发组和目标,确认目标运行正常。
- 到接收端查看这个变量的数据;仅看到目标在线,还不能说明已经上传成功。
页面入口
菜单路径:开发配置 → 数据转发。

| 区域 | 用途 |
|---|---|
| 转发组列表 | 新增、编辑、删除、启停和重启转发组。 |
| 转发目标列表 | 管理所选转发组下的目标、变量属性和目标运行状态。 |
| 详情区 | 查看详细信息、组日志、目标日志和调试页。 |
配置转发组与目标
配置转发组
点击转发组面板的新增按钮,打开转发组配置抽屉。

| 配置项 | 说明 |
|---|---|
| 名称 | 转发组显示名称,建议体现业务范围,例如“生产线A_实时上传”。 |
| 排序 | 控制组导航顺序,数字较小的在前;修改排序不会改变变量采样或目标发送顺序。 |
| 启用 | 控制该组是否运行。禁用后组下目标不会启动。 |
| 日志级别 | 组级日志详细程度。联调时可临时提高,稳定后恢复 Info。 |
| 变量范围 | 可选全部变量、手动选择、采集设备或采集组。 |
| 范围配置 | 使用采集设备或采集组范围时,填写对应名称;多个名称用英文逗号分隔。 |
| 触发模式 | 变化、定时、定时或变化。 |
| 定时间隔 | 触发模式包含定时时填写毫秒数或 Cron;常规周期优先填毫秒数,例如 1000。 |
| 在线过滤 | 开启后只发送在线变量。 |
| 分批模式 | 不分批、全部、按数据组、按设备或按采集组分批。 |
| 最大批量 | 组交付给目标的一个快照批次最多包含的变量记录数。目标还会按自身分片、Topic 和格式生成出站消息。 |
| 描述 | 记录组用途、范围和维护说明。 |
变量范围怎么选
| 范围 | 适用场景 |
|---|---|
| 全部变量 | 整站上传。 |
| 手动选择 | 只转发少量关键点位或试点变量。 |
| 采集设备 | 按设备名称筛选,适合同一设备或一组设备。 |
| 采集组 | 按变量的采集组筛选,适合按业务分组。 |
触发和分批怎么选
| 需求 | 建议 |
|---|---|
| 值改变就发送 | 选择“变化”。 |
| 固定周期上报 | 选择“定时”,填写毫秒数。 |
| 变化和周期都要发送 | 选择“定时或变化”。 |
| 按设备组织输入批次 | 分批选择“按设备”,再核对目标实际出站消息。 |
| 按业务分组组织输入批次 | 分批选择“按数据组”或“按采集组”。 |
| 数据量小、目标自行处理批量 | 选择“不分批”。 |
分批决定组向目标交付的记录边界,不直接决定外部消息的最终数量。目标还会按 Topic、列表或字典开关、模板和上传分片生成载荷。例如“按设备”再配置不同变量 Topic,仍可能形成多条 MQTT 消息;字典也可能把同一变量的多条记录合并为一个键。对接验收应查看接收端的完整消息,配置方法见上传模板与消息格式。
维护组变量
手动选择范围下,组变量列表就是该组的成员名单;其它范围下,组变量主要用于覆盖变量级设置。
只上传指定的几个变量
- 新建转发组,把“变量范围”设为“手动选择”,先点击“保存”。新组尚未保存时,不能添加变量。
- 在转发组列表中编辑刚保存的组,向下找到“转发变量”。
- 在“选择转发变量或覆盖配置”中输入变量名,选中正确的“设备名.变量名”。
- 点击选择框旁的加号。确认变量出现在下面的表格中,且“启用”已打开。
- 重复添加其他变量,点击弹窗底部“保存”。只选下拉选项而没点加号,不会加入该组。
- 重新打开组检查成员。要停止上传其中一个变量,可关闭该行“启用”并保存;要移出该组,删除该行并保存。这不会删除原来的采集变量。
新增变量后,检查该行“更新”与本次要求一致:固定值也要周期发送时选择“定时”或“定时或变化”。数据组和别名无额外要求时可留空。
| 配置项 | 说明 |
|---|---|
| 变量 | 选择要加入或覆盖配置的变量。 |
| 启用 | 控制该变量是否参与当前组。 |
| 数据组 | 用于“按数据组”分批。 |
| 更新 | 覆盖该变量的触发方式。 |
| 组触发 | 开启后变量变化可以唤醒整个转发组。 |
| 别名 | 当前组中的外部命名设置,是否进入载荷取决于目标、模板或脚本;默认 MQTT 实体不会自动用它替换变量名。 |
变量覆盖与整组触发
新增行会以当前组触发模式作为起点;保存后,该行“更新”就是变量在当前组内的独立覆盖配置,之后修改组触发模式不会自动替换已有行。组选择定时,不代表每个已覆盖为变化更新的成员都会按相同周期产生记录。排查漏发时,应重新打开成员行检查实际设置。
“组触发”用于一个关键变量变化时带出当前组的相关状态。例如设备运行标志变化时需要同时上报温度、压力,可将关键变量设为组触发,并确认这些伴随变量也在范围内。它不能把范围外的变量自动加入,也不等于每个变量都产生了新采样。
建议先使用两个测试变量:固定 B、改变 A,在接收端核对是否只收到 A;再开启 A 的组触发,改变 A,核对 B 是否按配置一同发送。保存后用新的值和时间检查,避免把保留消息或之前的批次算作本次结果。
关闭某行“组触发”不会移除成员,也不会禁止它随定时或其他触发发送;它只是不再用自身变化唤醒组。启用、更新模式、组触发分别控制成员资格、记录更新方式和唤醒来源,应逐项检查。
用四个变量验证分批
- 选择两个设备、每台两个测试点,先确认四点都在范围内并正常更新。
- 先用“全部”形成快照,再比较最大批量为
1与较大值时的入口批次和接收载荷。 - 改用“按设备”或“按采集组”,按变量身份检查每个集合。
- 需要跨设备业务分组时,在当前组的覆盖行中设置数据组,例如两个跨设备点归
Fast,另两个归Slow。 - “按数据组”下空数据组按未分组单点处理。需要严格分类时,应为全部成员填写数据组,再结合目标上传分片核对。
“不分批”将符合条件的变量按单点交给目标;“全部”等模式形成组快照,目标出站仍可能再次合并或拆分。采集组来自变量配置,数据组只属于当前转发组,二者不会互相修改。
验证在线过滤时,可以在维护窗口停止测试源:关闭过滤应保留离线质量及最后值,开启过滤应从新快照排除离线点。成员数量不因此改变;恢复源端后用新的在线采样确认重新进入,不能用外部空窗口单独判断目标断线。
配置转发目标
先选中转发组,再点击目标面板的新增按钮。

| 配置项 | 说明 |
|---|---|
| 所属转发组 | 当前目标归属的转发组;目标只消费该组范围内的数据。 |
| 目标名称 | 同一转发组内唯一,用于日志、冗余和导入导出定位。 |
| 启用 | 控制目标是否运行。启用后才会进入运行态并支持调试。 |
| 允许方法调用 | 默认关闭。允许直接调用此目标公开的全部方法;作为 MQTT 或 UA 入口调用别的实例时,检查那个实例的开关。详见插件方法调用。 |
| 插件 | 选择数据转发插件;选择后显示对应的插件属性。 |
| 日志级别 | 控制目标日志详细程度。 |
| 启动超时 | 目标连接或初始化的等待时间,单位秒。 |
| 描述 | 记录目标用途和维护说明。 |
| 插件目标属性 | 由具体插件提供,字段含义见对应插件手册索引。 |
插件参数在哪里看
公共页面只说明目标的创建和启停。MQTT、Kafka、RabbitMQ、Webhook、Modbus、OPC UA、IEC104、IEC61850、数据库和 SyncBridge 的专用参数、模板、调试页及排障方法,统一放在对应的数据转发插件手册。
目标变量属性
目标变量属性是“某个变量在某个目标下的外部映射”,不是转发组成员范围。
常见用途包括:
- 外部字段名、别名和自定义数据字段。
- Modbus 从站地址、数据类型和写入权限。
- MQTT、Kafka、RabbitMQ、Webhook 等目标的上传字段。
历史数据存储的采样范围和触发方式在转发组中配置,不在“目标变量属性”中重复设置。
配置前先选择有效的转发目标和变量。变量必须先进入转发组范围,目标变量属性才会生效。
- 选中目标,打开“变量属性”。
- 选择要配置的变量,填写当前插件要求的映射字段。
- 点击“新增变量属性”;修改已有记录时点击“更新变量属性”。
- 确认记录出现在列表中,再到接收端核对字段或地址。不要用这里代替上面的“转发变量”成员设置。

运行、调试与恢复
启停和验证
保存后依次确认:
- 转发组已启用。
- 目标已启用并显示运行状态。
- 目标的变量范围不是空集。
- 目标日志没有连接、认证或发送错误。
- 外部系统能看到一条测试数据。
目标在线不等于数据已经送达;必须结合目标日志和外部系统接收结果判断。
调试和日志
选中目标后,点击详情区的“调试”。不同插件会显示不同的专用调试页,例如发布、订阅、客户端列表、服务端状态或协议操作。

目标无法启动或数据没有发出时,先看“转发目标日志”,再看“转发组日志”。
| 现象 | 先检查 |
|---|---|
| 目标没有启动 | 组和目标是否启用,插件是否启用,目标参数是否完整。 |
| 没有数据发出 | 变量范围、变量启用状态、触发模式和在线过滤。 |
| 目标显示在线但外部没有数据 | 目标日志、外部账号权限、Topic/URL/表名和数据格式。 |
| 定时转发不触发 | 触发模式是否包含定时,定时间隔是否为毫秒数或 Cron。 |
| 变化转发不触发 | 变量是否真实发生变化;需要唤醒整组时检查“组触发”。 |
| 离线缓存持续增长 | 外部系统是否恢复,磁盘空间、上传分片和并发数是否足够。 |
离线缓存与历史补录
缓存容量、队列与分片组合及完整断网测试见离线缓存与补传;实时、历史、报警和时序库的选型与查询验收见数据库存储配置。
网络恢复后能否补齐历史,取决于发送端是否缓存了每条采样、消息是否保留来源时间,以及接收端是否启用了历史存储。
| 业务插件 | 缓存与时间行为 |
|---|---|
| MQTT 客户端、MQTT 服务端、Kafka、RabbitMQ、Webhook、ZeroMQ(PRO) | 支持通用失败重试缓存,原始变量采样保留采集、变化和记录时间。列表上传可保留多条同点记录;字典、模板和脚本可能合并记录或省略时间。外部接收端需按所选格式处理。MQTT 服务端发布成功不代表离线订阅者已收到消息。 |
| SyncBridge | Edge 使用通用缓存,恢复后等待 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、表结构和动态脚本需自行保留所需字段,并决定相同测点、相同时间记录的覆盖或去重规则。补录使用来源已处理的值,中心读取表达式不会重放。
断网验收
- 在边缘启用目标缓存,确认变量范围、触发方式和在线过滤满足采样要求;在中心启用对应历史目标。
- 记录几次测试值及其采集时间,在维护窗口断开上传链路,继续产生多条采样。
- 确认缓存增加,恢复链路后确认缓存逐步减少。
- 在中心查询断线期间的历史范围,逐条核对值、采集时间、记录时间和在线状态,确认实时值仍为最新值。
缓存不能恢复未采集、未被转发组生产或因容量超限被淘汰的数据。通用缓存按成功结果删除,不提供跨消息系统与数据库的唯一写入保证;确认丢失、QoS 重投、快照或批次重试都可能形成重复记录。
Gateway MQTT 大量补发时,超过中心每秒消息上限或并发处理容量的消息会被拒绝,已获 Broker 确认的消息不会因此自动回到边缘缓存。请根据补发峰值配置分片、发送速率和中心处理容量,并检查拒绝计数。
目标冗余
目标冗余用于主备目标切换。
- 主目标和备用目标必须在同一转发组内。
- 备用目标建议使用相同插件,并单独填写连接参数和认证信息。
- 备用目标不能同时作为其它目标的备用目标,也不要开启自己的冗余。
- 上线前手动切换一次,确认备用目标能够发送。
导入导出
- 点击转发组面板的“导出配置”,保留一份原始文件作为备份。
- 修改副本,保留导出的工作表名称、列名及组与目标之间的关联。换网关使用前,先在新网关准备好同名采集设备和变量。
- 点击“导入配置”,选择修改后的文件。选择文件后即开始导入,不是只预览。
- 查看导入结果中的各工作表和失败行。发生错误时,先检查当前配置,不能假定整份文件都没有写入。
- 重新打开转发组,检查成员、目标插件和变量属性,再确认目标连接和接收结果。
