Spec-Zone.ru › Qt 6.1

Класс QOpcUaClient

QOpcUaClient позволяет взаимодействовать с сервером OPC UA. Подробнее...

Заголовок: #include <QOpcUaClient>
qmake: QT += opcua
Наследует: QObject
  • Список всех членов, включая унаследованные

Общедоступные типы

Перечисление ClientError { НетОшибок, НеверныйUrl, ДоступЗапрещён, ОшибкаПодключения, НеизвестнаяОшибка, НеподдерживаемаяИнформацияОбАвторизации }
Перечисление ClientState { Отключено, Подключение, Подключено, Закрытие }

Свойства

  • error : const ClientError
  • state : const ClientState

Общедоступные функции

virtual ~QOpcUaClient()
bool addNode(const QOpcUaAddNodeItem &nodeToAdd)
bool addReference(const QOpcUaAddReferenceItem &referenceToAdd)
QOpcUaApplicationIdentity applicationIdentity() const
const QOpcUaAuthenticationInformation & authenticationInformation() const
QString backend() const
void connectToEndpoint(const QOpcUaEndpointDescription &endpoint)
bool deleteNode(const QString &nodeId, bool deleteTargetReferences = true)
bool deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete)
void disconnectFromEndpoint()
QOpcUaEndpointDescription endpoint() const
QOpcUaClient::ClientError error() const
bool findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList())
bool isNamespaceAutoupdateEnabled() const
QStringList namespaceArray() const
int namespaceAutoupdateInterval() const
QOpcUaNode * node(const QString &nodeId)
QOpcUaNode * node(const QOpcUaExpandedNodeId &expandedNodeId)
QOpcUaPkiConfiguration pkiConfiguration() const
QOpcUaQualifiedName qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const
bool readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead)
bool requestEndpoints(const QUrl &url)
QString resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const
void setApplicationIdentity(const QOpcUaApplicationIdentity &identity)
void setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation)
void setNamespaceAutoupdate(bool isEnabled)
void setNamespaceAutoupdateInterval(int interval)
void setPkiConfiguration(const QOpcUaPkiConfiguration &config)
QOpcUaClient::ClientState state() const
QStringList supportedSecurityPolicies() const
QList<QOpcUaUserTokenPolicy::TokenType> supportedUserTokenTypes() const
bool updateNamespaceArray()
bool writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite)

Сигналы

void addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode)
void addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
void connectError(QOpcUaErrorState *errorState)
void connected()
void deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode)
void deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
void disconnected()
void endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
void errorChanged(QOpcUaClient::ClientError error)
void findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
void namespaceArrayChanged(QStringList namespaces)
void namespaceArrayUpdated(QStringList namespaces)
void passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid)
void readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult)
void stateChanged(QOpcUaClient::ClientState state)
void writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult)

Подробное описание

QOpcUaClient

QOpcUaClient реализует базовые возможности клиента для взаимодействия с устройствами и приложениями, поддерживающими OPC UA. Это включает в себя запрос к серверу обнаружения известных серверов, запрос списка конечных точек сервера, подключение и отключение.

После успешного подключения к серверу, QOpcUaClient позволяет получать объекты QOpcUaNode, которые обеспечивают дальнейшее взаимодействие с узлами на сервере OPC UA. Для операций, затрагивающих несколько узлов, QOpcUaClient предлагает API, поддерживающий чтение нескольких атрибутов нескольких узлов в одном запросе к серверу.

QOpcUaClient также хранит локальную копию массива имен пространства имён сервера, который создаётся после успешного подключения. Эта информация может быть запрошена или обновлена во время подключения. Копия массива имен пространства имён также используется для разрешения расширенных идентификаторов узлов и создания квалифицированных имён из URI пространства имён.

Обращение к узлам

Для ознакомления с узлами и идентификаторами узлов см. QOpcUaNode.

Использование

Создайте QOpcUaClient с помощью QOpcUaProvider, запросите список конечных точек от сервера с помощью requestEndpoints и вызовите connectToEndpoint(), чтобы подключиться к одной из доступных конечных точек. После установления соединения запрашивается объект QOpcUaNode для корневого узла.

QOpcUaProvider provider;
if (provider.availableBackends().isEmpty())
    return;
QOpcUaClient *client = provider.createClient(provider.availableBackends()[0]);
if (!client)
    return;
