1. 概述
本文讲述如何从 PI 数据库取数。
1.1 什么是PI数据库
PI 数据库是由美国 OSIsoft 公司开发的一种适用于实时数据管理的系统。它提供了高性能的数据采集、存储和检索服务,通常用于工业自动化、过程控制、能源管理等领域。
1.2 取数方式
PI Web API 是 PI System 提供的基于 Web 的应用程序编程接口(API),允许开发人员通过网络请求的方式访问 PI 数据,并与 PI System 进行集成。
PI Web API 支持常见的网络协议,如 HTTP 和 HTTPS,可以使用各种编程语言和开发框架来发出请求并处理响应。使用 PI Web API 时,开发人员可以使用认证方式获得对 PI 系统的访问权限,并通过发送适当的 HTTP 请求来获取数据、执行操作或执行其他功能。
PI Web API 的返回结果通常以常见的数据格式,如 XML 或 JSON 格式进行表示,以便可以轻松地进行解析和处理。
1.3 取数思路
在 PI 系统中,每个装置都有对应的位号,位号不能直接取值,需要用位号获取对应的 web_id ,再用 web_id 通过 API 取数的方式,返回需要的值。
注:装置对应的位号与 WEBID 可能存在变化,所以每次取数前需要进行更新。
2. 操作步骤
2.1 准备配置表
需要手动创建一张配置表(名称为 pi_data),该配置表需要包含字段:
name:代表装置名称;用户需要准备初始值;该字段起到备注作用,若用户实际场景中需要,可同步到最终要保存的表中,便于识别每条数据对应哪个装置。
metering:代表位号;用户需要准备初始值;每个装置对应的位号可能会有变化,PI 系统取数前需要更新该字段。
web_id:用户需要准备初始值;该值可能会有变化,PI 系统取数前需要更新该字段。
2.2 添加任务参数
新建定时任务,点击「参数列表」,添加任务参数start_time,值为 yyyy-mm-dd,便于后续使用该参数从 PI 系统中取出当天某个时间段的数据。如下图所示:
2.3 获取 web_id
需要通过位号获取 web_id ,再使用 web_id 从 PI 系统中取数。
2.3.1 将位号输出为参数
1)拖入「参数赋值」节点,将 2.1 节表中的 metering 字段取出并输出为参数。如下图所示:
注:建议给参数设置一个调试值,便于后续节点调用该参数时预览效果;调试值并不参与任务的实际运行。
2.3.2 循环容器设置
由于 API 取数时,每次只能使用一个位号来获取 web_id ,由于有多个位号参数,所以需要使用「循环容器」节点,遍历所有位号参数,获取对应的 web_id。
拖入「循环容器」节点,循环方式选择遍历循环,遍历对象勾选参数 metering。如下图所示:
2.3.3 取出最新web_id并更新pi_data表
本节步骤中,我们需要根据 metering 字段获取对应的 web_id ,并将最新的 web_id 和 metering 字段更新到 pi_data 表中。
1)「循环容器」节点中拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「API输入」算子,使用 metering 字段获取对应的 web_id。如下图所示:
用户根据实际情况,设置认证、Headers参数。
3)点击「数据预览」,如下图所示:
Name 字段对应 2.1 节 pi_data 中的 metering 字段。
4)由于 pi_data 表中的 metering 、web_id 字段可能存在变化,需要在 PI 系统取数前更新这两个字段。
拖入「DB表输出」算子,更新 pi_data 表中的 metering 、web_id 字段。如下图所示:
2.4 将 web_id 输出为参数
拖入「参数赋值」节点,取出 pi_data 表中的 web_id 字段,并输出为参数。如下图所示:
注:建议给参数设置一个调试值,便于后续节点调用该参数时预览效果;调试值并不参与任务的实际运行。
2.4 PI系统取数
2.4.1 循环容器设置
PI 系统取数时,每次只能使用一个 web_id 进行取数,所以需要使用「循环容器」节点,遍历所有 web_id 取出对应的数据。
拖入「循环容器」节点,循环方式选择遍历循环,遍历对象勾选参数 web_id、metering。如下图所示:
2.4.2 PI 系统取数
本节中,我们使用 web_id 参数从 PI 系统中取出所需数据。
1)「循环容器」节点中拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「API输入」算子,使用 web_id 参数从 PI 系统中取出所需数据。如下图所示:
用户根据实际情况,设置认证、Headers参数。
点击「数据预览」,取出数据如下图所示:
Items 字段为为实际需要数据,由于是 JSON 格式数据,需要进行解析。
3)拖入「JSON解析」算子,解析 Items 字段。如下图所示:
点击「数据预览」,如下图所示:
4)由于解析结果中没有位号和 web_id 字段,无法区分当前值是根据哪个 web_id 取出的,需要新增列,将参数 web_id 输出,为方便后续查验,将执行时间一起输出。
拖入一个「新增计算列」算子,将 web_id 值和执行时间输出。如下图所示:
点击「数据预览」,如下图所示:
5)当前数据无法看出对应的哪个装置,若用户需要,可使用「数据关联」算子,与 pi_data 表中的 name 字段关联(连接字段选择 web_id 即可)。
2.4.3 输出数据
拖入「DB表输出」算子,将最终数据输出。如下图所示:
写入方式选择「追加写入数据」。
2.5 效果查看
任务运行成功后,可看到数据已从 PI 系统取出,如下图所示:
用户可点击「发布」按钮,将任务发布到生产模式中。详情请参见:开发模式与生产模式