【问题标题】:OPC-UA BadSecureChannelClosedOPC-UA BadSecureChannelClosed
【发布时间】:2017-02-21 16:21:05
【问题描述】:

我有两个 Windows 服务,一个服务 (service1) 连接到两个 OPC-UA 服务器,这工作正常。另一个 Windows 服务 (service2) 使用来自 OPC-UA 基金会的 .NET 参考堆栈的相同连接代码连接到相同的两个 OPC-UA 服务器。

Service1 可以连接到两个 OPC-UA 服务器并成功轮询数据。在部署 Service2 期间,Service2 还可以连接并从两个 OPC-UA 服务器读取值。此时一切都很好。

但是,现在过了一会儿,没有对任何代码做任何更改。 Service2 无法再连接到其中一台 OPC-UA 服务器,在执行 Session.Create 时它只是简单地回复 ServiceResultException BadSecureChannelClosed(2156265472)。

开始故障排除:在我们的客户站点上,我们还有一个测试服务器,它运行与生产环境中的设置相同的设置,这意味着 Service1 和 Service2 也在测试服务器上运行,并以相同的方式与这两个 OPC 通信-UA 服务器。

我注意到当我关闭测试服务器上的服务时,Service2 的 BadSecureChannelClosed 错误消失了(但是 Service2 仍然可以与两个 OPC-UA 服务器中的另一个进行通信)。让生产服务器上的一切都按预期工作。

这让我想知道 OPC-UA 服务器上有哪些会话和连接限制。 OPC-UA 服务器的类型为 SINUMERIK 840d。我问过西门子是否可以激活 ServerDiagnostics 对象来解决会话数量等问题,但他们回答说这是不可能的。我认为这个对象是必须启用的?

谁能给我一些提示,说明可能导致这种情况的原因,以及在建立连接时我应该考虑哪些限制和事项,例如什么需要独一无二?应用名称?会话名称?等什么可能导致这个 - 看似 - “随机” BadSecureChannelClosed 错误。请注意,我在 Create Session 调用中使用了 updateBeforeConnect=true。我使用带有硬编码用户名和密码的 UserIdentity。

另一个奇怪的症状是,对于这个回复 BadSecureChannelClosed 的 OPC-UA 服务器,它在使用 UaExpert 连接到它时会出现 Discovery 错误(几周前不存在的错误):

16:58:41.806 |自动更新 |检索当前版本信息时出错:找不到 Host updates.unified-automation.com

16:58:35.404 |发现小部件 | opc.tcp://192.168.0.200:4840 上的发现 GetEndpoints 失败 (BadCommunicationError)

16:58:35.401 |发现小部件 |在 opc.tcp://192.168.0.200:4840 上发现 FindServers 失败 (BadCommunicationError)

【问题讨论】:

    标签: c# security opc opc-ua


    【解决方案1】:

    当前的 Sinumerik OPC UA 服务器有问题,并且没有提供正确编码的 ExtensionObjects。一旦可用,您将需要向 Siemens 请求对服务器进行更新。

    请注意,您可以使用 UaExpert 毫无问题地访问它,它可以解码错误编码的 ExtesionObjects。这使他们能够首先发布这样一个错误的版本。

    编辑:关于 ExtensionObjects 的注意事项:如果您尝试将其作为完整结构读取,则 ServerStatus 作为 ExtensionObject 传输。 PublishResponse(用于提供订阅数据)还包括编码为 ExtensionObjects 的数据更改。因此,如果您仅通过 ServerState 监控状态,它可能会起作用。但无论如何,订阅将不起作用。

    【讨论】:

    • 感谢您的回复。关于 ExtensionObjects,即使我可以读取 ServerDiagnostics 对象,我也无法启用它以查看数据。您知道我是否需要进行任何其他配置才能启用 ServerDiagnostics?如果没有,我怎么能看到我连接了多少会话等。当我尝试对 enabledFlag 写入 true 时,它​​只是说它不可写,请参见图片:cdn.pbrd.co/images/BlFt52NrP.png
    • 服务器不需要支持启用诊断。
    • 我添加了一个关于 ExtensionObjects 的注释,它进一步解释了这个问题。
    • 感谢您的回答,最好的问候!
    猜你喜欢
    • 2016-10-10
    • 2017-08-23
    • 2021-03-26
    • 2023-02-09
    • 2017-06-14
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多