| | |
| | | case 5: |
| | | writeGzxkc((StaProtocol)task.getData()); |
| | | break; |
| | | // 给罐装线写罐装数量 |
| | | case 6: |
| | | writeGzsl((StaProtocol)task.getData()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | 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().TransSingle(read.Content, 4); // 200L桶1净重 |
| | | double weight208l2 = siemensS7Net.getByteTransform().TransSingle(read.Content, 8); // 200L桶2净重 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 给罐装线写罐装数量 |
| | | */ |
| | | 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(){ |