src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/enums/IoModeType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/WrkMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -116,4 +116,7 @@ List<WrkMast> selectWrkStsAndIoType(@Param("sour")Integer sour); List<WrkMast> selectWrkStsAndIoType0(@Param("sour")Integer sour); WrkMast selectWorkingPakin(@Param("sourceStaNo")Integer sourceStaNo); WrkMast selectWorkingPakout(@Param("sourceStaNo")Integer sourceStaNo); } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3863,4 +3863,63 @@ } } /** * 入出库模式切换函数 */ public synchronized void ioConvert() { try { // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); for (DevpSlave.Sta inSta : devp.getInSta()) { Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204; WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo); switch (inSta.getStaNo()) { case 103://1F if (pakout != null) { if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) { // 出库切换中 // devpThread.ioModeOf1F = 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.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) { // // 出库模式 devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE; // } } } else { // 入库模式 devpThread.ioModeOf1F = IoModeType.PAKIN_MODE; } break; case 203://2F 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.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { // // 出库模式 devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE; // } } } else { // 入库模式 devpThread.ioModeOf2F = IoModeType.PAKIN_MODE; } break; } } } } catch (Exception e) { e.printStackTrace(); } } } src/main/java/com/zy/core/MainProcess.java
@@ -22,6 +22,8 @@ private MainServiceImpl mainService; // 所属线程 private Thread thread; // 频率 private int i = 0; /** * =====>> 开始工作 @@ -75,6 +77,13 @@ // 穿梭车 ===>> 小车电量检测充电 mainService.loopSteCharge(); // 其他 ===>> 入出库模式切换 i++; if (i > 1) { mainService.ioConvert(); i = 0; } } catch (Exception e) { e.printStackTrace(); } src/main/java/com/zy/core/enums/IoModeType.java
New file @@ -0,0 +1,32 @@ package com.zy.core.enums; /** * 入出库模式枚举 */ public enum IoModeType { NONE((short) 0, "未知"), PAKIN_BOOTING((short) 1, "入库启动中"), PAKIN_MODE((short) 2, "入库模式"), PAKOUT_BOOTING((short) 3, "出库启动中"), PAKOUT_MODE((short) 4, "出库模式"), ; public Short id; public String desc; IoModeType(Short id, String desc) { this.id = id; this.desc = desc; } public static IoModeType get(Short id) { for (IoModeType type : IoModeType.values()) { if (id.equals(type.id)) { return type; } } return IoModeType.NONE; } } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -15,6 +15,7 @@ import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.IoModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; @@ -57,6 +58,17 @@ public SiemensDevpThread(DevpSlave slave) { this.slave = slave; } /** * 入出库模式 * 0:未知 * 1:入库启动中 * 2.入库模式 * 3.出库启动中 (不能生成入库工作档) * 4.出库模式 */ public IoModeType ioModeOf1F = IoModeType.NONE; public IoModeType ioModeOf2F = IoModeType.NONE; @Override @SuppressWarnings("InfiniteLoopStatement") @@ -114,6 +126,8 @@ * 读取状态 ====> 整块plc */ private void read() throws InterruptedException { // 更新入出库模式 updateIoMode(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50); if (result.IsSuccess) { for (int i = 0; i < 25; i++) { @@ -238,6 +252,22 @@ } } // 更新入出库模式 private void updateIoMode() throws InterruptedException { if (this.ioModeOf1F != IoModeType.NONE) { if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线103入出库模式失败。输送线plc编号={1}", slave.getId())); News.error("写入输送线103入出库模式失败。输送线plc编号={}", slave.getId()); } } if (this.ioModeOf2F != IoModeType.NONE) { if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线203入出库模式失败。输送线plc编号={1}", slave.getId())); News.error("写入输送线203入出库模式失败。输送线plc编号={}", slave.getId()); } } } /** * 心跳 */ src/main/resources/mapper/WrkMastMapper.xml
@@ -209,4 +209,19 @@ </if> </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 > 10 and io_type > 100 and io_type != 11 and source_sta_no = #{sourceStaNo} order by io_time,wrk_no </select> </mapper>