目标
用OPC UA客户端(如UaExpert)读取OPC DA服务器上的点。
原理
OPC DA是基于COM/DCOM的,传统OPC DA客户端访问非本机OPC DA服务时需要配置DCOM。OPC UA客户端无法直接访问 OPC DA服务,需要将OPC DA服务映射为OPC UA服务,也就是OPC 规范的第8部分。OPC基金会官方提供了这样的映射工具:UA COM Server Wrapper,即UA-.NETStandard-Samples里面的ComIOP,其中DA Server 映射为 UA Server用Wrapper, UA Server适配为 DA Server 用Proxy。
测试
步骤一:在DA Server上用DA Client查看OPC DA的链接地址,我这里是 NT6000.eNetOPC.4。
步骤二:下载UA-.NETStandard-Samples代码,修改UA-.NETStandard-Samples-master\ComIOP\Wrapper\ServerWrapper下的Opc.Ua.ComServerWrapper.Config.xml中ComDaClientConfiguration节的两处:
1. <ServerUrl>opc.com://localhost/Softing.OPCToolboxDemo_ServerDA.1</ServerUrl>修改为<ServerUrl>opc.com://localhost/NT6000.eNetOPC.4</ServerUrl>;
2. <SeperatorChars></SeperatorChars>修改为 <SeperatorChars>.</SeperatorChars>。
然后编译UA COM Server Wrapper 项目,我把默认的.net 4.8 改成了.net 4.7.1免得装.net 4.8的runtime。
步骤三:把UA-.NETStandard-Samples-master\ComIOP\bin\Debug下的文件复制到 DA Server所在的电脑上,运行UA COM Server Wrapper.exe,最小化会隐藏在任务栏中。
步骤四:用DA Client添加一个测试点,复制点地址,如DongA.D170_BS_BS_m3;
步骤五:在另外一台电脑上运行OPC UA客户端,我用的UaExpert,默认Objects下面会出现DA节点;
步骤六:添加自定义节点add custom node,输入地址NS2|String|0:DongA.D170_BS_BS_m3如下图
然后就能看到数据啦!
总结
有了UA COM Server Wrapper,读取DA Server数据就不用再费劲配置DCOM了,也不用再写OPC DA 客户端代码了,是不是很好用?根据问题讨论,每秒3万点没问题。