| | |
| | | }}; |
| | | |
| | | public static final ArrayList<Integer> rgvSiteBackWrkNo2= new ArrayList<Integer>() {{ |
| | | add(1044); |
| | | add(1044);add(1090); |
| | | }}; |
| | | |
| | | public static final ArrayList<Integer> rgvSiteBackWrkNo3= new ArrayList<Integer>() {{ |
| | |
| | | case 5: |
| | | writeGzxkc((StaProtocol)task.getData()); |
| | | break; |
| | | // 给罐装线写罐装数量 |
| | | case 6: |
| | | writeGzsl((StaProtocol)task.getData()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | // 读罐装线反馈信息 |
| | | if (slave.getId() > 3) { |
| | | // log.info("读取{}号罐装线plc信息成功",slave.getId()); |
| | | OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 58); |
| | | OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 64); |
| | | if (read.IsSuccess) { |
| | | // 15秒打印一下日志 |
| | | if (System.currentTimeMillis() - lastLogTime >= 15000) { |
| | | OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 2); |
| | | if(readKc.IsSuccess){ |
| | | short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0); |
| | | log.info("读{}号罐装线可出信号成功,值:{}", slave.getId() -3, i); |
| | | } |
| | | lastLogTime = System.currentTimeMillis(); |
| | | } |
| | | // if (System.currentTimeMillis() - lastLogTime >= 30000) { |
| | | // OperateResultExOne<byte[]> readKc = siemensS7Net.Read("DB100.6", (short) 4); |
| | | // if(readKc.IsSuccess){ |
| | | // short i = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 0); |
| | | // short wantBucketCount = siemensS7Net.getByteTransform().TransInt16(readKc.Content, 2); |
| | | // log.info("读{}号罐装线可出信号成功,值:{},剩余要桶数量:{}", slave.getId() -3, i, wantBucketCount); |
| | | // } |
| | | // lastLogTime = System.currentTimeMillis(); |
| | | // } |
| | | // 成品信息反馈到罐装线出口站点 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol = devpThread.getStation().get(gzxResultSite.get(slave.getId()-4)); |
| | | if (staProtocol != null) { |
| | | staProtocol.setWantBucketFlag(siemensS7Net.getByteTransform().TransInt16(read.Content, 0));// 罐装线要桶型信号 |
| | | OperateResultExOne<byte[]> read2 = siemensS7Net.Read("DB100.8", (short) 2); // 罐装线罐装数量(拖) |
| | | if(read2.IsSuccess){ |
| | | staProtocol.setWantBucketCount(siemensS7Net.getByteTransform().TransInt16(read2.Content, 0)); |
| | | } else { |
| | | log.error("读{}号罐装线要拖数量失败", slave.getId() -3); |
| | | } |
| | | staProtocol.setWrkNo(siemensS7Net.getByteTransform().TransInt16(read.Content, 2)); |
| | | double weight208l1 = siemensS7Net.getByteTransform().TransInt32(read.Content, 4); // 200L桶1净重 |
| | | double weight208l2 = siemensS7Net.getByteTransform().TransInt32(read.Content, 8); // 200L桶2净重 |
| | | double weight208l3 = siemensS7Net.getByteTransform().TransInt32(read.Content, 12); // 200L桶3净重 |
| | | double weight208l4 = siemensS7Net.getByteTransform().TransInt32(read.Content, 16); // 200L桶4净重 |
| | | double weight1T = siemensS7Net.getByteTransform().TransInt32(read.Content, 20); // 1T桶净重 |
| | | double weight208l1 = siemensS7Net.getByteTransform().TransSingle(read.Content, 4); // 200L桶1净重 |
| | | double weight208l2 = siemensS7Net.getByteTransform().TransSingle(read.Content, 8); // 200L桶2净重 |
| | | double weight208l3 = siemensS7Net.getByteTransform().TransSingle(read.Content, 12); // 200L桶3净重 |
| | | double weight208l4 = siemensS7Net.getByteTransform().TransSingle(read.Content, 16); // 200L桶4净重 |
| | | double weight1T = siemensS7Net.getByteTransform().TransSingle(read.Content, 20); // 1T桶净重 |
| | | // log.info("读取工罐装线净重 200l桶1:{},200l桶2:{},200l桶3:{},200l桶4:{},1t桶:{}",weight208l1,weight208l2,weight208l3,weight208l4,weight1T); |
| | | staProtocol.setWeight(weight208l1 + weight208l2 + weight208l3 + weight208l4 + weight1T); |
| | | staProtocol.setGrossWeight(siemensS7Net.getByteTransform().TransInt32(read.Content, 24)); |
| | | staProtocol.setGrossWeight(siemensS7Net.getByteTransform().TransSingle(read.Content, 24)); |
| | | staProtocol.setMatnr(siemensS7Net.getByteTransform().TransString(read.Content, 28,12,"UTF-8")); |
| | | staProtocol.setBatch(siemensS7Net.getByteTransform().TransString(read.Content, 40,10,"UTF-8")); |
| | | staProtocol.setManuDate(siemensS7Net.getByteTransform().TransString(read.Content, 50,8,"UTF-8")); |
| | | staProtocol.setReinspection(siemensS7Net.getByteTransform().TransInt16(read.Content, 58) == 1); |
| | | staProtocol.setCannedVolume(siemensS7Net.getByteTransform().TransSingle(read.Content, 60)); |
| | | } |
| | | return; |
| | | } |
| | |
| | | do { |
| | | write = siemensS7Net.Write("DB100.0", common); |
| | | Thread.sleep(200); |
| | | if(write.IsSuccess){ |
| | | OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.0", (short) 6); |
| | | if(write.IsSuccess && read.IsSuccess){ |
| | | short bucketType = siemensS7Net.getByteTransform().TransInt16(read.Content, 0); |
| | | short bucketCount = siemensS7Net.getByteTransform().TransInt16(read.Content, 2); |
| | | short workNo = siemensS7Net.getByteTransform().TransInt16(read.Content, 4); |
| | | if ( workNo != common[2] || bucketCount != common[1] || bucketType != common[0]) { |
| | | writeCount++; |
| | | log.error("给罐装线写入桶型信息成功,但回读失败:写入任务号:{},回读任务号:{},输送线plc编号={},写入次数={}", Arrays.toString(common), bucketType +"-" + bucketCount + "-" + workNo, slave.getId(), writeCount); |
| | | continue; |
| | | } |
| | | log.info("给罐装线写入桶型信息成功,回读成功:任务号:{},回读任务号:{},输送线plc编号={},写入次数={}",staProtocol.getWorkNo().shortValue(), Arrays.toString(common), slave.getId(), writeCount); |
| | | break; |
| | | } |
| | | else { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 给罐装线写罐装数量 |
| | | */ |
| | | private void writeGzsl(StaProtocol staProtocol) throws InterruptedException { |
| | | if (null == staProtocol) { |
| | | return; |
| | | } |
| | | short[] common = new short[1]; |
| | | common[0] = (short) staProtocol.getWantBucketCount(); |
| | | |
| | | OperateResult write; |
| | | //任务下发次数 |
| | | int writeCount = 0; |
| | | do { |
| | | write = siemensS7Net.Write("DB100.8", common); |
| | | Thread.sleep(200); |
| | | OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.8", (short) 2); |
| | | if(write.IsSuccess && read.IsSuccess){ |
| | | short i = siemensS7Net.getByteTransform().TransInt16(read.Content, 0); |
| | | if ( i != common[0]) { |
| | | writeCount++; |
| | | log.error("给罐装线写罐装数量成功,但回读失败:读取值:{},输送线plc编号={},写入次数={}", i, slave.getId(), writeCount); |
| | | continue; |
| | | } |
| | | break; |
| | | } |
| | | else { |
| | | writeCount++; |
| | | log.error("给罐装线写罐装数量:{}失败。输送线plc编号={},写入次数={}", common[0], slave.getId(), writeCount); |
| | | } |
| | | }while (writeCount<5); |
| | | |
| | | if (!write.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】给给罐装线写罐装数量失败。输送线plc编号={1},站点数据={2}", slave.getId(), staProtocol.getWantBucketCount())); |
| | | News.error("给罐装线写罐装数量失败。输送线plc编号={},站点数据={}", slave.getId(), staProtocol.getWantBucketCount()); |
| | | } else { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 给罐装线写罐装数量命令下发成功 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), staProtocol.getWantBucketCount())); |
| | | News.info("给罐装线写罐装数量号命令下发成功 [id:{}] >>>>> 命令下发: {}", slave.getId(), staProtocol.getWantBucketCount()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 心跳 |
| | | */ |
| | | private void heartbeat(){ |