// Connect to the stateChanged signal. Compatible slots of QObjects can be used instead of a lambda.
QObject::connect(client, &QOpcUaClient::stateChanged, [client](QOpcUaClient::ClientState state) {
    qDebug() << "Client state changed:" << state;
    if (state == QOpcUaClient::ClientState::Connected) {
        QOpcUaNode *node = client->node("ns=0;i=84");
        if (node)
            qDebug() << "A node object has been created";
    }
});

QObject::connect(client, &QOpcUaClient::endpointsRequestFinished,
                 [client](QList<QOpcUaEndpointDescription> endpoints) {
    qDebug() << "Endpoints returned:" << endpoints.count();
    if (endpoints.size())
        client->connectToEndpoint(endpoints.first()); // Connect to the first endpoint in the list
});

client->requestEndpoints(QUrl("opc.tcp://127.0.0.1:4840")); // Request a list of endpoints from the server

Документация типов членов

перечисление QOpcUaClient::ClientError

Это перечисление определяет текущее состояние ошибки клиента.

Постоянная Значение Описание
QOpcUaClient::NoError 0 Ошибка не произошла.
QOpcUaClient::InvalidUrl 1 URL для подключения указан неправильно или подключение к этому URL не удалось.
QOpcUaClient::AccessDenied 2 Попытка подключения к серверу с использованием имени пользователя/пароля не удалась из-за неправильных учетных данных.
QOpcUaClient::ConnectionError 3 Произошла ошибка с подключением.
QOpcUaClient::UnknownError 4 Произошла неизвестная ошибка.
QOpcUaClient::UnsupportedAuthenticationInformation 5 Указанный тип или данные аутентификационной информации не поддерживаются.

перечисление QOpcUaClient::ClientState

Это перечисление определяет состояние подключения клиента.

Постоянная Значение Описание
QOpcUaClient::Disconnected 0 Клиент не подключен к серверу.
QOpcUaClient::Connecting 1 Клиент в процессе подключения к серверу.
QOpcUaClient::Connected 2 Клиент подключен к серверу.
QOpcUaClient::Closing 3 Клиент подключен и запрашивает отключение от сервера.

Документация свойств

[read-only] ошибка : const ClientError

Указывает текущее состояние ошибки клиента.

Функции доступа:

QOpcUaClient::ClientError ошибка() const

Сигнал уведомления:

void errorChanged(QOpcUaClient::ClientError error)

[read-only] состояние : const ClientState

Указывает текущее состояние подключения клиента.

Функции доступа:

QOpcUaClient::ClientState состояние() const

Сигнал уведомления:

void stateChanged(QOpcUaClient::ClientState state)

Документация функций-членов

[signal] void QOpcUaClient::addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode)

Этот сигнал излучается после завершения операции addNode(). requestedNodeId — это запрошенный идентификатор узла из вызова addNode(), assignedNodeId — это идентификатор узла, назначенный сервером новому узлу. statusCode содержит результат операции. Если результат — Bad, assignedNodeId пустой, и узел не был добавлен в адресное пространство сервера.

[signal] void QOpcUaClient::addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)

Этот сигнал излучается после завершения операции addReference(). Значения sourceNodeId, referenceTypeId, targetNodeId и isForwardReference взяты из вызова addReference(). statusCode содержит результат операции.

[signal, since QtOpcUa 5.13] void QOpcUaClient::connectError(QOpcUaErrorState *errorState)

Этот сигнал излучается, когда во время установления соединения произошла ошибка. Параметр errorState содержит информацию об ошибке.

В случае ошибок на стороне клиента их можно проигнорировать, вызвав QOpcUaErrorState::setIgnoreError для объекта.

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

Эта функция была добавлена в QtOpcUa 5.13.

[signal] void QOpcUaClient::connected()

Этот сигнал излучается, когда соединение установлено.

[signal] void QOpcUaClient::deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode)

Этот сигнал излучается после завершения операции deleteNode(). nodeId — идентификатор узла из вызова deleteNode(). statusCode содержит результат операции.

[signal] void QOpcUaClient::deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)

Этот сигнал излучается после завершения операции deleteReference(). Значения sourceNodeId, referenceTypeId, targetNodeId и isForwardReference взяты из вызова deleteReference(). statusCode содержит результат операции.

[signal] void QOpcUaClient::disconnected()

Этот сигнал излучается, когда соединение закрыто в результате запроса на закрытие.

[signal] void QOpcUaClient::endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)

