zhang
7 天以前 12c3f4de5ce151b50e187066a3c105260523abb8
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;
@@ -31,9 +32,14 @@
    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("读取在线正继电器状态报错:{} ", 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("读取离线正继电器状态报错:{} ", 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 {
            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) {
        } catch (Exception e) {
            log.info("批量读取线圈报错:{} ", e.getMessage());
           log.info("批量读取保持寄存器报错:{} ", e.getMessage());
        }finally {
            //client.disconnect();
        }
        return status;
@@ -321,5 +384,7 @@
        }
        return true;
    }
}