自动化立体仓库 - WCS系统
#
18516761980
2022-06-08 9f687cf8a3218cf7dcda92d641703c46ae2c93c6
src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -161,6 +161,7 @@
            if (result.IsSuccess) {
                if (null == crnProtocol) {
                    crnProtocol = new CrnProtocol();
                    crnProtocol.setCrnNo(slave.getId());
                }
                crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
                crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
@@ -198,12 +199,12 @@
                    }
                }
                // 根据实时信息更新数据库
                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
                BasCrnp basCrnp = new BasCrnp();
                basCrnp.setCrnErr(crnProtocol.getAlarm()==null?0:crnProtocol.getAlarm().longValue());
                basCrnp.setCrnNo(slave.getId());
                basCrnp.setCrnSts((int)crnProtocol.getMode());
                if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
                    log.error("堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                }
@@ -229,6 +230,55 @@
            log.error("堆垛机写入命令为空");
            return false;
        }
//        OperateResult result = null;
//        try{
//            Integer exeCount=0;
//            do{
//                command.setCrnNo(slave.getId());
//                short[] array = new short[10];
//                array[0] = command.getAckFinish();
//                array[1] = command.getTaskNo();
//                array[2] = command.getTaskMode();
//                array[3] = command.getSourcePosX();
//                array[4] = command.getSourcePosY();
//                array[5] = command.getSourcePosZ();
//                array[6] = command.getDestinationPosX();
//                array[7] = command.getDestinationPosY();
//                array[8] = command.getDestinationPosZ();
//                array[9] = command.getCommand();
//                result = melsecMcNet.Write("D0", array);
//                if(result.IsSuccess) {
//                    if (command.getAckFinish() == 0) {
//                        short commandFinish = 1;
//                        result = melsecMcNet.Write("D9", commandFinish);
//                        if(result.IsSuccess){
//                            //写任务确认返回成功后,查询确认一次
//                            Thread.sleep(200);
//                            OperateResultExOne<byte[]> result1 = melsecMcNet.Read("D9", (short)2);
//                            if(result1.IsSuccess){
//                                short commandVal = melsecMcNet.getByteTransform().TransInt16(result1.Content,2);
//                                if(commandVal==1){
//                                    break;
//                                } else {
//                                    exeCount++;
//                                }
//                            } else{
//                                exeCount++;
//                            }
//                        }else{
//                            exeCount++;
//                        }
//                    }
//                }else{
//                    exeCount++;
//                }
//                Thread.sleep(200);
//            }while(exeCount>3);
//        }catch (Exception e){
//
//        }
        command.setCrnNo(slave.getId());
        short[] array = new short[10];
        array[0] = command.getAckFinish();
@@ -271,7 +321,7 @@
            bean.insert(basCrnOpt);
        } catch (Exception ignore) {}
        if (result.IsSuccess) {
        if (result != null && result.IsSuccess) {
            log.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
            return true;