| | |
| | | |
| | | 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; |
| | |
| | | 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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | @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; |
| | | } |
| | |
| | | */ |
| | | @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) { |
| | |
| | | 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) { |
| | |
| | | break; |
| | | } |
| | | } |
| | | } catch (ModbusException e) { |
| | | } catch (Exception e) { |
| | | log.info("批量读取线圈报错:{} ", e.getMessage()); |
| | | log.info("批量读取保持寄存器报错:{} ", e.getMessage()); |
| | | }finally { |
| | | //client.disconnect(); |
| | | } |
| | | |
| | | return status; |
| | |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |
| | | |