自动化立体仓库 - WCS系统
78478aecdc7b125e16cae01954f3a0ad25644b17..4453cdecbc6e7a925ae76e3223418654f1cf0b18
5 天以前 taisheng
#
4453cd 对比 | 目录
5 天以前 Junjie
#
7809bb 对比 | 目录
5 天以前 Junjie
#
e3c66c 对比 | 目录
5 天以前 Junjie
#
02d3a2 对比 | 目录
5 天以前 Junjie
#
3009c8 对比 | 目录
5 天以前 Junjie
#
135a13 对比 | 目录
5 天以前 Junjie
#
e8428a 对比 | 目录
5 天以前 Junjie
#
df8d94 对比 | 目录
5 天以前 Junjie
#
7fb7e6 对比 | 目录
5 天以前 Junjie
#
8f5bd9 对比 | 目录
5 天以前 Junjie
#
278fc7 对比 | 目录
5 天以前 Junjie
#
996e07 对比 | 目录
5 天以前 Junjie
#
14b567 对比 | 目录
5 天以前 Junjie
#
2d324a 对比 | 目录
5 天以前 Junjie
#
cb511f 对比 | 目录
5 天以前 Junjie
#优化出库及时释放小车
bd5e08 对比 | 目录
8个文件已修改
317 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/ForkLiftUtils.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateMapData.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/docs/台升四向库WCS与货叉提升机PLC通讯接口协议.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -179,14 +179,14 @@
                return false;
            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // å››å‘穿梭车编号
@@ -269,19 +269,6 @@
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,未找到匹配的提升机", wrkMast.getWrkNo());
                    return false;
                }
                //判断提升机是否有其他任务
                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo);
                if (liftWrkMast != null) {
                    if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                        News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftNo);
                        return false;
                    }
                }
                wrkMast.setLiftNo(liftNo);
                wrkMast.setModiTime(new Date());
                wrkMastService.updateById(wrkMast);
            }
            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
@@ -363,14 +350,14 @@
                return false;
            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(liftSta.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(liftSta.getLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // å››å‘穿梭车编号
@@ -555,6 +542,15 @@
                return false;
            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // å››å‘穿梭车编号
            assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//小车移库任务
@@ -580,8 +576,8 @@
                return false;
            }
            commands.add(0, liftCommand.get(0));
            commands.add(liftCommand2.get(0));
//            commands.add(0, liftCommand.get(0));
//            commands.add(liftCommand2.get(0));
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts);//小车搬运中  501.生成移库任务 ==> 502.小车搬运中
@@ -757,15 +753,6 @@
        //--------------------------------------提升机出库-----------------------------------------//
        //103.小车搬运完成 ==> 104.提升机搬运中
        if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) {
            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
            if (shuttleThread == null) {
                return false;
            }
            ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
            if(shuttleProtocol == null) {
                return false;
            }
            //获取源站
            ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
            if (liftSta == null) {
@@ -773,20 +760,38 @@
                return false;//找不到站点
            }
            if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
                //小车还在输送站点
                //获取小车待机位
                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
                if(standbyLocNo == null) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,获取小车待机位失败", wrkMast.getWrkNo());
            if(wrkMast.getShuttleNo() != null) {
                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
                if (shuttleThread == null) {
                    return false;
                }
                //调度小车去待机位
                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo, wrkMast.getShuttleNo());
                if (!dispatchShuttle) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,小车在输送站点调度小车避让失败", wrkMast.getWrkNo());
                ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
                if(shuttleProtocol == null) {
                    return false;
                }
                if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) {
                    //小车还在输送站点
                    //获取小车待机位
                    String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
                    if (standbyLocNo == null) {
                        News.taskInfo(wrkMast.getWrkNo(), "{}任务,获取小车待机位失败", wrkMast.getWrkNo());
                        return false;
                    }
                    //调度小车去待机位
                    boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo, wrkMast.getShuttleNo());
                    if (!dispatchShuttle) {
                        News.taskInfo(wrkMast.getWrkNo(), "{}任务,小车在输送站点调度小车避让失败", wrkMast.getWrkNo());
                        return false;
                    }
                } else {
                    //小车已不在输送站点位置,释放小车
                    wrkMast.setShuttleNo(null);//释放小车
                    wrkMast.setModiTime(new Date());
                    wrkMastService.updateById(wrkMast);
                    return false;
                }
                return false;
            }
            if (liftSta.getHasCar()) {
@@ -1379,14 +1384,14 @@
                return false;
            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            //调度小车去待机位
            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
@@ -1771,15 +1776,6 @@
                return false;//路径计算失败
            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//小车移动到目标库位中  309.小车迁出提升机完成 ==> 310.小车移动中
@@ -1813,6 +1809,11 @@
                continue;
            }
            List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo);
            if (conveyorBindLiftAllStaNo.isEmpty()) {
                continue;
            }
            //获取入库任务
            List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .in("sta_no", liftAllStaNo)