Этот сигнал излучается после завершения операции requestEndpoints(). statusCode содержит результат операции. Если результат — Good, endpoints содержит описания всех доступных на сервере конечных точек. requestUrl содержит URL, который использовался в вызове requestEndpoints().

[signal] void QOpcUaClient::findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)

Этот сигнал излучается после завершения операции findServers(). statusCode содержит результат операции. Если результат — Good, servers содержит описания приложений всех серверов, известных запрошенному серверу, которые соответствуют критериям фильтра. requestUrl содержит URL, который использовался в вызове findServers().

[signal] void QOpcUaClient::namespaceArrayChanged(QStringList namespaces)

Этот сигнал излучается после изменения массива имен пространств имён. namespaces содержит содержимое таблицы имен пространств сервера. Индекс элемента в namespaces соответствует индексу пространства имён, используемому в идентификаторе узла.

См. также namespaceArrayUpdated() и updateNamespaceArray().

[signal] void QOpcUaClient::namespaceArrayUpdated(QStringList namespaces)

Этот сигнал излучается после завершения операции updateNamespaceArray. namespaces содержит содержимое таблицы имен пространств сервера. Индекс элемента в namespaces соответствует индексу пространства имён, используемому в идентификаторе узла.

Если содержимое массива имен пространств остаётся неизменным после обновления, этот сигнал всё равно излучается.

См. также namespaceArrayChanged() и updateNamespaceArray().

[signal, since QtOpcUa 5.13] void QOpcUaClient::passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid)

Этот сигнал излучается, когда требуется пароль для зашифрованного закрытого ключа. Параметр keyFilePath содержит путь к файлу ключа, используемому для дешифровки. Параметр previousTryWasInvalid равен true, если предыдущая попытка дешифровки ключа завершилась неудачей (неверный пароль). Параметр password указывает на QString, который должен быть заполнен фактическим паролем для ключа. В случае неудачи предыдущей попытки он содержит ранее используемый пароль.

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

Эта функция была добавлена в QtOpcUa 5.13.

[signal] void QOpcUaClient::readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult)

Этот сигнал излучается после завершения операции readNodeAttributes().

Элементы в results имеют тот же порядок, что и элементы в запросе. Для каждого запрошенного элемента в results содержится значение вместе со временем и кодом состояния. serviceResult содержит код состояния службы OPC UA Read.

См. также readNodeAttributes(), QOpcUaReadResult и QOpcUaReadItem.

[signal] void QOpcUaClient::writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult)

Этот сигнал излучается после завершения операции writeNodeAttributes().

Элементы в results имеют тот же порядок, что и элементы в запросе на запись. Они содержат значение, временные метки и код состояния, полученные от сервера, а также идентификатор узла, атрибут и диапазон индексов из элемента записи. Это облегчает сопоставление результата с запросом.

serviceResult — код состояния службы OPC UA Write. Если serviceResult не Good, записи в results также имеют недопустимый код состояния и не должны использоваться.

См. также writeNodeAttributes() и QOpcUaWriteResult.

[virtual] QOpcUaClient::~QOpcUaClient()

Удаляет экземпляр QOpcUaClient.

bool QOpcUaClient::addNode(const QOpcUaAddNodeItem &nodeToAdd)

Добавляет узел, описанный в nodeToAdd, на сервер.

Возвращает true , если асинхронный вызов был успешно передан.

Успешность операции возвращается в сигнале addNodeFinished().

Следующий пример кода добавляет новый узел переменной на сервер:

QOpcUaNodeCreationAttributes attributes;
attributes.setDisplayName(QOpcUaLocalizedText("en", "My new Variable node"));
attributes.setDescription(QOpcUaLocalizedText("en", "A node which has been added at runtime"));
attributes.setValue(23.0, QOpcUa::Types::Double);
attributes.setDataTypeId(QOpcUa::ns0ID(QOpcUa::NodeIds::Namespace0::Double));
attributes.setValueRank(-2); // Scalar or array
attributes.setAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);
attributes.setUserAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);

QOpcUaAddNodeItem item;
item.setParentNodeId(QOpcUaExpandedNodeId("ns=3;s=TestFolder"));
item.setReferenceTypeId(QOpcUa::nodeIdFromReferenceType(QOpcUa::ReferenceTypeId::Organizes));
item.setRequestedNewNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setBrowseName(QOpcUaQualifiedName(3, "MyNewVariableNode"));
item.setNodeClass(QOpcUa::NodeClass::Variable);
item.setNodeAttributes(attributes);

m_client->addNode(item);

