Как настроить другой вид объекта "авторизованным" пользователем?

Допустим, у меня есть два пользователя - UserA и UserB. Когда пользователь A подключается к моему серверу OPC-UA на основе open62541, я хочу, чтобы он увидел:

Data
    - MyData1
    - MyData2
    - MyData3

Когда пользователь B подключается, я хочу, чтобы он увидел:

Data
    - MyData1

Является ли это возможным? и если да, то где я могу использовать его, когда я устанавливаю объектный узел

UA_Server_addObjectNode(UA_Server *server, 
                    const UA_NodeId requestedNewNodeId,
                    const UA_NodeId parentNodeId,
                    const UA_NodeId referenceTypeId,
                    const UA_QualifiedName browseName,
                    const UA_NodeId typeDefinition,
                    const UA_ObjectAttributes attr,
                    void *nodeContext, 
                    UA_NodeId *outNewNodeId)

1 ответ

Решение

Вы не можете сделать это напрямую через UA_Server_addObjectNode,

Концепция, которую вы ищете в OPC UA, называется Views.

Из спецификации OPC UA, часть 3:

Посмотреть NodeClass

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

Чтобы решить эту проблему, этот стандарт определяет концепцию представления. Каждое представление определяет подмножество узлов в адресном пространстве. Весь AddressSpace является представлением по умолчанию. Каждый узел в представлении может содержать только подмножество своих ссылок, как определено создателем представления. Узел просмотра действует как корень для узлов в представлении. Представления определяются с использованием View NodeClass, который указан в таблице 5.

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

Узел просмотра может использоваться не только в качестве дополнительной точки входа в AddressSpace, но и в качестве конструкции для организации AddressSpace и, следовательно, в качестве единственной точки входа в подмножество AddressSpace. Поэтому клиенты не должны игнорировать узлы просмотра при представлении AddressSpace. Простые клиенты, которые не работают с представлениями для целей фильтрации, могут, например, обрабатывать узел представления как объект типа FolderType (см. 5.5.3).

Итак, вам нужно создать узел просмотра и прикрепить соответствующие узлы к этому узлу просмотра. Затем пользователь может начать просмотр с этого конкретного представления.

Соответствующий метод называется UA_Server_addViewNode, Затем используйте UA_Server_addReference метод для ссылки на другие узлы в вашем созданном узле просмотра. Тип ссылки должен быть Organizes,

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