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

news/2025/3/25 22:15:59/

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.5SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, "192.168.1.105");siemensS7Net.SetPersistentConnection( );//DBDOperateResultExOne<float[]> read = siemensS7Net.ReadFloat( "DB3.DBD10", (short) 4);if (read.IsSuccess) {for (float f: read.Content) {System.out.println("dbd:" + f);}}//DBWShort 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)对应的值是获取几位,因为需求,没办法一起获取,所以我是单个获取的
在这里插入图片描述


http://www.ppmy.cn/news/1048291.html

相关文章

打印数字图形

目录 1.题目描述&#xff1a;先要求你从键盘输入一个整数n&#xff08;1<n<9&#xff09;&#xff0c;打印出指定的数字图形。 2.输入&#xff1a;输入包含多组测试数据。每组输入一个整数n&#xff08;1<n<9&#xff09;。 3.输出&#xff1a;对于每组输入&…

阿里云2核4G服务器配置汇总表_轻量和ECS

阿里云2核4G服务器配置价格表&#xff0c;297元一年&#xff0c;配置为轻量应用服务器2核4G、4M带宽、60GB高效云盘&#xff0c;折合24元一个月。 目录 2核4G服务器轻量&#xff1a; 2核4G服务器ECS 关于轻量和ECS的区别&#xff1a; 2核4G服务器轻量&#xff1a; 云服务器…

Window10安装ISE14.7闪退

简介 相信对于做FPGA的同行来说,逃不过Xilinx公司的芯片,而Xilinx公司的芯片又逃不过Spartan6系列,无论Xilinx怎么去强推7系列产品,Spartan6还是有大把的人在用(成本问题),虽然目前国内厂商生产的FPGA部分可替代Spartan6功能,很多精髓还是没有学习到。 相对于Xilinx主推…

Visual Studio Code前端开发插件推荐

引言 Visual Studio Code&#xff08;简称VS Code&#xff09;是一款轻量级且强大的开源代码编辑器&#xff0c;广受前端开发者的喜爱。其丰富的插件生态系统为前端开发提供了许多便利和增强功能的插件。本篇博客将向大家推荐一些在前端开发中常用且优秀的插件&#xff0c;并提…

《HeadFirst设计模式(第二版)》第十一章代码——代理模式

代码文件目录&#xff1a; RMI&#xff1a; MyRemote package Chapter11_ProxyPattern.RMI;import java.rmi.Remote; import java.rmi.RemoteException;public interface MyRemote extends Remote {public String sayHello() throws RemoteException; }MyRemoteClient packa…

学习心得03:OpenCV

数学真是不可思议&#xff0c;不管什么东西&#xff0c;都能用数学来处理。OpenCV以前也接触过&#xff0c;这次是系统学习一下。 颜色模型 RGB&#xff0c;YUV&#xff0c;HSV&#xff0c;Lab&#xff0c;GRAY 颜色转换cvtColor()/convertTo()&#xff0c;通道分离split()&…

基于YOLOv5n/s/m不同参数量级模型开发构建茶叶嫩芽检测识别模型,使用pruning剪枝技术来对模型进行轻量化处理,探索不同剪枝水平下模型性能影响

今天有点时间就想着之前遗留的一个问题正好拿过来做一下看看&#xff0c;主要的目的就是想要对训练好的目标检测模型进行剪枝处理&#xff0c;这里就以茶叶嫩芽检测数据场景为例了&#xff0c;在我前面的博文中已经有过相关的实践介绍了&#xff0c;感兴趣的话可以自行移步阅读…

消息中间件篇

消息中间件篇 RabbitMQ 如何保证消息不丢失 面试官&#xff1a; RabbitMQ如何保证消息不丢失 候选人&#xff1a; 嗯&#xff01;我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的&#xff0c;这里面就要求了消息的高可用性&#xff0c;我们要保证消息的不…