From a7b455d1982e0b4df3913e70461fe91c6eea1c8f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 02 一月 2021 09:22:01 +0800 Subject: [PATCH] # --- /dev/null | 253 ------------------------------------------ src/main/webapp/static/js/common.js | 2 pom.xml | 2 src/main/resources/application.yml | 24 ---- src/main/java/com/zy/core/ServerBootstrap.java | 31 ---- 5 files changed, 4 insertions(+), 308 deletions(-) diff --git a/pom.xml b/pom.xml index 516c71c..04e7fe2 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ </dependencies> <build> - <finalName>jswcs</finalName> + <finalName>htwcs</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index 49d53e2..9e5e95d 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/src/main/java/com/zy/core/ServerBootstrap.java @@ -74,17 +74,7 @@ // 鍒濆鍖栧爢鍨涙満绾跨▼ log.info("鍒濆鍖栧爢鍨涙満绾跨▼..................................................."); for (CrnSlave crn : slaveProperties.getCrn()) { - CrnThread crnThread = null; - switch (crn.getId()) { - case 1: - crnThread = new SiemensCrnThread(crn); - break; - case 2: - crnThread = new MelsecCrnThread(crn); - break; - default: - break; - } + CrnThread crnThread = new SiemensCrnThread(crn); new Thread((Runnable) crnThread).start(); SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread); } @@ -92,17 +82,7 @@ // 鍒濆鍖栬緭閫佺嚎绾跨▼ log.info("鍒濆鍖栬緭閫佺嚎绾跨▼..................................................."); for (DevpSlave devp : slaveProperties.getDevp()) { - DevpThread devpThread = null; - switch (devp.getId()) { - case 1: - devpThread = new SiemensDevpThread(devp); - break; - case 2: - devpThread = new MelsecDevpThread(devp); - break; - default: - break; - } + DevpThread devpThread = new SiemensDevpThread(devp); new Thread((Runnable) devpThread).start(); SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread); } @@ -120,13 +100,6 @@ LedThread ledThread = new LedThread(led); new Thread(ledThread).start(); SlaveConnection.put(SlaveType.Led, led.getId(), ledThread); - } - // 鍒濆鍖栧彴杞︾嚎绋� - log.info("鍒濆鍖栧彴杞︾嚎绋�..................................................."); - for (Slave car : slaveProperties.getCar()) { - CarThread carThread = new CarThread(car); - new Thread(carThread).start(); - SlaveConnection.put(SlaveType.Car, car.getId(), carThread); } } diff --git a/src/main/java/com/zy/core/thread/CarThread.java b/src/main/java/com/zy/core/thread/CarThread.java deleted file mode 100644 index b05fac3..0000000 --- a/src/main/java/com/zy/core/thread/CarThread.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.zy.core.thread; - -import com.zy.core.Slave; -import com.zy.core.ThreadHandler; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.io.IOException; - -/** - * 鍙拌溅绾跨▼ - * Created by vincent on 2020/8/4 - */ -@Data -@Slf4j -public class CarThread implements Runnable, ThreadHandler { - - private Slave slave; - - public CarThread(Slave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - connect(); - while (true) { - try { - Thread.sleep(1000); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - @Override - public boolean connect() { - try { - } catch (Exception e) { - log.error("鍙拌溅杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - return true; - } - - @Override - public void close() { - } - - public void write(byte[] msg, int len) throws IOException { - } - - public byte[] read(int bufferSize, int timeOut) throws IOException { - return null; - } - - - public static void main(String[] args) throws Exception { - CarThread barcodeThread = new CarThread(new Slave()); - barcodeThread.getSlave().setIp("192.168.2.150"); - barcodeThread.getSlave().setPort(51236); - boolean connect = barcodeThread.connect(); - System.out.println(connect); - barcodeThread.write("T".getBytes(), "T".length()); - byte[] read = barcodeThread.read(11, 1000); - System.out.println(new String(read)); - } -} diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java deleted file mode 100644 index 53f159b..0000000 --- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java +++ /dev/null @@ -1,411 +0,0 @@ -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.Arith; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasCrnOpt; -import com.zy.asrs.entity.BasCrnp; -import com.zy.asrs.service.BasCrnOptService; -import com.zy.asrs.service.BasCrnpService; -import com.zy.core.CrnThread; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.CrnStatusType; -import com.zy.core.enums.CrnTaskModeType; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.CrnSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.CrnCommand; -import com.zy.core.model.protocol.CrnProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.text.MessageFormat; -import java.util.Calendar; -import java.util.Date; - -/** - * 鍫嗗灈鏈虹嚎绋� - * Created by vincent on 2020/8/4 - */ -@Data -@Slf4j -public class MelsecCrnThread implements Runnable, CrnThread { - - private MelsecMcNet melsecMcNet; - private CrnSlave slave; - private CrnProtocol crnProtocol; - private boolean resetFlag = false; - private short heartBeatVal = 1; - private int heartTimes = 0; - - public MelsecCrnThread(CrnSlave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - readStatus(); - break; - // 鍐欏叆鏁版嵁 - case 2: - write((CrnCommand) task.getData()); - break; - // 澶嶄綅 - case 3: - CrnCommand command = (CrnCommand) task.getData(); - if (null == command) { - command = new CrnCommand(); - } - command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 - command.setSourcePosX((short)0); // 婧愬簱浣嶆帓 - command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 - command.setSourcePosZ((short)0); // 婧愬簱浣嶅眰 - command.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺� - command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� - write(command); - break; - default: - break; - } - // 蹇冭烦 2s涓�娆� - heartTimes++; - if (Arith.remainder(heartTimes, 4) == 0) { - heartbeat(); - heartTimes = 0; - } - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } - - } - } - - @Override - public boolean connect() { - boolean result = false; - melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort()); - OperateResult connect = melsecMcNet.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()); - } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - /** - * array[1] = command.getSourcePosY(); // 鍒� - * array[2] = command.getSourcePosZ(); // 灞� - * array[3] = command.getSourcePosX(); // 鎺� - * array[4] = command.getDestinationPosY(); // 鍒� - * array[5] = command.getDestinationPosZ(); // 灞� - * array[6] = command.getDestinationPosX(); // 鎺� - * array[7] = command.getTaskNo(); - */ - Date date = new Date(); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskMode(CrnTaskModeType.TIMING); // 浠诲姟妯″紡: 璁剧疆鏃堕棿 - crnCommand.setSourcePosY((short) cal.get(Calendar.YEAR)); // 骞达細1980锝�2079 - crnCommand.setSourcePosZ((short) (cal.get(Calendar.MONTH)+1)); // 鏈堬細1锝�12 - crnCommand.setSourcePosX((short) cal.get(Calendar.DATE)); // 鏃ワ細1锝�31 - crnCommand.setDestinationPosY((short) cal.get(Calendar.HOUR_OF_DAY)); // 鏃讹細0锝�23 - crnCommand.setDestinationPosZ((short) cal.get(Calendar.MINUTE)); // 鍒嗭細0锝�59 - crnCommand.setDestinationPosX((short) cal.get(Calendar.SECOND)); // 绉掞細0锝�59 -// crnCommand.setTaskNo((short) (cal.get(Calendar.DAY_OF_WEEK) - 1)); // 鏄熸湡锛�0(鏃�)锝�6(鍏�) - crnCommand.setTaskNo((short) 0); // 鏄熸湡锛�0(鏃�)锝�6(鍏�) - crnCommand.setTaskSend((short) 1); - crnCommand.setAckFinish((short) 0); - if (write(crnCommand)) { - log.info("鍫嗗灈鏈簆lc鏍″鏃堕棿鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); - } - - melsecMcNet.ConnectClose(); - try { - Thread.sleep(1000); - } catch (InterruptedException ignore) {} - return result; - } - - /** - * 璇诲彇鐘舵�� - */ - private void readStatus(){ - OperateResultExOne<byte[]> result = melsecMcNet.Read("D1119", (short) 58); - if (result.IsSuccess) { - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - } - crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); - crnProtocol.setMode(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.setFingerPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 16)); - crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 18)); - crnProtocol.setAlarm1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20)); - crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 22)); - crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 24)); - crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 26)); - crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 28)); - crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 30)); - crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 34)); - crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 38)); - crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 42)); - crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 46)); - crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 50)); - crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 54)); - - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - - // 澶嶄綅淇″彿 - if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - if (resetFlag) { - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short)1); - if (write(crnCommand)) { - resetFlag = false; - } - - } - } - - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = new BasCrnp(); - basCrnp.setCrnNo(slave.getId()); - crnProtocol.setAlarm1((short) (crnProtocol.getAlarm1() + 1000)); - if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ - log.error("鍫嗗灈鏈簆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()); - } - } - - /** - * 鍐欏叆鏁版嵁 - */ - private boolean write(CrnCommand command){ - if (null == command) { - log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); - return false; - } - if (command.getAckFinish() == 1) { - command.setTaskSend((short) 0); - command.setTaskNo((short) 0); - } else if (command.getAckFinish() == 0) { - command.setTaskSend((short) 1); - } - command.setCrnNo(slave.getId()); - short[] array = new short[10]; - array[0] = command.getTaskMode(); - array[1] = command.getSourcePosY(); // 鍒� - array[2] = command.getSourcePosZ(); // 灞� - array[3] = command.getSourcePosX(); // 鎺� - array[4] = command.getDestinationPosY(); // 鍒� - array[5] = command.getDestinationPosZ(); // 灞� - array[6] = command.getDestinationPosX(); // 鎺� - array[7] = command.getTaskNo(); - array[8] = command.getTaskSend(); - array[9] = command.getAckFinish(); - - OperateResult result = melsecMcNet.Write("D1001", array); - if (result.IsSuccess) { - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - - try { - // 鏃ュ織璁板綍 - BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); - BasCrnOpt basCrnOpt = new BasCrnOpt( - command.getTaskNo().intValue(), // 浠诲姟鍙� - command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] - new Date(), // 涓嬪彂鏃堕棿 - 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); - } catch (Exception ignore) {} - - return true; - } 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()); - return false; - } - } - - /** - * 蹇冭烦 - */ - private void heartbeat(){ - if (heartBeatVal == 1) { - heartBeatVal = 0; - } else { - heartBeatVal = 1; - } - OperateResult write = melsecMcNet.Write("D1000", heartBeatVal); - if (!write.IsSuccess) { - log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); - } - } - - @Override - public void close() { - melsecMcNet.ConnectClose(); - } - - /******************************************************************************************/ - /**************************************** 娴嬭瘯涓撶敤 *****************************************/ - /*****************************************************************************************/ - public static void main(String[] args) throws InterruptedException { - CrnSlave slave = new CrnSlave(); - slave.setId(1); - slave.setIp("192.168.6.9"); - MelsecCrnThread crnThread = new MelsecCrnThread(slave); - crnThread.connect(); - crnThread.readStatus(); - System.out.println(JSON.toJSONString(crnThread.crnProtocol)); - Thread.sleep(3000L); - - // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 1); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 3); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 2.鍑哄簱 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 2); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 4); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 3); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 1); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - -// // 3.搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂 pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 -// command.setSourcePosX((short)2); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short)2); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short)3); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short)2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short)4); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short)4); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 4.绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 -// command.setSourcePosX((short)1); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short)1); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short)2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short)1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - -// // 5.鍥炲師鐐� 涓嶇敤鍙� pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� -// 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) 2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣� -// if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr -// || crnThread.crnProtocol.getCrnError2().rightTakeNoneErr -// || crnThread.crnProtocol.getCrnError2().leftPutLoadErr -// || crnThread.crnProtocol.getCrnError2().rightPutLoadErr) { -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 -// Thread.sleep(3000L); -// crnThread.write(command); -// } - - } -} diff --git a/src/main/java/com/zy/core/thread/MelsecDevpThread.java b/src/main/java/com/zy/core/thread/MelsecDevpThread.java deleted file mode 100644 index 1cfa839..0000000 --- a/src/main/java/com/zy/core/thread/MelsecDevpThread.java +++ /dev/null @@ -1,253 +0,0 @@ -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.zy.asrs.entity.BasDevp; -import com.zy.asrs.service.BasDevpService; -import com.zy.asrs.utils.Utils; -import com.zy.core.DevpThread; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.DevpSlave; -import com.zy.core.model.Task; -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; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 杈撻�佺嚎绾跨▼ - * Created by vincent on 2020/8/4 - */ -@Data -@Slf4j -public class MelsecDevpThread implements Runnable, DevpThread { - - private DevpSlave slave; - private MelsecMcNet melsecMcNet; - private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); - private short heartBeatVal = 1; - public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ - add(101);add(102);add(103);add(104);add(105);add(106);add(107); - }}; - private List<Integer> errors = new ArrayList<>(); - - public MelsecDevpThread(DevpSlave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Devp, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; - // 鍐欐暟鎹� ID+鐩爣绔� - case 2: - write((StaProtocol)task.getData()); - break; - default: - break; - } - - // 蹇冭烦 -// heartbeat(); - Thread.sleep(400); - } catch (Exception e) { - e.printStackTrace(); - } - - } - } - - @Override - public boolean connect() { - boolean result = false; - melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort()); - OperateResult connect = melsecMcNet.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.DEVP.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.DEVP.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(); - try { - Thread.sleep(1000); - } catch (InterruptedException ignore) {} - return result; - } - - /** - * 璇诲彇鐘舵�� ====> 鏁村潡plc - */ - private void read() throws InterruptedException { - OperateResultExOne<byte[]> result = melsecMcNet.Read("D101", (short) 30); - if (result.IsSuccess) { - // 绔欑偣鏁版嵁 - for (int i = 0; i < staNos.size(); i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(siteId); - station.put(siteId, staProtocol); - } - short workNo = melsecMcNet.getByteTransform().TransInt16(result.Content, (i) * 2); - staProtocol.setWorkNo(workNo==-1?0:workNo); // 宸ヤ綔鍙� - staProtocol.setStaNo(melsecMcNet.getByteTransform().TransInt16(result.Content, (i)*2+40)); // 鐩爣绔� - } - } - Thread.sleep(200); - OperateResultExOne<boolean[]> result1 = melsecMcNet.ReadBool("M800", (short) 64); - if (result1.IsSuccess) { - for (int i = 0; i < staNos.size(); i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - staProtocol.setAutoing(result1.Content[(i)*8]); // 鑷姩 - staProtocol.setLoading(result1.Content[(i)*8+1]); // 鏈夌墿 - staProtocol.setInEnable(result1.Content[(i)*8+2]); // 鍙叆 - staProtocol.setOutEnable(result1.Content[(i)*8+3]);// 鍙嚭 - staProtocol.setEmptyMk(result1.Content[(i)*8+4]); // 绌烘澘淇″彿 - - if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { - staProtocol.setPakMk(true); - } - } - } -// Thread.sleep(100); -// errors.clear(); -// OperateResultExOne<boolean[]> result2 = melsecMcNet.ReadBool("M1000", (short) 21); -// if (result2.IsSuccess) { -// for (int i = 0; i < result2.Content.length; i++) { -// if (result2.Content[i]) { -// errors.add(i); -// } -// } -// } - if (result.IsSuccess && result1.IsSuccess) { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - try { - List<BasDevp> basDevps = new ArrayList<>(); - for (Integer siteId : staNos) { - StaProtocol staProtocol = station.get(siteId); - basDevps.add(staProtocol.toSqlModel()); - } - BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); - if (!basDevpService.updateBatchById(basDevps)) { - throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�"); - } - } catch (Exception e) { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - - } else { - OutputQueue.DEVP.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()); - } - } - - /** - * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� - */ - private void write(StaProtocol staProtocol) throws InterruptedException { - if (null == staProtocol) { - return; - } - System.out.println(); - OperateResult write1 = melsecMcNet.Write("D1" + Utils.zerofill(String.valueOf(staNos.indexOf(staProtocol.getSiteId())+21), 2), staProtocol.getStaNo()); // 鐩爣绔� - Thread.sleep(200); - OperateResult write = melsecMcNet.Write("D1" + Utils.zerofill(String.valueOf(staNos.indexOf(staProtocol.getSiteId())+1), 2), staProtocol.getWorkNo()); // 宸ヤ綔鍙� - if (!write.IsSuccess || !write1.IsSuccess) { - staProtocol = station.get(staProtocol.getSiteId()); - if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { - staProtocol.setPakMk(true); - } - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); - log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); - } else { - OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); - log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol)); - } - } - - /** - * 蹇冭烦 - */ - private void heartbeat(){ - if (heartBeatVal == 1) { - heartBeatVal = 2; - } else { - heartBeatVal = 1; - } - OperateResult write = melsecMcNet.Write("D141", heartBeatVal); - if (!write.IsSuccess) { - log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); - } - } - - /** - * 璁剧疆鍏ュ簱鏍囪 - */ - @Override - public void setPakMk(Integer siteId, boolean pakMk) { - StaProtocol staProtocol = station.get(siteId); - if (null != staProtocol) { - staProtocol.setPakMk(pakMk); - } - } - - @Override - public void close() { - melsecMcNet.ConnectClose(); - } - - public static void main(String[] args) throws Exception { - DevpSlave slave = new DevpSlave(); - slave.setIp("192.168.6.21"); - slave.setPort(6000); - MelsecDevpThread devpThread = new MelsecDevpThread(slave); - devpThread.connect(); - for (int i = 1; i < 999; i ++) { - OperateResultExOne<Short> d = devpThread.getMelsecMcNet().ReadInt16("D" + i); - Thread.sleep(200); - if (d.IsSuccess) { - System.out.println(DateUtils.convert(new Date()) + d.Content); - } else { - System.out.println("璇诲彇澶辫触"); - } - } - devpThread.getMelsecMcNet().ConnectClose(); - } - - - - - -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index dd5a80d..7640124 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,11 +7,7 @@ application: name: @pom.build.finalName@ datasource: - # sql-server driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - #url: jdbc:sqlserver://192.168.3.99:1433;databasename=gdasrs - #username: sa - #password: eisoft url: jdbc:sqlserver://192.168.2.250:1433;databasename=jsasrs username: sa password: sa@123 @@ -105,26 +101,6 @@ # 鎷f枡鍏ュ簱鍙� pickSta[0]: staNo: 3 - # 杈撻�佺嚎 - devp[1]: - id: 2 - ip: 192.168.6.21 - port: 6000 - rack: 0 - slot: 1 - # 鍏ュ簱鍙�1 - inSta[0]: - staNo: 105 - barcode: ${wcs-slave.barcode[1].id} - # 绌烘澘鍏ュ簱鍙�1 - emptyInSta[0]: - staNo: 104 - # 鍑哄簱鍙�1 - outSta[0]: - staNo: 104 - # 鎷f枡鍏ュ簱鍙� - pickSta[0]: - staNo: 105 # 鏉$爜鎵弿浠� barcode[0]: id: 1 diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 183c4b5..726c5e9 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -1,4 +1,4 @@ -var baseUrl = "/jswcs"; +var baseUrl = "/htwcs"; // 璧嬪�� function setVal(el, val) { -- Gitblit v1.9.1