| | |
| | | import com.zy.core.News; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.OutputQueue; |
| | | import com.zy.core.enums.IoModeType; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.model.DevpSlave; |
| | | import com.zy.core.model.Task; |
| | |
| | | private DevpSlave slave; |
| | | private SiemensS7Net siemensS7Net; |
| | | private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); |
| | | |
| | | public IoModeType ioModeOf2_5 = IoModeType.PAKOUT_MODE; |
| | | |
| | | private short heartBeatVal = 1; |
| | | private int barcodeSize = 10; |
| | |
| | | write((StaProtocol) task.getData()); |
| | | read(); |
| | | break; |
| | | // 报警 |
| | | case 3: |
| | | writeError((Integer) task.getData()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | * 读取状态 ====> 整块plc |
| | | */ |
| | | private void read() throws InterruptedException { |
| | | // 更新入出库模式 |
| | | updateIoMode(); |
| | | int staNoSize = staNos2.size(); |
| | | OperateResultExOne<byte[]> result = siemensS7Net.Read("DB82.14", (short) (staNoSize * 26)); |
| | | if (result.IsSuccess) { |
| | |
| | | if (null == staProtocol) { |
| | | staProtocol = new StaProtocol(); |
| | | staProtocol.setSiteId(siteId); |
| | | |
| | | if (siteId == 1015) { |
| | | staProtocol.setLocNo("1200301"); |
| | | } else if (siteId == 1026) { |
| | | staProtocol.setLocNo("1200305"); |
| | | } |
| | | |
| | | station.put(siteId, staProtocol); |
| | | } |
| | | Thread.sleep(300); |
| | |
| | | staProtocol.setInEnable(status[3]); // 可入 |
| | | staProtocol.setOutEnable(status[4]);// 可出 |
| | | |
| | | |
| | | staProtocol.setBackErr(status[5]); |
| | | staProtocol.setLeftErr(status[6]); |
| | | staProtocol.setRightErr(status[7]); |
| | | staProtocol.setHighErr(status[8]); |
| | | staProtocol.setWeightErr(status[9]); |
| | | staProtocol.setLow(status[10]); |
| | | staProtocol.setHigh(status[11]); |
| | | // staProtocol.setHighErr(status[8]); |
| | | // staProtocol.setWeightErr(status[9]); |
| | | // staProtocol.setLow(status[10]); |
| | | // staProtocol.setHigh(status[11]); |
| | | |
| | | boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result.Content, i * 26 + 1, 2); |
| | | staProtocol.setHighErr(status2[0]); |
| | | staProtocol.setWeightErr(status2[1]); |
| | | staProtocol.setLow(status2[2]); |
| | | staProtocol.setHigh(status2[3]); |
| | | staProtocol.setBarcodeErr(status2[4]); |
| | | // staProtocol.setInEnable(status[13]); // 可入 |
| | | // staProtocol.setOutEnable(status[14]);// 可出 |
| | | |
| | | |
| | | staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 2)); // 工作号 |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 4)); // 目标站 |
| | | staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 4)); // 目标站 |
| | | staProtocol.setFinishWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 26 + 6)); //已完成工作号 |
| | | staProtocol.setBarcode(siemensS7Net.getByteTransform().TransString(result.Content, i * 26 + 10, 12, "UTF-8").trim()); //条码 |
| | | staProtocol.setWeight(siemensS7Net.getByteTransform().TransInt32(result.Content, i * 26 + 22)); //重量 |
| | |
| | | BasDevp sqlModel = staProtocol.toSqlModel(); |
| | | stations.add(sqlModel); |
| | | |
| | | //暂时写入数据库 |
| | | BasDevp basDevp = basConveyorStaService.selectById(sta); |
| | | if (basDevp == null) { |
| | | basConveyorStaService.insert(sqlModel); |
| | | } |
| | | |
| | | } |
| | | if (!stations.isEmpty()) { |
| | | if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) { |
| | |
| | | } |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据成功。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(array))); |
| | | log.info("写入输送线站点数据成功。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(array)); |
| | | } |
| | | |
| | | /** |
| | | * 报警 |
| | | */ |
| | | private void writeError(Integer staNo) throws InterruptedException { |
| | | if (null == staNo) { |
| | | return; |
| | | } |
| | | |
| | | ArrayList<Integer> lift1 = new ArrayList<Integer>() {{ |
| | | add(1011); |
| | | add(1012); |
| | | }}; |
| | | |
| | | ArrayList<Integer> lift2 = new ArrayList<Integer>() {{ |
| | | add(1021); |
| | | add(1022); |
| | | add(1023); |
| | | }}; |
| | | |
| | | ArrayList<Integer> devp1 = new ArrayList<Integer>() {{ |
| | | add(1013); |
| | | add(1014); |
| | | add(1015); |
| | | }}; |
| | | |
| | | ArrayList<Integer> devp2 = new ArrayList<Integer>() {{ |
| | | add(1024); |
| | | add(1025); |
| | | add(1026); |
| | | }}; |
| | | |
| | | String dbAddress = "DB82.48"; |
| | | if (lift1.contains(staNo)) { |
| | | dbAddress = "DB82.48"; |
| | | } else if (lift2.contains(staNo)) { |
| | | dbAddress = "DB82.178"; |
| | | } else if (devp1.contains(staNo)) { |
| | | dbAddress = "DB82.100"; |
| | | } else if (devp2.contains(staNo)) { |
| | | dbAddress = "DB82.256"; |
| | | }else { |
| | | return; |
| | | } |
| | | |
| | | OperateResult write1 = siemensS7Net.Write(dbAddress, (short) 1); |
| | | if (!write1.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点报警数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(true))); |
| | | log.error("写入输送线站点报警数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(true)); |
| | | return; |
| | | } |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点报警数据成功。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(true))); |
| | | log.info("写入输送线站点报警数据成功。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(true)); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | |
| | | // 更新入出库模式 |
| | | private void updateIoMode() { |
| | | if (this.ioModeOf2_5 != null && (this.ioModeOf2_5.id == 0 || this.ioModeOf2_5.id == 1)) { |
| | | short[] array = new short[1]; |
| | | array[0] = this.ioModeOf2_5.id; |
| | | if (!siemensS7Net.Write("DB83.80", this.ioModeOf2_5.id == 1).IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2.5F入出库模式失败", this.ioModeOf2_5)); |
| | | log.error("【{0}】写入输送线2.5F入出库模式失败。输送线plc编号={}", this.ioModeOf2_5); |
| | | } else { |
| | | if (station.get(1031) != null) { |
| | | station.get(1031).setOutInModel(this.ioModeOf2_5.id); |
| | | station.get(1032).setOutInModel(this.ioModeOf2_5.id); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |