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;
//
}
好像就差不多了,数据出来了,剩下事情是你想干啥你就干啥了。