From 82e14834b38c398f6bc75e8b7454a0b223be2a66 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 04 十二月 2023 17:13:42 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 283 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 187 insertions(+), 96 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index caaad60..ac4f614 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Optional; /** * 鍫嗗灈鏈虹嚎绋� @@ -76,7 +77,7 @@ break; // 鍐欏叆鏁版嵁 case 2: - write((CrnCommand) task.getData()); + write2((CrnCommand) task.getData()); break; // 澶嶄綅 case 3: @@ -167,7 +168,7 @@ crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14)); crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16)); -// crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); + crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); // crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20)); // crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22)); // crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24)); @@ -180,99 +181,99 @@ crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); - // 寮傚父 - crnProtocol.setAlarm1(0); - crnProtocol.setAlarm2(0); - crnProtocol.setAlarm3(0); - crnProtocol.setAlarm4(0); - boolean[] err1 = siemensNet.getByteTransform().TransBool(result.Content, 28, 1); // 30 - if (err1[0]) { crnProtocol.setAlarm1(1); } - if (err1[1]) { crnProtocol.setAlarm1(2); } - if (err1[2]) { crnProtocol.setAlarm1(3); } - boolean[] err2 = siemensNet.getByteTransform().TransBool(result.Content, 29, 1); // 31 - if (err2[0]) { crnProtocol.setAlarm1(4); } - if (err2[1]) { crnProtocol.setAlarm1(5); } - if (err2[2]) { crnProtocol.setAlarm1(6); } - boolean[] err3 = siemensNet.getByteTransform().TransBool(result.Content, 30, 1); // 32 - if (err3[6]) { crnProtocol.setAlarm1(7); } - if (err3[7]) { crnProtocol.setAlarm1(8); } - boolean[] err4 = siemensNet.getByteTransform().TransBool(result.Content, 31, 1); // 33 - if (err4[1]) { crnProtocol.setAlarm1(9); } - if (err4[5]) { crnProtocol.setAlarm1(10); } - if (err4[6]) { crnProtocol.setAlarm1(11); } - if (err4[7]) { crnProtocol.setAlarm1(12); } - boolean[] err5 = siemensNet.getByteTransform().TransBool(result.Content, 32, 1); // 34 - if (err5[0]) { crnProtocol.setAlarm2(13); } - if (err5[2]) { crnProtocol.setAlarm2(14); } - if (err5[3]) { crnProtocol.setAlarm2(15); } - if (err5[5]) { crnProtocol.setAlarm2(16); } - if (err5[6]) { crnProtocol.setAlarm2(17); } - if (err5[7]) { crnProtocol.setAlarm2(18); } - boolean[] err6 = siemensNet.getByteTransform().TransBool(result.Content, 33, 1); // 35 - if (err6[1]) { crnProtocol.setAlarm2(19); } - if (err6[2]) { crnProtocol.setAlarm2(20); } - if (err6[3]) { crnProtocol.setAlarm2(21); } - if (err6[4]) { crnProtocol.setAlarm2(22); } - boolean[] err7 = siemensNet.getByteTransform().TransBool(result.Content, 34, 1); // 36 - if (err7[4]) { crnProtocol.setAlarm2(23); } - if (err7[5]) { crnProtocol.setAlarm2(24); } - if (err7[6]) { crnProtocol.setAlarm2(25); } - boolean[] err8 = siemensNet.getByteTransform().TransBool(result.Content, 36, 1); // 38 - if (err8[0]) { crnProtocol.setAlarm3(26); } - if (err8[1]) { crnProtocol.setAlarm3(27); } - if (err8[2]) { crnProtocol.setAlarm3(28); } - if (err8[3]) { crnProtocol.setAlarm3(29); } - if (err8[4]) { crnProtocol.setAlarm3(30); } - if (err8[5]) { crnProtocol.setAlarm3(31); } - if (err8[6]) { crnProtocol.setAlarm3(32); } - if (err8[7]) { crnProtocol.setAlarm3(33); } - boolean[] err9 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1); // 39 - if (err9[0]) { crnProtocol.setAlarm3(34); } - if (err9[1]) { crnProtocol.setAlarm3(35); } - if (err9[2]) { crnProtocol.setAlarm3(36); } - if (err9[3]) { crnProtocol.setAlarm3(37); } - if (err9[4]) { crnProtocol.setAlarm3(38); } - if (err9[5]) { crnProtocol.setAlarm3(39); } - if (err9[6]) { crnProtocol.setAlarm3(40); } - if (err9[7]) { crnProtocol.setAlarm3(41); } - boolean[] err10 = siemensNet.getByteTransform().TransBool(result.Content, 38, 1); // 40 - if (err10[0]) { crnProtocol.setAlarm3(42); } - if (err10[1]) { crnProtocol.setAlarm3(43); } - if (err10[2]) { crnProtocol.setAlarm3(44); } - if (err10[3]) { crnProtocol.setAlarm3(45); } - if (err10[4]) { crnProtocol.setAlarm3(46); } - boolean[] err11 = siemensNet.getByteTransform().TransBool(result.Content, 39, 1); // 41 - if (err11[0]) { crnProtocol.setAlarm3(47); } - if (err11[1]) { crnProtocol.setAlarm3(48); } - if (err11[2]) { crnProtocol.setAlarm3(49); } - boolean[] err12 = siemensNet.getByteTransform().TransBool(result.Content, 40, 1); // 42 - if (err12[0]) { crnProtocol.setAlarm4(50); } - if (err12[1]) { crnProtocol.setAlarm4(51); } - if (err12[2]) { crnProtocol.setAlarm4(52); } - if (err12[3]) { crnProtocol.setAlarm4(53); } - if (err12[4]) { crnProtocol.setAlarm4(54); } - if (err12[5]) { crnProtocol.setAlarm4(55); } - boolean[] err13 = siemensNet.getByteTransform().TransBool(result.Content, 41, 1); // 43 - if (err13[0]) { crnProtocol.setAlarm4(56); } - if (err13[1]) { crnProtocol.setAlarm4(57); } - if (err13[2]) { crnProtocol.setAlarm4(58); } - if (err13[3]) { crnProtocol.setAlarm4(59); } - boolean[] err14 = siemensNet.getByteTransform().TransBool(result.Content, 42, 1); // 44 - if (err14[0]) { crnProtocol.setAlarm4(60); } - if (err14[1]) { crnProtocol.setAlarm4(61); } - if (err14[2]) { crnProtocol.setAlarm4(62); } - if (err14[3]) { crnProtocol.setAlarm4(63); } - if (err14[4]) { crnProtocol.setAlarm4(64); } - if (err14[5]) { crnProtocol.setAlarm4(65); } - if (err14[6]) { crnProtocol.setAlarm4(66); } - if (err14[7]) { crnProtocol.setAlarm4(67); } - boolean[] err15 = siemensNet.getByteTransform().TransBool(result.Content, 43, 1); // 45 - if (err15[1]) { crnProtocol.setAlarm4(68); } - if (err15[2]) { crnProtocol.setAlarm4(69); } - if (err15[3]) { crnProtocol.setAlarm4(70); } - if (err15[4]) { crnProtocol.setAlarm4(71); } - if (err15[5]) { crnProtocol.setAlarm4(72); } - if (err15[6]) { crnProtocol.setAlarm4(73); } +// // 寮傚父 +// crnProtocol.setAlarm1(0); +// crnProtocol.setAlarm2(0); +// crnProtocol.setAlarm3(0); +// crnProtocol.setAlarm4(0); +// boolean[] err1 = siemensNet.getByteTransform().TransBool(result.Content, 28, 1); // 30 +// if (err1[0]) { crnProtocol.setAlarm1(1); } +// if (err1[1]) { crnProtocol.setAlarm1(2); } +// if (err1[2]) { crnProtocol.setAlarm1(3); } +// boolean[] err2 = siemensNet.getByteTransform().TransBool(result.Content, 29, 1); // 31 +// if (err2[0]) { crnProtocol.setAlarm1(4); } +// if (err2[1]) { crnProtocol.setAlarm1(5); } +// if (err2[2]) { crnProtocol.setAlarm1(6); } +// boolean[] err3 = siemensNet.getByteTransform().TransBool(result.Content, 30, 1); // 32 +// if (err3[6]) { crnProtocol.setAlarm1(7); } +// if (err3[7]) { crnProtocol.setAlarm1(8); } +// boolean[] err4 = siemensNet.getByteTransform().TransBool(result.Content, 31, 1); // 33 +// if (err4[1]) { crnProtocol.setAlarm1(9); } +// if (err4[5]) { crnProtocol.setAlarm1(10); } +// if (err4[6]) { crnProtocol.setAlarm1(11); } +// if (err4[7]) { crnProtocol.setAlarm1(12); } +// boolean[] err5 = siemensNet.getByteTransform().TransBool(result.Content, 32, 1); // 34 +// if (err5[0]) { crnProtocol.setAlarm2(13); } +// if (err5[2]) { crnProtocol.setAlarm2(14); } +// if (err5[3]) { crnProtocol.setAlarm2(15); } +// if (err5[5]) { crnProtocol.setAlarm2(16); } +// if (err5[6]) { crnProtocol.setAlarm2(17); } +// if (err5[7]) { crnProtocol.setAlarm2(18); } +// boolean[] err6 = siemensNet.getByteTransform().TransBool(result.Content, 33, 1); // 35 +// if (err6[1]) { crnProtocol.setAlarm2(19); } +// if (err6[2]) { crnProtocol.setAlarm2(20); } +// if (err6[3]) { crnProtocol.setAlarm2(21); } +// if (err6[4]) { crnProtocol.setAlarm2(22); } +// boolean[] err7 = siemensNet.getByteTransform().TransBool(result.Content, 34, 1); // 36 +// if (err7[4]) { crnProtocol.setAlarm2(23); } +// if (err7[5]) { crnProtocol.setAlarm2(24); } +// if (err7[6]) { crnProtocol.setAlarm2(25); } +// boolean[] err8 = siemensNet.getByteTransform().TransBool(result.Content, 36, 1); // 38 +// if (err8[0]) { crnProtocol.setAlarm3(26); } +// if (err8[1]) { crnProtocol.setAlarm3(27); } +// if (err8[2]) { crnProtocol.setAlarm3(28); } +// if (err8[3]) { crnProtocol.setAlarm3(29); } +// if (err8[4]) { crnProtocol.setAlarm3(30); } +// if (err8[5]) { crnProtocol.setAlarm3(31); } +// if (err8[6]) { crnProtocol.setAlarm3(32); } +// if (err8[7]) { crnProtocol.setAlarm3(33); } +// boolean[] err9 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1); // 39 +// if (err9[0]) { crnProtocol.setAlarm3(34); } +// if (err9[1]) { crnProtocol.setAlarm3(35); } +// if (err9[2]) { crnProtocol.setAlarm3(36); } +// if (err9[3]) { crnProtocol.setAlarm3(37); } +// if (err9[4]) { crnProtocol.setAlarm3(38); } +// if (err9[5]) { crnProtocol.setAlarm3(39); } +// if (err9[6]) { crnProtocol.setAlarm3(40); } +// if (err9[7]) { crnProtocol.setAlarm3(41); } +// boolean[] err10 = siemensNet.getByteTransform().TransBool(result.Content, 38, 1); // 40 +// if (err10[0]) { crnProtocol.setAlarm3(42); } +// if (err10[1]) { crnProtocol.setAlarm3(43); } +// if (err10[2]) { crnProtocol.setAlarm3(44); } +// if (err10[3]) { crnProtocol.setAlarm3(45); } +// if (err10[4]) { crnProtocol.setAlarm3(46); } +// boolean[] err11 = siemensNet.getByteTransform().TransBool(result.Content, 39, 1); // 41 +// if (err11[0]) { crnProtocol.setAlarm3(47); } +// if (err11[1]) { crnProtocol.setAlarm3(48); } +// if (err11[2]) { crnProtocol.setAlarm3(49); } +// boolean[] err12 = siemensNet.getByteTransform().TransBool(result.Content, 40, 1); // 42 +// if (err12[0]) { crnProtocol.setAlarm4(50); } +// if (err12[1]) { crnProtocol.setAlarm4(51); } +// if (err12[2]) { crnProtocol.setAlarm4(52); } +// if (err12[3]) { crnProtocol.setAlarm4(53); } +// if (err12[4]) { crnProtocol.setAlarm4(54); } +// if (err12[5]) { crnProtocol.setAlarm4(55); } +// boolean[] err13 = siemensNet.getByteTransform().TransBool(result.Content, 41, 1); // 43 +// if (err13[0]) { crnProtocol.setAlarm4(56); } +// if (err13[1]) { crnProtocol.setAlarm4(57); } +// if (err13[2]) { crnProtocol.setAlarm4(58); } +// if (err13[3]) { crnProtocol.setAlarm4(59); } +// boolean[] err14 = siemensNet.getByteTransform().TransBool(result.Content, 42, 1); // 44 +// if (err14[0]) { crnProtocol.setAlarm4(60); } +// if (err14[1]) { crnProtocol.setAlarm4(61); } +// if (err14[2]) { crnProtocol.setAlarm4(62); } +// if (err14[3]) { crnProtocol.setAlarm4(63); } +// if (err14[4]) { crnProtocol.setAlarm4(64); } +// if (err14[5]) { crnProtocol.setAlarm4(65); } +// if (err14[6]) { crnProtocol.setAlarm4(66); } +// if (err14[7]) { crnProtocol.setAlarm4(67); } +// boolean[] err15 = siemensNet.getByteTransform().TransBool(result.Content, 43, 1); // 45 +// if (err15[1]) { crnProtocol.setAlarm4(68); } +// if (err15[2]) { crnProtocol.setAlarm4(69); } +// if (err15[3]) { crnProtocol.setAlarm4(70); } +// if (err15[4]) { crnProtocol.setAlarm4(71); } +// if (err15[5]) { crnProtocol.setAlarm4(72); } +// if (err15[6]) { crnProtocol.setAlarm4(73); } // boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1); // 62 // crnProtocol.setConnStatus(bool1[0]); @@ -411,6 +412,93 @@ // }else if (rowFour.contains(command.getSourcePosX())){ // array[4] = (short)4; // }else { + array[4] = command.getSourcePosX(); +// } + array[5] = command.getSourcePosY(); + + array[6] = command.getDestinationPosZ(); +// if (rowOne.contains(command.getDestinationPosX())){ +// array[7] = (short)1; +// }else if (rowTwo.contains(command.getDestinationPosX())){ +// array[7] = (short)2; +// }else if (rowThree.contains(command.getDestinationPosX())){ +// array[7] = (short)3; +// }else if (rowFour.contains(command.getDestinationPosX())){ +// array[7] = (short)4; +// }else { + array[7] = command.getDestinationPosX(); +// } + array[8] = command.getDestinationPosY(); + array[9] = command.getCommand(); + + // 浣滀笟淇℃伅 + OperateResult result = siemensNet.Write("DB100.0", array); + + if (command.getAckFinish() != 1) { + BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); + BasCrnOpt basCrnOpt = new BasCrnOpt( + command.getTaskNo().intValue(), // 浠诲姟鍙� + command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] + new Date(), // 涓嬪彂鏃堕棿 + command.getTaskModeType() == null ? null : command.getTaskModeType().toString(), // 妯″紡 + command.getSourcePosX().intValue(), // 婧愭帓 + command.getSourcePosY().intValue(), // 婧愬垪 + command.getSourcePosZ().intValue(), // 婧愬眰 + null, // 婧愮珯 + command.getDestinationPosX().intValue(), // 鐩爣鎺� + command.getDestinationPosY().intValue(), // 鐩爣鍒� + command.getDestinationPosZ().intValue(), // 鐩爣灞� + null, // 鐩爣绔� + null, // 鍝嶅簲缁撴灉 + null, // 淇敼鏃堕棿 + null // 淇敼浜哄憳 + ); + bean.insert(basCrnOpt); + } + + if (result.IsSuccess) { + log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), JSON.toJSON(command)); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + return true; + } 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("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + return false; + } + } + + /** + * 鍐欏叆鏁版嵁 + */ + private boolean write2(CrnCommand command){ + if (null == command) { + log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); + return false; + } + if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) { + command.setTaskNo((short) 9999); + } + + command.setCrnNo(slave.getId()); + short[] array = new short[10]; + if (Cools.isEmpty(command.getAckFinish())) { + array[0] = 5; + } else { + array[0] = command.getAckFinish(); + } + array[1] = command.getTaskNo(); + array[2] = command.getTaskMode(); + + array[3] = command.getSourcePosZ(); +// if (rowOne.contains(command.getSourcePosX())){ +// array[4] = (short)1; +// }else if (rowTwo.contains(command.getSourcePosX())){ +// array[4] = (short)2; +// }else if (rowThree.contains(command.getSourcePosX())){ +// array[4] = (short)3; +// }else if (rowFour.contains(command.getSourcePosX())){ +// array[4] = (short)4; +// }else { array[4] = command.getSourcePosX(); // } array[5] = command.getSourcePosY(); @@ -453,7 +541,7 @@ command.getTaskNo().intValue(), // 浠诲姟鍙� command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] new Date(), // 涓嬪彂鏃堕棿 - command.getTaskModeType().toString(), // 妯″紡 + command.getTaskModeType() == null ? null : command.getTaskModeType().toString(), // 妯″紡 command.getSourcePosX().intValue(), // 婧愭帓 command.getSourcePosY().intValue(), // 婧愬垪 command.getSourcePosZ().intValue(), // 婧愬眰 @@ -498,6 +586,8 @@ log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + Date now = new Date(); + //鏇存柊鎸囦护鏃ュ織 commandInfoLog.setDeviceLog("鎸囦护涓嬪彂鎴愬姛"); commandInfoLogService.insert(commandInfoLog); @@ -507,6 +597,7 @@ //鏇存柊鎸囦护鐘舵�� commandInfo.setCommandStatus(CommandStatusType.EXECUTE.id);//鎵ц涓� + commandInfo.setExecuteTime(now); commandInfoService.updateById(commandInfo); //鏇存柊浠诲姟姝ュ簭 -- Gitblit v1.9.1