| | |
| | | List<FuncSta> list = funcStaService.list(new LambdaQueryWrapper<FuncSta>() |
| | | .eq(FuncSta::getType, FuncStaType.CHARGE.toString())); |
| | | for (FuncSta funcSta : list) { |
| | | if (Cools.isEmpty(funcSta.getProtocol()) && funcSta.getProtocol().equalsIgnoreCase(ProtocolType.MODBUS.toString())) { |
| | | if (!Cools.isEmpty(funcSta.getProtocol()) && funcSta.getProtocol().equalsIgnoreCase(ProtocolType.MODBUS.toString())) { |
| | | if (!Cools.isEmpty(funcSta.getIp()) && !Cools.isEmpty(funcSta.getPort())) |
| | | add(funcSta); |
| | | } |
| | |
| | | @ManagerAuth(memo = "修改站点数据") |
| | | public R siteDetlUpdate(@RequestParam Integer siteId, |
| | | @RequestParam Integer workNo, |
| | | @RequestParam Integer staNo, |
| | | @RequestParam String pakMk) { |
| | | @RequestParam Integer staNo) { |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | Map<Integer, StaProtocol> station = stationService.getStationMap(devp.getId()); |
| | | for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) { |
| | |
| | | |
| | | private Integer index; |
| | | |
| | | private short value; |
| | | |
| | | private Boolean flag; |
| | | |
| | | public SafeSignal(Integer index, Boolean flag) { |
| | | |
| | | public SafeSignal(Integer index,Short value, Boolean flag) { |
| | | this.index = index; |
| | | this.value =value; |
| | | this.flag = flag; |
| | | } |
| | | } |
| | |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | // 判断是否满足条件 |
| | | if (staProtocol.isInEnable()) { |
| | | if (staProtocol.getWorkNo() == 0) { |
| | | continue; |
| | | } |
| | | if (!staProtocol.isLoading()) { |
| | |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.conveyor.core.constant.RedisConveyorConstant; |
| | | import com.zy.acs.conveyor.core.enums.ConveyorStateType; |
| | | import com.zy.acs.conveyor.core.model.SafeSignal; |
| | | import com.zy.acs.conveyor.core.model.StaProtocol; |
| | | import com.zy.acs.conveyor.core.operation.OperationHandler; |
| | | import com.zy.acs.conveyor.core.properties.CtuOperationConfig; |
| | |
| | | News.error("{}:站点:{},非自动", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | if (staProtocol.getWorkNo() > 0) { |
| | | if (staProtocol.getWorkNo() > 0 && !staProtocol.isLoading()) { |
| | | Job job = jobService.getJobByJobNo(staProtocol.getWorkNo()); |
| | | if (job == null) { |
| | | News.error("{}:站点:{},找不到任务", config.getMark(), staProtocol.getSiteId()); |
| | |
| | | continue; |
| | | } |
| | | //String s = ctuMainService.checkStationStatus(takeSta.getStaNo()); |
| | | staProtocol.setWorkNo(0); |
| | | staProtocol.setStaNo(0); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol); |
| | | staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(takeSta) ,(short)1,false)); |
| | | |
| | | |
| | | job.setJobSts(ConveyorStateType.CLEARSIGNAL.getStatus()); |
| | | if (!jobService.updateById(job)){ |
| | |
| | | if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) { |
| | | String seqNum = ctuMainService.checkStationStatus(putSta.getStaNo()); |
| | | if (seqNum != null) { |
| | | staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(putSta) ,true)); |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocol ); |
| | | staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(putSta) ,(short)1,true)); |
| | | //redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocol ); |
| | | |
| | | Job job = jobService.getJobByTaskNo(seqNum); |
| | | if (job != null) { |
| | |
| | | } else { |
| | | News.error("{},站点信息不符合入库条件!!!" + " 调用RCS检验未通过,站点:{}", config.getMark(), staProtocol.getSiteId()); |
| | | } |
| | | } else { |
| | | News.error("{},站点:{},异常状态,请补充", config.getMark(), staProtocol.getSiteId()); |
| | | } |
| | | } |
| | | } |
| | |
| | | News.error("{}:站点:{},非自动", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | if (staProtocol.isInEnable()) { |
| | | News.error("{},站点:{},没有可入信号", config.getMark(), staProtocol.getSiteId()); |
| | | if (!staProtocol.isInEnable()) { |
| | | //News.error("{},站点:{},没有可入信号", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | Job jobByJobNo = jobService.getJobByJobNo(staProtocol.getWorkNo()); |
| | |
| | | // 判断是否满足条件 |
| | | if (!staProtocol.isStartup() || !staProtocol.isAutoing() || !staProtocol.isLoading()) { |
| | | if (!staProtocol.isStartup()) { |
| | | News.error("{}:站点:{},未启动入库", config.getMark(), staProtocol.getSiteId()); |
| | | //News.error("{}:站点:{},未启动入库", config.getMark(), staProtocol.getSiteId()); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isAutoing()) { |
| | |
| | | } |
| | | SafeSignal safeSignal = staProtocol.getSafeSignal(); |
| | | |
| | | int baseOffset = SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.getByteLength(); |
| | | String workNoAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | | + (baseOffset + TaskField.TASK_NUMBER.getOffset()); |
| | | String destStaAddr = TaskField.DEST_STATION.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | | + (baseOffset + TaskField.DEST_STATION.getOffset()); |
| | | int baseOffset = 0; |
| | | short[] array = new short[6]; |
| | | array[0] = (short) 1; |
| | | array[1] = (short) 0; |
| | | array[2] = (short) 0; |
| | | array[5] = (short) 0; |
| | | if (safeSignal.getFlag()){ |
| | | array[3] = (short) 0; |
| | | array[4] =safeSignal.getValue(); |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | }else { |
| | | array[3] = safeSignal.getValue(); |
| | | array[4] = (short) 0; |
| | | baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() +2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength(); |
| | | } |
| | | String flagAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION |
| | | + baseOffset; |
| | | |
| | | // 任务下发重试机制 |
| | | int writeCount = 0; |
| | | boolean success = false; |
| | | |
| | | while (writeCount < WRITE_RETRY_MAX) { |
| | | OperateResult writeResult = siemensS7Net.Write(workNoAddr, staProtocol.getWorkNo()); |
| | | Thread.sleep(WRITE_RETRY_INTERVAL_MS); |
| | | OperateResult writeResult = siemensS7Net.Write(flagAddr, array); |
| | | |
| | | OperateResult writeResult1 = siemensS7Net.Write(destStaAddr, staProtocol.getStaNo().shortValue()); |
| | | |
| | | if (writeResult.IsSuccess && writeResult1.IsSuccess) { |
| | | log.info("写入输送线命令成功 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]", |
| | | if (writeResult.IsSuccess) { |
| | | log.info("写入安全信号输送线命令成功 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]", |
| | | staProtocol.getPlcId(), staProtocol.getSiteId(), staProtocol.getWorkNo(), |
| | | staProtocol.getStaNo(), writeCount); |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令成功。输送线plc编号={1},站点数据={2}", |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入安全信号输送线命令成功。输送线plc编号={1},站点数据={2}", |
| | | staProtocol.getPlcId(), JSON.toJSON(staProtocol))); |
| | | success = true; |
| | | break; |
| | | } |
| | | |
| | | writeCount++; |
| | | log.error("写入输送线命令失败 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] [destErr:{}]", |
| | | log.error("写入安全信号输送线命令失败 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] ", |
| | | staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount, |
| | | writeResult.Message, writeResult1.Message); |
| | | writeResult.Message); |
| | | |
| | | if (writeCount < WRITE_RETRY_MAX) { |
| | | Thread.sleep(WRITE_RETRY_INTERVAL_MS); |
| | |
| | | } |
| | | |
| | | if (!success) { |
| | | String errorMsg = MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", |
| | | String errorMsg = MessageFormat.format("【{0}】写入安全信号输送线站点数据失败。输送线plc编号={1},站点数据={2}", |
| | | staProtocol.getPlcId(), JSON.toJSON(staProtocol)); |
| | | OutputQueue.DEVP.offer(errorMsg); |
| | | News.error("SiemensDevp - 4 - 写入输送线站点数据失败。输送线plc编号={},站点数据={}", |
| | | News.error("SiemensDevp - 4 - 写入安全信号输送线站点数据失败。输送线plc编号={},站点数据={}", |
| | | staProtocol.getPlcId(), JSON.toJSON(staProtocol)); |
| | | log.error(errorMsg); |
| | | } |
| | |
| | | import HslCommunication.Core.Types.OperateResultExOne; |
| | | import HslCommunication.Profinet.Siemens.SiemensS7Net; |
| | | import com.zy.acs.common.utils.News; |
| | | import com.zy.acs.conveyor.core.constant.DeviceField; |
| | | import com.zy.acs.conveyor.core.constant.PlcAlarmDefinition; |
| | | import com.zy.acs.conveyor.core.constant.SafeSignalField; |
| | | import com.zy.acs.conveyor.core.constant.StationStatusField; |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.conveyor.core.constant.*; |
| | | import com.zy.acs.conveyor.core.model.SafeSignal; |
| | | import com.zy.acs.conveyor.core.model.StaProtocol; |
| | | import com.zy.acs.conveyor.core.properties.DevpSlave; |
| | | import com.zy.acs.conveyor.core.service.DevpS7Service; |
| | |
| | | private SiemensS7Net siemensS7Net; |
| | | |
| | | private Map<Integer, StaProtocol> station; |
| | | |
| | | private final RedisSupport redis = RedisSupport.defaultRedisSupport; |
| | | |
| | | |
| | | private static final int WRITE_RETRY_MAX = 5; |
| | | |
| | |
| | | staProtocolTake.setAllowPut(status2[2]); |
| | | staProtocolTake.setInComplete(status2[3]); |
| | | staProtocolTake.setOutComplete(status2[4]); |
| | | // |
| | | if (status[3]){ |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, new SafeSignal(i,(short)0,true)); |
| | | } |
| | | if (status2[4]){ |
| | | redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, new SafeSignal(i, (short) 0,false)); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |