自动化立体仓库 - WCS系统
#
luxiaotao1123
2020-08-11 8e1419f1638175151f11d1943a937a4d8a205575
#
3个文件已修改
66 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/Main.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/CrnCommand.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -8,10 +8,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.WaitPakinMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.asrs.service.*;
import com.zy.common.model.StartupDto;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
@@ -60,6 +57,8 @@
    private StaDescService staDescService;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
@@ -342,9 +341,13 @@
            // 获取堆垛机入库站信息
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
            // todo:luxiaotao
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0) {
            // 查询站点详细信息
            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
            if (staDetl == null) {
                log.error("入库库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining().equals("Y")) {
                flag = true;
            }
            if (!flag) {
@@ -363,14 +366,13 @@
                continue;
            }
            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
                log.error("库位状态不符合--状态, 库位号={},库位状态={}", wrkMast.getLocNo(), locMast.getLocSts());
                log.error("入库操作库位状态不符合--状态, 库位号={},库位状态={}", wrkMast.getLocNo(), locMast.getLocSts());
                continue;
            }
            // 命令下发区 --------------------------------------------------------------------------
//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, slave.getId());
//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            CrnCommand crnCommand = new CrnCommand();
            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
            crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 排
@@ -387,17 +389,44 @@
     */
    private void locToCrnStn(CrnSlave slave){
        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
            // 获取堆垛机出库站信息
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
            // 获取工作状态为11(生成出库ID)的出库工作档
            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId());
            if (wrkMast == null) {
                continue;
            }
            // 工作档状态判断
            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
                log.error("查询工作档数据不符合条件--入出类型/站点, 工作号={},源库位={},入出类型={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
                continue;
            }
            // 获取源库位信息
            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
            if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
                log.error("出库操作库位状态不符合--状态, 库位号={},库位状态={}", wrkMast.getLocNo(), sourceSta.getLocSts());
                continue;
            }
            // 获取堆垛机出库站信息
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
            // 查询站点详细信息
            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
            if (staDetl == null) {
                log.error("出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
                continue;
            }
            // 判断堆垛机出库站状态
            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting().equals("Y")
                    && staProtocol.getWorkNo() == 0) {
                // 命令下发区 --------------------------------------------------------------------------
                CrnCommand crnCommand = new CrnCommand();
                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
                crnCommand.setAckFinish((short) 1);  // 任务完成确认位
                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task<>(2, crnCommand))) {
                    log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                }
            }
        }
    }
src/main/java/com/zy/common/Main.java
@@ -56,8 +56,8 @@
    public static void main(String[] args) {
        SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S1200,"192.168.2.125");
        siemens_net.setSlot((byte) 1);
        SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S300,"192.168.6.1");
        siemens_net.setSlot((byte) 2);
        siemens_net.setRack((byte) 0);
        OperateResult connect = siemens_net.ConnectServer();
        if(connect.IsSuccess){
@@ -69,7 +69,7 @@
        siemens_net.ConnectClose();
        short[] array = new short[] {9999,20,31,40,50};
        OperateResult db100 = siemens_net.Write("DB100.0", array);
        OperateResult db100 = siemens_net.Write("DB8.18", array);
        if (db100.IsSuccess) {
            System.out.println("写入成功");
        } else {
@@ -78,7 +78,7 @@
//        OperateResultExOne<Short> shortOperateResultExOne = siemens_net.ReadInt16("DB100.2");
//        System.out.println(shortOperateResultExOne.Content);
        OperateResultExOne<byte[]> read = siemens_net.Read("DB100.0", (short) 10);
        OperateResultExOne<byte[]> read = siemens_net.Read("DB8.18", (short) 10);
        if (read.IsSuccess) {
//            for (int i = 0; i<10; i=i+2) {
//                System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, i));
src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -12,9 +12,6 @@
    // 堆垛机号
    private Integer crnNo;
    // 任务下发确认位
    private Short stb;
    // 任务完成确认位
    private Short ackFinish;