src/main/java/com/zy/asrs/controller/CrnController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/cache/OutputQueue.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/CrnCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/CrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/DevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -9,6 +9,7 @@ import com.zy.asrs.domain.vo.CrnStateTableVo; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.WrkMastService; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.CrnModeType; import com.zy.core.enums.SlaveType; @@ -23,7 +24,6 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @@ -137,8 +137,21 @@ @PostMapping("/output/site") @ManagerAuth(memo = "堆垛机报文日志输出") public R crnOutput(){ String str = "\n" +new Date().toLocaleString() + "【2020-5-29 13:14:22】扫描plcA 目标站--273283723728327636432343234323422732837237283276364323432343234227328372372832763643234323432342"; return R.ok().add(str); StringBuilder str = new StringBuilder(); String s; int i = 0; while( (s = OutputQueue.CRN.poll()) != null && i <=10) { str.append("\n").append(s); i++; } // str = new StringBuilder("\n" + new Date().toLocaleString() + "【2020-5-29 13:14:22】扫描plcA 目标站--273283723728327636432343234323422732837237283276364323432343234227328372372832763643234323432342"); return R.ok().add(str.toString()); } public static void main(String[] args) { for (int i =0; i<10; i++) { } } /****************************************************************/ src/main/java/com/zy/core/cache/OutputQueue.java
New file @@ -0,0 +1,15 @@ package com.zy.core.cache; import java.util.concurrent.ArrayBlockingQueue; /** * Created by vincent on 2020/8/17 */ public class OutputQueue { // 堆垛机输出日志 public static ArrayBlockingQueue<String> CRN = new ArrayBlockingQueue<>(32); // 输送线输出日志 public static ArrayBlockingQueue<String> DEVP = new ArrayBlockingQueue<>(32); } src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -1,5 +1,6 @@ package com.zy.core.model.command; import com.alibaba.fastjson.annotation.JSONField; import com.zy.core.enums.CrnTaskModeType; import lombok.Data; @@ -32,6 +33,7 @@ */ private Short taskMode; @JSONField(serialize = false) private CrnTaskModeType taskModeType; // 源位置排号 src/main/java/com/zy/core/thread/CrnThread.java
@@ -5,8 +5,10 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; import com.core.common.DateUtils; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.CrnTaskModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; @@ -15,6 +17,9 @@ import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; import java.util.Date; /** * 堆垛机线程 @@ -27,6 +32,7 @@ private SiemensS7Net siemensNet; private CrnSlave slave; private CrnProtocol crnProtocol; public CrnThread(CrnSlave slave) { this.slave = slave; @@ -90,8 +96,10 @@ OperateResult connect = siemensNet.ConnectServer(); if(connect.IsSuccess){ result = true; OutputQueue.CRN.offer(MessageFormat.format( "【{0}】堆垛机plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.info("堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } else { OutputQueue.CRN.offer(MessageFormat.format("【{0}】堆垛机plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } siemensNet.ConnectClose(); @@ -104,6 +112,7 @@ private void readStatus(){ OperateResultExOne<byte[]> result = siemensNet.Read("DB8.18", (short) 46); if (result.IsSuccess) { OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); if (null == crnProtocol) { crnProtocol = new CrnProtocol(); } @@ -128,6 +137,7 @@ crnProtocol.setYDistance(siemensNet.getByteTransform().TransInt32(result.Content, 38)); crnProtocol.setDuration(siemensNet.getByteTransform().TransInt32(result.Content, 42)); } else { OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } @@ -153,8 +163,10 @@ array[8] = command.getDestinationPosZ(); OperateResult result = siemensNet.Write("DB8.0", array); if (result.IsSuccess) { OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); readStatus(); } else { OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } src/main/java/com/zy/core/thread/DevpThread.java
@@ -140,12 +140,13 @@ Slave slave = new Slave(); slave.setIp("192.168.2.125"); DevpThread devpThread = new DevpThread(slave); devpThread.connect(); devpThread.read(); // 写 StaProtocol staProtocol = devpThread.getStation().get(1); staProtocol.setWorkNo((short) 222); staProtocol.setStaNo((short) 2); staProtocol.setAutoing(false); staProtocol.setWorkNo((short) 232); staProtocol.setStaNo((short) 6); staProtocol.setAutoing(true); staProtocol.setEmptyMk(true); staProtocol.setInEnable(true); devpThread.write(staProtocol);