#
TQS
2025-02-27 a8990be617f61ff8467c5b7cc6a0dfd1493607c5
#
3个文件已修改
80 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/CrnProtocol.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -272,9 +272,6 @@
                            }else if (inSta.getStaNo().equals(213)){
                                staProtocol.setWorkNo((short)9995);
                                staProtocol.setStaNo((short)214);
                            }else {
                                staProtocol.setWorkNo((short)9995);
                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
                            }
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -4950,9 +4947,25 @@
//                                    }
                                    }
                                } else {
                                    // 入库模式
                                    devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 1);
                                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                                    if (crnProtocol != null) {
                                        if (crnProtocol.getTaskNo() != 0) {
                                            if (crnProtocol.isStatusEnd()){
                                                // 出库模式
                                                devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
                                            }  else {
                                                // 入库模式
                                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                            }
                                        } else {
                                            // 入库模式
                                            devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                        }
                                    } else {
                                        // 入库模式
                                        devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                    }
                                }
                            }
                            break;
@@ -4979,8 +4992,25 @@
//                                    }
                                    }
                                } else {
                                    // 入库模式
                                    devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
                                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 3);
                                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                                    if (crnProtocol != null) {
                                        if (crnProtocol.getTaskNo() != 0) {
                                            if (crnProtocol.isStatusEnd()){
                                                // 出库模式
                                                devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
                                            }  else {
                                                // 入库模式
                                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                            }
                                        } else {
                                            // 入库模式
                                            devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                        }
                                    } else {
                                        // 入库模式
                                        devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
                                    }
                                }
                            }
                            break;
src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -57,6 +57,8 @@
     */
    public Short status;
    public boolean statusEnd = false;
    /**
     * 状态枚举
     */
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -152,6 +152,7 @@
                    crnProtocol = new CrnProtocol();
                    crnProtocol.setCrnNo(this.getSlave().getId());
                }
                crnProtocol.setCrnNo(this.getSlave().getId());
                crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
                crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
                crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
@@ -173,11 +174,38 @@
                crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
                crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
                crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
                crnProtocol.setStatusEnd(false);
                try{
                    OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
                    if (resultRead.IsSuccess) {
                        CrnCommand one = new CrnCommand();
                        one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
                        one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
                        one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
                        one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
                        one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
                        one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
                        one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
                        one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
                        if (this.slave.getId() == 1){
                            if (one.getDestinationPosX() == 3 && one.getDestinationPosY() == 2 && one.getDestinationPosZ() == 1){
                                crnProtocol.setStatusEnd(true);
                            }
                        } else if (this.slave.getId() == 3){
                            if (one.getDestinationPosX() == 19 && one.getDestinationPosY() == 6 && one.getDestinationPosZ() == 1){
                                crnProtocol.setStatusEnd(true);
                            }
                        }
                    }
                } catch (Exception e){ }
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
                // 复位信号
                if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
                    News.error("---第一步、[堆垛机号:{}, 工作号:{}, 载货台信号:{}]==>> 状态为10,等待确认!!",
                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "有物" : "无物");
                    if (resetFlag) {
                        CrnCommand crnCommand = new CrnCommand();
                        crnCommand.setAckFinish((short)1);
@@ -261,7 +289,7 @@
        if(!result.IsSuccess){
            log.error("写入堆垛机plc数据失败,重新添加任务到队列 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
//            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
            Thread.sleep(100);
            readStatus();
            return false;
@@ -287,7 +315,7 @@
            ){
                News.error("堆垛机命令地址写入后回读失败[id:{}] >>>>> 写入[{}],===>>回读[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
                News.error("堆垛机命令回读失败后,重新添加任务到队列 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
//                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
                Thread.sleep(100);
                readStatus();
                return false;