См. также deleteNode(), addNodeFinished() и QOpcUaAddNodeItem.

bool QOpcUaClient::addReference(const QOpcUaAddReferenceItem &referenceToAdd)

Добавляет ссылку, описанную в referenceToAdd, на сервер.

Возвращает true , если асинхронный вызов был успешно передан.

Успешность операции возвращается в сигнале addReferenceFinished().

Следующий пример кода добавляет ссылку на узел в папку "Объекты":

QOpcUaAddReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setTargetNodeClass(QOpcUa::NodeClass::Variable);

m_client->addReference(item);

См. также deleteReference(), addReferenceFinished() и QOpcUaAddReferenceItem.

[since QtOpcUa 5.13] QOpcUaApplicationIdentity QOpcUaClient::applicationIdentity() const

Возвращает идентификатор приложения для данного экземпляра QOpcUaClient.

Эта функция была добавлена в QtOpcUa 5.13.

См. также setApplicationIdentity().

const QOpcUaAuthenticationInformation &QOpcUaClient::authenticationInformation() const

Возвращает текущую информацию об авторизации.

См. также setAuthenticationInformation().

QString QOpcUaClient::backend() const

Возвращает имя бэкенда, используемого этим экземпляром QOpcUaClient, например, "open62541".

[invokable, since QtOpcUa 5.13] void QOpcUaClient::connectToEndpoint(const QOpcUaEndpointDescription &endpoint)

Подключается к указанному в endpoint конечной точке OPC UA.

Список доступных конечных точек обычно получается с помощью вызова QOpcUaClient::requestEndpoints().

Если конечная точка требует аутентификации по имени пользователя, то необходимо установить имя пользователя в QOpcUaAuthenticationInformation. Вызов этой функции до установки информации об авторизации будет использовать анонимную аутентификацию.

QOpcUaAuthenticationInformation authInfo;
authInfo.setUsernameAuthentication("user", "password");

client->setAuthenticationInformation(authInfo);

Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.

Эта функция была добавлена в QtOpcUa 5.13.

См. также connected(), stateChanged(), setAuthenticationInformation(), и QOpcUaEndpointDescription.

bool QOpcUaClient::deleteNode(const QString &nodeId, bool deleteTargetReferences = true)

Удаляет узел с идентификатором nodeId с сервера. Если deleteTargetReferences равно false, удаляются только ссылки с исходным узлом nodeId. Если deleteTargetReferences равно true, удаляются также ссылки с nodeId в качестве целевого узла.

Возвращает true если асинхронный вызов был успешно отправлен.

Успех операции возвращается в сигнале deleteNodeFinished().

Следующий пример кода удаляет узел и все ссылки на него с сервера:

m_client->deleteNode(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"), true);

См. также addNode() и deleteNodeFinished().

bool QOpcUaClient::deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete)

Удаляет ссылку, описанную в referenceToDelete, с сервера.

Возвращает true если асинхронный вызов был успешно отправлен.

Успех операции возвращается в сигнале deleteReferenceFinished().

Следующий пример кода удаляет ссылку на узел из папки "Objects":

QOpcUaDeleteReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setDeleteBidirectional(true);

m_client->deleteReference(item);

См. также addReference(), deleteReferenceFinished(), и QOpcUaDeleteReferenceItem.

[invokable] void QOpcUaClient::disconnectFromEndpoint()

Отключается от сервера.

Примечание: Эта функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.

См. также disconnected() и connectToEndpoint().

QOpcUaEndpointDescription QOpcUaClient::endpoint() const

Возвращает описание конечной точки, к которой в данный момент подключен или был подключен клиент.

QOpcUaClient::ClientError QOpcUaClient::error() const

Возвращает текущее состояние ошибки клиента.

Примечание: Функция-геттер для свойства error.

bool QOpcUaClient::findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList())

Инициализирует асинхронный запрос FindServers для чтения списка известных серверов с сервера или сервера обнаружения по адресу url. Возвращает true если асинхронный вызов был успешно отправлен.

localeIds может использоваться для выбора языка названий приложений, возвращаемых запросом. Формат указан в OPC-UA часть 3, 8.4, например, "en" для английского языка или "de-DE" для немецкого (Германия). Если указано более одного кода языка, сервер использует первую совпавшую. Если нет совпадений или localeIds пусто, сервер выбирает локаль по умолчанию.

serverUris могут использоваться для ограничения результатов серверами с соответствующим applicationUri в их описании приложения. Например, для поиска текущего URL сервера с applicationUri "MyPLC", можно использовать следующий вызов:

