src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/enums/IoModeType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -37,6 +37,7 @@ import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -1588,5 +1589,39 @@ } } /** * 入出库模式切换函数 */ public void ioConvert() { try { // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); WrkMast pakoutOf2F = wrkMastMapper.selectWorkingPakoutOf2F(); if (pakoutOf2F != null) { if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { // 出库切换中 devpThread.ioMode = IoModeType.PAKOUT_BOOTING; WrkMast pakinOf2F = wrkMastMapper.selectWorkingPakinOf2F(); if (pakinOf2F == null && !devpThread.getStation().get(201).isLoading() && !devpThread.getStation().get(202).isLoading()) { // 出库模式 devpThread.ioMode = IoModeType.PAKOUT_MODE; } } } else { // 入库模式 devpThread.ioMode = IoModeType.PAKIN_MODE; } } } 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
@@ -12,6 +12,7 @@ import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.enums.IoModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; @@ -50,6 +51,8 @@ add(180);add(181);add(182);add(183);add(184);add(185);add(186);add(187);add(188);add(189); add(190);add(191);add(192); }}; public IoModeType ioMode = IoModeType.NONE; public SiemensDevpThread(DevpSlave slave) { this.slave = slave; @@ -111,6 +114,8 @@ * 读取状态 ====> 整块plc */ private void read() throws InterruptedException { // 更新入出库模式 updateIoMode(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 186); if (result.IsSuccess) { for (int i = 0; i < 83; i++) { @@ -158,6 +163,11 @@ staProtocol.setPakMk(true); } } } OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0"); if (result2.IsSuccess) { this.ioMode = IoModeType.get(result2.Content); } if (result.IsSuccess && result0.IsSuccess && result1.IsSuccess) { @@ -211,6 +221,16 @@ } } // 更新入出库模式 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()); } } } /** * 心跳 */