| | |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.entity.BasCrnOpt; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.entity.CommandInfo; |
| | | import com.zy.asrs.service.BasCrnOptService; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.zy.asrs.service.CommandInfoService; |
| | | import com.zy.core.CrnThread; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.OutputQueue; |
| | |
| | | @Override |
| | | @SuppressWarnings("InfiniteLoopStatement") |
| | | public void run() { |
| | | initCrnProtocol(); |
| | | this.connect(); |
| | | while (true) { |
| | | try { |
| | | int step = 1; |
| | | int step = 3; |
| | | Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); |
| | | if (task != null) { |
| | | step = task.getStep(); |
| | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化堆垛机 |
| | | */ |
| | | private void initCrnProtocol(){ |
| | | crnProtocol = new CrnProtocol(); |
| | | crnProtocol.setMode((short) 0); |
| | | crnProtocol.setStatus((short) 0); |
| | | crnProtocol.setTaskNo((short) 0); |
| | | crnProtocol.setTaskFinish((short) 0); |
| | | crnProtocol.setValid((short) 0); |
| | | crnProtocol.setBay((short) 0); |
| | | crnProtocol.setLevel((short) 0); |
| | | crnProtocol.setRow((short) 0); |
| | | crnProtocol.setLane((short) 0); |
| | | } |
| | | |
| | | @Override |
| | |
| | | BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); |
| | | BasCrnp basCrnp = new BasCrnp(); |
| | | basCrnp.setCrnNo(slave.getId()); |
| | | basCrnp.setCrnSts((int)crnProtocol.getMode()); |
| | | if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ |
| | | log.error("堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | } |
| | |
| | | if (command.getTaskNo() == 0 && command.getAckFinish() == 0) { |
| | | command.setTaskNo((short) 9999); |
| | | } |
| | | |
| | | CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class); |
| | | CommandInfo commandInfo = new CommandInfo(); |
| | | commandInfo.setWrkNo(command.getTaskNo().intValue()); |
| | | commandInfo.setCommandStatus(1); |
| | | commandInfo.setStartTime(new Date()); |
| | | commandInfo.setDevice("crn"); |
| | | commandInfo.setCommand(JSON.toJSONString(command)); |
| | | commandInfoService.insert(commandInfo); |
| | | |
| | | command.setCrnNo(slave.getId()); |
| | | short[] array = new short[9]; |
| | | if (command.getAckFinish() == 0) { |
| | |
| | | } else { |
| | | array[0] = 0; |
| | | } |
| | | array[1] = command.getSourcePosZ(); |
| | | array[2] = command.getSourcePosY(); |
| | | array[3] = command.getSourcePosX(); |
| | | array[4] = command.getDestinationPosZ(); |
| | | array[5] = command.getDestinationPosY(); |
| | | array[6] = command.getDestinationPosX(); |
| | | array[7] = command.getSourceStaNo(); |
| | | array[8] = command.getDestinationStaNo(); |
| | | |
| | | if (command.getSourcePosZ()==(short)1 && command.getSourcePosY()==(short)1){ |
| | | array[1] = (short)0; |
| | | array[2] = (short)0; |
| | | }else if (command.getSourcePosZ()==(short)1 && command.getSourcePosY()==(short)41){ |
| | | array[1] = (short)0; |
| | | array[2] = (short)42; |
| | | }else { |
| | | array[1] = command.getSourcePosZ(); |
| | | array[2] = command.getSourcePosY(); |
| | | } |
| | | |
| | | if (command.getSourcePosX()==(short)3){ |
| | | array[3] = (short)1; |
| | | }else if (command.getSourcePosX()==(short)4){ |
| | | array[3] = (short)2; |
| | | }else { |
| | | array[3] = command.getSourcePosX(); |
| | | } |
| | | |
| | | if (command.getDestinationPosZ()==(short)1 && command.getDestinationPosY()==(short)1){ |
| | | array[4] = (short)0; |
| | | array[5] = (short)0; |
| | | }else if (command.getDestinationPosZ()==(short)1 && command.getDestinationPosY()==(short)41){ |
| | | array[4] = (short)0; |
| | | array[5] = (short)42; |
| | | }else { |
| | | array[4] = command.getDestinationPosZ(); |
| | | array[5] = command.getDestinationPosY(); |
| | | } |
| | | |
| | | if (command.getDestinationPosX()==(short)3){ |
| | | array[6] = (short)1; |
| | | }else if (command.getDestinationPosX()==(short)4){ |
| | | array[6] = (short)2; |
| | | }else { |
| | | array[6] = command.getDestinationPosX(); |
| | | } |
| | | if ((array[1]==(short)0 && array[2] == (short)0) || (array[1]==(short)0 && array[2] == (short)42)){ |
| | | array[7]=(short)1; |
| | | }else { |
| | | array[7]=(short)0; |
| | | } |
| | | // array[7] = command.getSourceStaNo(); |
| | | |
| | | if ((array[4]==(short)0 && array[5] == (short)0) || (array[4]==(short)0 && array[5] == (short)42)){ |
| | | array[8]=(short)1; |
| | | }else { |
| | | array[8]=(short)0; |
| | | } |
| | | // array[8] = command.getDestinationStaNo(); |
| | | |
| | | // 作业信息 |
| | | OperateResult result = siemensNet.Write("DB1000.0", array); |
| | | OperateResult result = siemensNet.Write("DB10.0", array); |
| | | // 任务号 + 完成位 |
| | | short[] array2 = new short[2]; |
| | | array2[0] = command.getTaskNo(); |
| | | array2[1] = command.getAckFinish(); |
| | | OperateResult result1 = siemensNet.Write("DB1000.24", array2); |
| | | OperateResult result1 = siemensNet.Write("DB10.24", array2); |
| | | |
| | | // 结束位 |
| | | if (command.getAckFinish() == 0) { |
| | | OperateResult result2 = siemensNet.Write("DB1000.28.1", true); |
| | | OperateResult result2 = siemensNet.Write("DB10.28.1", true); |
| | | } |
| | | |
| | | // 日志记录 |