0

对于我的一生,我无法找到我认为是一个简单问题的答案 - 如何找到 OPC 节点的数据类型。

我正在编写一个 UA OPC 库,其中涉及创建订阅和监视/更新此订阅中的标签。

写入标签的请求来自外部应用程序,由订阅和标签 ID 以及对象值​​组成。问题是这个对象总是一个字符串(不要问),需要将其转换为标签的适当数据类型。所以,我需要找出与标签关联的数据类型。目前,写入失败并出现类型不匹配异常。

这是我的更新代码:

//
    // Extension methods
    public bool Write<T>(long groupID, long tagID, T item)
    {
        var sub = FindSubscription(groupID);
        try
        {
            if (sub != null)
            {
                var node = sub.MonitoredItems.FirstOrDefault(m => (long)m.Handle == tagID);

                if (node != null)
                {
                    bool result = false;
                    var nodesToWrite = BuildWriteValueCollection(node.DisplayName, Attributes.Value, item);

                    StatusCodeCollection results;
                    DiagnosticInfoCollection diag;
                    try
                    {
                        _session.Write(
                        requestHeader: null,
                        nodesToWrite: nodesToWrite,
                        results: out results,
                        diagnosticInfos: out diag);


                        result = CheckReturnValue(results[0]);

                    }
                    catch (Exception ex)
                    {

                    }
                }
            }
        }
        catch  (Exception ex)
        {
            LogMessage(String.Format("Write GroupID {0}, Tag  {1}, Value {2}", groupID, tagID, item.ToString()), ex);
        }

        return false;
    }

我已经搜索了很长时间以找出如何确定节点的数据类型,但没有成功。那么,对于 MonitoredItem,如何找到数据类型以便我可以将字符串转换为兼容类型?

谢谢

史蒂夫

4

1 回答 1

1

阅读有问题的DataType属性VariableNode

于 2016-10-24T15:41:22.650 回答