Поделиться через


Обнаружение источников данных OPC UA с помощью служб Akri

Внимание

Предварительная версия операций Интернета вещей Azure, включенная Azure Arc в настоящее время находится в предварительной версии. Не следует использовать это программное обеспечение предварительной версии в рабочих средах.

Вам потребуется развернуть новую установку Операций Интернета вещей Azure, когда общедоступная версия станет доступной, вы не сможете обновить предварительную установку.

Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

В этой статье вы узнаете, как автоматически обнаруживать источники данных OPC UA. После развертывания Azure IoT Operations Preview вы настроите службы Akri для обнаружения источников данных OPC UA на границе. Службы Akri создают пользовательские ресурсы в кластере Kubernetes, которые представляют обнаруженные источники данных. Возможность обнаружения источников данных OPC UA удаляет необходимость вручную настроить их с помощью пользовательского веб-интерфейса взаимодействия с операциями.

Внимание

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

Службы Akri позволяют обнаруживать и создавать ресурсы в адресном пространстве сервера OPC UA. Обнаружение активов OPC UA создает AssetType и Asset пользовательские ресурсы для спецификаций интеграции устройств OPC UA (DI).

Необходимые компоненты

  • Установите предварительную версию операций Интернета вещей Azure.

  • Убедитесь, что модули pod служб Akri настроены правильно, выполнив следующую команду:

    kubectl get pods -n azure-iot-operations
    

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

    NAME                                             READY   STATUS    RESTARTS   AGE
    aio-akri-agent-daemonset-hwpc7                   1/1     Running   0          17mk0s
    aio-opc-asset-discovery-wzlnj                    1/1     Running   0          8m28s
    

Настройка обработчика обнаружения OPC UA

Чтобы настроить обработчик обнаружения OPC UA для обнаружения ресурсов, создайте файл конфигурации YAML, содержащий значения, описанные в этом разделе:

Имя. Обязательно Datatype По умолчанию. Комментарий
EndpointUrl true Строка null URL-адрес конечной точки OPC UA, используемый для обнаружения активов
AutoAcceptUntrustedCertificates true ¹ Логический false Должен ли клиент автоматически принимать ненадежные сертификаты? Сертификат может быть автоматически настроен как доверенный, если во время проверки цепочки не произошло никаких неудажимых ошибок. Например, сертификат с неполной цепочкой не принимается.
UseSecurity true ¹ Логический true Должен ли клиент использовать безопасное подключение?
UserName false Строка null Имя пользователя для проверки подлинности пользователя. ²
Password false Строка null Пароль для проверки подлинности пользователя. ²

¹ Текущая версия обработчика обнаружения поддерживает UseSecurity=false и требуется autoAcceptUntrustedCertificates=true.
2. Временная реализация до тех пор, пока службы Akri не смогут передавать секреты Kubernetes.

В следующем примере показано обнаружение сервера OPC PLC. Параметры ресурса можно добавить для нескольких серверов OPC PLC.

  1. Чтобы создать файл конфигурации YAML, скопируйте и вставьте следующее содержимое в новый файл и сохраните его как opcua-configuration.yaml:

    Если вы используете имитированный сервер PLC, развернутый с помощью краткого руководства по операциям Интернета вещей Azure, вам не нужно изменять его endpointUrl. Если у вас есть собственные серверы OPC UA или используются имитированные серверы PLC, развернутые в Azure, добавьте в URL-адрес конечной точки соответствующим образом. URL-адреса конечных точек обнаружения выглядят следующим образом opc.tcp://<FQDN>:50000/. Чтобы найти полное доменное имя серверов OPC PLC, перейдите к развертыванию в портал Azure. Для каждого сервера скопируйте и вставьте полное доменное имя в URL-адреса конечной точки.

    apiVersion: akri.sh/v0
    kind: Configuration
    metadata:
      name: aio-akri-opcua-asset
    spec:
      discoveryHandler: 
        name: opcua-asset
        discoveryDetails: "opcuaDiscoveryMethod:\n  - asset:\n      endpointUrl: \"	opc.tcp://opcplc-000000:50000\"\n      useSecurity: false\n      autoAcceptUntrustedCertificates: true\n"
      brokerProperties: {}
      capacity: 1
    
  2. Чтобы применить конфигурацию, выполните следующую команду:

    kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
    

