| | |
| | | // continue; |
| | | // } |
| | | // 判读是否可以自动断开充电(即充电过程中不能接受任务),跳过 |
| | | if (!agvService.judgeAutoStopCharge(agvModel,agvDetail, agv)) { |
| | | if (!agvService.judgeAutoStopCharge(agvModel, agvDetail, agv)) { |
| | | continue; |
| | | } |
| | | // is charging ? |
| | |
| | | * 调度对接充电桩 |
| | | * 状态1:开始充电 |
| | | * 状态2:充电中 |
| | | * 状态3:人为操作下发断开充电操作 |
| | | */ |
| | | @Scheduled(cron = "0/5 * * * * ? ") |
| | | private synchronized void startCharge() { |
| | |
| | | continue; |
| | | } |
| | | AgvDetail agvDetail = agvDetailService.selectByAgvNo(key); |
| | | if (agvDetail == null){ |
| | | if (agvDetail == null) { |
| | | log.error("{} 号待充电小车不存在", key); |
| | | continue; |
| | | } |
| | |
| | | if (null == agvDetail || null == agvDetail.getSoc() || null == agvDetail.getAgvStatus() || funcSta == null || null == modbusTCPMaster) { |
| | | continue; |
| | | } |
| | | if (chargeCoreService.getChargeMode(modbusTCPMaster) != 0) { |
| | | log.info("{} 该充电机不是自动充电模式", funcSta.getName()); |
| | | continue; |
| | | int chargeMode = chargeCoreService.getChargeMode(modbusTCPMaster); |
| | | if (chargeMode != 0) { |
| | | log.info("{} 该充电机不是自动充电模式", chargeMode); |
| | | continue; |
| | | } |
| | | switch (status) { |
| | | case 1: |
| | | // 后退信号消失,说明马达正在前进 |
| | | if (chargeCoreService.checkBackwardRelayOffline(modbusTCPMaster)) { |
| | | log.info("发送充电机充电指令:车号:{}", agvDetail.getAgvId$()); |
| | | chargeCoreService.startCharging(modbusTCPMaster); |
| | | continue; |
| | | } |
| | | if (chargeCoreService.checkForwardRelayOnline(modbusTCPMaster)) { |
| | | double current = chargeCoreService.getCurrent(modbusTCPMaster); |
| | | double voltage = chargeCoreService.getVoltage(modbusTCPMaster); |
| | | if (current > 0 && voltage > 0) { |
| | | redis.setMap(RedisConstant.AGV_CHARGE_FLAG, key, 2); |
| | | log.info("charge complete"); |
| | | log.info("charge start:{}", agvDetail.getAgvId$()); |
| | | } else { |
| | | log.info("read charge current and voltage: {},{}", current, voltage); |
| | | } |
| | | } else { |
| | | log.info("前进到位信号失败:车号:{}", agvDetail.getAgvId$()); |
| | | } |
| | | break; |
| | | |
| | | case 2: |
| | | AgvModel agvModel = agvModelService.getByAgvId(agvDetail.getAgvId()); |
| | | if (agvDetail.getSoc() >= agvModel.getQuaBattery()) { |
| | | // 前进信号存在,说明机械臂未伸回 |
| | | if (chargeCoreService.checkForwardRelayOnline(modbusTCPMaster)) { |
| | | chargeCoreService.stopCharging(modbusTCPMaster); |
| | | // 如果充电机完成充电会自动断开 |
| | | // 但充电标识哈在缓存中,那么需要清除缓存标记 |
| | | // 获取充电机编号且后退到位信号存在,那么说明机械臂已经伸回,那么就需要清除缓存 |
| | | if (chargeCoreService.getChargeId(modbusTCPMaster) > 0 && chargeCoreService.checkBackwardRelayOffline(modbusTCPMaster)) { |
| | | redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key); |
| | | log.info("charge over By Auto:{}", agvDetail.getAgvId$()); |
| | | }else { |
| | | AgvModel agvModel = agvModelService.getByAgvId(agvDetail.getAgvId()); |
| | | if (agvDetail.getSoc() >= agvModel.getQuaBattery()) { |
| | | // 前进信号存在,说明机械臂未伸回 |
| | | if (chargeCoreService.checkForwardRelayOnline(modbusTCPMaster)) { |
| | | log.info("发送充电机断充指令:车号:{}", agvDetail.getAgvId$()); |
| | | chargeCoreService.stopCharging(modbusTCPMaster); |
| | | continue; |
| | | } |
| | | if (chargeCoreService.checkBackwardRelayOffline(modbusTCPMaster)) { |
| | | redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key); |
| | | log.info("charge over:{}", agvDetail.getAgvId$()); |
| | | } else { |
| | | log.info("后退到位信号失败:车号:{}", agvDetail.getAgvId$()); |
| | | } |
| | | } |
| | | if (chargeCoreService.checkBackwardRelayOffline(modbusTCPMaster)) { |
| | | redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key); |
| | | log.info("charge over"); |
| | | } |
| | | } |
| | | break; |
| | | case 3: |
| | | // 手动断开充电 |
| | | // 前进信号存在,说明机械臂未伸回 |
| | | if (chargeCoreService.checkForwardRelayOnline(modbusTCPMaster)) { |
| | | log.info("发送充电机手动断充指令:车号:{}", agvDetail.getAgvId$()); |
| | | chargeCoreService.stopCharging(modbusTCPMaster); |
| | | continue; |
| | | } |
| | | if (chargeCoreService.checkBackwardRelayOffline(modbusTCPMaster)) { |
| | | redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key); |
| | | log.info("charge over by handle:{}", agvDetail.getAgvId$()); |
| | | } else { |
| | | log.info("手动后退到位信号失败:车号:{}", agvDetail.getAgvId$()); |
| | | } |
| | | break; |
| | | default: |