| src/main/java/com/zy/asrs/controller/ConsoleController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/controller/SiteController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/model/protocol/LiftProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/console.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/pipeline.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -24,15 +24,14 @@ import com.zy.core.CrnThread; import com.zy.core.DevpThread; import com.zy.core.Slave; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.CrnModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; import com.zy.core.model.LedSlave; import com.zy.core.model.RgvSlave; import com.zy.core.model.*; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; @@ -410,4 +409,46 @@ return R.ok(); } @GetMapping("/getIoMode") public R getIoMode() { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); if (devpThread == null) { return R.error("线程不存在"); } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if (liftProtocol == null) { return R.error("线程不存在"); } return R.ok().add(liftProtocol.getIoMode()); } @PostMapping("/switchIoMode") public R switchIoMode() { DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); if (devpThread == null) { return R.error("线程不存在"); } LiftProtocol liftProtocol = devpThread.getLiftStatus(); if (liftProtocol == null) { return R.error("线程不存在"); } //检测是否还有任务没做完 List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()); if (!wrkMasts.isEmpty()) { return R.error("系统任务未完成,请完成后再切换模式"); } int switchIoMode = 1; if (liftProtocol.getIoMode() == 1) { switchIoMode = 2; } boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, switchIoMode)); return R.ok(); } } src/main/java/com/zy/asrs/controller/SiteController.java
@@ -156,7 +156,6 @@ vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 需求1 vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 空板信号 vo.setStaNo(staProtocol.getStaNo()); // 目标站 vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高"); //高低库位 return R.ok().add(vo); } } src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -16,4 +16,7 @@ //0未完成 1已完成 private Short taskStatus = 0; //出入库模式 1:入库 2:出库 private Short ioMode = 0; } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -130,6 +130,8 @@ case 2: write((LiftCommand) task.getData()); break; case 3: writeIoMode((Integer) task.getData()); default: break; } @@ -231,6 +233,7 @@ liftProtocol.setDeviceStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 2)); // 设备状态 liftProtocol.setTaskStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4)); // 完成信号 liftProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6)); // 工作号 liftProtocol.setIoMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 10)); // 出入库模式 } //温湿度信息反馈 @@ -293,7 +296,7 @@ /** * 写入命令 */ private void write(LiftCommand liftCommand) throws InterruptedException { private void write(LiftCommand liftCommand) { if (null == liftCommand) { return; } @@ -314,6 +317,27 @@ } /** * 写入命令 */ private void writeIoMode(Integer ioMode) { if (null == ioMode) { return; } short[] array = new short[1]; array[0] = ioMode.shortValue(); OperateResult write = siemensS7Net.Write("DB100.12", array); if (!write.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入出入库模式数据失败。输送线plc编号={1},站点数据={2}", DateUtils.convert(new Date()), slave.getId(), ioMode)); News.error("SiemensDevp"+" - 4"+" - 写入出入库模式数据失败。输送线plc编号={},站点数据={}", slave.getId(), ioMode); } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 出入库模式命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), ioMode)); News.info("SiemensDevp"+" - 5"+" - 出入库模式命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), ioMode); } } /** * 设置入库标记 */ @Override src/main/webapp/views/console.html
@@ -40,47 +40,14 @@ </div> </div> </div> <!-- 堆垛机状态 --> <div class="machine-status"> <div class="body-head">堆垛机状态</div> <div class="state"> <span>堆垛机 1</span> <span class="state-ss machine-put-flag ">入库</span> </div> <div class="state"> <span>堆垛机 2</span> <span class="state-ss machine-auto-flag ">自动</span> </div> <div class="button"><span>所有状态</span></div> <div class="button item-group"> <span class="machine-put-flag">入库</span> <span class="machine-take-flag">出库</span> <span class="machine-stock-move-flag">库到库</span> <span class="machine-site-move-flag">站到站</span> <span class="machine-p-move-flag">PToP</span> <span class="machine-error-flag">异常</span> <span class="machine-auto-flag">自动</span> <span class="machine-unauto-flag">非自动/手动</span> </div> </div> <div class="line-status"> <div class="body-head">输送线状态</div> <div class="state"> <span>运输线总数</span> <span id="line-total" class="line-ss"></span> </div> <div class="state"> <span>输送线任务 <span id="devpTaskStackOver"></span></span> <span id="devpWorkingCount" class="line-ss"></span> </div> <div class="button"><span>所有状态</span></div> <div class="button item-group"> <span class="site-auto-run-id">自动+有物+ID</span> <span class="site-auto-run">自动+有物</span> <span class="site-auto-id">自动+ID</span> <span class="site-auto">自动</span> <span class="site-unauto">非自动/手动</span> <div class="body-head">出入库模式</div> <div class="button" onclick="switchIoMode()"><span class="site-auto-id">点击切换模式</span></div> <div class="button" style="margin-top: 10px;"> <span>当前模式:</span> <span id="ioMode-in" class="site-auto">入库模式</span> <span id="ioMode-out" class="site-auto-run">出库模式</span> <span id="ioMode-none" class="site-unauto">未知模式</span> </div> </div> <div class="bar-code"> @@ -341,6 +308,7 @@ setInterval(function () { getCodeData(); renderBarCode(); getIoModeInfo() }, 1000) var tData = [],tData1 = [],tData2 = [],tData3 = []; function getCodeData() { @@ -348,7 +316,6 @@ url: baseUrl + '/console/barcode/output/site', method: 'GET', success: function (res) { console.log(res) if (res.code === 200) { tData = eval(res.data); if (tData.length <= 5) { @@ -372,6 +339,7 @@ } }) } function renderBarCode() { for (var i = 0; i < tData1.length; i++) { var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>' @@ -386,6 +354,56 @@ $('#barcode3').append(str3) } } function getIoModeInfo() { $.ajax({ url: baseUrl + "/console/getIoMode", headers: {'token': localStorage.getItem('token')}, method: 'GET', success: function (res) { if (res.code === 200){ let ioModeData = res.data; if (ioModeData == 1) { $("#ioMode-none").hide() $("#ioMode-in").show() $("#ioMode-out").hide() }else if(ioModeData == 2) { $("#ioMode-none").hide() $("#ioMode-in").hide() $("#ioMode-out").show() }else { $("#ioMode-none").show() $("#ioMode-in").hide() $("#ioMode-out").hide() } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { console.log(res.msg); } } }); } function switchIoMode() { $.ajax({ url: baseUrl + "/console/switchIoMode", headers: { 'token': localStorage.getItem('token') }, data: {}, method: 'post', success: function (res) { if (res.code === 200){ layer.msg(res.msg) } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { layer.msg(res.msg) } } }); } </script> <script type="text/javascript"> // 弹窗站点信息 src/main/webapp/views/pipeline.html
@@ -180,7 +180,6 @@ var siteTableFullRows = 0; var outputDom = document.getElementById("output"); $(document).ready(function() { getIoModeInfo(); initPlcErrorTable(); getPlcError(); initSiteTable(); @@ -190,7 +189,6 @@ setInterval(function () { getPlcError(); starGetSite(); getIoModeInfo(); }, 1000); setInterval(function () { getSiteOutput(); @@ -201,61 +199,6 @@ } else { getSite(); } } var ioModeData; function getIoModeInfo() { $.ajax({ url: baseUrl+ "/site/io/mode/info/site", headers: {'token': localStorage.getItem('token')}, method: 'GET', success: function (res) { if (res.code === 200){ ioModeData = res.data; ioModeData.forEach(function (e) { $("#io-mode-"+e.floor).html(e.modeDesc); }) } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { console.log(res.msg); } } }); } /** * 强制切换入出库模式 */ function ioModeSwitch(el) { var floor = el.split("-")[2]; if (ioModeData != null && ioModeData.length > 1) { ioModeData.forEach(function(e) { if (e.floor === Number(floor)) { if (e.modeVal === 3 || e.modeVal === 4) { layer.confirm('确定切换为入库模式吗?',function () { $.ajax({ url: baseUrl+ "/site/io/mode/action/site", headers: {'token': localStorage.getItem('token')}, data: {floor: e.floor}, method: 'POST', success: function (res) { if (res.code === 200){ layer.msg("暂时不能切换!", {icon: 1}) } else if (res.code === 403){ window.location.href = baseUrl+"/login"; } else { console.log(res.msg); } } }); layer.closeAll(); }) } } }); } } // plc异常信息表获取