自动化立体仓库 - WCS系统
#
lsh
2022-12-23 93d7e7ce852d4956a2911a86f06f3d37c889c1f1
#
4个文件已修改
178 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/CrnStatusType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/MelsecCrnThread.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -338,20 +338,20 @@
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历拣料入库口
            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
//                // 获取条码扫描仪信息
//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
//                if (barcodeThread == null) {
//                    continue;
//                }
//                String barcode = barcodeThread.getBarcode();
//                if(!Cools.isEmpty(barcode)) {
//                    log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
//                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
//                        continue;
//                    }
//                } else {
//                    continue;
//                }
                // 获取条码扫描仪信息
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
                if (barcodeThread == null) {
                    continue;
                }
                String barcode = barcodeThread.getBarcode();
                if(!Cools.isEmpty(barcode)) {
                    log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                        continue;
                    }
                } else {
                    continue;
                }
                // 获取拣料入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -721,7 +721,7 @@
            CrnCommand crnCommand = new CrnCommand();
            crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
            crnCommand.setAckFinish((short) 0);  // 任务完成确认位
//            crnCommand.setAckFinish((short) 0);  // 任务完成确认位
            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位列
@@ -869,7 +869,7 @@
                    CrnCommand crnCommand = new CrnCommand();
                    crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
//                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 源库位排
                    crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 源库位列
src/main/java/com/zy/core/enums/CrnStatusType.java
@@ -13,7 +13,7 @@
    ORIGIN_GO(7, "回原点"),
    ORIGIN_BACK(8, "回反原点"),
    MOVING(9, "走行中"),
    WAITING(10, "任务完成等待WCS确认"),
    WAITING(90, "任务完成等待WCS确认"),
    PAUSE(11, "任务暂停"),
    SOS(99, "报警"),
    UNKNOW(100, "其他"),
src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -86,12 +86,12 @@
                        command.setTaskNo((short) 0); // 工作号
                        command.setAckFinish((short) 1);  // 任务完成确认位
                        command.setTaskMode(CrnTaskModeType.NONE); // 任务模式
                        command.setSourcePosX((short)0);     // 源库位排
                        command.setSourcePosY((short)0);     // 源库位列
                        command.setSourcePosZ((short)0);     // 源库位层
                        command.setDestinationPosX((short)0);     // 目标库位排
                        command.setDestinationPosY((short)0);     // 目标库位列
                        command.setDestinationPosZ((short)0);     // 目标库位层
//                        command.setSourcePosX((short)0);     // 源库位排
//                        command.setSourcePosY((short)0);     // 源库位列
//                        command.setSourcePosZ((short)0);     // 源库位层
//                        command.setDestinationPosX((short)0);     // 目标库位排
//                        command.setDestinationPosY((short)0);     // 目标库位列
//                        command.setDestinationPosZ((short)0);     // 目标库位层
                        write(command);
                        break;
                    default:
