首先,我想提出我的问题,并在这篇文章中进一步阐述:
是否可以在没有Connected Factory解决方案加速器的情况下将Azure IoT Edge Gateway用于OPC UA服务器?如何完成?
我知道,这听起来可能很奇怪,但是Connected Factory解决方案除了能够连接OPC UA服务器之外,无法满足我在项目大部分方面的需求。
现在要进一步详细说明,我需要概述我的项目。 我在局域网中设置了几台OPC UA服务器,并且有一台Windows 10计算机作为Azure网关运行。在Azure中,已激活IoT-Hub和“时间序列见解”资源。此外,还有一个WebApp,可从TSI提取数据并将其可视化。在网关上使用OPC Publisher可以正常工作。 OPC发布者和代理都在Windows上本地运行,而不是在Docker容器中运行。
如果我使用Connected Factory解决方案加速器,则可以添加和浏览发布者。但是我无法连接到网络上的任何其他OPC UA服务器,但这不是问题,因为我毕竟不会使用Connected Factory。真正的挑战是如何在没有Connected Factory解决方案加速器的情况下连接到OPC代理。
可用的教程使用Connected Factory解决方案加速器,并在docker容器中运行了发布者和代理。 (https://docs.microsoft.com/de-de/azure/iot-accelerators/iot-accelerators-connected-factory-gateway-deployment及以下)
OPC代理github存储库根本没有讨论这一点。 (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)的体系结构概述简要提到了它在解决方案加速器中的工作原理,但没有说明如何在自定义WebApp中实现OPC代理和OPC UA堆栈。
如果有人可以向我提示如何解决此问题,我非常需要帮助,我们将不胜感激。如果需要,我将很乐意提供更多信息。而且,如果我可以使用该解决方案,那么我肯定会发布解决方案。
预先感谢,祝您愉快
丹尼尔
答案 0 :(得分:2)
要回答第一个问题:是的,您绝对可以在Azure IoT Edge上使用OPC UA Publisher,而无需使用Connected Factory解决方案!
在此处查看如何配置发布者:https://github.com/Azure/iot-edge-opc-publisher#using-it-as-a-module-in-azure-iot-edge
该模块会将您的数据以OPC UA-JSON格式发送到IoT中心。从那里您可以随心所欲地使用它。在``Azure时间序列见解''中显示它,通过某些流处理(例如Azure流分析)运行它,并使用Azure Functions等对其进行处理。
答案 1 :(得分:1)
在OpcSessionHelper.cs中检查以下几行,这会将代理传输拉入WebApp中使用的OPC UA堆栈:
#if !DIRECT_TCP_CONNECT
// initialize our custom transport via the proxy
Socket.Provider = new DefaultProvider(ConfigurationProvider.GetConfigurationSettingValue("IotHubOwnerConnectionString"));
WcfChannelBase.g_CustomTransportChannel = new ProxyTransportChannelFactory();
#endif
此后,OPC API表面将使用在nuget包Microsoft.Azure.Devices.Proxy和Microsoft.Azure.Devices.Proxy.Opc.Ua中实现的代理传输
BrwoserController.cs是在WebApp中使用OPC UA API的主要位置。
您可能还会看到this,它将取代OPC代理功能。