| | |
| | | add(100);add(101);add(102);add(103);add(104); |
| | | add(105);add(106);add(107);add(108);add(109); |
| | | add(110);add(111);add(112);add(113);add(114); |
| | | add(115);add(116);add(117);add(118);add(119);add(120); |
| | | add(115);add(116);add(117);add(118);add(119);add(120);add(122); |
| | | }}; |
| | | |
| | | public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{ |
| | |
| | | break; |
| | | case 3: |
| | | writeIoMode((Integer) task.getData()); |
| | | case 4: |
| | | writeBack((Integer) task.getData()); |
| | | default: |
| | | break; |
| | | } |
| | |
| | | private void read() throws InterruptedException { |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | int staNoSize = staNos.size(); |
| | | OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 13)); |
| | | OperateResultExOne<byte[]> result = siemensS7Net.Read("DB301.0", (short) (staNoSize * 14)); |
| | | if (result.IsSuccess) { |
| | | for (int i = 0; i < staNoSize; i++) { |
| | | Integer siteId = staNos.get(i); // 站点编号 |
| | |
| | | station.put(siteId, staProtocol); |
| | | } |
| | | staProtocol.setSiteId(siteId); |
| | | staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 13))); // 工作号 |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 13) + 4)); // 目标站 |
| | | staProtocol.setLocHeight(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 13) + 8));//库位高度 |
| | | staProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 13) + 10)); // 报警 |
| | | staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 14))); // 工作号 |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, (i * 14) + 4)); // 目标站 |
| | | staProtocol.setLocHeight(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 14) + 8));//库位高度 |
| | | staProtocol.setError(siemensS7Net.getByteTransform().TransInt16(result.Content, (i * 14) + 10)); // 报警 |
| | | |
| | | boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 13) + 12, 1); |
| | | boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, (i * 14) + 12, 1); |
| | | staProtocol.setAutoing(status[0]); // 自动 |
| | | staProtocol.setLoading(status[1]); // 有物 |
| | | staProtocol.setInEnable(status[2]); // 可入 |
| | | staProtocol.setOutEnable(status[3]);// 可出 |
| | | staProtocol.setEmptyMk(status[4]); // 空板信号 |
| | | staProtocol.setFullPlt(status[5]); // 满托盘 |
| | | |
| | | |
| | | |
| | | //122 提升机单独读取 |
| | | if (siteId == 122){ |
| | | staProtocol.setSiteId(siteId); |
| | | OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB301.308", (short) 10); |
| | | OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB301.306", (short) 1); |
| | | staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6)); //工作号 |
| | | staProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0) == 1); //自动 |
| | | boolean[] booleans = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1); |
| | | staProtocol.setLoading(booleans[1]); //1 有物 0 无物 |
| | | } |
| | | |
| | | if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { |
| | | staProtocol.setPakMk(true); |
| | |
| | | |
| | | //任务信息反馈 |
| | | Thread.sleep(200); |
| | | OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.400", (short) 10); |
| | | OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB301.308", (short) 10); |
| | | if (result3.IsSuccess) { |
| | | liftProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)); // 模式 |
| | | liftProtocol.setDeviceStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 2)); // 设备状态 |
| | | liftProtocol.setTaskStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4)); // 完成信号 |
| | | liftProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6)); // 工作号 |
| | | liftProtocol.setIoMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 10)); // 出入库模式 |
| | | liftProtocol.setIoMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)); // 出入库模式 |
| | | } |
| | | |
| | | //温湿度信息反馈 |
| | | Thread.sleep(200); |
| | | ArrayList<Integer> temperatureList = getTemperature(); |
| | | OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.300", (short) (temperatureList.size() * 4)); |
| | | OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB301.300", (short) (temperatureList.size() * 4)); |
| | | if (result4.IsSuccess) { |
| | | for (int i = 0; i < temperatureList.size(); i++) { |
| | | Integer deviceId = temperatureList.get(i); // 编号 |
| | |
| | | Thread.sleep(200); |
| | | ArrayList<Integer> barcodeList = getBarcode(); |
| | | int barcodeSize = barcodeList.size(); |
| | | OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB103.0", (short) (barcodeSize * 8)); |
| | | OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB4.0", (short) (barcodeSize * 8)); |
| | | if (result2.IsSuccess) { |
| | | for (int i = 0; i < barcodeSize; i++) { |
| | | String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8"); |
| | |
| | | deviceDataLogTime = System.currentTimeMillis(); |
| | | } |
| | | |
| | | if (result.IsSuccess && result2.IsSuccess) { |
| | | if (result.IsSuccess && result2.IsSuccess && result3.IsSuccess && result4.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); |
| | | } else { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); |
| | |
| | | array[1] = liftCommand.getSourceStaNo(); |
| | | array[2] = liftCommand.getTargetStaNo(); |
| | | |
| | | OperateResult write = siemensS7Net.Write("DB100.0", array); |
| | | OperateResult write = siemensS7Net.Write("DB300.0", array); |
| | | |
| | | if (!write.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(liftCommand))); |
| | |
| | | short[] array = new short[1]; |
| | | array[0] = ioMode.shortValue(); |
| | | |
| | | OperateResult write = siemensS7Net.Write("DB100.12", array); |
| | | OperateResult write = siemensS7Net.Write("DB300.12", array); |
| | | |
| | | if (!write.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入出入库模式数据失败。输送线plc编号={1},站点数据={2}", DateUtils.convert(new Date()), slave.getId(), ioMode)); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 写入命令 |
| | | */ |
| | | private void writeBack(Integer back) { |
| | | if (null == back) { |
| | | return; |
| | | } |
| | | short[] array = new short[1]; |
| | | array[0] = back.shortValue(); |
| | | |
| | | OperateResult write = siemensS7Net.Write("DB300.14", array); |
| | | |
| | | if (!write.IsSuccess) { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入托盘退回数据失败。输送线plc编号={1},站点数据={2}", DateUtils.convert(new Date()), slave.getId(), back)); |
| | | News.error("SiemensDevp"+" - 4"+" - 写入托盘退回数据失败。输送线plc编号={},站点数据={}", slave.getId(), back); |
| | | } else { |
| | | OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 托盘退回命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), back)); |
| | | News.info("SiemensDevp"+" - 5"+" - 托盘退回命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), back); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 设置入库标记 |
| | | */ |
| | | @Override |