client->findServers(discoveryServerUrl, QStringList(), QStringList({"MyPLC"}));

Результаты возвращаются в сигнале findServersFinished().

bool QOpcUaClient::isNamespaceAutoupdateEnabled() const

Возвращает значение, определяющее, включена ли автоматическая загрузка массива имен пространств имён.

QStringList QOpcUaClient::namespaceArray() const

Возвращает кэшированное значение массива имен пространств имён.

Значение является допустимым только после того, как был выпущен сигнал namespaceArrayUpdated().

См. также updateNamespaceArray() и namespaceArrayUpdated().

int QOpcUaClient::namespaceAutoupdateInterval() const

Возвращает текущий интервал обновления массива имен пространств имён.

См. также setNamespaceAutoupdateInterval(int interval).

QOpcUaNode *QOpcUaClient::node(const QString &nodeId)

Возвращает объект QOpcUaNode, связанный с узлом OPC UA, идентифицированным по nodeId. Вызывающая сторона становится владельцем объекта узла.

Если клиент не подключен, возвращается nullptr. Бэкенды также могут возвращать nullptr в случае других ошибок (например, для некорректного идентификатора узла).

QOpcUaNode *QOpcUaClient::node(const QOpcUaExpandedNodeId &expandedNodeId)

Возвращает объект QOpcUaNode, связанный с узлом OPC UA, идентифицированным по expandedNodeId. Вызывающая сторона становится владельцем объекта узла.

Если узел не находится на подключённом сервере, пространство имён не может быть разрешено, идентификатор узла некорректен или клиент не подключен, возвращается nullptr.

См. также updateNamespaceArray().

[since QtOpcUa 5.13] QOpcUaPkiConfiguration QOpcUaClient::pkiConfiguration() const

Возвращает конфигурацию PKI приложения для данного экземпляра QOpcUaClient.

Эта функция была добавлена в QtOpcUa 5.13.

См. также setPkiConfiguration().

QOpcUaQualifiedName QOpcUaClient::qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const

Попытка создать полное имя из namespaceUri и строки имени name. Возвращает полученное полное имя. Если namespaceUri не может быть разрешено, возвращается пустое полное имя.

ok будет установлен в true если разрешение URI пространства имен прошло успешно. Если URI пространства имен не удалось разрешить, ok будет установлен в false.

bool QOpcUaClient::readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead)

Инициализирует чтение атрибутов нескольких узлов. Для каждой записи в nodesToRead можно указать идентификатор узла, атрибут и диапазон индексов.

Возвращает true, если асинхронный запрос был успешно отправлен. Результаты возвращаются в сигнале readNodeAttributesFinished().

Эта функция чтения предоставляет альтернативный способ чтения атрибутов узлов, который может использоваться в сценариях, где необходимо прочитать значения большого количества атрибутов узлов на различных узлах без необходимости использования других функций API на основе QOpcUaNode, таких как мониторинг изменений значений. Все элементы чтения в запросе отправляются на сервер в одном запросе и отвечают в одном ответе, который генерирует один сигнал readNodeAttributesFinished(). Это уменьшает сетевую нагрузку и количество соединений сигнал-слот, если задействовано много различных узлов.

В следующем примере с помощью одного вызова службы считываются атрибут отображения, два диапазона индексов "0:2" и "5:7" атрибута значения одного узла и весь атрибут значения второго узла:

