自动化立体仓库 - WCS系统
野心家
2023-06-17 7679760448e252936c1b8b5ffb209e222ca826d9
孚能
4个文件已修改
91 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/login.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -130,7 +130,7 @@
                } else {
                    staProtocol = staProtocol.clone();
                }
                staProtocol.setPakMk(true);
                //staProtocol.setPakMk(true);
//                // 入出库模式判断
//                if ( inSta.getStaNo()==180 && devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
                // 判断是否满足入库条件
@@ -208,7 +208,7 @@
                        } else if (jsonObject.getInteger("code").equals(700) && (!barcodeThread.getBarcode().equals("NG"))){
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            barcodeThread.setBarcode("");
                            staProtocol.setWorkNo((short)9998);
                            staProtocol.setWorkNo((short)9999);
                            staProtocol.setStaNo((short)201);
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -216,7 +216,7 @@
                        }else {
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            barcodeThread.setBarcode("");
                            staProtocol.setWorkNo((short)9998);
                            staProtocol.setWorkNo((short)9999);
                            staProtocol.setStaNo((short)201);
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -2285,18 +2285,21 @@
    public void fierCrn() {
        try {
            for (CrnSlave crn :slaveProperties.getCrn()) {
                if(crn.getId()!=1){
                    continue;
                }
                // 获取堆垛机信息
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("fire_status", 1));
                if (!Cools.isEmpty(locMast)){
                    //报警信号写入1
                    if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, "1"))) {
                    if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, 1))) {
                        log.error("火警  ===>> 给堆垛机发送报警信号失败");
                    }
                } else {
                    //报警信号没有后,复位地址
                    if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, "0"))) {
                    if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, 0))) {
                        log.error("火警  ===>> 给堆垛机清零复位报警信号失败");
                    }
                }
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -86,12 +86,8 @@
                        write(command);
                        break;
                    case 4:
                        if(task.getData().equals("0")){
                            siemensNet.Write("DB100.276", (short)0);
                        }else {
                            siemensNet.Write("DB100.276", (short)1);
                        }
                        Integer data = (Integer) task.getData();
                        siemensNet.Write("DB100.276", data.shortValue());
                        break;
                    default:
                        break;
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -277,29 +277,68 @@
        if (null == staProtocol) {
            return;
        }
        int staNoSize = staNos.size();
        int index = staNos.indexOf(staProtocol.getSiteId());
        short[] array = new short[2];
        array[0] = staProtocol.getWorkNo();
        array[1] = staProtocol.getStaNo();
        OperateResult write;
        write = siemensS7Net.Write("DB100." + index*4, array);
        //任务ID下发次数
        int idCount = 0;
        boolean idFlag = false;
        OperateResult write;
        while(idCount < 5){
            write = siemensS7Net.Write("DB100." + index*4, array);    // 写
            if(write.IsSuccess){
                Thread.sleep(200);
                OperateResultExOne<byte[]> readId = siemensS7Net.Read("DB101.0", (short) (staNoSize*2));
                if(readId.IsSuccess){
                    short workNo = siemensS7Net.getByteTransform().TransInt16(readId.Content, 0);
                    if(staProtocol.getWorkNo().equals(workNo)){
                        //工作号写入成功
                        idFlag = true;
                        break;
                    } else {//返回结果是成功了,但是真实值不相同
                        idCount++;
                        OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线工作号后返回成功,但是读取工作号值不一致。输送线plc编号={1},站点数据={2},写入次数={3}",
                                slave.getId(), JSON.toJSON(staProtocol),idCount));
                        log.error("写入输送线工作号后返回成功,但是读取工作号值不一致。输送线plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
                    }
                } else {
                    idCount++;
                    OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线工作号后读取工作号失败。输送线plc编号={1},站点数据={2},写入次数={3}",
                            slave.getId(), JSON.toJSON(staProtocol), idCount));
                    log.error("写入输送线工作号后读取工作号失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
                }
            } else {
                idCount++;
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线工作号失败。输送线plc编号={1},站点数据={2},写入次数={3}",
                        slave.getId(), JSON.toJSON(staProtocol),idCount));
                log.error("写入输送线工作号失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), idCount);
            }
            Thread.sleep(200);
        }
        //写ID尝试了5次还是失败了
        if(!idFlag){
            staProtocol = station.get(staProtocol.getSiteId());
            if (staProtocol.getWorkNo() == 9999 && staProtocol.getStaNo() ==0) {
                staProtocol.setPakMk(true);
            }
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线工作号尝试5次失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol)));
            log.error("写入输送线工作号尝试5次失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol));
            //重新添加数据到任务队列
            boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
            read();//读取1次设备状态
            return;
        }
//        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
//        Thread.sleep(500);
//        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 目标站
        if (!write.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
                staProtocol.setPakMk(true);
            }
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol)));
            log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol));
        } else {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
            log.info("输送线命令下发 [id:{}] >>>>> 命令下发: {}",  slave.getId(), JSON.toJSON(staProtocol));
        }
        OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发成功 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
        log.info("输送线命令下发 [id:{}] >>>>> 命令下发成功: {}",  slave.getId(), JSON.toJSON(staProtocol));
    }
    // 更新入出库模式
src/main/webapp/views/login.html
@@ -212,12 +212,7 @@
                    if (res.code === 200){
                        localStorage.setItem("token", res.data.token);
                        localStorage.setItem("username", res.data.username);
                        if (mobile==="dsj1"){
                            window.location.href = "index.html";
                        }else {
                            window.location.href = "index2.html";
                        }
                    } else {
                        layer.msg(res.msg, {offset: '150px'});
                    }