1、大理片笼进任务问题解决,不同版图进同一笼子问题解决
2、通信字电气未收到问题解决:发送后读取plc数据,未写进去一直写
2个文件已修改
96 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -232,7 +232,7 @@
            List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
            bigStorageCageDetailsList.add(bigStorageCageDetails);
            return bigStorageCageDetailsList;
        }else{
        } else {
            return null;
        }
@@ -308,7 +308,7 @@
                .eq(BigStorageCage::getRemainWidth, slotWidth)
                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                .notInSql(BigStorageCage::getDeviceId,
                        "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId())
                        "select distinct device_id from big_storage_cage_details where state in (100,102,103)")
                .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness())
                .orderByAsc(BigStorageCage::getDeviceId)
                .last("limit 1"));
@@ -350,25 +350,25 @@
    }
    @Override
    public boolean TemperingGlass(String temperingLayoutId, String engineerId){
        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper=new LambdaQueryWrapper<>();
    public boolean TemperingGlass(String temperingLayoutId, String engineerId) {
        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
        temperingGlassInfoLambdaQueryWrapper
                .eq(TemperingGlassInfo::getTemperingLayoutId,temperingLayoutId)
                .eq(TemperingGlassInfo::getEngineerId,engineerId);
        List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
        if(temperingGlassInfoList.size()==0){
            LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>();
            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
                    .eq(BigStorageCageDetails::getEngineerId,engineerId)
                    .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL);
            List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(wrapper);
                .eq(TemperingGlassInfo::getTemperingLayoutId, temperingLayoutId)
                .eq(TemperingGlassInfo::getEngineerId, engineerId);
        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
        if (temperingGlassInfoList.size() == 0) {
            LambdaQueryWrapper<BigStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutId)
                    .eq(BigStorageCageDetails::getEngineerId, engineerId)
                    .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL);
            List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(wrapper);
            for (BigStorageCageDetails bigStorageCageDetails:bigStorageCageDetailsList
            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
            ) {
                TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo();
                LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper=new LambdaQueryWrapper<>();
                glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId,bigStorageCageDetails.getGlassId());
                GlassInfo glassInfo=glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper);
                TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
                LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
                glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId());
                GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper);
                BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
                temperingGlassInfo.setAngle((int) glassInfo.getAngle());
@@ -377,7 +377,7 @@
                temperingGlassInfoMapper.insert(temperingGlassInfo);
            }
            return true;
        }else{
        } else {
            return false;
        }
@@ -385,7 +385,7 @@
    }
    @Override
    public List<Map<String, Object>> selectTemperingGlass(){
    public List<Map<String, Object>> selectTemperingGlass() {
        QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
        wrapper.select("engineer_id,tempering_layout_id,count(*) as count")
                .groupBy("engineer_id,tempering_layout_id");
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -315,13 +315,16 @@
                    List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
                            slotWidth, 0, 0, 1)).collect(Collectors.toList());
                    bigStorageCageOutTaskService.saveBatch(outTasks);
                    boolean flag = Boolean.FALSE;
                    int count = 3;
                    while (!flag && count >= 0) {
                        flag = S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
                        count--;
                    //向plc写入确认字
                    int returnData = 0;
                    int count = 1;
                    while (returnData == 0) {
                        log.info("已向plc第{}次送协议", count);
                        S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
                        returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
                        log.info("已向plc第{}次发送出片任务确认,地址为:{},写入的内容为{}", count++, mesToPLCAddress, returnData);
                    }
                    log.info("已向plc发送出片任务确认,地址为:{}", mesToPLCAddress);
                    Date endDate = new Date();
                    log.info("大理片笼出片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime());
                    return;
@@ -469,14 +472,15 @@
        }
        //向plc发送进片确认
        if (flag) {
            boolean flagSend = Boolean.FALSE;
            int count = 3;
            while (!flagSend && count >= 0) {
                flagSend = S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
                count--;
            }
            log.info("进卧转立发送确认字完成,地址为{}", mesAddress);
            //向plc写入确认字
            int returnData = 0;
            int count = 1;
            while (returnData == 0) {
                S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
                returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0);
                log.info("进卧转立第{}次发送确认字完成,地址为:{},写入的内容为{}", count++, mesAddress, returnData);
            }
        }
        //记录无法放下玻璃,后续判断启动
        return flag;
@@ -583,15 +587,13 @@
            s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine());
            s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot());
        }
        s7control.writeWord(outLine, 2);
        boolean flag = Boolean.FALSE;
        int count = 3;
        while (!flag && count >= 0) {
            flag = s7control.writeWord(outLine, 2);
            count--;
        int returnData = 0;
        int count = 1;
        while (returnData == 0) {
            s7control.writeWord(outLine, 2);
            returnData = s7control.readWord(outLine, 1).get(0);
            log.info("已向plc第{}次发送出片任务确认,地址为:{},写入的内容为{}", count++, outLine, returnData);
        }
        log.info("送片任务已发送完成,任务线路为:{},启动地址为{},确认字为{}", line, outLine, 2);
    }
    private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) {
@@ -624,13 +626,13 @@
        //更新笼子内格子的剩余尺寸
        updateSlotRemain(list, glassIds);
        boolean flag = Boolean.FALSE;
        int count = 3;
        while (!flag && count >= 0) {
            flag = S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
            count--;
        int returnData = 0;
        int count = 1;
        while (returnData == 0) {
            S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
            returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
            log.info("已向plc第{}次发送出片任务确认,地址为:{},写入的内容为{}", count++, mesToPLCAddress, returnData);
        }
        log.info("已向plc发送出片任务确认,地址为:{}", mesToPLCAddress);
        return Boolean.TRUE;
    }