自动化立体仓库 - WCS系统
#
18516761980
2022-08-10 740b16bc580b06fc86fd497887364cff44115cf6
#
5个文件已修改
136 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -70,9 +70,9 @@
    @Update("update cust_wait_pakin set io_status='F' where zpallet = #{barcode}")
    int updateWaitPakInStep2(String barcode);
    WrkMast selectWorkingPakin();
    WrkMast selectWorkingPakout();
//    WrkMast selectWorkingPakin();
//
//    WrkMast selectWorkingPakout();
    /**
     * 堆垛机是否存在出库任务
@@ -98,4 +98,7 @@
     * @return
     */
    List<WrkMast> selectPakOutStep11(@Param("crnNo")Integer crnNO, @Param("sourceStaNo")Integer sourceStaNo);
    WrkMast selectWorkingPakin(@Param("sourceStaNo")Integer sourceStaNo);
    WrkMast selectWorkingPakout(@Param("sourceStaNo")Integer sourceStaNo);
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1861,22 +1861,32 @@
            for (DevpSlave devp : slaveProperties.getDevp()) {
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                WrkMast pakout = wrkMastMapper.selectWorkingPakout();
                if (pakout != null) {
                    if (devpThread.ioMode != IoModeType.PAKOUT_MODE) {
                        // 出库切换中
                        devpThread.ioMode = IoModeType.PAKOUT_BOOTING;
                        WrkMast pakin = wrkMastMapper.selectWorkingPakin();
                        if (pakin == null) {
                            // 出库模式
                            devpThread.ioMode = IoModeType.PAKOUT_MODE;
                        }
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    if (inSta.getStaNo() == 2) {
                        continue;
                    }
                } else {
                    // 入库模式
                    devpThread.ioMode = IoModeType.PAKIN_MODE;
                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
                    switch (inSta.getStaNo()) {
                        case 203://1F
                            if (pakout != null) {
                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                    // 出库切换中
                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
                                            && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading()) {
                                        // 出库模式
                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
                                    }
                                }
                            } else {
                                // 入库模式
                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                            }
                            break;
                    }
                }
            }
        } catch (Exception e) {
src/main/java/com/zy/core/MainProcess.java
@@ -24,6 +24,8 @@
    private MainServiceImpl mainService;
    // 所属线程
    private Thread thread;
    // 频率
    private int i = 0;
    /**
     * =====>>  开始工作
@@ -69,6 +71,13 @@
                    mainService.outOfDevp();
                    // 其他  ===>> 入出库模式切换
                    i++;
                    if (i > 1) {
                        mainService.ioConvert();
                        i = 0;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -51,7 +51,17 @@
     * 条码数量
     */
    private int barcodeSize = 3;
    public IoModeType ioMode = IoModeType.NONE;
    /**
     * 入出库模式
     * 0:未知
     * 1:入库启动中
     * 2.入库模式
     * 3.出库启动中 (不能生成入库工作档)
     * 4.出库模式
     */
    public IoModeType ioModeOf2F = IoModeType.NONE;
//    public IoModeType ioMode = IoModeType.NONE;
    public SiemensDevpThread(DevpSlave slave) {
        this.slave = slave;
@@ -114,7 +124,7 @@
     */
    private void read() throws InterruptedException {
//        // 更新入出库模式
//        updateIoMode();
        updateIoMode();
        int staNoSize = staNos.size();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
        if (result.IsSuccess) {
@@ -245,10 +255,10 @@
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
        if (this.ioMode != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB200", this.ioMode.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线1F入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线1F入出库模式失败。输送线plc编号={}", slave.getId());
        if (this.ioModeOf2F != IoModeType.NONE) {
            if (!siemensS7Net.Write("DB100.180", this.ioModeOf2F.id).IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线2F入出库模式失败。输送线plc编号={1}", slave.getId()));
                log.error("写入输送线2F入出库模式失败。输送线plc编号={}", slave.getId());
            }
        }
    }
src/main/resources/mapper/WrkMastMapper.xml
@@ -119,26 +119,26 @@
        select top 1 * from dbo.asr_wrk_mast where 1=1 and (wrk_sts=3 or wrk_sts=12) and crn_no=#{crnNo} order by io_time,wrk_no
    </select>
    <!-- 入库任务 -->
    <select id="selectWorkingPakin" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = 180 order by io_time,wrk_no
    </select>
<!--    &lt;!&ndash; 入库任务 &ndash;&gt;-->
<!--    <select id="selectWorkingPakin" resultMap="BaseResultMap">-->
<!--        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = 180 order by io_time,wrk_no-->
<!--    </select>-->
    <!-- 出库任务 -->
    <select id="selectWorkingPakout" resultMap="BaseResultMap">
        select top 1 *
        from dbo.asr_wrk_mast
        where (wrk_sts in (11,12)
        or (wrk_sts in (14,15) and wrk_no in
        (
        select wrk_no
        from asr_bas_devp
        where wrk_no > 0)
        ))
        and io_type != 11
        and source_sta_no = 180
        order by io_time,wrk_no
    </select>
<!--    &lt;!&ndash; 出库任务 &ndash;&gt;-->
<!--    <select id="selectWorkingPakout" resultMap="BaseResultMap">-->
<!--        select top 1 *-->
<!--        from dbo.asr_wrk_mast-->
<!--        where (wrk_sts in (11,12)-->
<!--        or (wrk_sts in (14,15) and wrk_no in-->
<!--        (-->
<!--        select wrk_no-->
<!--        from asr_bas_devp-->
<!--        where wrk_no > 0)-->
<!--        ))-->
<!--        and io_type != 11-->
<!--        and source_sta_no = 180-->
<!--        order by io_time,wrk_no-->
<!--    </select>-->
    <select id="selectCrnWorking" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts in (3,4,11,12) and crn_no=#{crnNo} order by io_time,wrk_no
@@ -155,4 +155,24 @@
    <select id="selectPakOutStep11" resultMap="BaseResultMap">
        select * from dbo.asr_wrk_mast where crn_no=#{crnNo} and source_sta_no=#{sourceStaNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc
    </select>
    <!--                                       入出库模式相关                                      -->
    <select id="selectWorkingPakin" resultMap="BaseResultMap">
        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = #{sourceStaNo} order by io_time,wrk_no
    </select>
    <select id="selectWorkingPakout" resultMap="BaseResultMap">
        select top 1 *
        from dbo.asr_wrk_mast
        where (wrk_sts in (11,12)
        or (wrk_sts in (14,15) and wrk_no in
        (
        select wrk_no
        from asr_bas_devp
        where wrk_no > 0)
        ))
        and io_type != 11
        and source_sta_no = #{sourceStaNo}
        order by io_time,wrk_no
    </select>
</mapper>