随着发布事物板 4.0,我们很高兴地介绍 字段计算——一项简化遥测处理的新功能。字段计算可让您以简洁、用户友好的方式定义计算,使您的逻辑更易于管理、扩展和维护。

为了展示它的价值,我们将通过一个真实的例子来演示我们的 游泳池SCADA系统 解决方案模板。
但首先让我们定义问题:复杂的规则链和不必要的数据库负载
物联网解决方案的常见挑战之一是需要 得出新的遥测数据 来自现有的遥测数据——尤其是当这些遥测数据来自 多个相关设备.
就拿我们的 游泳池SCADA系统 举个例子。在此解决方案模板中,我们需要根据多个设备的遥测数据来计算管段的状态。我们将其表示为资产级别属性,例如 A1, A2, A3,基于设备的遥测数据 D1, D2, D3.
通常的方法
在 ThingsBoard 支持的物联网解决方案中,从多个相关设备获取遥测数据的一种常见且强大的方法是使用由多个规则节点组成的规则链。这种方法被广泛采用,并提供了跨一系列用例实现复杂处理逻辑的详细定制。

我们在 SCADA 模板中使用这种精确方法来计算水是否流过特定的管道段。

虽然此模式提供了灵活性和控制,但它还需要对规则引擎以及如何设计有效的规则链有深入的了解。
解决方案:实际字段计算
为了解决这些挑战,我们引入了 字段计算 — 一种计算源自多个实体的遥测值的新方法。
字段计算不会在每次新数据到达时从数据库中获取所需的遥测密钥,而是在其内部状态中维护最新值并直接使用它们进行计算。这消除了每次遥测更新时数据库交互的需要。

在游泳池 SCADA 系统中应用字段计算
在我们的 SCADA 解决方案中,我们之前在规则链中使用单个大型脚本来计算管段状态。让我提醒一下规则链中的主脚本是什么样子的。

很明显,这种方法很快就会变得很麻烦——所以让我们看看字段计算如何让它变得更好。
和字段计算,我们完全重构了逻辑。
我们没有使用一个大型脚本,而是创建了一个专用的 每个管段的字段计算,具有自己的逻辑和依赖关系——使系统更加模块化、可读性和可维护性。

仔细看看新方法
让我们来看看如何创建这样一个领域—— 热段流动:
-
我们指定了参数 — 相关实体所需的遥测密钥(例如
drainSegmentFlowing,filterSegmentFlowing, 和heatPumpIntakeValveOpened). - 我们选择了源实体 — 当前资产或相关设备,具体取决于参数。
- 我们编写了一个自定义脚本 — 定义逻辑的简短表达式:例如,如果所有先前的段都处于活动状态且阀门打开,则加热段被视为“流动”。
- 我们设置输出 — 定义结果的存储位置和方式(作为资产的属性)。

这个方法让你的逻辑更有条理 方便使用的, 更容易追踪,以及更多 高效的 而不是在一个脚本中管理所有内容。
参数类型的快速概述
字段计算支持 3种类型的参数,每个服务于不同的用例:
最新遥测 — 遥测密钥的最新值。 (在我们的 SCADA 示例中用于定义来自设备的实时遥测)。
属性 — 存储在实体上的属性值。 (还用于 SCADA 情况下获取其他管段状态)。
时间序列滚动 — 指定时间窗口内的历史时间序列数据,用于趋势分析。
虽然 时间序列滚动 未在我们的 SCADA 系统中使用,它非常适合需要基于时间窗口的计算的场景,例如计算过去几分钟或几小时的平均值或总计。

计算现场调试
每个字段都包含自己的 事件调试面板,您可以在其中跟踪计算历史记录、检查传入参数并查看每个遥测更新的输出结果。

字段计算如何改进游泳池 SCADA 系统
通过用字段计算替换旧的计算逻辑,我们实现了以下改进:
- 更清晰的模块化逻辑:每个管道段现在都有自己的专用表达式。
- 频繁遥测下性能更快:由于字段计算对最新值进行操作,而无需在每次更新时查询数据库,因此系统避免了不必要的数据库查询,从而加快了速度。
- 调试变得简单:每个字段都有一个调试面板,实时显示输入、逻辑执行和输出。无需挖掘规则链日志来追踪发生了什么。
结论
字段计算 帮助我们转变复杂的逻辑 游泳池SCADA系统 通过用自动实时评估代替手动规则链计算。这不仅减少了数据库负载,还提高了整个系统的清晰度。
尽管我们使用 SCADA 系统来演示该功能,但字段计算在涉及跨多个实体计算的任何解决方案中都很有用。
展望未来
从版本 4.1 开始,字段计算将能够 重新处理历史遥测数据。这意味着您可以重新计算过去的值,将改进的逻辑应用于早期数据,并确保整个时间线的准确性。
此功能将适用于 事物板 专业版(PE)仅有的。
探索字段计算
看看我们的示例视频和官方文档 了解有关字段计算如何工作以及如何开始使用它们的更多信息。