| | |
| | | package com.zy.core.thread; |
| | | |
| | | import HslCommunication.Core.Types.OperateResult; |
| | | import HslCommunication.Core.Types.OperateResultExOne; |
| | | import HslCommunication.Profinet.Melsec.MelsecMcNet; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.zy.core.ThreadHandler; |
| | |
| | | OperateResult connect = melsecMcNet.ConnectServer(); |
| | | if(connect.IsSuccess){ |
| | | result = true; |
| | | OutputQueue.CRN.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())); |
| | | log.info("堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | OutputQueue.CRN.offer(MessageFormat.format( "【{0}】堆垛机plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); |
| | | log.info("堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); |
| | | } else { |
| | | OutputQueue.CRN.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())); |
| | | log.error("堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】堆垛机plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); |
| | | log.error("堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); |
| | | } |
| | | melsecMcNet.ConnectClose(); |
| | | return result; |
| | |
| | | if (null == crnProtocol) { |
| | | crnProtocol = new CrnProtocol(); |
| | | } |
| | | 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); |
| | | |
| | | /* 方法1 */ |
| | | OperateResultExOne<byte[]> result = melsecMcNet.Read("D2231", (short) 62); |
| | | if (result.IsSuccess) { |
| | | 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.setError1(melsecMcNet.getByteTransform().TransBool(result.Content, 24, 2)); |
| | | crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 26)); |
| | | 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, 58)); |
| | | |
| | | } else { |
| | | throw new CoolException("堆垛机plc状态信息失败"); |
| | | } |
| | | /* 方法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())); |
| | |
| | | return; |
| | | } |
| | | command.setCrnNo(slave.getId()); |
| | | short[] array = new short[9]; |
| | | array[0] = command.getAckFinish(); |
| | | array[1] = command.getTaskNo(); |
| | | array[2] = command.getTaskMode(); |
| | | array[3] = command.getSourcePosX(); |
| | | array[4] = command.getSourcePosY(); |
| | | array[5] = command.getSourcePosZ(); |
| | | array[6] = command.getDestinationPosX(); |
| | | array[7] = command.getDestinationPosY(); |
| | | array[8] = command.getDestinationPosZ(); |
| | | OperateResult result = melsecMcNet.Write("DB8.0", array); |
| | | if (result.IsSuccess) { |
| | | /* 方法 1 */ |
| | | do { |
| | | if (!melsecMcNet.Write("D2218", command.getAckFinish()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2218", command.getAckFinish()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2216", command.getTaskMode()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2214", command.getSourcePosX()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2212", command.getSourcePosY()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2210", command.getSourcePosZ()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2208", command.getDestinationPosX()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2204", command.getDestinationPosY()).IsSuccess) { break; } |
| | | if (!melsecMcNet.Write("D2202", command.getDestinationPosZ()).IsSuccess) { break; } |
| | | |
| | | System.out.println(MessageFormat.format("【{0}】[id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); |
| | | // readStatus(); |
| | | } else { |
| | | System.out.println(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())); |
| | | OutputQueue.CRN.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())); |
| | | log.error("写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | } |
| | | |
| | | } while (false); |
| | | |
| | | |
| | | System.out.println(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); |
| | | OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); |
| | | log.error("写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); |
| | | |
| | | |
| | | |
| | | /* 方法 2 */ |
| | | // melsecMcNet.Write("D2218", command.getAckFinish()); |
| | | // melsecMcNet.Write("D2217", command.getTaskNo()); |
| | | // melsecMcNet.Write("D2216", command.getTaskMode()); |
| | | // melsecMcNet.Write("D2214", command.getSourcePosX()); |
| | | // melsecMcNet.Write("D2212", command.getSourcePosY()); |
| | | // melsecMcNet.Write("D2210", command.getSourcePosZ()); |
| | | // melsecMcNet.Write("D2208", command.getDestinationPosX()); |
| | | // melsecMcNet.Write("D2204", command.getDestinationPosY()); |
| | | // melsecMcNet.Write("D2202", command.getDestinationPosZ()); |
| | | |
| | | } |
| | | |
| | | @Override |