历史版本4 :PI数据库API循环取数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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 可能存在变化,所以每次取数前需要进行更新。

1723430940481674.png

2. 操作步骤编辑

2.1 准备配置表

需要手动创建一张配置表(名称为 pi_data),该配置表需要包含字段:

  • name:代表装置名称;该字段起到备注作用,会同步到最终要保存的表中,帮助用户识别每条数据对应哪个装置。

  • metering:代表位号;用户需要准备初始值;每个装置对应的位号可能会有变化,PI 系统取数前需要更新该字段。

  • web_id:用户需要准备初始值;该值可能会有变化,PI 系统取数前需要更新该字段。

3.png

2.2 添加任务参数

新建定时任务,点击「参数列表」,添加任务参数start_time,值为 yyyy-mm-dd,便于后续使用该参数从 PI 系统中取出当天某个时间段的数据。如下图所示:

4.png

2.3 获取 web_id

需要通过位号获取 web_id ,再使用 web_id 从 PI 系统中取数。

2.3.1 将位号输出为参数

1)拖入参数赋值节点,将 2.1 节表中的 metering 字段取出并输出为参数。如下图所示:

注:建议给参数设置一个调试值,便于后续节点调用该参数时预览效果;调试值并不参与任务的实际运行。

7.png

2.3.2 循环容器设置

由于 API 取数时,每次只能使用一个位号来获取 web_id ,由于有多个位号参数,所以需要使用循环容器节点,遍历所有位号参数,获取对应的 web_id。

拖入循环容器节点,循环方式选择遍历循环,遍历对象勾选参数 metering。如下图所示:

8.png

2.3.3 取出最新web_id并更新pi_data表

本节步骤中,我们需要根据 metering 字段获取对应的 web_id ,并将最新的 web_id 和 name 字段更新到 pi_data 表中。

1)循环容器节点中拖入数据转换节点,进入数据转换节点。

2)拖入API输入算子,使用 metering 字段获取对应的 web_id。如下图所示:

用户根据实际情况,设置认证、Headers参数。

9.png

3)点击「数据预览」,如下图所示:

Name 字段对应 2.1 节 pi_data 中的 metering 字段。

10.png

4)由于 pi_data 表中的 metering 、web_id 字段可能存在变化,需要在 PI 系统取数前更新这两个字段。

拖入「DB表输出」算子,更新 pi_data 表中的 metering 、web_id 字段。如下图所示:

2.png

2.4 将 web_id 输出为参数

拖入「参数赋值」节点,取出 pi_data 表中的 web_id 字段,并输出为参数。如下图所示:

注:建议给参数设置一个调试值,便于后续节点调用该参数时预览效果;调试值并不参与任务的实际运行。

11.png

2.4 PI系统取数

2.4.1 循环容器设置

PI 系统取数时,每次只能使用一个 web_id 进行取数,所以需要使用循环容器节点,遍历所有 web_id 取出对应的数据。

拖入循环容器节点,循环方式选择遍历循环,遍历对象勾选参数 web_id、metering。如下图所示:

12.png

2.4.2 PI 系统取数

本节中,我们使用 web_id 参数从 PI 系统中取出所需数据。

1)循环容器节点中拖入「数据转换」节点,进入「数据转换」节点。

2)拖入API输入算子,使用 web_id 参数从 PI 系统中取出所需数据。如下图所示:

用户根据实际情况,设置认证、Headers参数。

13.png

点击「数据预览」,取出数据如下图所示:

14.png

Items 字段为为实际需要数据,由于是 JSON 格式数据,需要进行解析。

3)拖入JSON解析算子,解析 Items 字段。如下图所示:

15.png

点击数据预览,如下图所示:

16.png

4)由于解析结果中没有位号和 web_id 字段,无法区分当前值属于哪个装置,需要新增列,将参数 web_id 输出,为方便后续查验,将执行时间一起输出。

拖入一个新增计算列算子,将 web_id 值和执行时间输出。如下图所示:

17.png

点击数据预览,如下图所示:

3.png

5)当前数据无法看出对应的哪个装置,若用户需要,可使用数据关联算子,与 pi_data 表中的 name 字段关联(连接字段选择 web_id 即可)

2.4.3 输出数据

拖入DB表输出算子,将最终数据输出。如下图所示:

18.png

写入方式选择追加写入数据

2.5 效果查看

任务运行成功后,可看到数据已从 PI 系统取出,如下图所示:

19.png

用户可点击「发布」按钮,将任务发布到生产模式中。详情请参见:开发模式与生产模式