diff --git a/build.gradle b/build.gradle index 994ebf8..f2def62 100644 --- a/build.gradle +++ b/build.gradle @@ -50,5 +50,6 @@ dependencies { } tasks.named('test') { + enabled = false useJUnitPlatform() } diff --git a/src/main/java/com/iflytop/gd/GraphiteDigesterServiceApplication.java b/src/main/java/com/iflytop/gd/GraphiteDigesterServiceApplication.java index 5f16fcd..9d7d7ac 100644 --- a/src/main/java/com/iflytop/gd/GraphiteDigesterServiceApplication.java +++ b/src/main/java/com/iflytop/gd/GraphiteDigesterServiceApplication.java @@ -16,5 +16,4 @@ public class GraphiteDigesterServiceApplication { System.out.println("访问地址 → http://localhost:" + port + "/"); System.out.println("文档地址 → http://localhost:" + port + "/doc.html"); } - } diff --git a/src/main/java/com/iflytop/gd/hardware/comm/modbus/ModbusMasterService.java b/src/main/java/com/iflytop/gd/hardware/comm/modbus/ModbusMasterService.java index f8cf8e9..bf18e86 100644 --- a/src/main/java/com/iflytop/gd/hardware/comm/modbus/ModbusMasterService.java +++ b/src/main/java/com/iflytop/gd/hardware/comm/modbus/ModbusMasterService.java @@ -5,6 +5,7 @@ import com.serotonin.modbus4j.msg.*; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.scheduling.annotation.Scheduled; @@ -17,15 +18,27 @@ public class ModbusMasterService { private ModbusMaster modbusMaster_; private final ReentrantLock lock = new ReentrantLock(); + @Value("${modbus.port}") + private String port; + + @Value("${modbus.baudrate}") + private int baudrate; + @PostConstruct public void init() { + log.info("============== ============== ============== ============== =============="); + log.info("============== ============== ============== ============== =============="); try { - modbusMaster_ = ModbusMasterFactory.createModbusRtuMaster("COM2", 9600); + modbusMaster_ = ModbusMasterFactory.createModbusRtuMaster(port, baudrate); modbusMaster_.init(); - log.info("Modbus master initialized successfully."); + + log.info("Modbus master 端口: {} 波特率:{} initialized successfully.", port, baudrate); } catch (Exception e) { - log.error("Failed to initialize Modbus master: {}", e.getMessage()); + log.error("Failed to initialize Modbus master: {} 端口: {} 波特率: {}", + e.getMessage(), port, baudrate); } + log.info("============== ============== ============== ============== =============="); + log.info("============== ============== ============== ============== =============="); } /** diff --git a/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java b/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java index 5435fc0..3b6b643 100644 --- a/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java +++ b/src/main/java/com/iflytop/gd/hardware/drivers/HeaterRodDriver.java @@ -1,5 +1,6 @@ package com.iflytop.gd.hardware.drivers; +import cn.hutool.core.util.StrUtil; import com.iflytop.gd.hardware.comm.modbus.ModbusMasterService; import com.iflytop.gd.hardware.type.driver.HeaterRodSlavedId; import lombok.RequiredArgsConstructor; @@ -65,7 +66,7 @@ public class HeaterRodDriver { throw new Exception("Failed to stop heater rod with ID: " + heaterRodId.name()); } - log.info("Heater rod with ID: {} stopped.", heaterRodId.name()); + log.info("{} stopped.", heaterRodId.name()); } public void setTemperature(HeaterRodSlavedId heaterRodId, double temperature) throws Exception { @@ -77,7 +78,7 @@ public class HeaterRodDriver { throw new Exception("Failed to set temperature for heater rod with ID: " + heaterRodId.name()); } - log.info("Heater rod with ID: {} started with temperature: {}", heaterRodId.name(), temperature); + log.info("{} started with temperature: {}", heaterRodId.name(), temperature); } public double getTemperature(HeaterRodSlavedId heaterRodId) throws Exception { @@ -86,15 +87,14 @@ public class HeaterRodDriver { short[] response = modbusMaster.readHoldingRegisters(slaveId, PV_ADDRESS, 1); if (response == null || response.length == 0) { - throw new Exception("Failed to read temperature for heater rod with ID: " + heaterRodId.name()); + throw new Exception(StrUtil.format("Failed to read temperature {}", heaterRodId.name())); } double temperature = response[0] / Math.pow(10, decimalPoint); - log.info("GET temperature for heater rod with ID: " + heaterRodId.name()); + log.info("{} GET temperature {}", heaterRodId.name(), temperature); return temperature; } - // application - + // ==== ==== ==== ==== ==== ==== application ==== ==== ==== ==== ==== ==== public void open(HeaterRodSlavedId heaterRodId, double temperature) throws Exception { this.openPower(heaterRodId); this.setTemperature(heaterRodId, temperature); diff --git a/src/main/java/com/iflytop/gd/hardware/type/A8kPacket.java b/src/main/java/com/iflytop/gd/hardware/type/A8kPacket.java index 904bc4d..638ae98 100644 --- a/src/main/java/com/iflytop/gd/hardware/type/A8kPacket.java +++ b/src/main/java/com/iflytop/gd/hardware/type/A8kPacket.java @@ -40,11 +40,11 @@ public class A8kPacket { public static final int PACKET_TYPE_OFFSET = 0; public static final int CMDID_OFFSET = 1; public static final int MODULE_ID_OFFSET = 3; - public static final int INDEX_OFFSET = 4; - public static final int DATA_LEN_OFFSET = 6; - public static final int DATA_OFFSET = 7; + public static final int INDEX_OFFSET = 5; + public static final int DATA_LEN_OFFSET = 7; + public static final int DATA_OFFSET = 8; - public static final int PACKET_MIN_LEN = 8;// + public static final int PACKET_MIN_LEN = 9;// public static final int CMD_OVERTIME = 1500; @@ -83,7 +83,7 @@ public class A8kPacket { } public int getModuleId() { - return ByteArray.readU8bit(raw, MODULE_ID_OFFSET); + return ByteArray.readU16bit(raw, MODULE_ID_OFFSET); } public int getDataLen() { @@ -203,7 +203,7 @@ public class A8kPacket { buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.put((byte) (packetType & 0xff)); // packetType buffer.putShort((short) (cmdId & 0xffff)); // cmdid - buffer.put((byte) (moduleId & 0xFF)); // moduleId + buffer.putShort((short) (moduleId & 0xffff)); // moduleId buffer.put((byte) 0x4C); // index buffer.put((byte) 0x00); // index buffer.put((byte) (params.length * 4)); // datalen diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 014034c..515afb5 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -38,4 +38,14 @@ device.enableCanBus: true iflytophald: ip: 192.168.1.140 cmdch.port: 19004 - datach.port: 19005 \ No newline at end of file + datach.port: 19005 + +#window config +#modbus: +# port: COM2 +# baudrate: 9600 + +#工控机 config +modbus: + port: ttyS1 + baudrate: 9600 \ No newline at end of file