Типы данных UA OPC Server

На протяжении всей жизни я не могу найти ответ на то, что, как я думал, было бы простым вопросом - как найти тип данных узла OPC.

Я пишу библиотеку UA OPC, которая включает в себя создание подписки и мониторинг / обновление тегов в этой подписке.

Запрос на запись в тег поступает из внешнего приложения и состоит из подписки и идентификатора тега вместе со значением объекта. Проблема заключается в том, что этот объект всегда является строкой (не спрашивайте), которую необходимо преобразовать в соответствующий тип данных для тега. Итак, мне нужно выяснить, какой тип данных связан с тегом. На данный момент запись завершается с ошибкой несоответствия типов.

Вот мой код обновления:

//
    // 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, как можно найти тип данных, чтобы я мог преобразовать строку в совместимый тип?

Спасибо

Стив

1 ответ

Прочитайте DataType атрибут VariableNode обсуждаемый.

Другие вопросы по тегам