如何通过C#读取PI实时数据

     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,安装过程基本上就是下一步下一步。

如何通过C#读取PI实时数据

 安装完了具体配置不算太复杂,稍微研究就能明白。

 客户端搞好了,下一步就是引用动态库 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;

      //
}

  好像就差不多了,数据出来了,剩下事情是你想干啥你就干啥了。

上一篇:CF817E Choosing The Commander 题解


下一篇:iOS11新特性:新增拖拽交互体验(二)