From 22938493184e08c2494b550da9df813f92989290 Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Wed, 22 Apr 2026 17:49:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=AAAB=E5=8D=B7=E5=88=86?= =?UTF-8?q?=E5=88=87=E4=BF=A1=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicecollector/dao/ResourceDao.java | 2 +- .../devicecollector/runner/DeviceRunner.java | 70 ++++++++++--------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/glue-modbus-collector/src/main/java/com/xujie/devicecollector/dao/ResourceDao.java b/glue-modbus-collector/src/main/java/com/xujie/devicecollector/dao/ResourceDao.java index bfcf9dd..a2fbc3b 100644 --- a/glue-modbus-collector/src/main/java/com/xujie/devicecollector/dao/ResourceDao.java +++ b/glue-modbus-collector/src/main/java/com/xujie/devicecollector/dao/ResourceDao.java @@ -12,6 +12,6 @@ public interface ResourceDao extends BaseMapper { /** * 根据site和ip查询resource是否激活 */ - @Select("select count(1) from resource where site = #{site} and resource_ip_addr = #{ip} and 3in1Flag = 'Y'") + @Select("select count(1) from resource where site = #{site} and resource_ip_addr = #{ip} and [3in1Flag] = 'Y'") int countActiveBySiteAndIp(@Param("site") String site, @Param("ip") String ip); } diff --git a/glue-modbus-collector/src/main/java/com/xujie/devicecollector/runner/DeviceRunner.java b/glue-modbus-collector/src/main/java/com/xujie/devicecollector/runner/DeviceRunner.java index e175a5d..9852474 100644 --- a/glue-modbus-collector/src/main/java/com/xujie/devicecollector/runner/DeviceRunner.java +++ b/glue-modbus-collector/src/main/java/com/xujie/devicecollector/runner/DeviceRunner.java @@ -147,46 +147,50 @@ public class DeviceRunner implements CommandLineRunner { // - 大卷B分切信号:0x502 int cuta = 500; int cutb = 502; + int cutab = 508; int bit1 = collectUtil.readHoldingRegister(ip, port, cuta); logger.info("卷A分切信号:{}", bit1); // 卷B分切信号 int bit2 = collectUtil.readHoldingRegister(ip, port, cutb); logger.info("卷B分切信号:{}", bit2); + int bit3 = collectUtil.readHoldingRegister(ip, port, cutab); + logger.info("大卷AB分切信号:{}", bit3); String nextRollNo = ""; - - if (bit1 == 1) { - // 获取寄存器信息 - List list = getConnectData(deviceInfo); - // 获取卷A信息 - Integer rollAddress1 = deviceInfo.getRollAddress1(); - Integer rollQty1 = deviceInfo.getRollQty1(); - List roll1 = subAddressValue(rollAddress1, rollQty1 - 1, list); - String rStr1 = convertHex(roll1).trim(); - logger.info("卷A:{}", rStr1); - nextRollNo = rStr1; - // 回写清零 - collectUtil.writeHoldingRegister(ip, port, cuta, 0); - } - if (bit2 == 1) { - // 获取寄存器信息 - List list = getConnectData(deviceInfo); - // 获取卷B信息 - Integer rollAddress2 = deviceInfo.getRollAddress2(); - Integer rollQty2 = deviceInfo.getRollQty2(); - List roll2 = subAddressValue(rollAddress2, rollQty2 - 1, list); - String rStr2 = convertHex(roll2).trim(); - logger.info("卷B:{}", rStr2); - nextRollNo = rStr2; - // 回写清零(注意:0x502 同时也可能作为小卷信号地址使用) - collectUtil.writeHoldingRegister(ip, port, cutb, 0); - } - // 存在信号 - if (bit1 == 1 || bit2 == 1) { - // 获取Redis中卷号信息 - String rollNo = (String) redisTemplate.opsForValue().get("device:" + ip); - // 触发分切,执行方法扫描卷处理 - deviceGatherService.scanRollNo(deviceInfo, rollNo, nextRollNo); + if(bit3 == 1){ + if (bit1 == 1) { + // 获取寄存器信息 + List list = getConnectData(deviceInfo); + // 获取卷A信息 + Integer rollAddress1 = deviceInfo.getRollAddress1(); + Integer rollQty1 = deviceInfo.getRollQty1(); + List roll1 = subAddressValue(rollAddress1, rollQty1 - 1, list); + String rStr1 = convertHex(roll1).trim(); + logger.info("卷A:{}", rStr1); + nextRollNo = rStr1; + // 回写清零 + collectUtil.writeHoldingRegister(ip, port, cuta, 0); + } + if (bit2 == 1) { + // 获取寄存器信息 + List list = getConnectData(deviceInfo); + // 获取卷B信息 + Integer rollAddress2 = deviceInfo.getRollAddress2(); + Integer rollQty2 = deviceInfo.getRollQty2(); + List roll2 = subAddressValue(rollAddress2, rollQty2 - 1, list); + String rStr2 = convertHex(roll2).trim(); + logger.info("卷B:{}", rStr2); + nextRollNo = rStr2; + // 回写清零(注意:0x502 同时也可能作为小卷信号地址使用) + collectUtil.writeHoldingRegister(ip, port, cutb, 0); + } + // 存在信号 + if (bit1 == 1 || bit2 == 1) { + // 获取Redis中卷号信息 + String rollNo = (String) redisTemplate.opsForValue().get("device:" + ip); + // 触发分切,执行方法扫描卷处理 + deviceGatherService.scanRollNo(deviceInfo, rollNo, nextRollNo); + } } }