主要内容

从PI服务器读取数据

此示例向您展示如何从OSIsoft™PI服务器读取数据方法。PI的工业通信工具箱™的读取功能提供了多种选项和灵活的方式来从服务器获取数据。运行此示例需要安装OSIsoft PI系统。本例中使用的演示标签由OSIsoft提供,可以从以下位置下载:

https://learning.osisoft.com/asset-based-af-example-kits

PI服务器能够存储数百个资产数十年的实时数据。PI系统的MATLAB®接口利用系统的资产框架(AF)来访问资产的时间序列数据。

创建客户端/服务器连接并检索所需的标签

连接到PI服务器piclient函数。在本例中,使用Windows计算机名作为PI AF服务器名。根据PI系统配置,您的情况可能有所不同。

主机= getenv(“COMPUTERNAME”);客户端= piclient(主机);

索取一份标签与利益相关的资产。有关更详细的信息,请参见开始从PI服务器访问数据

tagsTurbine =标签(客户端,名称=“OSIDemo_GU4涡轮*”
tagsTurbine =17×1表标签  ___________________________________________________________________________________________ " OSIDemo_GU4涡轮机。轴承温度。c73204fa-e8f2-5513-1bc9-b5f097831d16" "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" "OSIDemo_GU4涡轮。冷却水进水温度。f987e786-7a17-5027-1492-0482f0ae04b9" "OSIDemo_GU4涡轮。冷却水输出温度。62d8d7be-2b82-53bc-09f1-660ffa00aa70" "OSIDemo_GU4涡轮。冷却水压力输出。7c04f479-ae18-5207-0690-514252308c5b" "OSIDemo_GU4涡轮。距离上次维护的时间。ec8ae125-0ae5-5d45-1de6-0643ffac4983" "OSIDemo_GU4涡轮。润滑油进油温度。7fc3f299-b6ee-5e2e-3e7b-ca4ca59a9d9c" "OSIDemo_GU4涡轮。润滑油输出温度。03c2ec47-7719-5f48-32b5-6c961d1a7912" "OSIDemo_GU4涡轮。润滑油油压输出。9dd8185 -26b3-57fb-0791-bf7a3cfea158" "OSIDemo_GU4涡轮。油位。201c4312-8852-50be-1d8b-297c216712ec" "OSIDemo_GU4涡轮。总运行小时。4438ad34-9e54-5075-1c76-19e3ac3fb728" "OSIDemo_GU4涡轮。汽轮机振动。e4c9f43 -d5c9-5f5c-3b82-ed8076592ff9" "OSIDemo_GU4涡轮。叶片角度。3ddc1860-a9cc-54ee-2d41-595eb92fc677" "OSIDemo_GU4涡轮。水流。cf5b9b79-af11-5637-2317-f518e59b0c9f" "OSIDemo_GU4 Turbine.Water in Oil.562f483e-a814-5b11-3dd7-44b9735068ca" "OSIDemo_GU4 Turbine.Water pH Intake.2f31c444-6f9a-5005-083c-db8531de4d07" ⋮

读取标签的最新值

方法读取标记的最近记录值方法。

vibrationLatestTT = read(客户端,tagsTurbine.Tags(2))
vibrationLatestTT =1×3的时间表时间标记价值地位  _________________________ ____________________________________________________________________________ _____ ______ 21 - 12月- 2021 15:40:00”OSIDemo_GU4涡轮机。轴承振动:64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8良好

在一段时间内读取值

要在一段时间内读取值,首先定义一个时间段。例如,要读取过去两天内标记的值,请使用DateRange名称-值对指定开始datetime和结束datetime.将开始日期设置为两天前。

startDate =日期时间(“现在”) -天(2);

将结束日期设置为现在。

endDate =日期时间(“现在”);

使用这些参数指定起始datetime和结束datetime在你的请求中。

vibrationTwoDaysTT = read(客户端,tagsTurbine.Tags(2), DateRange = [startDate, endDate])
vibrationTwoDaysTT =559×3的时间表时间标记价值地位  _________________________ ____________________________________________________________________________ _____ ______ 19日- 12月- 2021 10:45:00”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.83 Good 19- december 2021 10:50:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.86 Good 19- december 2021 10:55:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 1.03 Good 19- december 2021 11:00:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.85 Good 19- december 2021 11:05:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8 Good 19- december 2021 11:10:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.88 Good 19- december 2021 11:15:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.89 Good 19- december 2021 11:20:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.89 Good 19- december 2021 11:25:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.79 Good 19- december 2021 11:30:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.88 Good 19- december 2021 11:35:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.84 Good 19- december 2021 11:40:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.7 Good 19- december 2021 11:45:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 1.04 Good 19- december 2021 11:50:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.83 Good 19- december 2021 11:55:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.82 Good 19- december 2021 12:00:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.74良好的\

读取标签的所有记录值

要读取标签的所有记录值,知道数据记录何时开始是很有用的。你可以使用最早的名称-值对来确定这一点。

vibrationexpiresttt = read(客户端,tagsTurbine.Tags(2),最早= true)
vibrationEarliestTT =1×3的时间表时间标记价值地位  _________________________ ____________________________________________________________________________ _____ ______ 04 - 11 - 2021 20:25:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" NaN不良

注意,这个标记的值在最早记录的时间是一个NaN。对于系列中的第一个数据点通常是这样,因为PI服务器在创建该数据点时指示该数据点的状态为Bad。如果需要,您可以采取措施将其从数据集中排除。

这个最早的数据点标识了第一个记录值的时间。现在你可以使用这些信息来建立起跑datetime为您的要求。

startDate = datetime(vibrationattempesttt . time(1));

设定结局datetime到现在。

endDate =日期时间(“现在”, TimeZone =“本地”);

根据您的系统,此查询可能返回大量数据。如果您拥有大量的历史数据,使得此步骤过于缓慢或不切实际,那么您可能希望跳过此步骤。

vibrationAllTT = read(客户端,tagsTurbine.Tags(2), DateRange = [startDate, endDate])
vibrationAllTT =13171×3的时间表时间标记价值地位  _________________________ ____________________________________________________________________________ _____ ______ 04 - 11 - 2021 20:25:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" NaN Bad 04- 11月-2021 20:30:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.72 Good 04- 11月-2021 20:35:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.73 Good 04- 11月-2021 20:40:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.86 Good 04- 11月-2021 20:45:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.75 Good 04- 11月-2021 20:50:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.73 Good 04- 11月-2021 20:55:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.85 Good 04- 11月-2021 21:00:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.83 Good 04- 11月-2021 21:05:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.97 Good 04- 11月-2021 21:10:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.77 Good 04- 11月-2021 21:15:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.72 Good 04- 11月-2021 21:20:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 1.02 Good 04- 11月-2021 21:25:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.83 Good 04- 11月-2021 21:30:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.89 Good 04- 11月-2021 21:35:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.88 Good 04- 11月-2021 21:40:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.95良好的\

利用PI服务器提供的线性插值减少数据集

请注意上一步的结果中有大量的数据点。方法可以减少数据集时间间隔名称-值对。例如,下面以30分钟为间隔读请求数据。的时间间隔名称-值对请求PI服务器对记录的值进行线性插值,并以指定的间隔提供结果。

vibrationInterpolatedTT = read(客户端,tagsTurbine.Tags(2), DateRange = [startDate, endDate], Interval = minutes(30))
vibrationInterpolatedTT =2247×3的时间表时间标记价值地位  _________________________ ____________________________________________________________________________ _______ ______ 04 - 11 - 2021 20:25:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" NaN Bad 04- 11月-2021 20:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.84713 Good 04- 11月-2021 21:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8386 Good 04- 11月-2021 21:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.80423 Good 04- 11月-2021 22:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.86857 Good 04- 11月-2021 22:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.80717 Good 04- 11月-2021 23:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.71863 Good 04- 11月-2021 23:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.96133 Good 05-November-2021 00:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8542 Good 05-November-2021 00:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8 Good 05-November-2021 01:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.74573 Good 05-November-2021 01:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.72857 Good 05-November-2021 02:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.79997 Good 05-November-2021 02:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8385 Good 05-November-2021 03:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.79857 Good 05-November-2021 03:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.74147好

清理

当您完成PI Server的工作后,断开连接并从工作区中清除客户机的变量来删除客户机。

清晰的客户端
Baidu
map