From 0ac76f7d8101903e1d050116f7d3835ce1303dfa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 06 一月 2025 17:00:37 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/LiftThread.java | 1191 ++++++++++++++++++++++++++---------------------------------
1 files changed, 521 insertions(+), 670 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index c78cd50..2854b0a 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -1,671 +1,522 @@
-package com.zy.core.thread;
-
-import HslCommunication.Core.Transfer.DataFormat;
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.ModBus.ModbusTcpNet;
-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;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.service.BasLiftOptService;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.common.utils.CommonUtils;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.DevpThread;
-import com.zy.core.News;
-import com.zy.core.ThreadHandler;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.LiftSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.StaProtocol;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈虹嚎绋�
- */
-@Data
-@Slf4j
-public class LiftThread implements Runnable, ThreadHandler {
-
- private ModbusTcpNet modbusTcpNet;
- private LiftSlave slave;
- private LiftProtocol liftProtocol;
- private RedisUtil redisUtil;
-
- public LiftThread(LiftSlave slave,RedisUtil redisUtil) {
- this.slave = slave;
- this.redisUtil = redisUtil;
- }
-
- @Override
- public void run() {
- this.connect();
- while (true) {
- try {
- int step = 1;
- Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
- if (task != null) {
- step = task.getStep();
- }
- switch (step) {
- // 璇绘暟鎹�
- case 1:
- read();
- break;
- // 鍐欏叆鏁版嵁
- case 2:
- write((LiftCommand) task.getData());
- break;
- //鍒嗛厤浠诲姟
- case 3:
- assignWork((LiftAssignCommand) task.getData());
- break;
- default:
- break;
- }
- Thread.sleep(500);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- @Override
- public boolean connect() {
- boolean result = false;
- //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
- modbusTcpNet = new ModbusTcpNet(slave.getIp(), slave.getPort(), (byte) 0x02);
- // 褰撲綘闇�瑕佹寚瀹氭牸寮忕殑鏁版嵁瑙f瀽鏃讹紝灏遍渶瑕佽缃笅闈㈢殑杩欎釜淇℃伅
- modbusTcpNet.setDataFormat(DataFormat.ABCD);
- OperateResult connect = modbusTcpNet.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()));
- log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
- } else {
- 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();
- //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
- return result;
- }
-
- @Override
- public void close() {
- modbusTcpNet.ConnectClose();
- }
-
- private void read() {
- try {
- readStatus();
-
- //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
- if (liftProtocol.getRunning()) {
- liftProtocol.setPakMk(true);
- }
-
- //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
- if (!liftProtocol.getRunning()
- && liftProtocol.getPakMk()
- && liftProtocol.getTaskNo() != 0) {
- //杩樻湁鏈畬鎴愮殑鍛戒护
- executeWork(liftProtocol.getTaskNo());
- }
- } 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);
- if (result.IsSuccess) {
- if (null == liftProtocol) {
- liftProtocol = new LiftProtocol();
- liftProtocol.setLiftNo(slave.getId().shortValue());
- }
-
- //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
- //鑾峰彇鏁版嵁
- 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()));
- throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
- }
- } 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 boolean write(LiftCommand command){
- if (null == command) {
- News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
- return false;
- }
-
- command.setLiftNo(slave.getId().shortValue());
- short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
-
- try {
- Thread.sleep(1000);//鍛戒护涓嬪彂鍓嶄紤鐪�1s
- } 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(1000);//鍛戒护涓嬪彂鍚庝紤鐪�
- } 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;
- }
- }
-
- //鑾峰彇鍛戒护鎶ユ枃
- private short[] getCommandArr(LiftCommand command) {
- // 寮�濮嬩换鍔�
- short[] array = new short[30];
- //寮�濮嬭繍琛�
- array[0] = command.getRun();
- if (command.getDistPosition() != null) {
- //鐩爣浣嶇疆
- array[1] = command.getDistPosition();
- }
- if (command.getSpeed() != null) {
- //杩愯閫熷害
- array[2] = command.getSpeed();
- }
- if (command.getHeight2() != null) {
- //浜屽眰楂樺害璁惧畾
- array[3] = command.getHeight2();
- }
- if (command.getHeight3() != null) {
- //涓夊眰楂樺害璁惧畾
- array[4] = command.getHeight3();
- }
- if (command.getHeight4() != null) {
- //鍥涘眰楂樺害璁惧畾
- array[5] = command.getHeight4();
- }
- if (command.getHeight5() != null) {
- //鍥涘眰楂樺害璁惧畾
- array[6] = command.getHeight5();
- }
- if (command.getLiftLockShortValue() != null) {
- //鎻愬崌鏈洪攣瀹�
- array[29] = command.getLiftLockShortValue();
- }
-
- if (array[2] == 0) {
- // 寮�濮嬩换鍔�
- short[] tmp = new short[2];
- tmp[0] = array[0];
- tmp[1] = array[1];
- array = tmp;
- }
- return array;
- }
-
- //鍒嗛厤浠诲姟
- private void assignWork(LiftAssignCommand assignCommand) {
- //鎵嬪姩妯″紡鎸囦护
- if (!assignCommand.getAuto()) {
- LiftCommand command = new LiftCommand();
- //鎻愬崌鏈哄綋鍓嶆ゼ灞�
- Short lev = liftProtocol.getLev();
- List<LiftCommand> commands = assignCommand.getCommands();
- if (commands == null) {
- commands = new ArrayList<LiftCommand>();
- }
- liftProtocol.setTaskNo(assignCommand.getTaskNo());
- switch (assignCommand.getTaskMode()) {
- case 1://绉诲姩鎻愬崌鏈�
- command = getLiftUpDownCommand(assignCommand.getLev());//鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
- break;
- case 3://鏃犺揣姝h浆
- command = getLiftTurnCommand(3);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
- break;
- case 4://鏃犺揣鍙嶈浆
- command = getLiftTurnCommand(4);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
- break;
- case 5://鏈夎揣姝h浆
- command = getLiftTurnCommand(1);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
- break;
- case 6://鏈夎揣鍙嶈浆
- command = getLiftTurnCommand(2);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
- break;
- case 7://閾炬潯鍋滄
- command = getLiftTurnCommand(5);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
- break;
- case 0://澶嶄綅
- command = getResetCommand();//鑾峰彇澶嶄綅鍛戒护
- break;
- default:
- }
- commands.add(command);
- assignCommand.setCommands(commands);
- }
-
- LiftRedisCommand redisCommand = new LiftRedisCommand();
- redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
- redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
- redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
- redisCommand.setAssignCommand(assignCommand);//鍛戒护
- //浠诲姟鏁版嵁淇濆瓨鍒皉edis
- redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
- liftProtocol.setAssignCommand(assignCommand);
- liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
- //鎵ц涓嬪彂浠诲姟
- executeWork(assignCommand.getTaskNo());
- }
-
- //鎵ц浠诲姟
- private boolean executeWork(Short wrkNo) {
- //璇诲彇redis鏁版嵁
- if (wrkNo == null) {
- return false;
- }
-
- Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
- if (o == null) {
- return false;
- }
- LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
- List<LiftCommand> commands = redisCommand.getAssignCommand().getCommands();
- //褰撳墠姝ュ簭
- int commandStep = redisCommand.getCommandStep();
- //鎬绘搴�
- int size = commands.size();
- LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-
- if (commandStep != 0) {
- //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴�
- LiftCommand command = commands.get(commandStep - 1);
- if (command.getRun().intValue() == 1) {
- //鎻愬崌鏈哄崌闄嶅懡浠�
- if (command.getDistPosition().intValue() == liftProtocol.getPositionArrivalFeedback().intValue()) {
- //鎻愬崌鏈虹洰鏍囨ゼ灞傚拰瀹為檯妤煎眰鐩稿悓锛屽垯璁ゅ畾鍛戒护瀹屾垚
- command.setComplete(true);
- }
- } else if (command.getRun().intValue() == 2 || command.getRun().intValue() == 3) {
- //鏃犺揣姝h浆锛屾湁璐ф杞�
- if (!liftProtocol.getForwardRotationFeedback()) {
- //杈撻�佺嚎姝h浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚
- command.setComplete(true);
- }
- } else if (command.getRun().intValue() == 6 || command.getRun().intValue() == 7) {
- //鏈夎揣鍙嶈浆锛屾棤璐у弽杞�
- if (!liftProtocol.getReverseFeedback()) {
- //杈撻�佺嚎鍙嶈浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚
- command.setComplete(true);
- }
- } else if (command.getRun().intValue() == 4) {
- //杈撻�佺嚎鍋滄
- if (!liftProtocol.getForwardRotationFeedback() && !liftProtocol.getReverseFeedback()) {
- //杈撻�佺嚎姝h浆鍙嶈浆閮戒笉鍦ㄨ繍琛屼腑锛岃瀹氬懡浠ゅ畬鎴�
- command.setComplete(true);
- }
- }
- //浠诲姟鏁版嵁淇濆瓨鍒皉edis
- redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-
- if (!command.getComplete()) {
- //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠�
- return false;
- }
- }
-
- //鍙栧嚭鍛戒护
- LiftCommand command = commands.get(commandStep);
- if (command.getOperaStaNo() != null && command.getDevpId() != null) {
- //绔欑偣鍜岃緭閫佺嚎ID涓嶄负null锛岄渶瑕佷笅鍙戠珯鐐规寚浠よ皟搴︽寚瀹氱珯鐐硅繘琛岄摼鏉¤浆鍔�
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, command.getDevpId());
- StaProtocol staProtocol = devpThread.getStation().get(command.getOperaStaNo().intValue());
- if (!staProtocol.isLiftArrival()) {//閾炬潯杞姩鏉′欢锛岄渶瑕佹湁鎻愬崌鏈哄埌浣嶄俊鍙�
- liftProtocol.setPakMk(true);
- return false;
- }
- staProtocol.setWorkNo(wrkNo);//璁剧疆浠诲姟鍙�
- if (command.getStaNo() != null) {
- staProtocol.setStaNo(command.getStaNo());//璁剧疆鐩爣绔�
- }
-
- if (command.getRotationDire() != null) {
- staProtocol.setRotationDire(command.getRotationDire());//绔欑偣閾炬潯杞姩淇″彿
- }
- Integer devpId = command.getDevpId();
- boolean result1 = MessageQueue.offer(SlaveType.Devp, devpId, new Task(3, staProtocol));//涓嬪彂鍛戒护浣胯緭閫佺嚎閾炬潯杩愯浆
- }
-
- //涓嬪彂鍛戒护
- if (!write(command)) {
- News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
- return false;
- }else {
- News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
- liftProtocol.setWrkTime(new Date());//鏇存柊宸ヤ綔鏃堕棿
-
- //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
- liftProtocol.setPakMk(false);
-
- //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
- BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
- if (liftOptService != null) {
- short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
- BasLiftOpt opt = new BasLiftOpt(
- redisCommand.getWrkNo().intValue(),
- redisCommand.getLiftNo().intValue(),
- new Date(),
- null,
- null,
- null,
- JSON.toJSONString(command),
- JSON.toJSONString(commandArr)
- );
- liftOptService.insert(opt);
- }
-
- //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
- if (commandStep < size - 1) {
- //鏇存柊redis鏁版嵁
- //姝ュ簭澧炲姞
- commandStep++;
- redisCommand.setCommandStep(commandStep);
- //浠诲姟鏁版嵁淇濆瓨鍒皉edis
- redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
- }else {
- //宸叉墽琛屽畬鎴�
- //鍒犻櫎redis
- redisUtil.del("lift_wrk_no_" + redisCommand.getWrkNo());
-
- //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
- liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
- News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
- }
- }
-
- return true;
- }
-
- /**
- * 鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
- */
- public LiftCommand getUnlockCommand(Short liftNo) {
- LiftCommand command = new LiftCommand();
- command.setRun((short) 0);
- command.setLiftNo(liftNo);
- command.setLiftLock(false);
- return command;
- }
-
- /**
- * 鑾峰彇澶嶄綅鍛戒护
- */
- public LiftCommand getResetCommand() {
- LiftCommand command = new LiftCommand();
- command.setRun((short) 5);
- command.setLiftLock(false);
- return command;
- }
-
- /**
- * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
- */
- public LiftCommand getLiftUpDownCommand(Integer lev) {
- LiftCommand command = new LiftCommand();
- command.setRun((short) 1);//鍗囬檷
- Short position = LiftLevType.getRealLev(lev);//鑾峰彇鎻愬崌鏈哄疄闄呮ゼ灞傛暟鍊�
- command.setDistPosition(position);
-// command.setSpeed((short) 200);
-// command.setHeight2((short) 180);
-// command.setHeight3((short) 1645);
-// command.setHeight4((short) (2 * 1645));
-// command.setHeight5((short) (3 * 1645));
- return command;
- }
-
- /**
- * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
- */
- public LiftCommand getLiftUpDownCommand(Short liftNo, Short taskNo, Integer lev) {
- LiftCommand command = new LiftCommand();
- Short position = LiftLevType.getRealLev(lev);//鑾峰彇鎻愬崌鏈哄疄闄呮ゼ灞傛暟鍊�
- command.setRun((short) 1);//鍗囬檷
- command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
- command.setTaskNo(taskNo);//浠诲姟鍙�
- command.setDistPosition(position);//鐩爣妤煎眰
-// command.setSpeed((short) 200);
-// command.setHeight2((short) 180);
-// command.setHeight3((short) 1645);
-// command.setHeight4((short) 3290);
-// command.setHeight5((short) 4945);
- return command;
- }
-
- /**
- * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞紝3=>鏃犺揣姝h浆锛�4=>鏃犺揣鍙嶈浆
- */
- public LiftCommand getLiftTurnCommand(Integer direction) {
- LiftCommand command = new LiftCommand();
- Short run = 0;
- switch (direction) {
- case 1:
- run = 6;//鏈夎揣姝h浆
- break;
- case 2:
- run = 3;//鏈夎揣鍙嶈浆
- break;
- case 3:
- run = 2;//鏃犺揣姝h浆
- break;
- case 4:
- run = 7;//鏃犺揣鍙嶈浆
- break;
- case 5:
- run = 4;//閾炬潯鍋滄
- }
- command.setRun(run);
- return command;
- }
-
- /**
- * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞�
- */
- public LiftCommand getLiftTurnCommand(Short liftNo, Short taskNo, Integer direction) {
- LiftCommand command = new LiftCommand();
- Short run = 0;
- switch (direction) {
- case 1:
- run = 6;//鏈夎揣姝h浆
- break;
- case 2:
- run = 3;//鏈夎揣鍙嶈浆
- break;
- case 3:
- run = 2;//鏃犺揣姝h浆
- break;
- case 4:
- run = 7;//鏃犺揣鍙嶈浆
- break;
- case 5:
- run = 4;//閾炬潯鍋滄
- }
- command.setRun(run);
- command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
- command.setTaskNo(taskNo);//浠诲姟鍙�
- return command;
- }
-
- /**
- * 鍒濆鍖栨彁鍗囨満
- */
- private void initLift() {
- this.connect();
- if (null == liftProtocol) {
- liftProtocol = new LiftProtocol();
- }
- }
-
- /******************************************************************************************/
- /**************************************** 娴嬭瘯涓撶敤 *****************************************/
- /*****************************************************************************************/
- public static void main(String[] args) throws InterruptedException {
- LiftSlave slave = new LiftSlave();
- slave.setId(1);
- slave.setIp("192.168.4.24");
- slave.setPort(502);
-// LiftThread thread = new LiftThread(slave,);
-// thread.connect();
-// thread.readStatus();
+//package com.zy.core.thread;
//
-// LiftCommand command = new LiftCommand();
-// command.setRun((short) 1);
-// command.setDistPosition((short) 12);
-// command.setSpeed((short) 300);
-// command.setHeight2((short) 100);
-// command.setHeight3((short) 200);
-// command.setHeight4((short) 303);
-// command.setLiftLock(true);
-// thread.write(command);
-
- }
-
-}
+//import HslCommunication.Core.Types.OperateResult;
+//import HslCommunication.Core.Types.OperateResultExOne;
+//import HslCommunication.Profinet.Siemens.SiemensPLCS;
+//import HslCommunication.Profinet.Siemens.SiemensS7Net;
+//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.BasLift;
+//import com.zy.asrs.entity.BasLiftOpt;
+//import com.zy.asrs.entity.DeviceDataLog;
+//import com.zy.asrs.mapper.WrkMastMapper;
+//import com.zy.asrs.service.BasLiftOptService;
+//import com.zy.asrs.service.BasLiftService;
+//import com.zy.asrs.service.DeviceDataLogService;
+//import com.zy.asrs.utils.Utils;
+//import com.zy.common.utils.RedisUtil;
+//import com.zy.core.News;
+//import com.zy.core.ThreadHandler;
+//import com.zy.core.cache.MessageQueue;
+//import com.zy.core.cache.OutputQueue;
+//import com.zy.core.enums.*;
+//import com.zy.core.model.LiftSlave;
+//import com.zy.core.model.Task;
+//import com.zy.core.model.command.*;
+//import com.zy.core.model.protocol.LiftStaProtocol;
+//import com.zy.core.model.protocol.LiftProtocol;
+//import com.zy.core.model.protocol.StaProtocol;
+//import lombok.Data;
+//import lombok.extern.slf4j.Slf4j;
+//
+//import java.text.MessageFormat;
+//import java.util.*;
+//
+///**
+// * 鎻愬崌鏈虹嚎绋�
+// */
+//@Data
+//@Slf4j
+//public class LiftThread implements Runnable, ThreadHandler {
+//
+// private SiemensS7Net siemensS7Net;
+// private LiftSlave slave;
+// private LiftProtocol liftProtocol;
+// private RedisUtil redisUtil;
+// private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
+//
+// public LiftThread(LiftSlave slave,RedisUtil redisUtil) {
+// this.slave = slave;
+// this.redisUtil = redisUtil;
+//
+// //鍒濆鍖栫珯鐐�
+// for (LiftSlave.Sta sta : this.slave.getSta()) {
+// LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
+// liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
+// liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
+// String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
+// liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
+// liftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
+// liftStaProtocols.add(liftStaProtocol);
+// }
+//
+// }
+//
+// @Override
+// public void run() {
+// this.connect();
+// while (true) {
+// try {
+// int step = 1;
+// Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
+// if (task != null) {
+// step = task.getStep();
+// }
+// switch (step) {
+// // 璇绘暟鎹�
+// case 1:
+// read();
+// break;
+// // 鍐欏叆鏁版嵁
+// case 2:
+// write((NyLiftCommand) task.getData());
+// break;
+// //鍒嗛厤浠诲姟
+// case 3:
+// assignWork((LiftAssignCommand) task.getData());
+// break;
+// case 4:
+// write2((HashMap<String, Object>) task.getData());
+// default:
+// break;
+// }
+// Thread.sleep(500);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// }
+//
+// @Override
+// public boolean connect() {
+// boolean result = false;
+// //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+// 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()));
+// log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+// } else {
+// 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());
+// }
+// siemensS7Net.ConnectClose();
+// //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+// return result;
+// }
+//
+// @Override
+// public void close() {
+// siemensS7Net.ConnectClose();
+// }
+//
+// private void read() {
+// try {
+// readStatus();
+//
+// //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse
+// if (liftProtocol.getBusy()) {
+// liftProtocol.setPakMk(false);
+// }
+//
+// //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
+// if (!liftProtocol.getBusy()
+// && !liftProtocol.getPakMk()
+// && liftProtocol.getTaskNo() != 0) {
+// //杩樻湁鏈畬鎴愮殑鍛戒护
+// executeWork(liftProtocol.getTaskNo());
+// }
+// } 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()));
+// }
+// }
+//
+// private void readStatus() {
+// try {
+// //鑾峰彇鎻愬崌鏈烘暟鎹�
+// OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB82.4.0", (short) 10);
+// if (result1.IsSuccess) {
+// if (null == liftProtocol) {
+// liftProtocol = new LiftProtocol();
+// liftProtocol.setLiftNo(slave.getId().shortValue());
+// }
+// //璇诲彇4.0-4.7鏁版嵁
+// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1);
+// //璇诲彇5.0-5.7鏁版嵁
+// boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1);
+// //妯″紡
+// liftProtocol.setModel(status1[0]);
+// //蹇欓棽
+// liftProtocol.setBusy(!status1[1]);
+// //鍓嶈秴闄�
+// liftProtocol.setFrontOverrun(status1[4]);
+// //鍚庤秴闄�
+// liftProtocol.setBackOverrun(status1[5]);
+// //宸﹁秴闄�
+// liftProtocol.setLeftOverrun(status1[6]);
+// //鍙宠秴闄�
+// liftProtocol.setRightOverrun(status1[7]);
+// //瓒呴珮
+// liftProtocol.setOverHeight(status2[0]);
+// //瓒呴噸
+// liftProtocol.setOverWeight(status2[1]);
+// //鏈夋墭鐩�
+// liftProtocol.setHasTray(status2[5]);
+// //鏈夊皬杞�
+// liftProtocol.setHasCar(status2[6]);
+// //璁惧鏁呴殰
+// liftProtocol.setDeviceError(status2[7]);
+// //浠诲姟鍙�
+// liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
+// //鐩殑鍦板潃
+// liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
+// //宸插畬鎴愪换鍔″彿
+// liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
+// //褰撳墠妤煎眰
+// short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8);
+// if (lev >= 7 && lev <= 9) {
+// lev -= 2;
+// } else if (lev >= 12 && lev <= 14) {
+// lev -= 4;
+// }
+// liftProtocol.setLev(lev);
+//
+// //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
+// 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.setDeviceStatus(JSON.toJSONString(liftProtocol));
+// 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()));
+// throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
+// }
+// Thread.sleep(200);
+//
+// //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹�
+// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB82.14.0", (short) (10 * liftStaProtocols.size()));
+// if (result1.IsSuccess) {
+// for (int i = 0; i < slave.getSta().size(); i++) {
+// LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
+// int i1 = 0 + (i * 10);
+// int i2 = 1 + (i * 10);
+// //璇诲彇x4.0-x4.7鏁版嵁
+// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1);
+// //璇诲彇x5.0-x5.7鏁版嵁
+// boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1);
+// //妯″紡
+// liftStaProtocol.setModel(status1[0]);
+// //蹇欓棽
+// liftStaProtocol.setBusy(!status1[1]);
+// //鏈夋墭鐩�
+// liftStaProtocol.setHasTray(status1[2]);
+// //鏈夊皬杞�
+// liftStaProtocol.setHasCar(status2[6]);
+// //璁惧鏁呴殰
+// liftStaProtocol.setDeviceError(status2[7]);
+// //浠诲姟鍙�
+// liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2));
+// }
+// }
+//
+// Thread.sleep(100);
+// //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹�
+// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2);
+// if (result3.IsSuccess) {
+// liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮�
+// }
+//
+// if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
+// //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+// //淇濆瓨鏁版嵁璁板綍
+// DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+// DeviceDataLog deviceDataLog = new DeviceDataLog();
+// deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
+// deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
+// deviceDataLog.setType("lift");
+// deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue());
+// deviceDataLog.setCreateTime(new Date());
+// deviceDataLogService.insert(deviceDataLog);
+//
+// //鏇存柊閲囬泦鏃堕棿
+// liftProtocol.setDeviceDataLog(System.currentTimeMillis());
+// }
+//
+// } 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()));
+// }
+// }
+//
+// private boolean write(NyLiftCommand command){
+// if (null == command) {
+// News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
+// return false;
+// }
+//
+// command.setLiftNo(slave.getId().shortValue());
+// short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
+//
+// OperateResult result = siemensS7Net.Write("DB83.0", array);
+// if (result != null && result.IsSuccess) {
+// liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
+// 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)));
+// 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;
+// }
+// }
+//
+// //鑾峰彇鍛戒护鎶ユ枃
+// private short[] getCommandArr(NyLiftCommand command) {
+// // 寮�濮嬩换鍔�
+// short[] array = new short[4];
+// if (command.getTaskModel() != null) {
+// //浠诲姟绫诲瀷
+// array[0] = command.getTaskModel();
+// }
+// if (command.getSourceSta() != null) {
+// //婧愮珯鍙扮紪鍙�
+// array[1] = command.getSourceSta();
+// }
+// if (command.getTargetSta() != null) {
+// //鐩爣绔欏彴缂栧彿
+// array[2] = command.getTargetSta();
+// }
+// if (command.getTaskNo() != null) {
+// //浠诲姟鍙�
+// array[3] = command.getTaskNo();
+// }
+// return array;
+// }
+//
+// //鍒嗛厤浠诲姟
+// private void assignWork(LiftAssignCommand assignCommand) {
+// LiftRedisCommand redisCommand = new LiftRedisCommand();
+// redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
+// redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
+// redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
+// redisCommand.setAssignCommand(assignCommand);//鍛戒护
+// //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+// redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
+// liftProtocol.setAssignCommand(assignCommand);
+// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
+// //鎵ц涓嬪彂浠诲姟
+// executeWork(assignCommand.getTaskNo());
+// }
+//
+// //鎵ц浠诲姟
+// private boolean executeWork(Short wrkNo) {
+// //璇诲彇redis鏁版嵁
+// if (wrkNo == null) {
+// return false;
+// }
+//
+// if (wrkNo >= 20000 && wrkNo <= 30000) {
+// //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿
+// BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class);
+// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue());
+// if (basLiftOpt != null) {
+// wrkNo = basLiftOpt.getWrkNo().shortValue();
+// }
+// }
+//
+// Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
+// if (o == null) {
+// return false;
+// }
+// LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
+// List<NyLiftCommand> commands = redisCommand.getAssignCommand().getCommands();
+// //褰撳墠姝ュ簭
+// int commandStep = redisCommand.getCommandStep();
+// //鎬绘搴�
+// int size = commands.size();
+//
+// if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) {
+// return false;
+// }
+//
+// if (commandStep != 0) {
+// //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹�
+// NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠�
+// if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) {
+// //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓
+// lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚
+// }
+//
+// //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//
+// if (!lastCommand.getComplete()) {
+// //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠�
+// return false;
+// }
+//
+// //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
+// NyLiftCommand endCommand = commands.get(commands.size() - 1);
+// if (endCommand.getComplete()) {
+// //宸叉墽琛屽畬鎴�
+// //鍒犻櫎redis
+// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
+//
+// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
+// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand));
+// }
+//
+// }
+//
+// //鍙栧嚭鍛戒护
+// NyLiftCommand command = commands.get(commandStep);
+//
+// //涓嬪彂鍛戒护
+// if (!write(command)) {
+// News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+// return false;
+// }
+//
+// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
+// News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+//
+// //灏嗘爣璁扮疆涓簍rue(闃叉閲嶅彂)
+// liftProtocol.setPakMk(true);
+//
+// //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
+// BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
+// if (liftOptService != null) {
+// short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
+// BasLiftOpt opt = new BasLiftOpt(
+// redisCommand.getWrkNo().intValue(),
+// liftProtocol.getLiftNo().intValue(),
+// new Date(),
+// null,
+// null,
+// null,
+// JSON.toJSONString(command),
+// JSON.toJSONString(liftProtocol)
+// );
+// opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙�
+// liftOptService.insert(opt);
+// }
+//
+// //鏇存柊redis鏁版嵁
+// //姝ュ簭澧炲姞
+// commandStep++;
+// redisCommand.setCommandStep(commandStep);
+// //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//
+//// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
+//// if (commandStep < size - 1) {
+//// //鏇存柊redis鏁版嵁
+//// //姝ュ簭澧炲姞
+//// commandStep++;
+//// redisCommand.setCommandStep(commandStep);
+//// //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//// }else {
+//// //宸叉墽琛屽畬鎴�
+//// //鍒犻櫎redis
+//// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
+////
+//// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+//// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
+//// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+//// }
+//
+// if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) {
+// //澶嶄綅鍛戒护
+// //宸ヤ綔鍙锋竻闆�
+// liftProtocol.setTaskNo((short) 0);
+// //浠ょ墝娓呴浂
+// liftProtocol.setToken(0);
+// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
+// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+// //浠诲姟鎸囦护娓呴浂
+// liftProtocol.setAssignCommand(null);
+// }
+//
+// return true;
+// }
+//
+// //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵��
+// private void write2(HashMap<String,Object> data) {
+//// //鍑�
+//// status = true;
+//// //杩�
+//// status = false;
+// int lev = Integer.parseInt(data.get("lev").toString());
+// boolean status = Boolean.parseBoolean(data.get("status").toString());
+//
+// ArrayList<String> list = new ArrayList<String>(){{
+// add("83.8.0");
+// add("83.8.1");
+// add("83.8.2");
+// add("83.8.3");
+// add("83.8.4");
+// add("83.8.5");
+// add("83.8.6");
+// add("83.8.7");
+// add("83.9.0");
+// add("83.9.1");
+// }};
+// OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status);
+// if (result != null && result.IsSuccess) {
+// News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId());
+// } else {
+// News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+// }
+// }
+//
+// /******************************************************************************************/
+// /**************************************** 娴嬭瘯涓撶敤 *****************************************/
+// /*****************************************************************************************/
+// public static void main(String[] args) throws InterruptedException {
+// LiftSlave slave = new LiftSlave();
+// slave.setId(1);
+// slave.setIp("192.168.4.24");
+// slave.setPort(502);
+//// LiftThread thread = new LiftThread(slave,);
+//// thread.connect();
+//// thread.readStatus();
+////
+//// LiftCommand command = new LiftCommand();
+//// command.setRun((short) 1);
+//// command.setDistPosition((short) 12);
+//// command.setSpeed((short) 300);
+//// command.setHeight2((short) 100);
+//// command.setHeight3((short) 200);
+//// command.setHeight4((short) 303);
+//// command.setLiftLock(true);
+//// thread.write(command);
+//
+// }
+//
+//}
--
Gitblit v1.9.1