PI 实时数据库系统(Plant Information System)是由美国 OSI Software 公司开发的基于C/S、B/S结构的商品化软件应用平台,是工厂底层控制网络与上层管理信息系统连接的桥梁,PI在工厂信息集成中扮演着特殊和重要的角色。PI实时数据库系统适用于电力、石油、化工、冶金、造纸、制药、水处理、食品饮料、通讯等各种生产流程企业的生产过程优化。
很多场景需要从PI读取数据,这个怎么搞?
这个读数的套路和PHD差不多,也是先安装客户端,然后通过OSI自带的dll读取数据。OSIsoft.AFSDK.dll 就这个玩意,这个是最新版本。
安装客户端程序 PI-AF-Client_2018-SP3-Patch-3_.exe,安装过程基本上就是下一步下一步。
安装完了具体配置不算太复杂,稍微研究就能明白。
客户端搞好了,下一步就是引用动态库 OSIsoft.AFSDK.dll 这个文件客户端安装的安装目录就有。
具体写代码也简单,首先是连接PI服务器示意代码如下:
/** using OSIsoft.AF; using OSIsoft.AF.PI; using OSIsoft.AF.Asset; using OSIsoft.AF.Time; **/ private static string piAddress = "pi"; //配置客户端名称 private static PIServer piServer; private string StartServer() { try { if (piServer == null) { piServer = PIServer.FindPIServer(piAddress); piServer.Connect(); } return string.Empty; } catch (Exception ex) { return "连接PIserver失败 " + ex.Message; } }
然后就是读取数据
string[] tagArray = { "123.abc","124.abc" }; //点名 PIPointList pList = new PIPointList(PIPoint.FindPIPoints(piServer, tagArray)); AFListResults<PIPoint, AFValue> list = pList.CurrentValue(); //遍历这个即可 foreach (AFValue value in list.Results) { object o = value.Value; string key = value.PIPoint.Name; dateTime dt = value.Timestamp.LocalTime; int i = (int)value.Status; // }
好像就差不多了,数据出来了,剩下事情是你想干啥你就干啥了。