@@ -1827,7 +1828,7 @@
            //获取出库任务
            List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .eq("lift_no", liftNo)
                    .in("sta_no", conveyorBindLiftAllStaNo)
                    .in("wrk_sts"
                            , WrkStsType.NEW_OUTBOUND.sts
                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
src/main/java/com/zy/common/utils/ForkLiftUtils.java
@@ -39,6 +39,33 @@
        return list;
    }
    //获取提升机所绑定的输送线所有站点
    public static List<Integer> getConveyorBindLiftAllStaNo(Integer liftNo) {
        List<Integer> list = new ArrayList<>();
        ConfigService configService = SpringUtils.getBean(ConfigService.class);
        if (configService == null) {
            return list;
        }
        Config conveyorLiftBindConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "conveyorLiftBind"));
        if(conveyorLiftBindConfig == null) {
            return list;
        }
        List<JSONObject> val = JSON.parseArray(conveyorLiftBindConfig.getValue(), JSONObject.class);
        if (val.isEmpty()) {
            return list;
        }
        for (JSONObject data : val) {
            if(data.getInteger("liftNo").equals(liftNo)) {
                list.add(data.getInteger("staNo"));
            }
        }
        return list;
    }
    //获取提升机站点
    public static ForkLiftStaProtocol getLiftStaByStaNo(Integer staNo) {
        SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -115,6 +115,23 @@
        return null;
    }
    public int[][] parseJsonDataArr(List<List<MapNode>> lists) {
        int[][] map = new int[lists.size()][];
        int j = 0;
        for (List<MapNode> list : lists) {
            int[] tmp = new int[list.size()];
            int i = 0;
            for (MapNode mapNode : list) {
                //将数据添加进二维数组
                tmp[i++] = mapNode.getValue();
            }
            //数据添加进一维数组
            map[j++] = tmp;
        }
        return map;
    }
    /**
     * è¿‡æ»¤åœ°å›¾æ•°æ®
     * mapType -1=>无过滤,1=》过滤库位状态DFX,2=》过滤库位状态X
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -6,8 +6,8 @@
import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.MapNode;
import com.zy.common.model.NavigateNode;
import com.zy.common.model.enums.NavigationMapType;
import com.zy.core.News;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
@@ -260,19 +260,28 @@
                continue;
            }
            int nextInt = new Random().nextInt(outerNodes.size());
            NavigateNode randomNode = outerNodes.get(nextInt);
            String randomLocNo = NavigatePositionConvert.nodeToLocNo(randomNode);
            shuttleDispatchUtils.dispatchShuttle(null, randomLocNo, shuttleNo);
            HashMap<String, Integer> carMap = findCarMap();
            String targetLocNo = null;
            for (NavigateNode node : outerNodes) {
                String dispatchLocNo = NavigatePositionConvert.nodeToLocNo(node);
                if (carMap.containsKey(dispatchLocNo)) {
                    continue;
                }
                targetLocNo = dispatchLocNo;
                break;
            }
            if(targetLocNo == null) {
                continue;
            }
            shuttleDispatchUtils.dispatchShuttle(null, targetLocNo, shuttleNo);
        }
        return true;//内圈中有车
    }
    //搜索节点内的小车编号
    private List<Integer> findNodesCar(List<NavigateNode> nodes) {
        List<Integer> list = new ArrayList<>();
    private HashMap<String, Integer> findCarMap() {
        HashMap<String, Integer> carMap = new HashMap<>();
        for (ShuttleSlave slave : slaveProperties.getShuttle()) {
            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
@@ -290,7 +299,13 @@
            carMap.put(currentLocNo, slave.getId());
        }
        return carMap;
    }
    //搜索节点内的小车编号
    private List<Integer> findNodesCar(List<NavigateNode> nodes) {
        List<Integer> list = new ArrayList<>();
        HashMap<String, Integer> carMap = findCarMap();
        for (NavigateNode node : nodes) {
            String locNo = NavigatePositionConvert.nodeToLocNo(node);
            if (carMap.containsKey(locNo)) {
@@ -307,8 +322,10 @@
        int lev = Utils.getLev(locNo);
        int[] pointArr = NavigatePositionConvert.positionToXY(locNo);
        NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
        currentNode.setZ(lev);
        int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.NORMAL.id, null, whiteShuttlePointList);
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//获取完整地图
        int[][] map = navigateMapData.parseJsonDataArr(lists);
        int nodeValue = map[pointArr[0]][pointArr[1]];
        currentNode.setNodeValue(nodeValue);
@@ -348,7 +365,8 @@
        currentNode.setZ(lev);
        innerNodes.add(currentNode);
        int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.NORMAL.id, null, whiteShuttlePointList);
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//获取完整地图
        int[][] map = navigateMapData.parseJsonDataArr(lists);
        int nodeValue = map[pointArr[0]][pointArr[1]];
        currentNode.setNodeValue(nodeValue);
@@ -358,7 +376,20 @@
            if (list.isEmpty()) {
                continue;
            }
            innerNodes.addAll(list);
            for (NavigateNode node : list) {
                boolean flag = false;
                for (int[] shuttlePoint : whiteShuttlePointList) {
                    if(node.getX() == shuttlePoint[0] && node.getY() == shuttlePoint[1]) {
                        flag = true;
                        break;
                    }
                }
                if(flag) {
                    continue;
                }
                innerNodes.add(node);
            }
        }
        return innerNodes;
@@ -389,13 +420,17 @@
                    NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
                    node.setNodeValue(map[x + innerCircleIdx][y]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
                if (is_valid(map, x - innerCircleIdx, y)) {
                    NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
                    node.setNodeValue(map[x - innerCircleIdx][y]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
            }
@@ -405,14 +440,18 @@
                    NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
                    node.setNodeValue(map[x][y + innerCircleIdx]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
                if (is_valid(map, x, y - innerCircleIdx)) {
                    NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
                    node.setNodeValue(map[x][y - innerCircleIdx]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
            }
        }else if (mapDirection.equals("y")) {//母轨y方向
@@ -422,14 +461,18 @@
                    NavigateNode node = new NavigateNode(x, y + innerCircleIdx);
                    node.setNodeValue(map[x][y + innerCircleIdx]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
                if (is_valid(map, x, y - innerCircleIdx)) {
                    NavigateNode node = new NavigateNode(x, y - innerCircleIdx);
                    node.setNodeValue(map[x][y - innerCircleIdx]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
            }
@@ -439,13 +482,17 @@
                    NavigateNode node = new NavigateNode(x + innerCircleIdx, y);
                    node.setNodeValue(map[x + innerCircleIdx][y]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
                if (is_valid(map, x - innerCircleIdx, y)) {
                    NavigateNode node = new NavigateNode(x - innerCircleIdx, y);
                    node.setNodeValue(map[x - innerCircleIdx][y]);
                    node.setZ(z);
                    nodes.add(node);
                    if (node.getNodeValue().equals(startNode.getNodeValue())) {
                        nodes.add(node);
                    }
                }
            }
        }else {
src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java
@@ -37,7 +37,8 @@
        HashMap<String, Object> lift1 = new HashMap<>();
        lift1.put("status", new DbData("DB101.0", (short) 16));//提升机数据
        lift1.put("staStatus", new DbData("DB102.0", (short) 14));//站点数据
        lift1.put("staStatusTray", new DbData("DB102.0", (short) 14));//站点数据
        lift1.put("staStatusCar", new DbData("DB102.50", (short) 14));//站点数据
        lift1.put("write", new DbData("DB103.0", null));//写入数据
        lift1.put("writeConfirm", new DbData("DB103.8", null));//写入确认数据
        lift1.put("confirm", new DbData("DB103.10", null));//确认命令
@@ -45,7 +46,8 @@
        HashMap<String, Object> lift2 = new HashMap<>();
        lift2.put("status", new DbData("DB104.0", (short) 16));//提升机数据
        lift2.put("staStatus", new DbData("DB105.0", (short) 14));//站点数据
        lift2.put("staStatusTray", new DbData("DB105.0", (short) 14));//站点数据
        lift2.put("staStatusCar", new DbData("DB105.50", (short) 14));//站点数据
        lift2.put("write", new DbData("DB106.0", null));//写入数据
        lift2.put("writeConfirm", new DbData("DB106.8", null));//写入确认数据
        lift2.put("confirm", new DbData("DB106.10", null));//确认命令
src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
@@ -30,10 +30,7 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
import java.util.List;
import java.util.*;
@Slf4j
@SuppressWarnings("all")
@@ -90,7 +87,7 @@
                }
                read();
                Thread.sleep(200);
                Thread.sleep(300);
                execute();
            } catch (Exception e) {
                e.printStackTrace();
@@ -135,10 +132,6 @@
        try {
            //获取提升机数据
            OperateResultExOne<byte[]> result1 = this.masterThread.read(this.slave.getId(), "status");
            if (result1 == null) {
                OutputQueue.FORKLIFT.offer(MessageFormat.format("【{0}】{1}读取货叉提升机状态信息失败", DateUtils.convert(new Date()), slave.getId()));
            }
            SiemensS7Net siemensS7Net = this.masterThread.getSiemensS7Net();
            if (result1.IsSuccess) {
                if (null == forkLiftProtocol) {
@@ -175,7 +168,7 @@
                OutputQueue.FORKLIFT.offer(MessageFormat.format("【{0}】{1}读取货叉提升机状态信息失败", DateUtils.convert(new Date()), slave.getId()));
            }
            OperateResultExOne<byte[]> result2 = this.masterThread.read(this.slave.getId(), "staStatus");
            OperateResultExOne<byte[]> result2 = this.masterThread.read(this.slave.getId(), "staStatusTray");
            if (result2.IsSuccess) {
                for (int i = 0; i < this.slave.getSta().size(); i++) {
                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
@@ -183,10 +176,23 @@
                        continue;
                    }
                    short val = siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 2);
                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
                    boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i * 2, 2);
                    forkLiftStaProtocol.setHasTray(status1[0]);
                    forkLiftStaProtocol.setHasCar(status1[1]);
                    forkLiftStaProtocol.setHasTray(val == 1);
                }
            }
            OperateResultExOne<byte[]> result3 = this.masterThread.read(this.slave.getId(), "staStatusCar");
            if (result3.IsSuccess) {
                for (int i = 0; i < this.slave.getSta().size(); i++) {
                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
                    if (forkLiftStaProtocols.isEmpty()) {
                        continue;
                    }
                    short val = siemensS7Net.getByteTransform().TransInt16(result3.Content, i * 2);
                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
                    forkLiftStaProtocol.setHasCar(val == 1);
                }
            }
@@ -202,6 +208,15 @@
                deviceDataLog.setCreateTime(new Date());
                deviceDataLogService.insert(deviceDataLog);
                //保存数据记录
                DeviceDataLog deviceDataLog2 = new DeviceDataLog();
                deviceDataLog2.setOriginData(Base64.getEncoder().encodeToString(result2.Content));
                deviceDataLog2.setWcsData(JSON.toJSONString(forkLiftStaProtocols));
                deviceDataLog2.setType("forkLiftStaProtocols");
                deviceDataLog2.setDeviceNo(forkLiftProtocol.getLiftNo());
                deviceDataLog2.setCreateTime(new Date());
                deviceDataLogService.insert(deviceDataLog2);
                //更新采集时间
                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
            }
src/main/resources/docs/̨ÉýËÄÏò¿âWCSÓë»õ²æÌáÉý»úPLCͨѶ½Ó¿ÚЭÒé.docx
Binary files differ
src/main/resources/mapper/WrkMastMapper.xml
@@ -97,7 +97,7 @@
    <select id="selectLiftWrkMast" resultMap="BaseResultMap">
        select * from asr_wrk_mast
        where lift_no = #{liftNo}
        and wrk_sts in (3,4,104,105,301,302,303,304,305,306,307,308,309)
        and wrk_sts not in (9,10,109,110,210,311,410)
        limit 0,1
    </select>