我们有一段较旧的VB .NET(Visual Studio 2013社区版)代码,目前通过UDP与PLC进行通信,以进行一些非常的基本数据传输。
我们现在需要在PLC和PC之间实现更紧密的耦合(PC必须能够设置一组参数,并且Labview程序可能希望直接访问PLC),因此我们的PLC供应商(B& R)说OPC UA是要走的路。
这似乎与此处提出的问题类似:
OPC-UA client SDK for C#.NET application development
在OPC UA的介绍性研讨会上,我们获得了OPC UA客户端的编译版本,如果我启动PLC模拟器,客户端可以连接到PLC模拟器。当然,它要求输入名称和密码,但弹出窗口确实显示我试图连接,我得到一个UA示例客户端的弹出窗口,上面写着“证书无法验证:BadCertificateUntrusted”
好的,我没有证书。单击,客户端继续运行,并显示PLC代码已公开给OPC UA的所有元素的树。一切都很好。
现在,如果我从opcfoundation.org网站下载完整代码,在确认我没有相应的测试序列后,我可以编译代码但有效证书,弹出另一个窗口说:
EXCEPTION(ServiceResultException) BadCertificateHostNameInvalid 服务结果(BadCertificateHostNameInvalid)
这些都是OPC UA 1.02,BTW。
是否必须在其他地方配置某些内容?我注意到有一些XML文件(Opc.Ua.SampleClient.Config.xml和Opc.Ua.SampleClient.Endpoints.xml),我想知道是否必须修改它们以摆脱这种停止。
我记得读过,如果你自动允许这样做(当然),那就不会符合OPC UA标准,所以你不能只是让它自动发生,但这对我来说没问题。
使用OPC UA代码的缺点是它有点深(如原始StackOverflow帖子中的用户Brino所述),并且它需要您自己的代码在GPL下发布,因此Unified-Automation看起来很漂亮诱人,因为我们可能不想发布我们的源代码。
对这个特殊问题的任何想法?
答案 0 :(得分:1)
您所看到的警告和例外不太可能与您的证书有关,而是与服务器返回的证书有关。
BadCertificateHostNameInvalid StatusCode表示服务器的主机名在证书中根本不作为SubjectAltName出现,或者它与您实际用于连接服务器的主机名不匹配。
如果可能,请选择SecurityPolicy"无"并看看事情是否按照你期望的方式运作。之后,您可以专注于整理证书情况。您可能需要在服务器中设置适当的主机名,然后让它重新生成使用新主机名的证书。您可能还需要确保您的客户端计算机可以解析服务器配置使用的任何主机名,以便您可以使用它来连接。
使用OPC UA代码的缺点是它有点深(如原始StackOverflow帖子中的用户Brino所述),并且它需要您自己的代码在GPL下发布,因此Unified-Automation看起来很漂亮诱人,因为我们可能不想发布我们的源代码。
只有当您不是OPC基金会的成员时才会这样。如果您是会员,则可以在不分发来源的情况下自由使用该代码。有关详细信息,请参阅头文件,并参考" RCL"的实际文本。来自基金会的许可证。