QList<QOpcUaReadItem> request;
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::DisplayName));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::Value, "0:2"));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::Value, "5:7"));
request.push_back(QOpcUaReadItem("ns=1;s=MyScalarNode));
m_client->readNodeAttributes(request);

См. также QOpcUaReadItem и readNodeAttributesFinished().

bool QOpcUaClient::requestEndpoints(const QUrl &url)

Инициализирует асинхронный запрос на чтение списка доступных конечных точек с сервера по адресу url. Возвращает true , если асинхронный вызов был успешно выполнен.

Информация о конечных точках возвращается в сигнале endpointsRequestFinished().

QString QOpcUaClient::resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const

Попытка разрешить expandedNodeId в строку идентификатора узла с числовым индексом пространства имен. Возвращает строку идентификатора узла, если преобразование прошло успешно.

Возвращается пустая строка, если индекс пространства имен не может быть разрешен или если часть идентификатора расширенного идентификатора узла имеет неправильный формат. ok будет установлен на true , если преобразование прошло успешно. Если расширенный идентификатор узла не удалось разрешить, ok будет установлен на false.

[since QtOpcUa 5.13] void QOpcUaClient::setApplicationIdentity(const QOpcUaApplicationIdentity &identity)

Устанавливает идентификатор приложения для этого экземпляра QOpcUaClient на identity.

Эта функция была добавлена в QtOpcUa 5.13.

См. также applicationIdentity().

void QOpcUaClient::setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation)

Устанавливает информацию об авторизации для этого клиента на authenticationInformation.

См. также authenticationInformation() и connectToEndpoint().

void QOpcUaClient::setNamespaceAutoupdate(bool isEnabled)

Включает автоматическое обновление таблицы пространства имен.

Включение этой функции автоматически сохранит локальную копию таблицы пространства имен. namespaceArrayUpdated будет выпущен, когда массив изменился. isEnabled определяет, включается или выключается автоматическое обновление.

Подписка будет создана на узле на сервере для отслеживания изменений. В случае, если сервер не поддерживает подписки, это не сработает, и isNamespaceAutoupdateEnabled вернёт false.

См. также namespaceArray() и namespaceArrayUpdated().

void QOpcUaClient::setNamespaceAutoupdateInterval(int interval)

Устанавливает интервал для подписки на таблицу пространства имен.

Подписка может быть пересмотрена сервером.

interval определяет интервал проверки изменений в миллисекундах. По умолчанию — раз в секунду.

См. также namespaceAutoupdateInterval() и QOpcUaClient::setNamespaceAutoupdate(bool isEnabled).

[since QtOpcUa 5.13] void QOpcUaClient::setPkiConfiguration(const QOpcUaPkiConfiguration &config)

Устанавливает конфигурацию PKI приложения для этого экземпляра QOpcUaClient на config.

Эта функция была добавлена в QtOpcUa 5.13.

См. также pkiConfiguration().

[since QtOpcUa 5.14] QStringList QOpcUaClient::supportedSecurityPolicies() const

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

Данная функция в настоящее время доступна как предварительная технология, поэтому API и функциональность, предоставляемые функцией, могут быть изменены в любое время без предварительного уведомления.

Эта функция была добавлена в QtOpcUa 5.14.

[since QtOpcUa 5.14] QList<QOpcUaUserTokenPolicy::TokenType> QOpcUaClient::supportedUserTokenTypes() const

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

Данная функция в настоящее время доступна как предварительная технология, поэтому API и функциональность, предоставляемые функцией, могут быть изменены в любое время без предварительного уведомления.

Эта функция была добавлена в QtOpcUa 5.14.

См. также QOpcUaUserTokenPolicy::TokenType.

bool QOpcUaClient::updateNamespaceArray()

Запрашивает обновление массива пространства имен с сервера. Возвращает true , если операция была успешно выполнена.

Сигнал namespaceArrayUpdated() генерируется после завершения операции.

См. также namespaceArray() и namespaceArrayUpdated().

bool QOpcUaClient::writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite)

Инициализирует запись нескольких атрибутов разных узлов. Для каждой записи в nodesToWrite можно указать идентификатор узла, атрибут, значение, тип значения и диапазон индексов.

Возвращает true , если асинхронный запрос был успешно отправлен. Результаты возвращаются в сигнале writeNodeAttributesFinished().

Эта функция записи предоставляет альтернативный способ записи атрибутов узлов, который может использоваться в сценариях, где необходимо записать значения большого количества атрибутов узлов на различных узлах без необходимости использования других функций API на основе QOpcUaNode, таких как мониторинг изменений значений. Все элементы записи в запросе отправляются на сервер в одном запросе и отвечают в одном ответе, который генерирует один сигнал writeNodeAttributesFinished(). Это уменьшает сетевую нагрузку и количество соединений сигнал-слот, если задействовано много различных узлов.

В следующем примере в одном вызове записываются атрибуты значений двух различных узлов. У второго узла массив значений, из которого переписываются только первые два элемента:

QList<QOpcUaWriteItem> request;

request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Scalar.Double", QOpcUa::NodeAttribute::Value,
                                  23.0, QOpcUa::Types::Double));
request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Arrays.UInt32", QOpcUa::NodeAttribute::Value,
                                  QVariantList({0, 1, 2}), QOpcUa::Types::UInt32, "0:2"));

m_client->writeNodeAttributes(request);

См. также QOpcUaWriteItem и writeNodeAttributesFinished().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qopcuaclient.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API