我正在使用Java OPC-UA客户端Eclipse Milo。每当我使用服务器的端点URL创建会话时,方法都会UaTcpStackClient.getEndpoints()将URL更改为localhost。
String endpointUrl = "opc.tcp://10.8.0.104:48809";
EndpointDescription[] endpoints = UaTcpStackClient.getEndpoints(endpointUrl).get();
EndpointDescription endpoint = Arrays.stream(endpoints)
.filter(e -> e.getSecurityPolicyUri().equals(securityPolicy.getSecurityPolicyUri()))
.findFirst().orElseThrow(() -> new Exception("no desired endpoints returned"));
Run Code Online (Sandbox Code Playgroud)
但是return的endpoint.getEndpointUrl()值opc.tcp://127.0.0.1:4880/会导致连接失败。
我不知道为什么我的OPC URL被更改了?
我对 OPC-UA 世界完全陌生。
我需要建立一个关于如何让我们的 ERP 与 PLC 通信的概念证明。我正在评估充当 OPC-UA 服务器的软件(它正在运行)。我发现了 Milo 并让代码在 Eclipse 中工作。查看示例,我将一个玩具程序连接到 OPC-UA 服务器并执行...
基本的管道工作,但我不知道从哪里开始使用 OPC-UA 和 Milo。我一直无法找到介绍材料来帮助我理解这一切。
是否有关于 OPC-UA 架构以及 Milo 如何实现的文档?有没有比查看示例来弄清楚应该如何做更好的方法呢?
我是 OPC-UA 世界和 Eclipse Milo 的新手。我不明白这里的安全性是如何工作的,讨论 eclipse-milo 提供的客户端示例
我发现连接 OPCUA 服务器时使用了一些安全属性:
SecurityPolicy、MessageSecurityMode、clientCertificate、clientKeyPair、setIdentityProvider、
我试图运行 client-examples -> BrowseNodeExample。此示例在内部运行ExampleServer。ExampleServer 配置为与匿名和用户名密码提供程序一起运行。它还必然接受SecurityPolicy.None, Basic128Rsa15, Basic256,Basic256Sha256和MessageSecurityModeas ,SignandEncrypt除了SecurityPolicy.Nonewhere MessageSecurityModeisNone也是如此。
SecurtiyPolicy和配对连接到服务器(没有提供客户端证书)。MessageSecurityMode但我不能对 做同样的事情UsernameProvider,因为UsernameProvider只能SecurityPolicy MessageSecurityMode配对None成功运行。所有其他对都会引发安全检查失败异常(当提供证书时),否则用户访问被拒绝(当未提供客户端证书时)。如何使这项工作有效?最后,如果有人能向我指出 Eclipse Milo 的正确用户文档,那就太好了。因为除了示例代码之外我看不到任何文档,而且它们也没有记录。
在我基于 milo 的 OPC-UA 客户端实现中,我需要大量订阅。因此,我使用了以下示例:
但是 1000.0 中的 requestsPublishingInterval
UaSubscription subscription = client.getSubscriptionManager().createSubscription(1000.0).get();
是什么意思?
此外,参数_samplingIntervalinMonitoringParameters代表什么?
谢谢!
如果服务器再次出现故障,我希望客户端重新连接到服务器。我可以向客户端添加一个 SessionActivityListener,如果服务器重新上线,它会收到关于 SessionInactive 和 SessionActive 的通知。但是,当我获取 SessionActive 并尝试重新订阅时,我收到“安全通道无效”错误消息。
14:32:28.209 [ua-netty-event-loop-11] 错误oemoschUaTcpClientAcknowledgeHandler - [remote=/127.0.0.1:53530] 收到错误消息:ErrorMessage{error=StatusCode{name=Bad_SecureChannelIdInvalid,value=0x80220000,quality=bad }, Reason=Bad_SecureChannelIdInvalid(代码=0x80220000,description=“指定的安全通道不再有效。”)}
所以我目前正在做的是,断开客户端连接并创建一个全新的客户端,其订阅与旧客户端相同。但我想这很老套。所以问题是,有没有办法只更新“旧”客户端连接和订阅?
我目前正在使用 prosys 模拟服务器进行测试
问候,卢卡斯