从HDA服务器读取数据返回E_INVALIDHANDLE

时间:2015-07-03 21:33:36

标签: c# dcom opc

我使用OpcNetApi组件连接和读取Matrikon OPC HDA服务器的数据。正在进行连接,但是当我尝试从服务器提取某些测试数据时,我收到E_INVALIDHANDLE错误为ResultID。这是我有多远:

Opc.URL url = new Opc.URL("opchda://localhost/Matrikon.OPC.Simulation.1");
OpcCom.Factory fact = new OpcCom.Factory();
hdaServer = new Opc.Hda.Server(fact, url);
hdaServer.Connect();

// Read data from historian
DateTime[] times = new DateTime[1];
times[0] = DateTime.Now;

Opc.ItemIdentifier[] items = new Opc.ItemIdentifier[1];
items[0] = new Opc.ItemIdentifier();
items[0].ItemName = "Random.ArrayOfString";
items[0].ClientHandle = null; // which handle should I use?
ItemValueCollection[] itemsColl = hdaServer.ReadAtTime(times, items);

不会抛出任何错误,但在itemsColl内找不到任何结果。

Random.ArrayOfString是现有的OPC项目,具有历史值。

更新

我找到了一个我正在处理的解决方案:https://github.com/jdecuyper/OPC-HDA-Client

1 个答案:

答案 0 :(得分:1)

我认为你在ReadAtTime方法中使用的日期是错误的。此方法在特定时间读取数据。尝试使用ReadRaw或ReadProcessed方法,您可以从日期范围读取数据。