| | |
| | | OperateResult writeResult; |
| | | //任务下发次数 |
| | | int writeCount = 0; |
| | | //任务下发成功标识 |
| | | boolean writeFlag = false; |
| | | while(writeCount < 5){ |
| | | writeResult = siemensS7Net.Write("DB100.310", staProtocol.getRollback102().shortValue()); |
| | | if(writeResult.IsSuccess){ |
| | |
| | | short rollback = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0); |
| | | if (staProtocol.getRollback102() == (int) rollback) { |
| | | //任务命令写入成功 |
| | | writeFlag = true; |
| | | log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); |
| | | return; |
| | | } else {//返回结果是成功了,但是真实值不相同 |
| | |
| | | log.error("写入输送线命令失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); |
| | | } |
| | | Thread.sleep(200); |
| | | } |
| | | |
| | | //写命令尝试了5次还是失败了 |
| | | if(!writeFlag){ |
| | | staProtocol = station.get(staProtocol.getSiteId()); |
| | | if (staProtocol.getWorkNo() == 0 && 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(5, staProtocol)); |
| | | read();//读取1次设备状态 |
| | | return; |
| | | } |
| | | } |
| | | |