| src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java
@@ -105,17 +105,21 @@ int writeAck = 0; boolean commandResult = false; do { OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2); if (commandReadResult.IsSuccess) { short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0); if (commandRead == 1) { Thread.sleep(500); }else { commandResult = true; break; OperateResult result = siemensNet.Write("DB100.0", (short) 0); if (result.IsSuccess) { OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2); if (commandReadResult.IsSuccess) { short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0); if (commandRead == 1) { Thread.sleep(500); }else { commandResult = true; break; } } writeAck++; } writeAck++; Thread.sleep(200); } while (writeAck < 5); if (!commandResult) { @@ -124,7 +128,7 @@ } short[] array = new short[9]; array[0] = (short) 0; array[0] = command.getAckFinish().shortValue(); array[1] = command.getTaskNo().shortValue(); array[2] = command.getTaskMode().shortValue(); array[3] = command.getSourcePosX().shortValue(); @@ -134,53 +138,68 @@ array[7] = command.getDestinationPosY().shortValue(); array[8] = command.getDestinationPosZ().shortValue(); OperateResult result = siemensNet.Write("DB100.0", array); if (!result.IsSuccess) { int idx = 0; boolean commandDataResult = false; do { OperateResult result = siemensNet.Write("DB100.0", array); if (result.IsSuccess) { OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2); short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4); short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6); short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8); short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16); if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { result = siemensNet.Write("DB100.0", array); } else { commandDataResult = true; break; } } } idx++; Thread.sleep(200); } while (idx < 5); if (!commandDataResult) { response.setMessage("堆垛机命令下发[id:{}] >>>>> {}" + command.getCrnNo() + "堆垛机写入任务数据失败"); return response; } int idx = 0; int writeConfirmIdx = 0; boolean commandConfirmResult = false; do { OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2); short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4); short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6); short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8); short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16); if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { result = siemensNet.Write("DB100.0", array); } else { break; OperateResult result = siemensNet.Write("DB100.18", (short) 1); if (result.IsSuccess) { OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.18", (short) 2); if (commandReadResult.IsSuccess) { short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0); if (commandRead == 0) { Thread.sleep(500); }else { commandConfirmResult = true; break; } } } idx++; Thread.sleep(500); } while (idx < 5); writeConfirmIdx++; Thread.sleep(200); } while (writeConfirmIdx < 5); OperateResult confirmResult = siemensNet.Write("DB100.18", (short) 1); if (!confirmResult.IsSuccess) { if (!commandConfirmResult) { News.error("堆垛机写入确认数据失败 ===>> [id:{}]", command.getCrnNo()); response.setMessage("堆垛机写入确认数据失败"); return response; } if (result != null && result.IsSuccess) { News.info("堆垛机命令下发[id:{}] >>>>> {}", command.getCrnNo(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), command.getCrnNo(), JSON.toJSON(command))); response.setResult(true); response.setMessage("命令下发成功"); } else { News.error("写入堆垛机plc数据失败 ===>> [id:{}]", command.getCrnNo()); OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}]", DateUtils.convert(new Date()), command.getCrnNo())); response.setResult(false); response.setMessage("命令下发失败"); } News.info("堆垛机命令下发[id:{}] >>>>> {}", command.getCrnNo(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), command.getCrnNo(), JSON.toJSON(command))); response.setResult(true); response.setMessage("命令下发成功"); return response; } catch (Exception e) { e.printStackTrace(); src/main/java/com/zy/core/network/real/ZyCrnV2RealConnect.java
@@ -143,17 +143,21 @@ int writeAck = 0; boolean commandResult = false; do { OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2); if (commandReadResult.IsSuccess) { short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0); if (commandRead == 1) { Thread.sleep(500); }else { commandResult = true; break; OperateResult result = siemensNet.Write("DB100.0", (short) 0); if (result.IsSuccess) { OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2); if (commandReadResult.IsSuccess) { short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0); if (commandRead == 1) { Thread.sleep(500); }else { commandResult = true; break; } } writeAck++; } writeAck++; Thread.sleep(200); } while (writeAck < 5); if (!commandResult) { @@ -162,7 +166,7 @@ } short[] array = new short[9]; array[0] = (short) 0; array[0] = command.getAckFinish().shortValue(); array[1] = command.getTaskNo().shortValue(); array[2] = command.getTaskMode().shortValue(); array[3] = command.getSourcePosX().shortValue(); @@ -172,39 +176,35 @@ array[7] = command.getDestinationPosY().shortValue(); array[8] = command.getDestinationPosZ().shortValue(); OperateResult result = siemensNet.Write("DB100.0", array); if (!result.IsSuccess) { response.setMessage("堆垛机命令下发[id:{}] >>>>> {}" + command.getCrnNo() + "堆垛机写入任务数据失败"); return response; } int idx = 0; boolean contentFlag = false; boolean commandDataResult = false; do { OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2); short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4); short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6); short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8); short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16); if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { result = siemensNet.Write("DB100.0", array); } else { contentFlag = true; break; OperateResult result = siemensNet.Write("DB100.0", array); if (result.IsSuccess) { OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2); short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4); short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6); short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8); short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16); if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { result = siemensNet.Write("DB100.0", array); } else { commandDataResult = true; break; } } } idx++; Thread.sleep(500); Thread.sleep(200); } while (idx < 5); if(!contentFlag) { News.error("堆垛机写入任务数据失败 ===>> [id:{}]", command.getCrnNo()); response.setMessage("堆垛机写入任务数据失败"); if (!commandDataResult) { response.setMessage("堆垛机命令下发[id:{}] >>>>> {}" + command.getCrnNo() + "堆垛机写入任务数据失败"); return response; } @@ -217,7 +217,7 @@ if (resultRead.IsSuccess) { short confirm = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0); if(confirm == 0) { confirmResult = siemensNet.Write("DB100.18", (short) 1); Thread.sleep(500); }else { confirmFlag = true; break; @@ -225,7 +225,7 @@ } } confirmIdx++; Thread.sleep(500); Thread.sleep(200); } while (confirmIdx < 5); if(!confirmFlag) { @@ -234,19 +234,11 @@ return response; } if (result != null && result.IsSuccess) { News.info("堆垛机命令下发[id:{}] >>>>> {}", command.getCrnNo(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), command.getCrnNo(), JSON.toJSON(command))); response.setResult(true); response.setMessage("命令下发成功"); redisUtil.set(RedisKeyType.CRN_SEND_COMMAND_LOCK.key + deviceConfig.getDeviceNo(), "lock", 5); } else { News.error("写入堆垛机plc数据失败 ===>> [id:{}]", command.getCrnNo()); OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}]", DateUtils.convert(new Date()), command.getCrnNo())); response.setResult(false); response.setMessage("命令下发失败"); } News.info("堆垛机命令下发[id:{}] >>>>> {}", command.getCrnNo(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), command.getCrnNo(), JSON.toJSON(command))); response.setResult(true); response.setMessage("命令下发成功"); redisUtil.set(RedisKeyType.CRN_SEND_COMMAND_LOCK.key + deviceConfig.getDeviceNo(), "lock", 5); return response; } catch (Exception e) { e.printStackTrace();