From 12c3f4de5ce151b50e187066a3c105260523abb8 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 30 四月 2026 10:04:56 +0800
Subject: [PATCH] 充电机代码提交

---
 zy-acs-charge/src/main/java/com/zy/acs/charge/impl/AiPowerChargeServiceImpl.java |   97 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 81 insertions(+), 16 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..4b2cad9 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
@@ -2,6 +2,7 @@
 
 import com.ghgande.j2mod.modbus.ModbusException;
 import com.ghgande.j2mod.modbus.facade.ModbusTCPMaster;
+import com.ghgande.j2mod.modbus.io.AbstractModbusTransport;
 import com.ghgande.j2mod.modbus.procimg.Register;
 import com.ghgande.j2mod.modbus.procimg.SimpleRegister;
 import com.ghgande.j2mod.modbus.util.BitVector;
@@ -19,7 +20,7 @@
 @Service
 @Primary
 @Slf4j
-public class AiPowerChargeServiceImpl implements ChargeCoreService {
+public  class AiPowerChargeServiceImpl implements ChargeCoreService {
 
     /**
      * 寮�濮嬪厖鐢�
@@ -28,12 +29,17 @@
      * @return
      */
     @Override
-    public boolean startCharging(ModbusTCPMaster client) {
+    public  boolean startCharging(ModbusTCPMaster client) {
         // AGV杞︽姤鍛婂埌浣� -> true
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             return client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), true);
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("鍐欏叆寮�濮嬪厖鐢垫寚浠ゆ姤閿�:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return false;
     }
@@ -47,9 +53,14 @@
     @Override
     public boolean stopCharging(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             return client.writeCoil(AiPowerChargerCoilEnum.AGV_REPORTED_IN_POSITION.getAddr(), false);
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("鍐欏叆鍋滄鍏呯數鎸囦护鎶ラ敊:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return false;
     }
@@ -63,9 +74,14 @@
     @Override
     public boolean checkForwardRelayOnline(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             return client.readCoils(AiPowerChargerCoilEnum.FORWARD_RELAY_ONLINE.getAddr(), 1).getBit(0);
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("璇诲彇鍦ㄧ嚎姝g户鐢靛櫒鐘舵�佹姤閿�:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return false;
     }
@@ -79,9 +95,14 @@
     @Override
     public boolean checkBackwardRelayOffline(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             return client.readCoils(AiPowerChargerCoilEnum.BACKWARD_RELAY_OFFLINE.getAddr(), 1).getBit(0);
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("璇诲彇绂荤嚎姝g户鐢靛櫒鐘舵�佹姤閿�:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return false;
     }
@@ -95,9 +116,14 @@
     @Override
     public double getVoltage(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+               client.connect();
+            }
             return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), 1)[0].getValue() * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("璇诲彇鍏呯數鐢靛帇鎶ラ敊:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return 0;
     }
@@ -111,9 +137,14 @@
     @Override
     public double getCurrent(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_CURRENT.getAddr(), 1)[0].getValue() * AiPowerChargerRegisterEnum.CHARGE_CURRENT.getRaw();
-        } catch (ModbusException e) {
+        } catch (Exception e) {
             log.info("璇诲彇鍏呯數鐢垫祦鎶ラ敊:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return 0;
     }
@@ -127,9 +158,37 @@
     @Override
     public int getChargeMode(ModbusTCPMaster client) {
         try {
+            if (!client.isConnected()) {
+               client.connect();
+            }
             return client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_MODE.getAddr(), 1)[0].getValue();
-        } catch (ModbusException e) {
+        } 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(AiPowerChargerRegisterEnum.CHARGER_ID.getAddr(), 1)[0].getValue();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("璇诲彇鍏呯數鏈虹紪鍙锋姤閿�:{} ", e.getMessage());
+        }finally {
+            //client.disconnect();
         }
         return -1;
     }
@@ -142,11 +201,15 @@
      */
     @Override
     public ChargerStatus getStatus(ModbusTCPMaster client) {
+
         ChargerStatus status = new ChargerStatus();
 
         // ---------- 鎵归噺璇诲彇绾垮湀锛堝湴鍧�100~115鍏�16涓級 ----------
         BitVector coils = null;
         try {
+            if (!client.isConnected()) {
+                client.connect();
+            }
             coils = client.readCoils(AiPowerChargerCoilEnum.WORK_STATUS.getAddr(), AiPowerChargerCoilEnum.values().length);
             for (int i = 0; i < coils.size(); i++) {
                 switch (i) {
@@ -202,12 +265,9 @@
                         break;
                 }
             }
-        } catch (ModbusException e) {
-            log.info("鎵归噺璇诲彇绾垮湀鎶ラ敊:{} ", e.getMessage());
-        }
 
-        // ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
-        try {
+            // ---------- 鎵归噺璇诲彇淇濇寔瀵勫瓨鍣紙鍦板潃100~116鍏�17涓級 ----------
+
             Register[] registers = client.readMultipleRegisters(AiPowerChargerRegisterEnum.CHARGE_VOLTAGE.getAddr(), AiPowerChargerRegisterEnum.values().length);
             for (int i = 0; i < registers.length; i++) {
                 switch (i) {
@@ -266,8 +326,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;
@@ -321,5 +384,7 @@
         }
         return true;
     }
+
+
 }
 

--
Gitblit v1.9.1