springboot 通过博途获取plc点位的数据代码实现

 更新时间:2023年08月18日 11:48:29   作者:小果子^_^  
这篇文章主要介绍了springboot 通过博途获取plc点位的数据的代码实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

springboot 通过博途获取plc点位的数据

1.maven依赖

<dependency>
    <groupId>com.github.dathlin</groupId>
    <artifactId>HslCommunication</artifactId>
    <version>3.6.0</version>
</dependency>

这个版本尽量是新版本,不然有的返回的值对应的类型不存在

2.代码实现

public void sendHttpRequest() {
     System.out.println("==================================执行命令==================================" + System.currentTimeMillis());
     List<SysPlcIpEntity> ipList = plcIpDao.getIpList();
     if (ipList != null && ipList.size() > 0) {
         for (SysPlcIpEntity plcIp:ipList) {
             SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, plcIp.getIpAddress());
             siemensS7Net.SetPersistentConnection( );
             // 根据ip查询对应的命令
             List<SysPlcMlEntity> plcMlList = plcMlDao.getListByIpId(plcIp.getId());
             if (plcMlList != null && plcMlList.size() > 0) {
                 for (int i = 0; i < plcMlList.size(); i++) {
                     if (plcMlList.get(i).getMlContent().contains("DBW")) {
                         OperateResultExOne<Short> dbwVal = siemensS7Net.ReadInt16(plcMlList.get(i).getMlContent());
                         if (dbwVal.IsSuccess){
                             plcMlList.get(i).setMlValue(String.valueOf(dbwVal.Content));
                         }
                     } else if (plcMlList.get(i).getMlContent().contains("DBD")){
                         OperateResultExOne<Float> dbdVal = siemensS7Net.ReadFloat(plcMlList.get(i).getMlContent());
                         if (dbdVal.IsSuccess) {
                             plcMlList.get(i).setMlValue(String.valueOf(dbdVal.Content));
                         }
                     } else if (plcMlList.get(i).getMlContent().contains("DBX")) {
                         OperateResultExOne<Boolean> dbxVal = siemensS7Net.ReadBool(plcMlList.get(i).getMlContent());
                         if (dbxVal.IsSuccess) {
                             plcMlList.get(i).setMlValue(String.valueOf(dbxVal.Content));
                         }
                     }
                 }
                 plcMlDao.batchUpdateMlList(plcMlList);
             }
         }
     }
     System.out.println("==================================结束命令==================================" + System.currentTimeMillis());
    }

因为需求,DBW是整型,DBD是浮点数,DBX是布尔值DBW/D/X后面对应的是偏移量,

3. 测试方法

public static void main(String[] args) {
  // DB5.DBX8.5
  SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, "192.168.1.105");
  siemensS7Net.SetPersistentConnection( );
  //DBD
  OperateResultExOne<float[]> read = siemensS7Net.ReadFloat( "DB3.DBD10", (short) 4);
  if (read.IsSuccess) {
      for (float f: read.Content) {
          System.out.println("dbd:" + f);
      }
  }
  //DBW
  Short content = siemensS7Net.ReadInt16("DB3.DBW0").Content;
  System.out.println("content" + content);
  OperateResultExOne<Short> long_array = siemensS7Net.ReadInt16("DB3.DBW0");
  if (long_array.IsSuccess){
      System.out.println("dbw:" + long_array.Content);
  }
  // DBX
 /* OperateResultExOne<boolean[]> operateResultExOne = siemensS7Net.ReadBool("DB5.0.1", (short) 4);
  if (operateResultExOne.IsSuccess) {
      for (Boolean boo:operateResultExOne.Content) {
          System.out.println("------------"+boo);
      }
  } else {
      System.out.println("错误信息:"+operateResultExOne.ErrorCode + "=====" + operateResultExOne.Message);
  }*/
}

(short)对应的值是获取几位,因为需求,没办法一起获取,所以我是单个获取的

在这里插入图片描述

到此这篇关于springboot 通过博途获取plc点位的数据的文章就介绍到这了,更多相关springboot 获取plc点位数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringSecurity的安全过滤器链功能详解

    SpringSecurity的安全过滤器链功能详解

    本文介绍了如何配置SpringSecurity的安全过滤器链,包括定义URL路径的访问权限、用户认证和授权配置、自定义CSRF过滤器等内容,通过这些配置,可以实现对不同URL路径的访问控制以及用户的登录、注销等功能,感兴趣的朋友一起看看吧
    2025-03-03
  • springBoot之如何获取接口请求数据和返回数据实现日志

    springBoot之如何获取接口请求数据和返回数据实现日志

    这篇文章主要介绍了springBoot之如何获取接口请求数据和返回数据实现日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java中的Graphics2D类基本使用教程

    Java中的Graphics2D类基本使用教程

    这篇文章主要介绍了Java中的Graphics2D类基本使用教程,Graphics2D类较之Graphics类中的功能更加专业,需要的朋友可以参考下
    2015-10-10
  • MyBatisPlus的autoResultMap生成策略实现

    MyBatisPlus的autoResultMap生成策略实现

    本文主要介绍了MyBatisPlus的autoResultMap生成策略实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • 详解Springboot分布式限流实践

    详解Springboot分布式限流实践

    这篇文章主要介绍了详解Springboot分布式限流实践 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 对比Java设计模式编程中的状态模式和策略模式

    对比Java设计模式编程中的状态模式和策略模式

    这篇文章主要介绍了Java设计模式编程中的状态模式和策略模式对比,文中列举了两种模式的相似点和不同点,并都举了代码的实例作为参照,需要的朋友可以参考下
    2016-04-04
  • Java基于UDP协议实现简单的聊天室程序

    Java基于UDP协议实现简单的聊天室程序

    这篇文章主要为大家详细介绍了Java基于UDP协议实现简单的聊天室程序的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • SpringBoot整合kafka遇到的版本不对应问题及解决

    SpringBoot整合kafka遇到的版本不对应问题及解决

    这篇文章主要介绍了SpringBoot整合kafka遇到的版本不对应问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • plantuml画图实现代码画时序图UML用例图

    plantuml画图实现代码画时序图UML用例图

    这篇文章主要为大家介绍了plantuml画图实现代码画时序图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 简单了解SpringMVC缓存对静态资源有什么影响

    简单了解SpringMVC缓存对静态资源有什么影响

    这篇文章主要介绍了简单了解SpringMVC缓存对静态资源有什么影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论