@@ -161,7 +161,7 @@
//                flag1=1;
//                System.out.println("===");
//            }
            OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
            OperateResultExOne<byte[]> result = melsecMcNet.Read("D1035", (short) 56);
            if (result.IsSuccess) {
                if (null == crnProtocol) {
                    crnProtocol = new CrnProtocol();
@@ -298,11 +298,11 @@
        array[7] = command.getDestinationPosY();
        array[8] = command.getDestinationPosZ();
        array[9] = command.getCommand();
        OperateResult result = melsecMcNet.Write("D0", array);
        OperateResult result = melsecMcNet.Write("D1001", array);
        if (command.getAckFinish() == 0) {
            short commandFinish = 1;
            result = melsecMcNet.Write("D9", commandFinish);
            result = melsecMcNet.Write("D1010", commandFinish);
        }
        try {
@@ -348,12 +348,22 @@
     * 心跳
     */
    private void heartbeat(){
        if (heartBeatVal == 1) {
            heartBeatVal = 2;
        if (heartBeatVal >= 30000) {
            heartBeatVal = -30000;
        } else {
            heartBeatVal = 1;
            heartBeatVal =(short) (heartBeatVal+1);
        }
        OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
        OperateResult write = melsecMcNet.Write("D1011", heartBeatVal);
//        OperateResult write1 = melsecMcNet.Write("D1001", (short) 0);
//        OperateResult write2 = melsecMcNet.Write("D1002", (short) 0);
//        OperateResult write3 = melsecMcNet.Write("D1003", (short) 0);
//        OperateResult write4 = melsecMcNet.Write("D1004", (short) 0);
//        OperateResult write5 = melsecMcNet.Write("D1005", (short) 0);
//        OperateResult write6 = melsecMcNet.Write("D1006", (short) 0);
//        OperateResult write7 = melsecMcNet.Write("D1007", (short) 0);
//        OperateResult write8 = melsecMcNet.Write("D1008", (short) 0);
//        OperateResult write9 = melsecMcNet.Write("D1009", (short) 0);
//        OperateResult write10 = melsecMcNet.Write("D1010", (short) 0);
        if (!write.IsSuccess) {
            log.error("堆垛机plc心跳通讯失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
src/main/resources/application.yml
@@ -34,7 +34,7 @@
  enable: false
wms:
  url: localhost:8080/lfdwms
  url: localhost:8081/lfdwms
# 下位机配置
wcs-slave:
@@ -48,7 +48,7 @@
  crn[0]:
    id: 1
    ip: 10.10.10.1
    port: 102
    port: 6000
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
@@ -63,7 +63,7 @@
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[1].id}
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 106
      row: 2
      bay: 1
@@ -72,7 +72,7 @@
  crn[1]:
    id: 2
    ip: 10.10.10.2
    port: 102
    port: 6000
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
@@ -95,8 +95,8 @@
  # 堆垛机3
  crn[2]:
    id: 3
    ip: 10.10.10.121
    port: 102
    ip: 10.10.10.3
    port: 6000
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
@@ -119,8 +119,8 @@
  # 堆垛机4
  crn[3]:
    id: 4
    ip: 10.10.10.121
    port: 102
    ip: 10.10.10.4
    port: 6000
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
@@ -143,7 +143,7 @@
  # 堆垛机5
  crn[4]:
    id: 5
    ip: 10.10.10.121
    ip: 10.10.10.111
    port: 102
    rack: 0
    slot: 0
@@ -152,14 +152,14 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 202
      row: 10
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 203
      row: 11
      bay: 1
@@ -167,7 +167,7 @@
  # 堆垛机6
  crn[5]:
    id: 6
    ip: 10.10.10.121
    ip: 10.10.10.111
    port: 102
    rack: 0
    slot: 0
@@ -176,14 +176,14 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 208
      row: 13
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 209
      row: 14
      bay: 1
@@ -191,7 +191,7 @@
  # 堆垛机7
  crn[6]:
    id: 7
    ip: 10.10.10.121
    ip: 10.10.10.111
    port: 102
    rack: 0
    slot: 0
@@ -200,14 +200,14 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 214
      row: 16
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 215
      row: 17
      bay: 1
@@ -221,46 +221,50 @@
    slot: 0
    # 入库口1
    inSta[0]:
      staNo: 109
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 108
      backSta: 100
      led: ${wcs-slave.led[0].id}
    # 入库口2
    inSta[1]:
      staNo: 117
      staNo: 109
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 116
      backSta: 108
      led: ${wcs-slave.led[1].id}
    # 入库口3
    inSta[2]:
      staNo: 101
      staNo: 117
      barcode: ${wcs-slave.barcode[2].id}
      backSta: 100
      backSta: 116
      led: ${wcs-slave.led[2].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 109
      staNo: 101
      barcode: ${wcs-slave.barcode[0].id}
      led: ${wcs-slave.led[0].id}
    # 空板入库口2
    emptyInSta[1]:
      staNo: 117
      staNo: 109
      barcode: ${wcs-slave.barcode[1].id}
      led: ${wcs-slave.led[1].id}
    # 空板入库口2
    # 空板入库口3
    emptyInSta[2]:
      staNo: 101
      staNo: 117
      barcode: ${wcs-slave.barcode[2].id}
      led: ${wcs-slave.led[2].id}
    # 出库口1
    outSta[0]:
      staNo: 126
      led: ${wcs-slave.led[3].id}
    # 出库口2
    outSta[1]:
      staNo: 134
      led: ${wcs-slave.led[4].id}
    # 出库口2
    outSta[2]:
      staNo: 100
      led: ${wcs-slave.led[0].id}
#    # 拣料入库口1
#    pickSta[0]:
#      staNo: 126
@@ -281,43 +285,46 @@
      staNo: 201
      barcode: ${wcs-slave.barcode[3].id}
      backSta: 200
      led: ${wcs-slave.led[3].id}
      led: ${wcs-slave.led[5].id}
    # 入库口2
    inSta[1]:
      staNo: 207
      barcode: ${wcs-slave.barcode[4].id}
      backSta: 206
      led: ${wcs-slave.led[4].id}
      led: ${wcs-slave.led[7].id}
    # 入库口3
    inSta[2]:
      staNo: 213
      barcode: ${wcs-slave.barcode[5].id}
      backSta: 212
      led: ${wcs-slave.led[5].id}
      led: ${wcs-slave.led[9].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 201
      barcode: ${wcs-slave.barcode[3].id}
      led: ${wcs-slave.led[3].id}
      led: ${wcs-slave.led[5].id}
    # 空板入库口2
    emptyInSta[1]:
      staNo: 207
      barcode: ${wcs-slave.barcode[4].id}
      led: ${wcs-slave.led[4].id}
      led: ${wcs-slave.led[7].id}
    # 空板入库口3
    emptyInSta[2]:
      staNo: 213
      barcode: ${wcs-slave.barcode[5].id}
      led: ${wcs-slave.led[5].id}
      led: ${wcs-slave.led[9].id}
    # 出库口1
    outSta[0]:
      staNo: 205
      led: ${wcs-slave.led[6].id}
    # 出库口2
    outSta[1]:
      staNo: 211
      led: ${wcs-slave.led[8].id}
    # 出库口3
    outSta[2]:
      staNo: 217
      led: ${wcs-slave.led[10].id}
#    # 拣料入库口1
#    pickSta[0]:
#      staNo: 011
@@ -398,4 +405,39 @@
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011
  # LED7
  led[6]:
    id: 6
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011
  # LED8
  led[7]:
    id: 5
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011
  # LED9
  led[8]:
    id: 6
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011
  # LED10
  led[9]:
    id: 6
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011
  # LED11
  led[10]:
    id: 6
    ip: 10.10.10.202
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 011