Моделирование адресного пространства OPC UA - PullRequest
0 голосов
/ 29 августа 2018

Моя ситуация такова:

Мой Raspberry Pi подключен к нескольким датчикам (3 датчика температуры, 1 датчик влажности, 2 датчика тока и 1 датчик давления). Датчики измеряют значения от двигателя, и в настоящее время я пытаюсь разработать модель адресного пространства для моего сервера OPC UA, который будет работать на Raspberry Pi.

Пока все хорошо. Как я уже читал во многих руководствах, моделирование адресного пространства похоже на разработку диаграммы классов с наследованием. Вот почему я определил EngineType (<- ObjectType) и создал из него объект (который называется «Engine»). EngineType в настоящее время определяет переменные (например, переменные-члены в ООП) для каждого значения датчика. </p>

Но вот мой вопрос:

Поскольку каждый датчик имеет свой собственный тип (температура, давление, влажность,…), имя и тип значения (Цельсий, мбар, влажность, ..) и диапазон значений, я думаю, было бы неплохо, если бы я определил SensorType (Узел ObjectType) и, следовательно, ObjectTypes для каждого типа датчика: TempSensorType, HumiditySensorType и т. Д.

Таким образом, согласно моему предложению, объект Engine будет иметь группу членов, которые все создаются из типов объектов.

Это лучшая практика в OPC UA или слишком сложная? Есть ли более элегантный способ решить эту проблему? Надеюсь, я достаточно ясно объяснил свою ситуацию.

Я ценю любую помощь или предложение, которое вы можете мне дать! Заранее большое спасибо, если у вас есть какие-либо вопросы, касающиеся ситуации, которую я описал выше, не стесняйтесь спрашивать!

1 Ответ

0 голосов
/ 30 августа 2018

Дизайн звучит для меня разумно.

Даже если клиент заранее не понимает модель, он все равно должен иметь возможность понимать и использовать данные, что я считаю важным качеством, о котором следует помнить при разработке.

Чего я бы хотел избежать, так это использовать пользовательские DataType s для ваших значений, потому что для этого требуется клиент, достаточно продвинутый, чтобы читать DataTypeDictionary с сервера и иметь возможность декодировать и кодировать пользовательские структуры динамически на основе содержимого словаря. .

...