From 98670de02fde18c0aedaf349c0e165c59f57685b Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 05 五月 2026 10:42:43 +0800
Subject: [PATCH] 部分代码移到单独的类
---
zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java | 150 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 109 insertions(+), 41 deletions(-)
diff --git a/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java b/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
index 678af15..e256e01 100644
--- a/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
+++ b/zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java
@@ -6,20 +6,24 @@
import com.ghgande.j2mod.modbus.procimg.SimpleRegister;
import com.ghgande.j2mod.modbus.util.BitVector;
import com.zy.acs.charge.ChargeCoreService;
-import com.zy.acs.charge.constant.AiPowerChargerCoilEnum;
-import com.zy.acs.charge.constant.AiPowerChargerRegisterEnum;
+import com.zy.acs.charge.constant.AiPowerChargeCoilEnum;
+import com.zy.acs.charge.constant.AiPowerChargeRegisterEnum;
+import com.zy.acs.charge.constant.ChargerType;
import com.zy.acs.charge.model.ChargerStatus;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
* 鐖辨櫘鎷堿GV閿傜數鏅鸿兘鍏呯數鏈鸿皟搴�
*/
-@Service
-@Primary
+@Service("aiPowerChargeService")
@Slf4j
-public class AiPowerChargeServiceImpl implements ChargeCoreService {
+public class AiPowerChargeServiceImpl implements ChargeCoreService {
+
+ @Override
+ public ChargerType supportedType() {
+ return ChargerType.Modbus;
+ }
/**
* 寮�濮嬪厖鐢�
@@ -28,12 +32,17 @@
* @return
*/
@Override
- public boolean startCharging(ModbusTCPMaster client) {
+ public boolean startCharging(ModbusTCPMaster client) {
// AGV杞︽姤鍛婂埌浣� -> true
try {
- return client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.writeCoil(AiPowerChargeCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
+ } catch (Exception e) {
log.info("鍐欏叆寮�濮嬪厖鐢垫寚浠ゆ姤閿�:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return false;
}
@@ -47,9 +56,14 @@
@Override
public boolean stopCharging(ModbusTCPMaster client) {
try {
- return client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.writeCoil(AiPowerChargeCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
+ } catch (Exception e) {
log.info("鍐欏叆鍋滄鍏呯數鎸囦护鎶ラ敊:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return false;
}
@@ -63,9 +77,14 @@
@Override
public boolean checkForwardRelayOnline(ModbusTCPMaster client) {
try {
- return client.readCoils(AiPowerChargerCoilEnum.FORWARD_RELAY_ONLINE.getAddr(), 1).getBit(0);
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readCoils(AiPowerChargeCoilEnum.FORWARD_RELAY_ONLINE.getAddr(), 1).getBit(0);
+ } catch (Exception e) {
log.info("璇诲彇鍦ㄧ嚎姝g户鐢靛櫒鐘舵�佹姤閿�:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return false;
}
@@ -79,9 +98,14 @@
@Override
public boolean checkBackwardRelayOffline(ModbusTCPMaster client) {
try {
- return client.readCoils(AiPowerChargerCoilEnum.BACKWARD_RELAY_OFFLINE.getAddr(), 1).getBit(0);
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readCoils(AiPowerChargeCoilEnum.BACKWARD_RELAY_OFFLINE.getAddr(), 1).getBit(0);
+ } catch (Exception e) {
log.info("璇诲彇绂荤嚎姝g户鐢靛櫒鐘舵�佹姤閿�:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return false;
}
@@ -95,9 +119,14 @@
@Override
public double getVoltage(ModbusTCPMaster client) {
try {
- return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), 1)[0].getValue() * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readMultipleRegisters(AiPowerChargeRegisterEnum.CHARGE_VOLTAGE.getAddr(), 1)[0].getValue() * AiPowerChargeRegisterEnum.CHARGE_CURRENT.getRaw();
+ } catch (Exception e) {
log.info("璇诲彇鍏呯數鐢靛帇鎶ラ敊:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return 0;
}
@@ -111,9 +140,14 @@
@Override
public double getCurrent(ModbusTCPMaster client) {
try {
- return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_CURRENT.getAddr(), 1)[0].getValue() * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readMultipleRegisters(AiPowerChargeRegisterEnum.CHARGE_CURRENT.getAddr(), 1)[0].getValue() * AiPowerChargeRegisterEnum.CHARGE_CURRENT.getRaw();
+ } catch (Exception e) {
log.info("璇诲彇鍏呯數鐢垫祦鎶ラ敊:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return 0;
}
@@ -127,9 +161,37 @@
@Override
public int getChargeMode(ModbusTCPMaster client) {
try {
- return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_MODE.getAddr(), 1)[0].getValue();
- } catch (ModbusException e) {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readMultipleRegisters(AiPowerChargeRegisterEnum.CHARGE_MODE.getAddr(), 1)[0].getValue();
+ } catch (Exception e) {
+ e.printStackTrace();
log.info("璇诲彇鍏呯數妯″紡鎶ラ敊:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
+ }
+ return -1;
+ }
+
+ /**
+ * 鑾峰彇鍏呯數鏈虹紪鍙�
+ *
+ * @param client
+ * @return
+ */
+ @Override
+ public int getChargeId(ModbusTCPMaster client) {
+ try {
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ return client.readMultipleRegisters(AiPowerChargeRegisterEnum.CHARGER_ID.getAddr(), 1)[0].getValue();
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.info("璇诲彇鍏呯數鏈虹紪鍙锋姤閿�:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return -1;
}
@@ -142,12 +204,16 @@
*/
@Override
public ChargerStatus getStatus(ModbusTCPMaster client) {
+
ChargerStatus status = new ChargerStatus();
// ---------- 鎵归噺璇诲彇绾垮湀锛堝湴鍧�100~115鍏�16涓級 ----------
BitVector coils = null;
try {
- coils = client.readCoils(AiPowerChargerCoilEnum.WORK_STATUS.getAddr(), AiPowerChargerCoilEnum.values().length);
+ if (!client.isConnected()) {
+ client.connect();
+ }
+ coils = client.readCoils(AiPowerChargeCoilEnum.WORK_STATUS.getAddr(), AiPowerChargeCoilEnum.values().length);
for (int i = 0; i < coils.size(); i++) {
switch (i) {
case 0:
@@ -202,29 +268,26 @@
break;
}
}
- } catch (ModbusException e) {
- log.info("鎵归噺璇诲彇绾垮湀鎶ラ敊:{} ", e.getMessage());
- }
- // ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
- try {
- Register[] registers = client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), AiPowerChargerRegisterEnum.values().length);
+ // ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
+
+ Register[] registers = client.readMultipleRegisters(AiPowerChargeRegisterEnum.CHARGE_VOLTAGE.getAddr(), AiPowerChargeRegisterEnum.values().length);
for (int i = 0; i < registers.length; i++) {
switch (i) {
case 0:
- status.setVoltage(registers[i].getValue() * AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getRaw());
+ status.setVoltage(registers[i].getValue() * AiPowerChargeRegisterEnum.CHARGE_VOLTAGE.getRaw());
break;
case 1:
- status.setCurrent(registers[i].getValue() * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw());
+ status.setCurrent(registers[i].getValue() * AiPowerChargeRegisterEnum.CHARGE_CURRENT.getRaw());
break;
case 2:
status.setChargingTime(registers[i].getValue());
break;
case 3:
- status.setCapacity(registers[i].getValue() * AiPowerChargerRegisterEnum.CHARGE_CAPACITY.getRaw());
+ status.setCapacity(registers[i].getValue() * AiPowerChargeRegisterEnum.CHARGE_CAPACITY.getRaw());
break;
case 4:
- status.setEnergy(registers[i].getValue() * AiPowerChargerRegisterEnum.CHARGE_ENERGY.getRaw());
+ status.setEnergy(registers[i].getValue() * AiPowerChargeRegisterEnum.CHARGE_ENERGY.getRaw());
break;
case 5:
status.setCellMaxVoltage(registers[i].getValue());
@@ -233,19 +296,19 @@
status.setCellMinVoltage(registers[i].getValue());
break;
case 7:
- status.setPackVoltage(registers[i].getValue() * AiPowerChargerRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
+ status.setPackVoltage(registers[i].getValue() * AiPowerChargeRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
break;
case 8:
- status.setVoltageDemand(registers[i].getValue() * AiPowerChargerRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
+ status.setVoltageDemand(registers[i].getValue() * AiPowerChargeRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
break;
case 9:
- status.setCurrentDemand(registers[i].getValue() * AiPowerChargerRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
+ status.setCurrentDemand(registers[i].getValue() * AiPowerChargeRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
break;
case 10:
status.setTemperature(registers[i].getValue());
break;
case 11:
- status.setSoc(registers[i].getValue() * AiPowerChargerRegisterEnum.BMS_SOC.getRaw());
+ status.setSoc(registers[i].getValue() * AiPowerChargeRegisterEnum.BMS_SOC.getRaw());
break;
case 12:
status.setEndFlag(registers[i].getValue());
@@ -266,8 +329,11 @@
break;
}
}
- } catch (ModbusException e) {
- log.info("鎵归噺璇诲彇淇濇寔瀵勫瓨鍣ㄦ姤閿�:{} ", e.getMessage());
+ } catch (Exception e) {
+ log.info("鎵归噺璇诲彇绾垮湀鎶ラ敊:{} ", e.getMessage());
+ log.info("鎵归噺璇诲彇淇濇寔瀵勫瓨鍣ㄦ姤閿�:{} ", e.getMessage());
+ }finally {
+ //client.disconnect();
}
return status;
@@ -283,7 +349,7 @@
@Override
public boolean clearFault(ModbusTCPMaster client) {
try {
- client.writeSingleRegister(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(1));
+ client.writeSingleRegister(AiPowerChargeRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(1));
} catch (ModbusException e) {
log.error("鍏呯數鍣ㄦ竻闄ゆ晠闅滃け璐�......");
}
@@ -299,7 +365,7 @@
@Override
public boolean finishRetract(ModbusTCPMaster client) {
try {
- client.writeSingleRegister(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(2));
+ client.writeSingleRegister(AiPowerChargeRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(2));
} catch (ModbusException e) {
log.error("鍏呯數鍣ㄥ畬鎴愰��鍥炲け璐�......");
}
@@ -315,11 +381,13 @@
@Override
public boolean restoreStandby(ModbusTCPMaster client) {
try {
- client.writeSingleRegister(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(3));
+ client.writeSingleRegister(AiPowerChargeRegisterEnum.SCHEDULE_FLAG.getAddr(), new SimpleRegister(3));
} catch (ModbusException e) {
log.error("鍏呯數鍣ㄦ仮澶嶅緟鏈哄け璐�......");
}
return true;
}
+
+
}
--
Gitblit v1.9.1