From c42a7c76e24940db9e81307dc67104d9068c3119 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 07 四月 2026 15:04:21 +0800
Subject: [PATCH] 1

---
 zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java |  144 ++++++++++++++++++++++++-----------------------
 1 files changed, 74 insertions(+), 70 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 a0f68e5..7c6c445 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
@@ -1,14 +1,16 @@
 package com.zy.acs.charge.impl;
 
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
 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.model.ChargerStatus;
-import com.zy.acs.charge.protocol.ModbusAdapter;
+import com.zy.acs.common.utils.ByteUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 鐖辨櫘鎷堿GV閿傜數鏅鸿兘鍏呯數鏈鸿皟搴�
@@ -18,103 +20,105 @@
 @Slf4j
 public class AiPowerChargeServiceImpl implements ChargeCoreService {
 
-    @Autowired
-    private ModbusAdapter modbusAdapter;
 
     @Override
-    public boolean connect() throws Exception {
-        modbusAdapter.connect();
-        return true;
-    }
-
-    @Override
-    public void disconnect() {
-        modbusAdapter.disconnect();
-    }
-
-    @Override
-    public boolean isConnected() {
-        // 鍙互閫氳繃灏濊瘯璇诲彇涓�涓瘎瀛樺櫒鏉ュ垽鏂紝浣嗕负浜嗙畝鍗曪紝杩欓噷鐩存帴杩斿洖杩炴帴鐘舵�侊紙闇�鏀归�� ModbusAdapter 鏆撮湶鐘舵�侊級
-        // 鍙湪 ModbusAdapter 涓坊鍔� isConnected() 鏂规硶
-        return false; // 寰呭疄鐜�
-    }
-
-    @Override
-    public boolean startCharging() throws Exception {
+    public boolean startCharging(ModbusRtuOverTcp client) {
         // AGV杞︽姤鍛婂埌浣� -> true
-        modbusAdapter.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
+        client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
         return true;
     }
 
     @Override
-    public boolean stopCharging() throws Exception {
-        modbusAdapter.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
+    public boolean stopCharging(ModbusRtuOverTcp client) {
+        client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
         return true;
     }
 
     @Override
-    public ChargerStatus getStatus() throws Exception {
+    public boolean checkForwardRelayOnline(ModbusRtuOverTcp client) {
+        return client.readBoolean(AiPowerChargerCoilEnum.FORWARD_RELAY_ONLINE.getAddr(), 1);
+    }
+
+    @Override
+    public boolean checkBackwardRelayOffline(ModbusRtuOverTcp client) {
+        return client.readBoolean(AiPowerChargerCoilEnum.BACKWARD_RELAY_OFFLINE.getAddr(), 1);
+    }
+
+    @Override
+    public double getVoltage(ModbusRtuOverTcp client) {
+        return client.readInt16(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), 1) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
+    }
+
+    @Override
+    public double getCurrent(ModbusRtuOverTcp client) {
+        return client.readInt16(AiPowerChargerRegisterEnum.CHARGE_CURRENT.getAddr(), 1) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
+    }
+
+    @Override
+    public ChargerStatus getStatus(ModbusRtuOverTcp client) {
         ChargerStatus status = new ChargerStatus();
 
         // ---------- 鎵归噺璇诲彇绾垮湀锛堝湴鍧�100~115鍏�16涓級 ----------
-        boolean[] coils = modbusAdapter.readCoils(100, 16);
-        status.setWorking(coils[0]);                      // 鍦板潃100
-        status.setOverheat(coils[1]);                     // 101
-        status.setFault(coils[2]);                        // 102
-        status.setCvMode(coils[3]);                       // 103
-        status.setBatteryConnected(coils[4]);              // 104
-        status.setFanAbnormal(coils[5]);                   // 105
-        status.setPlateOverheat(coils[6]);                 // 106
-        status.setBrushPressed(coils[7]);                  // 107
-        status.setAgvReportedInPosition(coils[8]);         // 108
-        status.setChargerConfirmedAgvReady(coils[9]);      // 109
-        status.setForwardRelayOnline(coils[10]);           // 110
-        status.setBackwardRelayOffline(coils[11]);         // 111
-        status.setBmsChargeEnable(coils[12]);              // 112
-        status.setCommRs485Success(!coils[13]);            // 113锛堟敞鎰忥細0=鎴愬姛锛�1=瓒呮椂锛�
-        status.setCommCanSuccess(!coils[14]);              // 114
-        status.setCommBmsSuccess(!coils[15]);              // 115
+        List<Boolean> coils = client.readCoil(100, 16);
+        status.setWorking(coils.get(0));                      // 鍦板潃100
+        status.setOverheat(coils.get(0));                     // 101
+        status.setFault(coils.get(0));                        // 102
+        status.setCvMode(coils.get(0));                       // 103
+        status.setBatteryConnected(coils.get(0));              // 104
+        status.setFanAbnormal(coils.get(0));                   // 105
+        status.setPlateOverheat(coils.get(0));                 // 106
+        status.setBrushPressed(coils.get(0));                  // 107
+        status.setAgvReportedInPosition(coils.get(8));         // 108
+        status.setChargerConfirmedAgvReady(coils.get(9));      // 109
+        status.setForwardRelayOnline(coils.get(10));           // 110
+        status.setBackwardRelayOffline(coils.get(11));         // 111
+        status.setBmsChargeEnable(coils.get(12));              // 112
+        status.setCommRs485Success(!coils.get(13));            // 113锛堟敞鎰忥細0=鎴愬姛锛�1=瓒呮椂锛�
+        status.setCommCanSuccess(!coils.get(14));              // 114
+        status.setCommBmsSuccess(!coils.get(15));              // 115
 
         // ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
-        int[] regs = modbusAdapter.readHoldingRegisters(100, 17);
-        status.setVoltage(regs[0] * AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getRaw());
-        status.setCurrent(regs[1] * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw());
-        status.setChargingTime(regs[2]);
-        status.setCapacity(regs[3] * AiPowerChargerRegisterEnum.CHARGE_CAPACITY.getRaw());
-        status.setEnergy(regs[4] * AiPowerChargerRegisterEnum.CHARGE_ENERGY.getRaw());
-        status.setCellMaxVoltage(regs[5]);
-        status.setCellMinVoltage(regs[6]);
-        status.setPackVoltage(regs[7] * AiPowerChargerRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
-        status.setVoltageDemand(regs[8] * AiPowerChargerRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
-        status.setCurrentDemand(regs[9] * AiPowerChargerRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
-        status.setTemperature(regs[10]);
-        status.setSoc(regs[11] * AiPowerChargerRegisterEnum.BMS_SOC.getRaw());
-        status.setEndFlag(regs[12]);
-        status.setChargerId(regs[13]);
-        status.setFaultCode(regs[14]);
-        status.setChargeMode(regs[15]);
-        status.setScheduleFlag(regs[16]);
+        byte[] bytes = client.readHoldRegister(100, 16);
+        status.setVoltage(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getRaw());
+        status.setCurrent(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw());
+        status.setChargingTime(ByteUtils.getInt(bytes, 0));
+        status.setCapacity(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_CAPACITY.getRaw());
+        status.setEnergy(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.CHARGE_ENERGY.getRaw());
+        status.setCellMaxVoltage(ByteUtils.getInt(bytes, 0));
+        status.setCellMinVoltage(ByteUtils.getInt(bytes, 0));
+        status.setPackVoltage(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_PACK_VOLTAGE.getRaw());
+        status.setVoltageDemand(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_VOLTAGE_DEMAND.getRaw());
+        status.setCurrentDemand(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_CURRENT_DEMAND.getRaw());
+        status.setTemperature(ByteUtils.getInt(bytes, 0));
+        status.setSoc(ByteUtils.getInt(bytes, 0) * AiPowerChargerRegisterEnum.BMS_SOC.getRaw());
+        status.setEndFlag(ByteUtils.getInt(bytes, 0));
+        status.setChargerId(ByteUtils.getInt(bytes, 0));
+        status.setFaultCode(ByteUtils.getInt(bytes, 0));
+        status.setChargeMode(ByteUtils.getInt(bytes, 0));
+        status.setScheduleFlag(ByteUtils.getInt(bytes, 0));
 
         return status;
     }
 
+
+    // 娓呴櫎鏁呴殰
     @Override
-    public boolean setVoltage(int voltageDecivolts) throws Exception {
-        // BMS鏃犳椂鎵嶅厑璁稿啓鍏ワ紝杩欓噷鍋囪鍏佽
-        modbusAdapter.writeHoldingRegister(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), voltageDecivolts);
+    public boolean clearFault(ModbusRtuOverTcp client) {
+        client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 1);
         return true;
     }
 
+    // 瀹屾垚閫�鍥炲懡浠�
     @Override
-    public boolean setCurrent(int currentDecamperes) throws Exception {
-        modbusAdapter.writeHoldingRegister(AiPowerChargerRegisterEnum.CHARGE_CURRENT.getAddr(), currentDecamperes);
+    public boolean finishRetract(ModbusRtuOverTcp client) {
+        client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 2);
         return true;
     }
 
+    // 鎭㈠寰呮満鐘舵��
     @Override
-    public boolean clearFault() throws Exception {
-        // 鍐欏叆璋冨害鏍囪瘑鍦板潃涓�1锛氭竻闄ゆ晠闅�
-        modbusAdapter.writeHoldingRegister(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), 1);
+    public boolean restoreStandby(ModbusRtuOverTcp client) {
+        client.writeInt16(AiPowerChargerRegisterEnum.SCHEDULE_FLAG.getAddr(), (short) 3);
         return true;
     }
 }

--
Gitblit v1.9.1