如何获取 .Net C# 上的 OPC UA 服务器列表?

Posted

技术标签:

【中文标题】如何获取 .Net C# 上的 OPC UA 服务器列表?【英文标题】:How can I get the list of OPC UA servers on .Net C#? 【发布时间】:2015-02-03 14:25:29 【问题描述】:

我正在用 C# 编写一个 OPC 代理程序。我想获取localhost 或机器远程上所有 OPC-Server 的列表。我正在使用来自 OPC Foundation V1.26 的 OPC UA .NET

我的灵感来自 Softing 的“sampleDiscovery-Programm”,现在我的服务器列表为 ApplicationDescription

现在我想查看指定服务器的连接客户端。使用 Softing 的示例“servers_control-Programm”,我可以看到服务器的所有客户端。但是这个类的构造器需要StandardServerApplicationConfiguration这样的服务器

    public ServerForm(StandardServer server, ApplicationConfiguration configuration)
    
        InitializeComponent();

        m_server = server;

        m_configuration = configuration;
        this.ServerDiagnosticsCTRL.Initialize(m_server, m_configuration);

        TrayIcon.Text = this.Text = m_configuration.ApplicationName;
        this.Icon = TrayIcon.Icon = ConfigUtils.GetAppIcon();
    

如何将主服务器用作ApplicationDescription,将服务器用作标准服务器?

【问题讨论】:

到目前为止你有没有尝试过?请说明您的情况和面临的问题 为什么我可以从服务器获得一个具有 ApplicationDescription 类型的 currentInstance? 【参考方案1】:

您可以使用OPC Labs Quick OPC Calssic 获取VB.NET 中的OPC UA servers 列表。

http://opclabs.com/products/quickopc/downloads

下载并安装QuickOPC 5.23(.NET Framework 3.5 or 4.0)QuickOPC 5.31(.NET Framework 4.5)

VB.NET 代码:

' Instantiate the client object
 Dim easyUAClient = New EasyUAClient()
    
' Obtain collection of server elements
Dim applicationElementCollection As UAApplicationElementCollection = easyUAClient.DiscoverServers()
    
' Display results
For Each applicationElement As UAApplicationElement In applicationElementCollection
    Console.WriteLine("applicationElementCollection[""0""].ApplicationUriString: 1", _
                                  applicationElement.DiscoveryUriString, applicationElement.ApplicationUriString)
Next applicationElement

【讨论】:

以上是关于如何获取 .Net C# 上的 OPC UA 服务器列表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 客户端读取 OPC UA 节点属性值

封装一个 C# OPC UA 错误提示类

封装一个 C# OPC UA 错误提示类

如何在 Eclipse Milo 中获取 OPC UA 节点名称?

如何将文件从 OPC UA 客户端传输到服务器

C# 读写opc ua服务器,浏览所有节点,读写节点,读历史数据,调用方法,订阅,批量订阅操作