| | |
| | | */ |
| | | private void readStatus(){ |
| | | try { |
| | | |
| | | /* 方法1 */ |
| | | OperateResultExOne<byte[]> result = melsecMcNet.Read("D2231", (short) 70); |
| | | OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70); |
| | | if (result.IsSuccess) { |
| | | if (null == crnProtocol) { |
| | | crnProtocol = new CrnProtocol(); |
| | | } |
| | | crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); |
| | | crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 4)); |
| | | crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 6)); |
| | | crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 8)); |
| | | crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 10)); |
| | | crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12)); |
| | | crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14)); |
| | | crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 16)); |
| | | // crnProtocol.setTaskFinish(melsecMcNet.getByteTransform().TransInt16(result.Content, 18)); |
| | | crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 20)); |
| | | crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 22)); |
| | | crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransBool(result.Content, 26, 2)); |
| | | crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 28)); |
| | | crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 30)); |
| | | crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 32)); |
| | | crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 34)); |
| | | crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 38)); |
| | | crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 42)); |
| | | crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 46)); |
| | | crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 50)); |
| | | crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 54)); |
| | | crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 62)); |
| | | crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2)); |
| | | crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4)); |
| | | crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6)); |
| | | crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8)); |
| | | crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10)); |
| | | crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12)); |
| | | crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14)); |
| | | crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16)); |
| | | crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18)); |
| | | crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20)); |
| | | crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22)); |
| | | crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24)); |
| | | crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26)); |
| | | crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 28)); |
| | | crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 32)); |
| | | crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 36)); |
| | | crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 40)); |
| | | crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 44)); |
| | | crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 48)); |
| | | crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 52)); |
| | | |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); |
| | | |
| | |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】{1}堆垛机plc状态信息失败",DateUtils.convert(new Date()), slave.getId())); |
| | | throw new CoolException(MessageFormat.format( "堆垛机plc状态信息失败 ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); |
| | | } |
| | | /* 方法2 */ |
| | | // crnProtocol.setMode(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setTaskNo(melsecMcNet.ReadInt16("D2233").Content); |
| | | // crnProtocol.setStatus(melsecMcNet.ReadInt16("D2234").Content); |
| | | // crnProtocol.setBay(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setLevel(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setForkPos(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setLiftPos(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setWalkPos(melsecMcNet.ReadInt16("D2231").Content); |
| | | //// crnProtocol.setTaskFinish(siemensNet.getByteTransform().TransInt16(result.Content, 16)); |
| | | // crnProtocol.setLoaded(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setAlarm(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setError1(melsecMcNet.ReadBool("D2231", (short) 2).Content); |
| | | // crnProtocol.setTemp1(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setTemp2(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setTemp3(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setTemp4(melsecMcNet.ReadInt16("D2231").Content); |
| | | // crnProtocol.setXSpeed(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setYSpeed(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setZSpeed(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setXDistance(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setYDistance(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setXDuration(melsecMcNet.ReadFloat("D2231").Content); |
| | | // crnProtocol.setYDuration(melsecMcNet.ReadFloat("D2231").Content); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); |
| | |
| | | // command.setDestinationPosZ((short) 0); // 目标库位层 |
| | | // crnThread.write(command); |
| | | |
| | | // 7.坐标移行 目标发 pass |
| | | CrnCommand command = new CrnCommand(); |
| | | command.setCrnNo(1); // 堆垛机编号 |
| | | command.setTaskNo((short) 0); // 工作号 |
| | | command.setAckFinish((short) 0); // 任务完成确认位 |
| | | command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 任务模式 |
| | | command.setSourcePosX((short) 0); // 源库位排 |
| | | command.setSourcePosY((short) 0); // 源库位列 |
| | | command.setSourcePosZ((short) 0); // 源库位层 |
| | | command.setDestinationPosX((short) 1); // 目标库位排 |
| | | command.setDestinationPosY((short) 3); // 目标库位列 |
| | | command.setDestinationPosZ((short) 3); // 目标库位层 |
| | | crnThread.write(command); |
| | | |
| | | // 只有出现指定异常才进行复位 |
| | | // if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr |