Использование Azure IoT Edge и OPC UA без ускорителя решений Connected Factory

Прежде всего, я хочу задать свой вопрос и уточнить в этом посте:

Можно ли использовать пограничный шлюз Azure IoT для серверов OPC UA без ускорителя решений Connected Factory и как это делается?

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

Теперь, чтобы развить это дальше, мне нужно описать мой проект. В моей локальной сети установлено несколько серверов OPC UA и компьютер под управлением Windows 10, работающий в качестве шлюза Azure. В Azure есть активированные ресурсы IoT-Hub и Time Series Insights. Кроме того, есть веб-приложение, которое извлекает данные из TSI и визуализирует их. При использовании OPC издателя на шлюзе это работает просто отлично. И OPC-издатель, и прокси-сервер работают в Windows, а не в контейнере Docker.

Если я использую ускоритель решений Connected Factory, я могу добавить и просмотреть издателя. Однако я не могу подключиться к любому другому серверу OPC UA в сети, но это не проблема, так как я все равно не буду использовать Connected Factory. Настоящая проблема здесь заключается в том, как подключиться к прокси-серверу OPC без ускорителя решений Connected Factory.

В доступном учебном пособии используется ускоритель решений Connected Factory, а в докер-контейнере работает издатель и прокси-сервер. ( https://docs.microsoft.com/de-de/azure/iot-accelerators/iot-accelerators-connected-factory-gateway-deployment и последующие)

И в репозитории OPC github proxy это вообще не обсуждается. ( https://github.com/Azure/iot-edge-opc-proxy)

Даже вопросы по всем соответствующим проектам не обсуждают это. ( https://github.com/Azure/iotedge, https://github.com/Azure/iot-edge-opc-proxy)

Я понятия не имею, как реализовать эту функциональность. В обзоре архитектуры ускорителя решений ( https://docs.microsoft.com/de-de/azure/iot-accelerators/iot-accelerators-connected-factory-sample-walkthrough) кратко упоминается, как это работает в ускорителе решений, но не объясняется, как реализовать OPC Proxy и OPC UA Stack в пользовательском WebApp.

Я отчаянно нуждаюсь в помощи и буду признателен, если кто-нибудь подскажет, как решить эту проблему. Я с удовольствием предоставлю больше информации, если это необходимо. И, конечно, я опубликую решение, если я заставлю это работать.

Спасибо заранее и хорошего дня

Даниил

2 ответа

Чтобы ответить на ваш первый вопрос: Да, вы можете использовать OPC UA Publisher в Azure IoT Edge без использования решения Connected Factory!

Смотрите здесь, как настроить издателя: https://github.com/Azure/iot-edge-opc-publisher

Модуль отправит ваши данные в формате OPC UA-JSON в IoT Hub. Оттуда вы можете делать с ней все что угодно. Отобразите его в Azure Time Series Insights, выполните через некоторую потоковую обработку (например, Azure Stream Analytics), обработайте ее с помощью функций Azure и т. Д. Стр.

Обратите внимание на следующие строки в файле OpcSessionHelper.cs, это перетаскивает прокси-транспорт в стек OPC UA, используемый в WebApp:

#if !DIRECT_TCP_CONNECT
    // initialize our custom transport via the proxy
    Socket.Provider = new DefaultProvider(ConfigurationProvider.GetConfigurationSettingValue("IotHubOwnerConnectionString"));
    WcfChannelBase.g_CustomTransportChannel = new ProxyTransportChannelFactory();
#endif

После этого поверхность API OPC использует транспорт прокси, реализованный в пакетах nuget Microsoft.Azure.Devices.Proxy и Microsoft.Azure.Devices.Proxy.Opc.Ua

BrwoserController.cs является основным местом, где в WebApp используется API OPC UA.

Вы также можете посмотреть на это, которое заменит функциональность OPC Proxy.

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