#
zwl
2 天以前 b2141320243f2be393236a3c4f53376583179325
#
7个文件已修改
164 ■■■■■ 已修改文件
src/main/java/com/zy/core/network/ZyCrnConnectDriver.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/CrnThread.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
@@ -97,10 +97,6 @@
        return zyCrnConnectApi.sendCommand(command);
    }
    public CommandResponse sendCommand1(CrnCommand command) {
        return zyCrnConnectApi.sendCommand1(command);
    }
    public CommandResponse sendCommand2(CrnCommand command) {
        return zyCrnConnectApi.sendCommand2(command);
    }
src/main/java/com/zy/core/network/api/ZyCrnConnectApi.java
@@ -14,8 +14,6 @@
    CommandResponse sendCommand(CrnCommand command);//下发命令
    CommandResponse sendCommand1(CrnCommand command);
    CommandResponse sendCommand2(CrnCommand command);
    CommandResponse sendCommand3(CrnCommand command);
src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
@@ -56,23 +56,6 @@
    }
    @Override
    public CommandResponse sendCommand1(CrnCommand command) {
        CommandResponse response = new CommandResponse(false);
        if (command.getTaskMode().intValue() == CrnTaskModeType.LOC_MOVE.id) {
            //取放货
            executor.submit(() -> commandTake(command));
        } else if (command.getTaskMode().intValue() == CrnTaskModeType.CRN_MOVE.id) {
            //移动
            executor.submit(() -> commandMove(command));
        } else if (command.getTaskMode().intValue() == CrnTaskModeType.NONE.id) {
            //复位
            executor.submit(() -> commandTaskComplete(command));
        }
        response.setResult(true);
        return response;
    }
    @Override
    public CommandResponse sendCommand2(CrnCommand command) {
        return null;
    }
src/main/java/com/zy/core/network/real/ZyCrnRealConnect.java
@@ -213,107 +213,6 @@
    }
    @Override
    public CommandResponse sendCommand1(CrnCommand command) {
        CommandResponse response = new CommandResponse(false);
        try {
            if (null == command) {
                News.error("堆垛机写入命令为空");
                response.setMessage("堆垛机写入命令为空");
                return response;
            }
            int writeAck = 0;
            do {
                OperateResult resultAck = siemensNet.Write("DB100.0", (short) 0);
                if (resultAck.IsSuccess) {
                    Thread.sleep(200);
                    OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 2);
                    short ack = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
                    if (ack != 0) {
                        writeAck++;
                    } else {
                        News.info("堆垛机命令下发[id:{}] >>>>> {}", command.getCrnNo(), "ack复位完成");
                        break;
                    }
                }
            } while (writeAck < 5);
            short[] array = new short[10];
            array[0] = (short) 1;
            array[1] = command.getTaskNo().shortValue();
            array[2] = command.getTaskMode().shortValue();
            array[3] = command.getSourcePosX().shortValue();
            array[4] = command.getSourcePosY().shortValue();
            array[5] = command.getSourcePosZ().shortValue();
            array[6] = command.getDestinationPosX().shortValue();
            array[7] = command.getDestinationPosY().shortValue();
            array[8] = command.getDestinationPosZ().shortValue();
            array[9] = (short) 0;
            OperateResult result = siemensNet.Write("DB100.0", array);
            if (!result.IsSuccess) {
                response.setMessage("堆垛机命令下发[id:{}] >>>>> {}" + command.getCrnNo() + "任务状态位异常");
                return response;
            }
            int idx = 0;
            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;
                    }
                }
                idx++;
                Thread.sleep(500);
            } while (idx < 5);
            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("命令下发失败");
            }
            if (!Cools.isEmpty(command.getLocNo())){
                OperateResult resultAck = siemensNet.Write("DB110." + command.getIndex() * 2, command.getValue());
                if (resultAck.IsSuccess) {
                    Integer index = command.getIndex()*2 + 200;
                    OperateResult resultAck1 = siemensNet.Write("DB110." + index, command.getValue());
                    if (resultAck1.IsSuccess) {
                        News.info("库位橙色按钮命令下发[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
                    } else {
                        News.error("库位白色灯命令下发失败[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
                    }
                    News.info("库位白色灯命令下发[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
                } else {
                    News.error("库位白色灯命令下发失败[locNo:{}] >>>>> {}", command.getLocNo(), command.getValue());
                }
            }
            return response;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }
    @Override
    public CommandResponse sendCommand2(CrnCommand command) {
        CommandResponse response = new CommandResponse(false);
        try {
src/main/java/com/zy/core/thread/CrnThread.java
@@ -17,8 +17,6 @@
    CommandResponse sendCommand(CrnCommand command);//下发命令
    CommandResponse sendCommand1(CrnCommand command);
    CommandResponse sendCommand2(CrnCommand command);
    CommandResponse sendCommand3(CrnCommand command);
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -81,14 +81,11 @@
                    if (step == 2) {
                        sendCommand((CrnCommand) task.getData());
                    }else if (step == 3) {
                        sendCommand1((CrnCommand) task.getData());
                    }else if (step == 4) {
                        sendCommand2((CrnCommand) task.getData());
                    }else if (step == 5) {
                        sendCommand3((CrnCommand) task.getData());
                    }
                    Thread.sleep(100);
                } catch (Exception e) {
@@ -315,39 +312,6 @@
        CommandResponse response = null;
        try {
            response = zyCrnConnectDriver.sendCommand(command);
            return response;
        } finally {
            String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
            String targetLocNo = Utils.getLocNo(command.getDestinationPosX(), command.getDestinationPosY(), command.getDestinationPosZ());
            BasCrnpOptService bean = SpringUtils.getBean(BasCrnpOptService.class);
            ZyCrnStatusEntity statusEntity = zyCrnConnectDriver.getStatus();
            BasCrnpOpt basCrnpOpt = new BasCrnpOpt(
                    command.getTaskNo().intValue(),
                    command.getCrnNo(),
                    new Date(),
                    String.valueOf(command.getTaskMode()),
                    sourceLocNo,
                    targetLocNo,
                    null,
                    null,
                    null,
                    JSON.toJSONString(command),
                    JSON.toJSONString(statusEntity),
                    1,
                    JSON.toJSONString(response)
            );
            if (bean != null) {
                bean.insert(basCrnpOpt);
            }
        }
    }
    @Override
    public synchronized CommandResponse sendCommand1(CrnCommand command) {
        this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
        CommandResponse response = null;
        try {
            response = zyCrnConnectDriver.sendCommand1(command);
            return response;
        } finally {
            String sourceLocNo = Utils.getLocNo(command.getSourcePosX(), command.getSourcePosY(), command.getSourcePosZ());
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -658,7 +658,7 @@
                        resetCommand.setIndex(i);
                        resetCommand.setValue((short)0);
                    }
                    MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(3, resetCommand));
                    MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, resetCommand));
                    News.info("堆垛机任务状态更新成功,堆垛机号={},工作号={}", basCrnp.getCrnNo(), crnProtocol.getTaskNo());
                }