2017-02-21 1304 views
1

我有两个windows服务,一个服务(service1)连接到两个OPC-UA服务器,这工作正常。其他Windows服务(service2)连接到OPC-UA基础的.NET参考堆栈中具有相同连接代码的相同的两个OPC-UA服务器。OPC-UA BadSecureChannelClosed

Service1可以连接到两个OPC-UA服务器,并且它可以成功轮询数据。在部署Service2期间,Service2还可以连接并读取来自两个OPC-UA服务器的值。在这一点上一切都很好。

但是,现在过了一段时间,没有对任何代码做任何更改。当进行Session.Create时,Service2不能再连接到其中一个OPC-UA服务器,只需用ServiceResultException BadSecureChannelClosed(2156265472)回复。

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

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

这使我想知道在OPC-UA服务器上会话和连接有什么限制。 OPC-UA服务器是SINUMERIK 840d型。我问西门子是否可以激活ServerDiagnostics对象来排除Sessions等的数量,但他们回答说这是不可能的。我认为这个对象是强制性的以便能够启用?

任何人都可以给我提示什么可能会导致这种情况,以及在建立连接时我应该考虑的限制和事项什么需要独特?应用名称? SESSIONNAME?等什么可能会导致这 - 看似 - “随机”BadSecureChannelClosed错误。请注意,我在Create Session调用中使用updateBeforeConnect = true。我使用带有硬编码用户名和密码的UserIdentity。

另一个奇怪的现象是,与BadSecureChannelClosed回复此OPC-UA服务器,它连接时将其与UaExpert(的错误,不存在几个星期前)给出了发现错误:

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

16:58:35.404 | DiscoveryWidget |在opc.tcp上发现GetEndpoints://192.168.0.200:4840失败(BadCommunicationError)

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

回答

2

当前的Sinumerik OPC UA服务器有问题,并且没有提供正确编码的ExtensionObjects。一旦可用,您需要向西门子公司申请更新服务器。

请注意,您可以使用UaExpert访问它,而UaExpert可以解码严重编码的ExtesionObjects。这让他们首先发布了这样一款bug版本。

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

+0

谢谢你的回复。关于ExtensionObjects,尽管我可以读取ServerDiagnostics对象,但我无法启用它以查看数据。你知道我是否需要进行其他配置才能启用ServerDiagnostics?如果没有,我怎么能看到有多少会话等我连接。当我尝试写入enabledFlag时,它只是说它不可写,请参阅https://cdn.pbrd.co/images/BlFt52NrP.png –

+2

服务器不需要支持启用诊断。 –

+0

我添加了一个关于ExtensionObjects的注释,它更多地解释了这个问题。 –