自动化立体仓库 - WCS系统
zjj
2024-03-01 f41df488a23abd9fff472fa72a8fa3bb283c936b
#车锁
1个文件已添加
4个文件已修改
127 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/RouteUtils.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/RgvThread2.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2346,6 +2346,7 @@
                    rgvProtocol.getModeType() == RgvModeType.AUTO
                    && rgvProtocol.getLoaded1()==0  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接
                    && (rgvProtocol.getTaskNo1()==0)
                        &&rgvThread.isPakMk()
                ) {
                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
@@ -2361,9 +2362,17 @@
                        && rgvProtocolOther.getModeType() == RgvModeType.AUTO
                        && rgvProtocolOther.getLoaded1()==0
                        && (rgvProtocolOther.getTaskNo1()==0)
                        &&rgvThreadOther.isPakMk()
                    ){
                        //对工作档进行判断
                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
                        if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
                            rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
                        }else if (rgvProtocol.getTaskNo1() == 0){
                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
                        }
                    }
@@ -2413,6 +2422,7 @@
                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
                            rgvThread.setPakMk(true);
                            break;
                        }
                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
@@ -2469,6 +2479,7 @@
                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
                        rgvThread.setPakMk(true);
                    }
                    else {
@@ -2523,6 +2534,7 @@
                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
                        wrkEnable = true;
                        if (sign){
                            rgvThread.setPakMk(false);
                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
                            if (signMap){
                                Thread.sleep(300);
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -31,11 +31,11 @@
//    正序
    public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
        add(161);add(157);add(153);add(149);add(124);add(119);add(113);add(999);add(112);add(107);add(106);add(101);add(100);
        add(161);add(157);add(153);add(149);add(124);add(119);add(113);add(112);add(107);add(106);add(101);add(100);
    }};
//    反序
    public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
        add(100);add(101);add(106);add(107);add(112);add(999);add(113);add(119);add(124);add(149);add(153);add(157);add(161);
        add(100);add(101);add(106);add(107);add(112);add(113);add(119);add(124);add(149);add(153);add(157);add(161);
    }};
    public static String zerofill(String msg, Integer count){
@@ -257,52 +257,59 @@
    public static void main(String[] arge){
        List<Integer> routeCurrent = getRoute(100, 124);  //获取当前小车路径
        List<Integer> routeOther = getRoute(149, 161);  //获取其它小车路径
        System.out.println("当前小车路径:\t"+routeCurrent);
        System.out.println("其它小车路径:\t"+routeOther);
        //{"endRoute":999,"lockEndRoute":124,"lockStartRoute":161,"nowRoute":161,"rgvNo":3,"rgvStatus":0,"startRoute":161}   3hao
        Integer i = RouteIndexFarMas(112, 161, 124, 161);
        System.out.println(i);
        //{"endRoute":119,"lockEndRoute":112,"lockStartRoute":100,"nowRoute":112,"rgvNo":2,"rgvStatus":0,"startRoute":100} 2
        Integer i1 = RouteIndexFarMas(112, 100, 112, 100);
        System.out.println(i1);
        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //是否有交集
        System.out.println("是否有交集:\t"+routeBoolean);
        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集
        System.out.println("路径交集:\t"+routeIntersection);
        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集
        System.out.println("路径差集:\t"+routeIntersection1);
        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集
        System.out.println("路径并集:\t"+routeIntersection2);
        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集
        System.out.println("路径去重并集:\t"+routeIntersection3);
        /*
         * a  小车当前位置
         * b  小车任务开始位置
         * c  小车任务结束位置
         * sign  另一个小车空闲标记
         * */
        System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //是否有交集  true无交集  false有交集
        /*
         * a  小车当前位置
         * b  小车任务开始位置
         * c  小车任务结束位置
         * d  小车初始位置
         * 获取最大路径差值
         * */
        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
        System.out.println("当前路径最大集合:\t"+ routeDIFF);
        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
        System.out.println("另一台小车最远站点:\t"+routeFarOther);
        Integer[] integers = RouteIndexFarArr(100,101,124,149);
        for (Integer integer:integers){
            System.out.println(integer);
        }
//        List<Integer> routeCurrent = getRoute(100, 124);  //获取当前小车路径
//        List<Integer> routeOther = getRoute(149, 161);  //获取其它小车路径
//        System.out.println("当前小车路径:\t"+routeCurrent);
//        System.out.println("其它小车路径:\t"+routeOther);
//
//        boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther);  //是否有交集
//        System.out.println("是否有交集:\t"+routeBoolean);
//
//        List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集
//        System.out.println("路径交集:\t"+routeIntersection);
//
//        List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集
//        System.out.println("路径差集:\t"+routeIntersection1);
//
//        List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集
//        System.out.println("路径并集:\t"+routeIntersection2);
//
//        List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集
//        System.out.println("路径去重并集:\t"+routeIntersection3);
//
//        /*
//         * a  小车当前位置
//         * b  小车任务开始位置
//         * c  小车任务结束位置
//         * sign  另一个小车空闲标记
//         * */
//        System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true));   //是否有交集  true无交集  false有交集
//
//        /*
//         * a  小车当前位置
//         * b  小车任务开始位置
//         * c  小车任务结束位置
//         * d  小车初始位置
//         * 获取最大路径差值
//         * */
//        List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149);
//        System.out.println("当前路径最大集合:\t"+ routeDIFF);
//
//        Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124);
//        System.out.println("另一台小车最远站点:\t"+routeFarOther);
//
//
//        Integer[] integers = RouteIndexFarArr(100,101,124,149);
//        for (Integer integer:integers){
//            System.out.println(integer);
//        }
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -37,7 +37,7 @@
                try {
                    // 间隔
                    Thread.sleep(500);
                    Thread.sleep(1000);
                    // 系统运行状态判断
                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
src/main/java/com/zy/core/RgvThread2.java
New file
@@ -0,0 +1,6 @@
package com.zy.core;
public interface RgvThread2 extends ThreadHandler{
    void setPakMk(boolean lock);
}
src/main/java/com/zy/core/thread/RgvThread.java
@@ -12,6 +12,7 @@
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.common.utils.News;
import com.zy.core.RgvThread2;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
@@ -35,7 +36,7 @@
 */
@Data
@Slf4j
public class RgvThread implements Runnable, ThreadHandler {
public class RgvThread implements Runnable, RgvThread2 {
    private SiemensS7Net siemensNet;
    private RgvSlave slave;
@@ -49,6 +50,9 @@
     */
    private boolean resetFlag2 = false;
    //锁定标记
    private boolean PakMk = true;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
    }