边缘工业物联网设备的预测性维护
作者:Jason Myers / 用例
2023年3月22日
导航至
在边缘工作
在工业运营中,时间就是金钱。过程和机械越有效率,对企业就越有利。然而,提供工业机器的主动监控和维护并不容易,尤其是随着这些机器变得越来越复杂和分布式。在分布式系统中,不可能为每个资产配备维护人员。
边缘是物理世界与数字世界交汇的地方。随着越来越多的组织将工作负载推向边缘,边缘资源不断增加,在许多地方拥有这么多设备,使得自动化监控变得必要,以简化操作并优化有限的人力。
边缘监控工具
幸运的是,对于工业物联网(IIoT)和运营技术(OT)从业者来说,InfluxDB 提供了专门设计来解决这一需求的工具。 Telegraf 是一个基于插件的、开源的数据收集代理,可以从几乎任何地方收集时序数据。InfluxDB 的开源版本是一个轻量级数据库,可以在边缘设备或其附近运行,以在源附近存储和分析数据。
这些工具有助于管理边缘的数据,但在分布式系统中,通常需要创建所有边缘设备的集中视图,以创建对运营的整体视图。
例如,假设有一家太阳能发电公司,其太阳能电池板设施遍布全国。该公司可以在边缘使用 InfluxDB 监控每个单独的安装,并将这些数据自动发送到 InfluxDB Cloud 进行集中存储和分析。 由 IOx 驱动的 InfluxDB Cloud 允许用户实时分析数据以创建可视化、预测性维护模型等。
设置边缘数据复制
边缘数据复制(EDR)是 InfluxDB OSS 2.x 中的一项功能,它会在磁盘上创建一个持久队列,并自动将数据发送到 InfluxDB 的云实例。
要开始,您需要在边缘设备或其附近安装 InfluxDB。Telegraf 是将数据传入 InfluxDB 的好方法,但一旦配置 Telegraf 以摄取数据,您就不需要为 EDR 对其进行任何进一步的操作。
创建连接
一旦拥有InfluxDB实例,您需要创建一个远程连接。在这种情况下,本地源位于边缘,远程设备是云端。远程名称可以是您需要的任何名称。假设我们的太阳能公司正在将此数据汇总以供总部使用,因此我们将远程命名为 hq
,这样任何在边缘工作的人都知道数据将最终去哪里。您需要从您的云实例中获取组织ID、URL和API令牌,并将它们插入以下命令中。
influx remote create
--name hq
--remote-org-id "id"
--remote-url "url"
--remote-api-token "token"
这将返回一个 remote-id
,代表特定边缘InfluxDB实例与InfluxDB Cloud实例之间的连接。您可以在同一个边缘实例的多个桶中使用相同的远程连接,因为您将在下一步中指定这些详细信息。
指定数据
在继续您的InfluxDB OSS边缘实例时,您需要识别您想要复制的源和目标数据。
influx replication create
--name solar_station_sw1
--remote-id "id"
--local-bucket-id sw1_data
--remote-bucket sw_regional
由于有多个太阳能设施,我们将其命名为 solar_station_sw1
,因为它位于西南地区。我们需要在 --remote-id
标志中输入创建连接时收到的 remote-id
。最后,我们将识别数据源和目标桶。
在这种情况下,假设整个SW1站点的所有数据都进入OSS实例中的一个单个桶,桶ID为 sw1_data
。由于总部分析师收集来自全国多个地区的数据,他们将其分割以更容易跟踪。在云实例中有一个 sw_regional
桶,我们将数据发送到那里。
一旦激活,SW1设施中的设备收集的所有原始数据将自动复制到云端。如果连接中断,OSS实例将继续收集数据,并在重新建立连接后刷新队列,从而降低丢失任何数据的可能性。(队列大小可配置。)一旦在云端,我们可以利用InfluxDB IOx的全部功能从我们的数据中产生价值。
如果我们想管理我们的复制,我们可以使用以下选项。
##Management commands
##Display a list of all replications
influx replication list
##Update replication configurations
influx replication update
##Delete a replication
influx replication delete
优化EDR传输
此设置效果很好,但它也可能在网络上发送大量数据。在边缘拥有所有这些详细数据是有帮助的,但总部不一定需要那么高粒度的数据。它可以满足更粗糙粒度的数据。
我们可以在OSS InfluxDB实例上使用 下采样 来保持我们数据的外观,并传输更少的数据,从而释放吞吐量带宽并节省成本。
InfluxDB OSS继续支持Flux语言,您可以使用简单的Flux脚本来聚合您的数据。
我们可以在InfluxDB实例中创建一个新的桶。让我们称它为 sw1_data_ds
。
现在我们使用该桶作为下采样脚本的目的地。假设总部最关心的是总发电量,以瓦特为单位。
from(bucket: "sw1_data")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => (r["_measurement"] == "energy_prod"))
|> filter(fn: (r) => (r["_field"] == "wattage"))
|> aggregateWindow(every: 60s, fn: mean, createEmpty: false)
|> to(bucket: "sw1_data_ds ")
此脚本从我们的原始桶 sw1_data
中获取数据,过滤出仅包含瓦特值的数据。然后,该值在1分钟间隔内平均,并将该聚合写入我们的新 sw1_data_ds
桶。
运行该脚本后,现在我们的OSS实例中有两个数据桶:一个包含所有原始数据,另一个仅包含按1分钟间隔平均的功率数据。
HQ需要在一个名为 sw_regional_ds
的云实例中创建一个新的数据桶,这是我们发送数据的地方。
在这个时候,我们可以删除所有原始数据的副本,并为我们的降采样数据创建一个新的副本。
influx replication create
--name solar_station_sw1_ds
--remote-id "id"
--local-bucket-id "insert-bucket-id"
--remote-bucket sw_regional_ds
分析和可视化
一旦这些数据到达云端,总部用户可以使用由IOx支持的InfluxDB Cloud进行实时分析和创建可视化。他们可以使用这些数据来检测问题、安排技术人员,甚至预测维护,以便他们可以在不影响最终用户或造成其他中断的受控环境中进行主动维护。
幸运的是,因为您在边缘配置了EDR,所以将运行在TSM引擎上的InfluxDB Cloud实例的现有副本更新为运行在IOx引擎上的副本非常容易。这里的目的是将您的数据从边缘传输到云端,以便您可以从中获得更多价值。
因此,请为您的分布式工业系统尝试EDR,并告诉我们您的想法。我们很乐意听您的故事。 告诉我们您使用InfluxDB Cloud(由IOx支持)构建的内容,您甚至可能会得到一些免费的小礼物!