当前位置: 首页 > 知识库问答 >
问题:

Milo:连接到(公共)OPC UA服务器

田易安
2023-03-14

首先:我是OPCUA的新手。:)

我正在尝试将Milo客户端连接到我们的服务器,但不真正了解出了什么问题。示例客户端和服务器一起工作很好,但当我尝试将客户端示例与公共OPC-UA-Test-Servers之一连接时,我得到了这些例外:

15:48:34.729[ua-netty-event-lop-0]DEBUGorg.eclipse.milo.opcua.stack.client.handlers.UaTcpClientAcyah geHandler-在Channel=[id: 0xc22800c2, L:/10.22.19.217:58947-R:opcua.demo-this.com/52.233.134.134: 51210]上发送Hello消息。这通常意味着管道中的最后一个处理程序没有处理异常。uf.java:898IOException:现有连接被远程主机强制关闭io.netty.channel.socket.nio.SocketDhannel.do0(Native Method)hannel.java:242SocketDio.netty.channel.nio.(SocketDnsafe.read)hannel.java:119IOUio.netty.channel.nio.IntoNativeBuffer(IOUoop.process)sun.nio.ch.IOUtil.read(IOUtil.java:192)sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)io.netty.buffer.PooledUnsecDirectByteBuf.setBytes(PooledUnsecDirectByteBuf.java:221)io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBjava.io.)sun.nio.ch.NioSocketCispatcher.readReadBytes(NioSocketCsun.nio.ch.)ispatcher.readAbstractNioByteChannel$NioByteUispatcher.java:43(AbstractNioByteCsun.nio.ch.)til.readNioEventLtil.java:223SelectedKey(NioEventLoop. java: 528)at io. netty. ProcessClientChannelManager-频道引导失败:超时等待确认org. eclipse. milo. opcua. stack. core。UaException:超时等待确认在org. eclipse. milo. opcua. stack. client. handler。UaTcpClientAcyah geHandler. lambda$start HelloTimeout4美元(UaTcpClientAcyah geHandler. java: 156)在org. eclipse. milo. opcua. stack. client. handler。UaTcpClientAcyah geHandler$Lambda27美元/469017260. run(未知来源)在io. net. util。HashedWheelTimer$HashedWheelTimer. exire(HashedWheelTimer. java: 581)在io. net. util。HashedWheelTimer$HashedWheelBucket. exireTimeout(UaException:超时等待确认在org. eclipse. milo. opcua. stack. client. handler。UaTcpClientAcinkgeHandler. lambda$start HelloTimeout4美元(UaTcpClientAcinkgeHandler. java: 156)在org. eclipse. milo. opcua. stack. client. handler。UaTcpClientAcyah geHandler$$Lambda27美元/469017260. run(未知来源)在io. net. util。HashedWheelTimer$HashedWheelTimer. exire(HashedWheelTimer. java: 581)在io. net. util。HashedWheelTimer$HashedWheelBucket. exireTimeout(HashedWheelTimer. java: 655)在io. netty. util。HashedWheelTimer$Worker. run

我获取了示例代码,删除了证书/密钥对,并将URL更改为opc。tcp://opcua.demo-this.com:51210/UA/SampleServer由于公共服务器不需要授权:

SecurityPolicy securityPolicy = clientExample.getSecurityPolicy();
EndpointDescription[] endpoints = UaTcpStackClient.getEndpoints("opc.tcp://opcua.demo-this.com:51210/UA/SampleServer").get();

EndpointDescription endpoint = Arrays.stream(endpoints)
    .filter(e -> e.getSecurityPolicyUri().equals(securityPolicy.getSecurityPolicyUri()))
    .findFirst().orElseThrow(() -> new Exception("no desired endpoints returned"));

logger.info("Using endpoint: {} [{}]", endpoint.getEndpointUrl(), securityPolicy);

loader.load();

OpcUaClientConfig config = OpcUaClientConfig.builder()
    .setApplicationName(LocalizedText.english("eclipse milo opc-ua client"))
    .setApplicationUri("urn:eclipse:milo:examples:client")
    //.setCertificate(loader.getClientCertificate())
    //.setKeyPair(loader.getClientKeyPair())
    .setEndpoint(endpoint)
    .setIdentityProvider(clientExample.getIdentityProvider())
    .setRequestTimeout(uint(5000))
    .build();

return new OpcUaClient(config);

我错过了什么?

提前问候和感谢:)

共有1个答案

沈骞仕
2023-03-14

隐藏在堆栈跟踪中的是真正的问题:UaException:等待确认时超时

也许您的防火墙或网络设置阻止了它,或者服务器没有将其发送回来,但问题是客户端从未收到响应其HelloAc识消息。/code>。

FWIW,我可以在公共服务器上运行ReadExample,没有问题。在ReadExample中,我重写了getSecurityPolicy()并返回了SecurityPolicy。无并且在ClientExampleRunner中只替换了endpointURL。

 类似资料:
  • 我正在尝试使用milo(0.4.2)连接到Prosys opcua仿真服务器 我使用openssl为用户生成了证书/密钥 /home/user/。prosysopc/prosys opc ua仿真服务器/用户_PKI/CA/certs /home/user/。prosysopc/prosys opc ua仿真服务器/PKI/CA/certs 我检查了prosys用户界面两个证书都出现了 最后,当我

  • 我有一个用Python编写的OPCUA服务器,它承载变量、属性和方法。此服务器按其应有的方式运行和工作。变量和属性的读写以及用参数调用这些方法都已经使用另一个OPCUA客户机(用Python编写)进行了测试。 然而,最终目标是使用Java和milo堆栈编写一个类似的OPCUA客户机,该客户机应该连接到给定的服务器,执行变量和属性的所有读写操作,并使用参数调用OPCUA方法。 变量和属性的读写与mi

  • 我是OPC-UA和Eclipse Milo的新手,我正在尝试构建一个客户端,可以连接到我们刚刚购买的机器的OPC-UA服务器。 通过使用这个python教程系列,我已经能够在我的笔记本电脑上设置一个简单的OPC-UA服务器:https://www.youtube.com/watch?v=NbKeBfK3pfk.此外,我已经能够使用Eclipse Milo示例成功运行订阅示例,从该服务器读取一些值。

  • 我是OPC UA的新手,我正在使用milo OPC订阅者客户端连接到本地发现服务。我有Prosys模拟服务器,它连接到我的本地发现服务。 注意:如果我直接连接到prosysendpoint,它可以正常工作。它仅通过发现服务失败。 运行代码时会出现以下异常 在ClientRunner中创建客户端的代码。 客户端接口类 订阅服务器运行实现

  • 我可以对我的AWS EC2实例使用SSH ok。Grizzly已经安装并启动。 我无法通过浏览器从本地计算机连接到EC2公共IPhttp://publicip:8080/索引。我有一个安全组,允许传入访问HTTP端口8080,允许所有传出。我还尝试允许ICMP进行ping,但我也无法ping。我删除了所有安全组限制,但这也不起作用。我检查了iptables,没有任何限制规则。 有什么想法吗? 谢谢

  • 我有一个Angular应用程序,有一个API,它连接并调用一个在服务器上建立的数据库,该数据库具有一个公共IP。 第二,你有什么想法为什么会发生这种情况吗? 谢谢。