From 21eac69df8b18ef44ab267a4e2efe714f985d8d9 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期六, 29 七月 2023 14:26:57 +0800 Subject: [PATCH] 提升机穿梭车配置 --- src/main/java/com/zy/core/thread/LiftThread.java | 291 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 145 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index d2dfb3a..8e1f381 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -4,9 +4,10 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.ModBus.ModbusTcpNet; +import HslCommunication.Profinet.Siemens.SiemensPLCS; +import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; -import com.core.common.RadixTools; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.BasLift; @@ -45,7 +46,7 @@ @Slf4j public class LiftThread implements Runnable, ThreadHandler { - private ModbusTcpNet modbusTcpNet; + private SiemensS7Net siemensS7Net; private LiftSlave slave; private LiftProtocol liftProtocol; private RedisUtil redisUtil; @@ -92,10 +93,8 @@ public boolean connect() { boolean result = false; //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// - modbusTcpNet = new ModbusTcpNet(slave.getIp(), slave.getPort(), (byte) 0x02); - // 褰撲綘闇�瑕佹寚瀹氭牸寮忕殑鏁版嵁瑙f瀽鏃讹紝灏遍渶瑕佽缃笅闈㈢殑杩欎釜淇℃伅 - modbusTcpNet.setDataFormat(DataFormat.ABCD); - OperateResult connect = modbusTcpNet.ConnectServer(); + siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); + OperateResult connect = siemensS7Net.ConnectServer(); if(connect.IsSuccess){ result = true; OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); @@ -104,14 +103,14 @@ 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("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); } - modbusTcpNet.ConnectClose(); + siemensS7Net.ConnectClose(); //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// return result; } @Override public void close() { - modbusTcpNet.ConnectClose(); + siemensS7Net.ConnectClose(); } private void read() { @@ -132,13 +131,12 @@ } } catch (Exception e) { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - initLift(); } } private void readStatus() { try { - OperateResultExOne<byte[]> result = modbusTcpNet.Read("41117", (short) 50); + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.200", (short) 24); if (result.IsSuccess) { if (null == liftProtocol) { liftProtocol = new LiftProtocol(); @@ -147,97 +145,97 @@ //----------璇诲彇鎻愬崌鏈虹姸鎬�----------- //鑾峰彇鏁版嵁 - byte[] content = result.Content; - //鎻愬崌鏈洪攣瀹� - liftProtocol.setLiftLock(CommonUtils.shortToBoolean(modbusTcpNet.getByteTransform().TransInt16(content, 0))); - //浣嶇疆鍒拌揪鍙嶉 - liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2)); - - - byte b1 = modbusTcpNet.getByteTransform().TransByte(content, 5); - byte b2 = modbusTcpNet.getByteTransform().TransByte(content, 4); - int[] datas1 = CommonUtils.byteToBits(b1); - int[] datas2 = CommonUtils.byteToBits(b2); - //鍑嗗灏辩华 - liftProtocol.setReady(CommonUtils.intToBoolean(datas1[0])); - //杩愯涓� - liftProtocol.setRunning(CommonUtils.intToBoolean(datas1[1])); - //鑱旀満/鍗曟満 - liftProtocol.setMode(CommonUtils.intToBoolean(datas1[2])); - //杈撻�佺嚎鍓嶇鍏夌數鏈夎揣 - liftProtocol.setLineFrontHasStock(CommonUtils.intToBoolean(datas1[3])); - //杈撻�佺嚎姝h浆鍙嶉 - liftProtocol.setForwardRotationFeedback(CommonUtils.intToBoolean(datas1[4])); - //杈撻�佺嚎鍙嶈浆鍙嶉 - liftProtocol.setReverseFeedback(CommonUtils.intToBoolean(datas1[5])); - //杈撻�佺嚎鐢垫満杩囪浇 - liftProtocol.setMotorOverload(CommonUtils.intToBoolean(datas1[6])); - //杈撻�佺嚎鏈鍏夌數鏈夎揣 - liftProtocol.setLineEndHasStock(CommonUtils.intToBoolean(datas1[7])); - //杩涜緭閫佺嚎鍗℃墭鐩樻姤璀� - liftProtocol.setInConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[0])); - //鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀� - liftProtocol.setOutConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[1])); - //骞冲彴浣嶇疆鍋忓樊鎶ヨ - liftProtocol.setPlatPositionDeviationAlarm(CommonUtils.intToBoolean(datas2[2])); - //骞冲彴鎵煩鍋忓樊鎶ヨ - liftProtocol.setPlatTorqueDeviationAlarm(CommonUtils.intToBoolean(datas2[3])); - //骞冲彴鍥涘悜杞︽娴� - liftProtocol.setPlatShuttleCheck(CommonUtils.intToBoolean(datas2[4])); - - //鏈氨缁姸鎬� - liftProtocol.setNotReady(modbusTcpNet.getByteTransform().TransInt16(content,6)); - //浼烘湇1閿欒 - liftProtocol.setServoError1(modbusTcpNet.getByteTransform().TransInt16(content,8)); - //浼烘湇2閿欒 - liftProtocol.setServoError2(modbusTcpNet.getByteTransform().TransInt16(content,10)); - //浼烘湇3閿欒 - liftProtocol.setServoError3(modbusTcpNet.getByteTransform().TransInt16(content,12)); - //浼烘湇4閿欒 - liftProtocol.setServoError4(modbusTcpNet.getByteTransform().TransInt16(content,14)); - //鎻愬崌鏈哄疄闄呴�熷害鍙嶉 - liftProtocol.setLiftActualSpeed(modbusTcpNet.getByteTransform().TransInt16(content,16)); - - ///璇诲彇鎻愬崌鏈虹姸鎬�-end - - //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� - BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); - BasLift basLift = liftService.selectById(liftProtocol.getLiftNo()); - if (basLift == null) { - basLift = new BasLift(); - //鎻愬崌鏈哄彿 - basLift.setLiftNo(slave.getId()); - liftService.insert(basLift); - } - basLift.setStatus(liftProtocol.getProtocolStatus()); - basLift.setWrkNo(liftProtocol.getTaskNo().intValue()); - basLift.setUpdateTime(new Date()); - basLift.setPakMk(liftProtocol.getPakMk()); - basLift.setLiftLock(liftProtocol.getLiftLock()); - basLift.setPositionArrivalFeedback(liftProtocol.getPositionArrivalFeedback().intValue()); - basLift.setReady(liftProtocol.getReady()); - basLift.setRunning(liftProtocol.getRunning()); - basLift.setMode(liftProtocol.getMode()); - basLift.setLineFrontHasStock(liftProtocol.getLineFrontHasStock()); - basLift.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback()); - basLift.setReverseFeedback(liftProtocol.getReverseFeedback()); - basLift.setMotorOverload(liftProtocol.getMotorOverload()); - basLift.setLineEndHasStock(liftProtocol.getLineEndHasStock()); - basLift.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm()); - basLift.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm()); - basLift.setPlatPositionDeviationAlarm(liftProtocol.getPlatPositionDeviationAlarm()); - basLift.setPlatTorqueDeviationAlarm(liftProtocol.getPlatTorqueDeviationAlarm()); - basLift.setPlatShuttleCheck(liftProtocol.getPlatShuttleCheck()); - basLift.setNotReady(liftProtocol.getNotReady().intValue()); - basLift.setServoError1(liftProtocol.getServoError1().intValue()); - basLift.setServoError2(liftProtocol.getServoError2().intValue()); - basLift.setServoError3(liftProtocol.getServoError3().intValue()); - basLift.setServoError4(liftProtocol.getServoError4().intValue()); - basLift.setLiftActualSpeed(liftProtocol.getLiftActualSpeed().intValue()); - if (liftService.updateById(basLift)) { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } +// byte[] content = result.Content; +// //鎻愬崌鏈洪攣瀹� +// liftProtocol.setLiftLock(CommonUtils.shortToBoolean(modbusTcpNet.getByteTransform().TransInt16(content, 0))); +// //浣嶇疆鍒拌揪鍙嶉 +// liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2)); +// +// +// byte b1 = modbusTcpNet.getByteTransform().TransByte(content, 5); +// byte b2 = modbusTcpNet.getByteTransform().TransByte(content, 4); +// int[] datas1 = CommonUtils.byteToBits(b1); +// int[] datas2 = CommonUtils.byteToBits(b2); +// //鍑嗗灏辩华 +// liftProtocol.setReady(CommonUtils.intToBoolean(datas1[0])); +// //杩愯涓� +// liftProtocol.setRunning(CommonUtils.intToBoolean(datas1[1])); +// //鑱旀満/鍗曟満 +// liftProtocol.setMode(CommonUtils.intToBoolean(datas1[2])); +// //杈撻�佺嚎鍓嶇鍏夌數鏈夎揣 +// liftProtocol.setLineFrontHasStock(CommonUtils.intToBoolean(datas1[3])); +// //杈撻�佺嚎姝h浆鍙嶉 +// liftProtocol.setForwardRotationFeedback(CommonUtils.intToBoolean(datas1[4])); +// //杈撻�佺嚎鍙嶈浆鍙嶉 +// liftProtocol.setReverseFeedback(CommonUtils.intToBoolean(datas1[5])); +// //杈撻�佺嚎鐢垫満杩囪浇 +// liftProtocol.setMotorOverload(CommonUtils.intToBoolean(datas1[6])); +// //杈撻�佺嚎鏈鍏夌數鏈夎揣 +// liftProtocol.setLineEndHasStock(CommonUtils.intToBoolean(datas1[7])); +// //杩涜緭閫佺嚎鍗℃墭鐩樻姤璀� +// liftProtocol.setInConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[0])); +// //鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀� +// liftProtocol.setOutConveyLineCardTrayAlarm(CommonUtils.intToBoolean(datas2[1])); +// //骞冲彴浣嶇疆鍋忓樊鎶ヨ +// liftProtocol.setPlatPositionDeviationAlarm(CommonUtils.intToBoolean(datas2[2])); +// //骞冲彴鎵煩鍋忓樊鎶ヨ +// liftProtocol.setPlatTorqueDeviationAlarm(CommonUtils.intToBoolean(datas2[3])); +// //骞冲彴鍥涘悜杞︽娴� +// liftProtocol.setPlatShuttleCheck(CommonUtils.intToBoolean(datas2[4])); +// +// //鏈氨缁姸鎬� +// liftProtocol.setNotReady(modbusTcpNet.getByteTransform().TransInt16(content,6)); +// //浼烘湇1閿欒 +// liftProtocol.setServoError1(modbusTcpNet.getByteTransform().TransInt16(content,8)); +// //浼烘湇2閿欒 +// liftProtocol.setServoError2(modbusTcpNet.getByteTransform().TransInt16(content,10)); +// //浼烘湇3閿欒 +// liftProtocol.setServoError3(modbusTcpNet.getByteTransform().TransInt16(content,12)); +// //浼烘湇4閿欒 +// liftProtocol.setServoError4(modbusTcpNet.getByteTransform().TransInt16(content,14)); +// //鎻愬崌鏈哄疄闄呴�熷害鍙嶉 +// liftProtocol.setLiftActualSpeed(modbusTcpNet.getByteTransform().TransInt16(content,16)); +// +// ///璇诲彇鎻愬崌鏈虹姸鎬�-end +// +// //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� +// BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); +// BasLift basLift = liftService.selectById(liftProtocol.getLiftNo()); +// if (basLift == null) { +// basLift = new BasLift(); +// //鎻愬崌鏈哄彿 +// basLift.setLiftNo(slave.getId()); +// liftService.insert(basLift); +// } +// basLift.setStatus(liftProtocol.getProtocolStatus()); +// basLift.setWrkNo(liftProtocol.getTaskNo().intValue()); +// basLift.setUpdateTime(new Date()); +// basLift.setPakMk(liftProtocol.getPakMk()); +// basLift.setLiftLock(liftProtocol.getLiftLock()); +// basLift.setPositionArrivalFeedback(liftProtocol.getPositionArrivalFeedback().intValue()); +// basLift.setReady(liftProtocol.getReady()); +// basLift.setRunning(liftProtocol.getRunning()); +// basLift.setMode(liftProtocol.getMode()); +// basLift.setLineFrontHasStock(liftProtocol.getLineFrontHasStock()); +// basLift.setForwardRotationFeedback(liftProtocol.getForwardRotationFeedback()); +// basLift.setReverseFeedback(liftProtocol.getReverseFeedback()); +// basLift.setMotorOverload(liftProtocol.getMotorOverload()); +// basLift.setLineEndHasStock(liftProtocol.getLineEndHasStock()); +// basLift.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm()); +// basLift.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm()); +// basLift.setPlatPositionDeviationAlarm(liftProtocol.getPlatPositionDeviationAlarm()); +// basLift.setPlatTorqueDeviationAlarm(liftProtocol.getPlatTorqueDeviationAlarm()); +// basLift.setPlatShuttleCheck(liftProtocol.getPlatShuttleCheck()); +// basLift.setNotReady(liftProtocol.getNotReady().intValue()); +// basLift.setServoError1(liftProtocol.getServoError1().intValue()); +// basLift.setServoError2(liftProtocol.getServoError2().intValue()); +// basLift.setServoError3(liftProtocol.getServoError3().intValue()); +// basLift.setServoError4(liftProtocol.getServoError4().intValue()); +// basLift.setLiftActualSpeed(liftProtocol.getLiftActualSpeed().intValue()); +// if (liftService.updateById(basLift)) { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +//// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +// } }else { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); @@ -245,7 +243,6 @@ } } catch (Exception e) { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - initLift(); } } @@ -255,51 +252,53 @@ return false; } - command.setLiftNo(slave.getId().shortValue()); - short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 +// command.setLiftNo(slave.getId().shortValue()); +// short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 +// +// try { +// Thread.sleep(500);//鍛戒护涓嬪彂鍓嶄紤鐪� +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } +// +// OperateResult result = modbusTcpNet.Write("41088", array); +// if (result != null && result.IsSuccess) { +// News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); +// +// try { +// Thread.sleep(500);//鍛戒护涓嬪彂鍚庝紤鐪� +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } +// +// for (int i = 0; i < 5; i++) { +// if (command.getRun().intValue() == 4 || command.getRun().intValue() == 5) { +// break;//绯荤粺澶嶄綅鍜岄摼鏉″仠姝㈣浆鍔ㄤ笉闇�瑕侀噸鍙� +// } +// readStatus();//閲嶆柊璇诲彇鐘舵�� +// if (liftProtocol.getRunning()) { +// break; +// } +// +// //鍒ゆ柇鏄惁杩愯涓紝濡備笉杩愯锛岄噸鏂颁笅鍙戝懡浠� +// result = modbusTcpNet.Write("41088", array); +// News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {},娆℃暟锛歿}", slave.getId(), JSON.toJSON(command), i); +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2},娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i)); +// try { +// Thread.sleep(300);//鍛戒护涓嬪彂鍚庝紤鐪� +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } +// } +// return true; +// } else { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// return false; +// } - try { - Thread.sleep(500);//鍛戒护涓嬪彂鍓嶄紤鐪� - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - OperateResult result = modbusTcpNet.Write("41088", array); - if (result != null && result.IsSuccess) { - News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - - try { - Thread.sleep(500);//鍛戒护涓嬪彂鍚庝紤鐪� - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - for (int i = 0; i < 5; i++) { - if (command.getRun().intValue() == 4 || command.getRun().intValue() == 5) { - break;//绯荤粺澶嶄綅鍜岄摼鏉″仠姝㈣浆鍔ㄤ笉闇�瑕侀噸鍙� - } - readStatus();//閲嶆柊璇诲彇鐘舵�� - if (liftProtocol.getRunning()) { - break; - } - - //鍒ゆ柇鏄惁杩愯涓紝濡備笉杩愯锛岄噸鏂颁笅鍙戝懡浠� - result = modbusTcpNet.Write("41088", array); - News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {},娆℃暟锛歿}", slave.getId(), JSON.toJSON(command), i); - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2},娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i)); - try { - Thread.sleep(300);//鍛戒护涓嬪彂鍚庝紤鐪� - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - return true; - } else { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } + return true; } //鑾峰彇鍛戒护鎶ユ枃 -- Gitblit v1.9.1