主要内容

从PI服务器读取数据

方法从OSIsoft™PI Server读取数据方法。用于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 = tags(客户端,名称=“OSIDemo_GU4涡轮*”
tagsTurbine =17×1表标签  ___________________________________________________________________________________________ " OSIDemo_GU4涡轮机。轴承温度。c73204fa e8f2 - 5513 - 1 - bc9 b5f097831d16”“OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" "OSIDemo_GU4汽轮机。冷却水入口温度。第a17 f987e786 - 7 - 5027 - 1492 - 0482 - f0ae04b9”“OSIDemo_GU4涡轮机。冷却水输出温度。62d8d7be-2b82-53bc-09f1-660ffa00aa70" "OSIDemo_GU4汽轮机。冷却水压力输出。7c04f479-ae18-5207-0690-514252308c5b" "OSIDemo_GU4汽轮机。自上次维护以来的小时数。ec8ae125 - 0 - ae5 5 - d45 - 1 - de6 - 0643 ffac4983”“OSIDemo_GU4涡轮机。润滑油进油温度。7fc3f299-b6ee-5e2e-3e7b-ca4ca59a9d9c" "OSIDemo_GU4涡轮。润滑油输出温度。03c2ec47-7719-5f48-32b5-6c961d1a7912" "OSIDemo_GU4涡轮。润滑油压力输出。9dd81865-26b3-57fb-0791-bf7a3cfea158" "OSIDemo_GU4涡轮。油位。201c4312-8852-50be-1d8b-297c216712ec" "OSIDemo_GU4涡轮。总运行小时。4438ad34-9e54-5075-1c76-19e3ac3fb728" "OSIDemo_GU4涡轮机。汽轮机振动。e4c9f243-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可以= datetime (“现在”)——(2天);

将结束日期设置为现在。

endDate = datetime (“现在”);

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

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

读取标签的所有记录值

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

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

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

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

startDate可以= datetime (vibrationEarliestTT.Time (1));

设置结束datetime到现在。

endDate = datetime (“现在”时区=“本地”);

根据您的系统,此查询可能返回大量数据。如果您有大量的数据历史记录,导致此操作太慢或不切实际,那么您可能想要跳过此步骤。

vibrationAllTT = read(client, 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良好04- 2021年11月20:35:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.73良好04- 2021年11月20:40:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7" 0.86良好04- 2021年11月20:45:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.75良好04- 2021年11月20:50:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.73良好04- 2021年11月20:55:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7" 0.85良好04- 2021年11月21:00:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.83良好04- 2021年11月21:05:00 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7”0.97良好04- 2021年11月21:10:00”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7" 0.77良好04- 2021年11月21:15:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e- 59c3 -3e29-595f32095ce7" 0.72良好04- 2021年11月21:20:00 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7“1.02良好04- 2021年11月21:25:00”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.83良好04- 2021年11月21:30:00”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.89良好04- 2021年11月21:35:00”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e- 593c3e29 -595f32095ce7”0.88良好04- 2021年11月21:40:00”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.95好

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

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

vibrationInterpolatedTT = read(client, 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良好04- 2021年11月21:25:43”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.8386良好04- 2021年11月21:55:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.80423好04- 11月-2021 22:25:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e- 593c3e29 -595f32095ce7" 0.86857良好04- 11月-2021 22:55:43 "OSIDemo_GU4汽轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.80717良好04- 11月-2021 23:25:43 "OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.71863良好04- 11月-2021 23:55:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.96133好05- 11月-2021 00:25:43 "OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7" 0.8542好05- 11月-2021 00:55:43 "OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.8良好05- 11月-2021 01:25:43”OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7" 0.74573好05- 11月-2021 01:55:43 "OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e- 593a -3e29-595f32095ce7”0.72857好05- 11月-2021 02:25:43”OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.79997好05- 11月-2021 02:55:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.8385好05- 11月-2021 03:25:43 "OSIDemo_GU4涡轮。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7" 0.79857好05- 11月-2021 03:55:43 "OSIDemo_GU4涡轮机。轴承振动。64a3ce99-f31e-593c-3e29-595f32095ce7”0.74147好

清理

在使用完PI Server之后,断开连接并从工作区中清除客户机的变量,从而删除客户机。

清晰的客户端
Baidu
map