自动化立体仓库 - WCS系统
#
luxiaotao1123
2020-08-17 7eab121b2462e5b83f144fe4f3be93db6128ca0f
#
1个文件已添加
4个文件已修改
55 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CrnController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/cache/OutputQueue.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/CrnCommand.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/CrnThread.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/DevpThread.java 7 ●●●●● 补丁 | 查看 | 原始文档 | 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);