当前位置:   article > 正文

KEPserverEX6通过OPCUA服务交互javaMilo_怎么证明kepserverex6安装成功

怎么证明kepserverex6安装成功

一:安装KEPserverEX6:

解压安装包傻瓜式安装就可以了,不赘述......

二:进行相关设置(重点

1.安装完成kepserver之后需要设置opc ua配置项如图:

  右键点击kepserver的图标选怎opc ua配置,点击进入之后显示为:

第一步设置本机通讯opc地址(也就是通过java程序也就是本地服务ip为:127.0.0.1)的安全策略推荐设置成无,博主设置成其它选项折腾很久未果,设置如图:

2.设置远程连接地址(重点)也就是kepserverEX可能并不是安装在本地,或者说别人的java程序访问你本地的kepserver opc服务,设置如图:

3.用户名和密码的设置:设置一个连接kepserver的登陆用户名和密码,这样可以保证非登录无法读写kepsever的数据设置如图:                                                                         

  

4.项目根路径设置需要把opc ua选项的匿名登录关掉如图:

 

 

5.创建一个opc服务本例子以连接欧姆龙plc-nx系列为例子:

 

 

 

 

 

 

 

到此kepserver的设置结束了,配置完重新初始化一下设置就可以了。 

三:java端的设置

1.本案例是基于springboot工程,设置opc的配置文件如图:

 

2. 设置opc的连接客户端如图:

  1. @Configuration
  2. @Slf4j
  3. public class OpcClient {
  4. @Value("${opc.endpointUrl}")
  5. private String endpointUrl;
  6. @Value("${opc.username}")
  7. private String username;
  8. @Value("${opc.password}")
  9. private String password;
  10. @Value("${opc.applicationName}")
  11. private String applicationName;
  12. @Value("${opc.applicationUri}")
  13. private String applicationUri;
  14. static {
  15. Security.addProvider(new BouncyCastleProvider());
  16. }
  17. @Bean("OpcUaClient")
  18. public OpcUaClient createClient() throws Exception {
  19. //安全策略 None、Basic256、Basic128Rsa15、Basic256Sha256
  20. SecurityPolicy securityPolicy = SecurityPolicy.None;
  21. List<EndpointDescription> endpoints = DiscoveryClient.getEndpoints(endpointUrl).get();
  22. EndpointDescription endpoint = endpoints.stream()
  23. .filter(e -> e.getSecurityPolicyUri().equals(securityPolicy.getUri()))
  24. .findFirst()
  25. .orElseThrow(() -> new Exception("没有连接上端点"));
  26. log.info("使用端点: {} [{}/{}]", endpoint.getEndpointUrl(), securityPolicy, endpoint.getSecurityMode());
  27. OpcUaClientConfig config = OpcUaClientConfig.builder()
  28. .setApplicationName(LocalizedText.english(applicationName))
  29. .setApplicationUri(applicationUri)
  30. .setEndpoint(endpoint)
  31. //AnonymousProvider (匿名方式)UsernameProvider(账户密码)
  32. //.setIdentityProvider(new AnonymousProvider())
  33. .setIdentityProvider(new UsernameProvider(username, password))
  34. .setRequestTimeout(uint(5000))
  35. .build();
  36. OpcUaClient opcUaClient = OpcUaClient.create(config);
  37. opcUaClient.connect().get();
  38. return opcUaClient;
  39. }
  40. }
  1. @Slf4j
  2. @Component
  3. public class OpcUaUtil {
  4. @Autowired
  5. private OpcUaClient client;
  6. /**
  7. * 写入数据到opc服务器
  8. *
  9. * @param namespaceIndex
  10. * @param identifier
  11. * @param value
  12. * @throws Exception
  13. */
  14. public void write(int namespaceIndex, String identifier, Object value) throws Exception {
  15. NodeId nodeId = new NodeId(namespaceIndex, identifier);
  16. Variant v = new Variant(value);
  17. DataValue dv = new DataValue(v, null, null);
  18. CompletableFuture<StatusCode> status = client.writeValue(nodeId, dv);
  19. StatusCode statusCode = status.get();
  20. boolean good = statusCode.isGood();
  21. if (!good)
  22. throw new BusinessException("输入写入失败,请检查系统运行情况");
  23. }
  24. /**
  25. * 从opc服务器读数据
  26. *
  27. * @param namespaceIndex
  28. * @param identifier
  29. * @return
  30. * @throws Exception
  31. */
  32. public Object read(int namespaceIndex, String identifier) throws Exception {
  33. UaVariableNode node = client.getAddressSpace().getVariableNode(new NodeId(namespaceIndex, identifier));
  34. DataValue value = node.readValue();
  35. Object data = value.getValue().getValue();
  36. return data;
  37. }
  38. /**
  39. * 获取对应的节点
  40. *
  41. * @param namespaceIndex
  42. * @param identifier
  43. * @return
  44. * @throws UaException
  45. */
  46. public List<ExpandedNodeId> browseNode(int namespaceIndex, String identifier) throws Exception {
  47. List<ReferenceDescription> referenceDescriptions = client.getAddressSpace().browse(new NodeId(namespaceIndex, identifier));
  48. List<ExpandedNodeId> listNode = new ArrayList<>();
  49. for (ReferenceDescription referenceDescription : referenceDescriptions) {
  50. listNode.add(referenceDescription.getNodeId());
  51. }
  52. return listNode;
  53. }

3.测试类

  1. @Test
  2. public void redWriteOpcTest() throws Exception {
  3. System.out.println(opcUaUtil.read(2, "欧姆龙.设备 1.测试"));
  4. // System.out.println(opcUaUtil.read(2, "欧姆龙.设备 1.测试1"));
  5. // opcUaUtil.write(2,"欧姆龙.设备 1.测试",(short)888);//西门子opc-ua.设备1.PLC.Memory.测i试
  6. // System.out.println(opcUaUtil.read(2, "西门子opc-ua.设备 1.PLC.Memory.测试"));
  7. }

避坑处:kepserver的namespace都为 2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/948259
推荐阅读
相关标签
  

闽ICP备14008679号