| | |
| | | case 10: |
| | | write10((String) task.getData()); |
| | | break; |
| | | //单机写入数据 |
| | | case 11: |
| | | write11((RgvCommand) task.getData()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | // rgvProtocol.setStatus2((short)-1); |
| | | // rgvProtocol.setLoaded2((short)0); |
| | | rgvProtocol.setAlarm((short)0); |
| | | rgvProtocol.setxSpeed((short) 0); |
| | | rgvProtocol.setxDistance((short) 0); |
| | | rgvProtocol.setxDuration((short) 0); |
| | | rgvProtocol.setXSpeed(0.0F); |
| | | rgvProtocol.setXDistance(0.0F); |
| | | rgvProtocol.setXDuration(0.0F); |
| | | rgvProtocol.setSouSta((short)0); |
| | | rgvProtocol.setEndSta((short)0); |
| | | rgvProtocol.setList32(new boolean[8]); |
| | | rgvProtocol.setRgvPos(8000); |
| | | } |
| | | |
| | | @Override |
| | |
| | | */ |
| | | private void readStatus(){ |
| | | try { |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30); |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 36); |
| | | if (result.IsSuccess) { |
| | | if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) { |
| | | rgvProtocol = new RgvProtocol(); |
| | |
| | | rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6)); |
| | | rgvProtocol.setRgvPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 8)); |
| | | rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); |
| | | // rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); |
| | | // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14)); |
| | | rgvProtocol.setCode(siemensNet.getByteTransform().TransInt32(result.Content, 12)); |
| | | rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 16)); |
| | | rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); |
| | | // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20)); |
| | | rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 20)); |
| | | // rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24)); |
| | | // rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26)); |
| | | rgvProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 20)); |
| | | rgvProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 24)); |
| | | rgvProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 28)); |
| | | rgvProtocol.setList32(siemensNet.getByteTransform().TransBool(result.Content, 32, 1)); |
| | | rgvProtocol.setList33(siemensNet.getByteTransform().TransBool(result.Content, 33, 1)); |
| | | rgvProtocol.setList34(siemensNet.getByteTransform().TransBool(result.Content, 34, 1)); |
| | | rgvProtocol.setList35(siemensNet.getByteTransform().TransBool(result.Content, 35, 1)); |
| | | |
| | | |
| | | |
| | | |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId())); |
| | |
| | | } |
| | | } |
| | | |
| | | //单步任务 |
| | | private boolean write11(RgvCommand command) throws InterruptedException { |
| | | if (null == command) { |
| | | log.error("RGV写入命令为空"); |
| | | return false; |
| | | } |
| | | String status = ""; |
| | | command.setRgvNo(slave.getId()); |
| | | short[] array = new short[2]; |
| | | array[0] = command.getDestinationStaNo1(); |
| | | array[1] = command.getSourceStaNo1(); |
| | | |
| | | OperateResult result = siemensNet.Write("DB19.0", array); |
| | | if (command.getTaskMode1().equals(RgvTaskModeType.FETCH.id.shortValue())){ |
| | | status = "4.1"; |
| | | } else if (command.getTaskMode1().equals(RgvTaskModeType.PUT.id.shortValue())){ |
| | | status = "4.2"; |
| | | } else if (command.getTaskMode1().equals(RgvTaskModeType.X_MOVE.id.shortValue())){ |
| | | status = "4.0"; |
| | | } else if (command.getTaskMode1().equals(RgvTaskModeType.FETCH_PUT.id.shortValue())){ |
| | | status = "4.3"; |
| | | } else { |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】写入RGV plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [DB块:{4}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status)); |
| | | log.error("写入RGV plc数据失败 未知任务类型 ===>> [id:{}] [ip:{}] [port:{}] [DB块:{4}]", slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status); |
| | | return false; |
| | | } |
| | | OperateResult result1 = siemensNet.Write("DB19."+status, true); |
| | | if (result != null && result.IsSuccess && result1 != null && result1.IsSuccess) { |
| | | Thread.sleep(200); |
| | | this.readStatus(); |
| | | log.info("RGV 命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON("DB19."+status)); |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), "DB19."+status)); |
| | | return true; |
| | | } else { |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】写入RGV plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [DB块:{4}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status)); |
| | | log.error("写入RGV plc数据失败 ===>> [id:{}] [ip:{}] [port:{}] [DB块:{4}]", slave.getId(), slave.getIp(), slave.getPort(), "DB19."+status); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void close() { |
| | | siemensNet.ConnectClose(); |