3

我有一个 C# 应用程序,它使用基于 PI-AF-SDK-Basic-Samples/CreatePIPointsExample.cs 的代码在 master · osisoft/PI-AF-SDK-Basic-Samples · GitHub 上创建一个新的 Pi Point 

这一点似乎创建得很好 - 这是在 SMT 中进行标签搜索之后的屏幕截图:

在此处输入图像描述

我的问题是,当我的同一个 C# 应用程序搜索新创建的 Pi Point 时找不到它。搜索代码如下:

       

private static List<PIPoint> GetPiPoints(PIServer piServer)
        {
            var criteria = GetCriteria("61");
            var foundPoints = PIPoint.FindPIPoints(piServer, criteria).ToList();

            criteria = GetCriteria("63");
            foundPoints.AddRange(PIPoint.FindPIPoints(piServer, criteria).ToList());


            criteria = GetCriteria("64");
            foundPoints.AddRange(PIPoint.FindPIPoints(piServer, criteria).ToList());


            return foundPoints;
        }

private static List<PIPointQuery> GetCriteria(string location)
        {
            List<PIPointQuery> criteria = new List<PIPointQuery>();

            PIPointQuery whereClause1 = new PIPointQuery(PICommonPointAttributes.Location1, OSIsoft.AF.Search.AFSearchOperator.Equal, location);
            PIPointQuery whereClause2 = new PIPointQuery(PICommonPointAttributes.PointSource, OSIsoft.AF.Search.AFSearchOperator.Equal, "o");

            criteria.Add(whereClause1);
            criteria.Add(whereClause2);

            return criteria;
        }

所以,我的理解是,这应该找到所有“location1”属性值为 61、63 或 61 且“pointSource”为“o”的点 - 我尝试过大写和小写“o”

从屏幕截图中,您可以看到新创建的“Kuba_99x”标签就是这种情况,但在搜索中找不到它,尽管有数千个其他现有标签。

请问我哪里出错了?

4

2 回答 2

3

Pi代码实际上很好。问题是,我的代码在选择后过滤了新创建的记录。

于 2017-06-27T20:57:01.720 回答
1

Location1在 PI Data Archive 上存储为 Int32。该location参数需要是一个int而不是string

更多问题将在 OSIsoft PI Square 解决,因为您在那里也有帖子。

于 2017-06-22T19:28:41.917 回答