1、大理片笼进任务问题解决,不同版图进同一笼子问题解决
2、通信字电气未收到问题解决:发送后读取plc数据,未写进去一直写
2个文件已修改
56 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -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"));
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());
        }
        int returnData = 0;
        int count = 1;
        while (returnData == 0) {
        s7control.writeWord(outLine, 2);
        boolean flag = Boolean.FALSE;
        int count = 3;
        while (!flag && count >= 0) {
            flag = s7control.writeWord(outLine, 2);
            count--;
            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;
    }