#
luxiaotao1123
2020-08-13 97283d17c312d0e6aca7946bc060015c17349a57
#
3个文件已修改
119 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/DevpThread.java 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -138,8 +138,8 @@
                    // 更新站点信息 且 下发plc命令
                    barcodeThread.setBarcode("");
                    staProtocol.setWorkNo(workNo);
                    staProtocol.setStaNo(startupDto.getStaNo());
                    staProtocol.setWorkNo((short) workNo);
                    staProtocol.setStaNo(startupDto.getStaNo().shortValue());
                    staProtocol.setPakMk(false);
                    staProtocol.setInreq1(false);
                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
@@ -169,7 +169,7 @@
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInreq1()
                    && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){
                    WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
                    WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo().intValue());
                    if (wrkMast == null) {
                        // 无拣料数据
                        continue;
@@ -217,8 +217,8 @@
                    }
                    // 更新站点信息 且 下发plc命令
                    staProtocol.setWorkNo(wrkMast.getWrkNo());
                    staProtocol.setStaNo(wrkMast.getStaNo());
                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                    staProtocol.setPakMk(false);
                    staProtocol.setInreq1(false);
                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
@@ -281,8 +281,8 @@
                    }
                    // 2.下发站点信息
                    staProtocol.setWorkNo(wrkMast.getWrkNo());
                    staProtocol.setStaNo(wrkMast.getStaNo());
                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                    if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol))) {
                        throw new CoolException("更新plc站点信息失败");
                    }
@@ -354,7 +354,7 @@
                continue;
            }
            // 获取工作状态为2(设备上走)的入库工作档
            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo());
            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue());
            if(null == wrkMast) {
                log.error("查询无待入库数据--wrk_sts=2, 工作号={}", staProtocol.getWorkNo());
                continue;
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -12,6 +12,15 @@
    // 站点编号
    private Integer siteId;
    // ----------------------------------------------------------------
    // 工作号
    private Short workNo;
    // ----------------------------------------------------------------
    // 目标站
    private Short staNo;
    // ----------------------------------------------------------------
    // 自动
    private boolean autoing;
@@ -32,12 +41,6 @@
    // 锁定标记
    private boolean pakMk;
    // 工作号
    private Integer workNo;
    // 目标站
    private Integer staNo;
}
src/main/java/com/zy/core/thread/DevpThread.java
@@ -4,6 +4,7 @@
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
@@ -46,10 +47,7 @@
                switch (step) {
                    // 读数据
                    case 1:
                        readWorkNo();   // 读取工作号
                        readStaDest();  // 读取目标站
                        readStatus();   // 读取状态
                        readError();    // 读取异常信息
                        read();   // 读取状态
                        break;
                    case 2:
                        break;
@@ -85,57 +83,57 @@
        return result;
    }
    /**
     * 读取工作号
     */
    private void readWorkNo(){
        OperateResultExOne<int[]> read = siemensS7Net.ReadInt32("DB100", (short) 8);
        if (read.IsSuccess) {
            int staNo1 = read.Content[0];
            int staNo2 = read.Content[1];
            int staNo3 = read.Content[2];
            int staNo4 = read.Content[3];
            int staNo5 = read.Content[4];
            int staNo6 = read.Content[5];
            int staNo7 = read.Content[6];
            int staNo8 = read.Content[7];
        }
    }
    /**
     * 读取目标站
     */
    private void readStaDest(){
        OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101", (short) 8);
        if (read.IsSuccess) {
            int staNo1 = siemensS7Net.getByteTransform().TransInt32(read.Content, 0);
            int staNo2 = siemensS7Net.getByteTransform().TransInt32(read.Content, 4);
            int staNo3 = siemensS7Net.getByteTransform().TransInt32(read.Content, 8);
            int staNo4 = siemensS7Net.getByteTransform().TransInt32(read.Content, 12);
            int staNo5 = siemensS7Net.getByteTransform().TransInt32(read.Content, 16);
            int staNo6 = siemensS7Net.getByteTransform().TransInt32(read.Content, 20);
            int staNo7 = siemensS7Net.getByteTransform().TransInt32(read.Content, 24);
            int staNo8 = siemensS7Net.getByteTransform().TransInt32(read.Content, 28);
        }
    public static void main(String[] args) {
        Slave slave = new Slave();
        slave.setIp("192.168.2.125");
        DevpThread devpThread = new DevpThread(slave);
        boolean connect = devpThread.connect();
        System.out.println(connect);
        devpThread.read();
        // 写
        StaProtocol staProtocol = devpThread.getStation().get(1);
        staProtocol.setWorkNo((short) 666);
        devpThread.write(staProtocol);
        // 读
        devpThread.read();
        System.out.println(JSON.toJSONString(devpThread.station));
    }
    /**
     * 读取状态
     */
    private void readStatus(){
    private void read(){
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 40);
        for (int i = 1; i <= 7; i++) {
            StaProtocol staProtocol = station.get(i);
            if (null == staProtocol) {
                staProtocol = new StaProtocol();
                staProtocol.setSiteId(i);
                station.put(i, staProtocol);
            }
            System.out.println(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2));
            staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2));
            staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2+20));
//            staProtocol.setAutoing(siemensS7Net.getByteTransform().TransBool());
        }
        // todo
//        OperateResultExOne<Short> shortOperateResultExOne = siemensS7Net.ReadInt16("DB100.0");
//        System.out.println(shortOperateResultExOne.Content);
    }
    /**
     * 读取异常信息
     */
    private void readError(){
    }
    private void writeWorkNo(){
    private void write(StaProtocol staProtocol){
        if (null == staProtocol) {
            return;
        }
        OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo());
        if (write.IsSuccess) {
            System.out.println("写入成功");
        } else {
            System.out.println("写入失败");
        }
    }