Совет

В развертывании операций Интернета вещей Azure по умолчанию обработчик обнаружения OPC UA уже настроен для обнаружения имитированного сервера PLC. Если вы хотите обнаружить ресурсы, подключенные к дополнительным серверам OPC UA, их можно добавить в файл конфигурации.

Проверить конфигурацию

Чтобы убедиться, что контейнер обнаружения активов настроен и запущен:

  1. Чтобы проверить журналы pod, выполните следующую команду:

    kubectl logs <insert aio-opc-asset-discovery pod name> -n azure-iot-operations
    

    Журнал из aio-opc-asset-discovery модуля pod указывает через несколько секунд, что обработчик обнаружения зарегистрировал себя в службах Akri:

    2024-08-01T15:04:12.948Z aio-opc-asset-discovery-4nsgs - OPC UA SDK 1.5.374.70 from 07/20/2024 07:37:16
    2024-08-01T15:04:12.973Z aio-opc-asset-discovery-4nsgs - OPC UA SDK informational version: 1.5.374.70+1ee3beb87993019de4968597d17cb54d5a4dc3c8
    2024-08-01T15:04:12.976Z aio-opc-asset-discovery-4nsgs - Akri agent registration enabled: True
    2024-08-01T15:04:13.475Z aio-opc-asset-discovery-4nsgs - Hosting starting
    2024-08-01T15:04:13.547Z aio-opc-asset-discovery-4nsgs - Overriding HTTP_PORTS '8080' and HTTPS_PORTS ''. Binding to values defined by URLS instead 'http://+:8080'.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Now listening on: http://:8080
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Application started. Press Ctrl+C to shut down.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting environment: Production
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Content root path: /app
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting started
    2024-08-01T15:04:13.881Z aio-opc-asset-discovery-4nsgs - Registering with Agent as HTTP endpoint using own IP from the environment variable POD_IP: 10.42.0.245
    2024-08-01T15:04:14.875Z aio-opc-asset-discovery-4nsgs - Registered with the Akri agent with name opcua-asset for http://10.42.0.245:8080 with type Network and shared True
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Successfully re-registered OPC UA Asset Discovery Handler with the Akri agent
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Press CTRL+C to exit 
    

    Через минуту службы Akri выдают первый запрос на обнаружение на основе конфигурации:

    2024-08-01T15:04:15.280Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Reading message.
    2024-08-01T15:04:15.477Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Received discovery request from ipv6:[::ffff:10.42.0.241]:48638
    2024-08-01T15:04:15.875Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Start asset discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Discovering OPC UA     opc.tcp://opcplc-000000:50000 using Asset Discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Selected AutoAcceptUntrustedCertificates mode: False
    

    После завершения обнаружения обработчик обнаружения отправляет результат в службы Akri для создания настраиваемого ресурса Akri с информацией о ресурсах и наблюдаемыми переменными. Обработчик обнаружения повторяет обнаружение каждые 10 минут, чтобы обнаружить изменения на сервере.

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

    kubectl get akrii -n azure-iot-operations
    

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

    NAME                      CONFIG             SHARED   NODES                          AGE
    akri-opcua-asset-dbdef0   akri-opcua-asset   true     ["k3d-k3s-default-server-0"]   24h
    

    Соединитель для руководителя OPC UA проверяет наличие новых пользовательских ресурсов экземпляра opc-ua-assetAkri и создает для них начальные типы активов и пользовательские ресурсы ресурса. Настраиваемые ресурсы можно изменить, добавив такие параметры, как расширенная публикация для дополнительных точек данных или соединитель для параметров наблюдаемости OPC UA.

  3. Чтобы убедиться, что экземпляр Akri правильно подключен к соединителю для OPC UA, выполните следующую команду. Замените заполнитель именем экземпляра Akri, который был включен в выходные данные предыдущей команды:

    kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json
    

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

    "spec": {
    
            "brokerProperties": {
                "ApplicationUri": "Boiler #2",
                "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……