| src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/JarThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/RgvThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/SteThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/core/MainProcess.java
@@ -1,5 +1,6 @@ package com.zy.core; import com.core.common.SpringUtils; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.core.properties.SystemProperties; import lombok.Data; @@ -24,6 +25,7 @@ private MainServiceImpl mainService; // 所属线程 private Thread thread; private Thread thread2; // 频率 private int i = 0; private int j = 0; @@ -34,110 +36,121 @@ * =====>> 开始工作 */ public void start(){ thread = new Thread(() -> { while (!Thread.currentThread().isInterrupted()) { try { i++; if (i>5) i=0; j++; if (j>5) j=0; k++; if (k>5) { k=0; l++; if (l>=3) l=0; } thread = new Thread(this::cenAndDevRun); thread.start(); thread2 = new Thread(this::jarRun); thread2.start(); } // 间隔 Thread.sleep(1000); // 系统运行状态判断 if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } private void cenAndDevRun() { while (!Thread.currentThread().isInterrupted()) { try { i++; if (i>5) i=0; //初始化RGV地图 // mainService.initRgvMap(); //刷新RGV地图 // mainService.refreshRgvMap(); // 演示 // mainService.crnDemoOfLocMove1(); // 入出库模式切换函数 // mainService.ioConvert(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 // 间隔 Thread.sleep(1000); mainService.generateStoreWrkFile(); // 组托 mainService.generateStoreWrkFile464(); // 组托464 mainService.generateStoreWrkFileSingle(); // 组托 双工位单伸 小料箱 mainService.generateStoreWrkFileLarge(); // 组托 双工位单伸 大料箱 // 系统运行状态判断 if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 mainService.generateStoreWrkFile(); // 组托 mainService.generateStoreWrkFile464(); // 组托464 mainService.generateStoreWrkFileSingle(); // 组托 双工位单伸 小料箱 mainService.generateStoreWrkFileLarge(); // 组托 双工位单伸 大料箱 // mainService.generateStoreWrkFile0(); // WMS入库 // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 出库 ===>> 堆垛机出库站到出库站 工位2 mainService.crnStnToOutStnTwo(); // 入出库 ===>> 堆垛机入出库作业下发 mainService.crnIoExecute(); // 入出库 ===>> 堆垛机入出库作业下发 双工位堆垛机 mainService.crnIoExecuteTwo(); // 入出库 ===>> 堆垛机入出库作业下发 双工位堆垛机 拆分执行任务下发 mainService.crnIoExecuteTwoExecute(i);//Execute if (i%2==0){ // 入库 ===>> 执行对工作档的完成操作 mainService.storeFinished(); }else { // 入库 ===>> 执行对工作档的完成操作 工位2 mainService.storeFinishedTwo(); } // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 出库 ===>> 堆垛机出库站到出库站 工位2 mainService.crnStnToOutStnTwo(); // 入出库 ===>> 堆垛机入出库作业下发 mainService.crnIoExecute(); // 入出库 ===>> 堆垛机入出库作业下发 双工位堆垛机 mainService.crnIoExecuteTwo(); // 入出库 ===>> 堆垛机入出库作业下发 双工位堆垛机 拆分执行任务下发 mainService.crnIoExecuteTwoExecute(i);//Execute if (i%2==0){ // 入库 ===>> 执行对工作档的完成操作 mainService.storeFinished(); }else { // 入库 ===>> 执行对工作档的完成操作 工位2 mainService.storeFinishedTwo(); } // // 异常信息记录 // mainService.recErr(); // 入库 ===>> 空栈板初始化入库 mainService.storeEmptyPlt(); // 入库 ===>> 空栈板初始化入库 双工位单伸 小料箱 mainService.storeEmptyPltSingle(); // 入库 ===>> 空栈板初始化入库 双工位单伸 大料箱 mainService.storeEmptyPltLarge(); // 出库 ===>> 工作档信息写入led显示器 mainService.ledExecute(); // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(); // 入库 ===>> 空栈板初始化入库 mainService.storeEmptyPlt(); // 入库 ===>> 空栈板初始化入库 双工位单伸 小料箱 mainService.storeEmptyPltSingle(); // 入库 ===>> 空栈板初始化入库 双工位单伸 大料箱 mainService.storeEmptyPltLarge(); // 出库 ===>> 工作档信息写入led显示器 mainService.ledExecute(); // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(); /************************************JAR调度************************************/ mainService.stackingCompletionDriveTray();//分配硫化罐 mainService.stackingCompletionDriveTray2();//分配硫化罐 //Jar充电任务完成 mainService.jarChargeComplete(); //JarWrkMastExecute任务完成 mainService.jarWrkMastExecuteGenerateComplete(k); //JarWrkMastExecute任务创建 //硫化罐 mainService.jarWrkMastExecuteGenerate(k); //JarWrkMastExecute任务执行 mainService.jarWrkMastExecuteAction(k,l); //Jar任务创建 mainService.jarMastGenerate(); //Jar任务完成 mainService.jarMastGenerateComplete(); //Jar充电任务创建 mainService.jarChargeGenerate(); /************************************JAR调度************************************/ mainService.signTrunBig(); mainService.signTrunBig(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } }); thread.start(); } } private void jarRun() { while (!Thread.currentThread().isInterrupted()) { try { // 间隔 Thread.sleep(1000); // 系统运行状态判断 if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } k++; if (k>5) { k=0; l++; if (l>=3) l=0; } /************************************JAR调度************************************/ mainService.stackingCompletionDriveTray();//分配硫化罐 mainService.stackingCompletionDriveTray2();//分配硫化罐 //Jar充电任务完成 mainService.jarChargeComplete(); //JarWrkMastExecute任务完成 mainService.jarWrkMastExecuteGenerateComplete(k); //JarWrkMastExecute任务创建 //硫化罐 mainService.jarWrkMastExecuteGenerate(k); //JarWrkMastExecute任务执行 mainService.jarWrkMastExecuteAction(k,l); //Jar任务创建 mainService.jarMastGenerate(); //Jar任务完成 mainService.jarMastGenerateComplete(); //Jar充电任务创建 mainService.jarChargeGenerate(); /************************************JAR调度************************************/ } catch (Exception e) { e.printStackTrace(); } } } @PreDestroy public void shutDown(){ if (thread != null) thread.interrupt(); if (thread2 != null) thread2.interrupt(); } } src/main/java/com/zy/core/thread/JarThread.java
@@ -40,6 +40,8 @@ private JarSlave slave; private JarProtocol jarProtocol; private short heartBeatVal = 1; private boolean connectJar = false; public JarThread(JarSlave slave) { this.slave = slave; @@ -48,7 +50,33 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); connectJar = this.connect(); while(!connectJar){ try { connectJar = this.connect(); Thread.sleep(100); } catch (Exception e){ } } // 启动线程自动重连 new Thread(this::jarConnect).start(); // 启动读数据线程 new Thread(this::readStatusJar).start(); // 启动任务下发线程 new Thread(this::taskIssued).start(); } /** * 任务下发 */ private void taskIssued() { while (true) { try { int step = 1; @@ -59,7 +87,7 @@ switch (step) { // 读数据 case 1: readStatus(); // readStatus(); break; // 写数据 ID+目标站 case 2: @@ -70,14 +98,55 @@ } // 心跳 // heartbeat(); Thread.sleep(500); Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); log.error("JAR写线程异常"+e.getMessage()); // e.printStackTrace(); } } } private void jarConnect() { while (true) { try { Thread.sleep(1000); if(!connectJar){ try { connectJar = this.connect(); Thread.sleep(100); } catch (Exception e){ } } } catch (Exception e) { log.error("rgv连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); // e.printStackTrace(); } } } private void readStatusJar() { while (true) { try { Thread.sleep(50); // System.out.println("读线程"+ slave.getId()); readStatus(); } catch (Exception e) { log.error("RGV数据读取线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); // e.printStackTrace(); } } } /** * 初始化堆垛机状态 */ src/main/java/com/zy/core/thread/RgvThread.java
@@ -43,6 +43,8 @@ * 工位1复位信号 */ private boolean resetFlag1 = false; private boolean connectRgv = false; /** * 工位2复位信号 */ @@ -55,7 +57,70 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); connectRgv = this.connect(); while(!connectRgv){ try { connectRgv = this.connect(); Thread.sleep(100); } catch (Exception e){ } } // 启动线程自动重连 new Thread(this::rgvConnect).start(); // 启动读数据线程 new Thread(this::readStatusRgv).start(); // 启动任务下发线程 new Thread(this::taskIssued).start(); } private void rgvConnect() { while (true) { try { Thread.sleep(1000); if(!connectRgv){ try { connectRgv = this.connect(); Thread.sleep(100); } catch (Exception e){ } } } catch (Exception e) { log.error("rgv连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initRgv(); // e.printStackTrace(); } } } private void readStatusRgv() { while (true) { try { Thread.sleep(50); readStatus(); } catch (Exception e) { log.error("RGV读线程异常"+e.getMessage()); log.error("RGV数据读取线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initRgv(); // e.printStackTrace(); } } } /** * 任务下发 */ private void taskIssued() { while (true) { try { int step = 1; @@ -66,7 +131,7 @@ switch (step) { // 读数据 case 1: readStatus(); // readStatus(); break; // 工位1、2写入数据 case 2: @@ -123,8 +188,10 @@ default: break; } Thread.sleep(500); Thread.sleep(200); } catch (Exception e) { log.error("RGV写线程异常"+e.getMessage()); // e.printStackTrace(); } @@ -135,23 +202,27 @@ * 初始化RGV状态 */ private void initRgv() { if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); try{ if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); } rgvProtocol.setMode((short) -1); rgvProtocol.setStatus((short)-1); rgvProtocol.setTaskNo1((short)0); rgvProtocol.setStatus1((short)-1); rgvProtocol.setLoaded1((short)0); rgvProtocol.setWalkPos((short)0); rgvProtocol.setRgvPos((short)0); rgvProtocol.setTaskNo2((short)0); rgvProtocol.setStatus2((short)-1); rgvProtocol.setLoaded2((short)0); rgvProtocol.setAlarm((short)0); rgvProtocol.setxSpeed((short) 0); rgvProtocol.setxDistance((short) 0); rgvProtocol.setxDuration((short) 0); }catch (Exception e){ log.error("初始化RGV失败"+e.getMessage()); } rgvProtocol.setMode((short) -1); rgvProtocol.setStatus((short)-1); rgvProtocol.setTaskNo1((short)0); rgvProtocol.setStatus1((short)-1); rgvProtocol.setLoaded1((short)0); rgvProtocol.setWalkPos((short)0); rgvProtocol.setRgvPos((short)0); rgvProtocol.setTaskNo2((short)0); rgvProtocol.setStatus2((short)-1); rgvProtocol.setLoaded2((short)0); rgvProtocol.setAlarm((short)0); rgvProtocol.setxSpeed((short) 0); rgvProtocol.setxDistance((short) 0); rgvProtocol.setxDuration((short) 0); } @Override src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -134,6 +134,9 @@ add(696);add(697);add(698);add(699); }}; private boolean connectDev = false; /** * 条码数量 */ @@ -167,10 +170,85 @@ } } /** * 初始化站点状态 */ private void initSite() { try{ ArrayList<Integer> staNos = getStaNo(); // 站点编号 for (Integer siteId : staNos) { StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setSiteId(siteId); staProtocol.setWorkNo(0); // ID staProtocol.setAutoing(false); // 自动 staProtocol.setLoading(false); // 有物 staProtocol.setInEnable(false); // 可入 staProtocol.setOutEnable(false); // 可出 staProtocol.setEmptyMk(false); // 空板信号 staProtocol.setStaNo(0); // 目标站 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { staProtocol.setPakMk(true); } } } catch (Exception e){ try{ log.error(e.getMessage()); } catch (Exception e1){ } log.error("初始化站点状态异常"); } } @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { connect(); connectDev = connect(); while(!connectDev){ try { connectDev = this.connect(); Thread.sleep(100); } catch (Exception e){ } } // 启动线程自动重连 new Thread(this::devConnect).start(); new Thread(this::readStatusDev).start(); new Thread(this::writeStatusDev).start(); } private void devConnect() { while (true) { try { Thread.sleep(1000); if(!connectDev){ try { connectDev = this.connect(); Thread.sleep(100); } catch (Exception e){ } } } catch (Exception e) { log.info("dev连接失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSite(); // e.printStackTrace(); } } } private void writeStatusDev() { while (true) { try { int step = 1; @@ -181,7 +259,7 @@ switch (step) { // 读数据 case 1: read(); // read(); break; // 写数据 ID+目标站 case 2: @@ -220,10 +298,34 @@ // heartbeat(); Thread.sleep(400); } catch (Exception e) { e.printStackTrace(); // e.printStackTrace(); try{ log.error("dev写线程异常"+e.getMessage()); } catch (Exception e1){ } log.error("DEV数据写入线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } } private void readStatusDev() { while (true) { try { Thread.sleep(50); read(); } catch (Exception e) { log.error("Dev数据读取线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSite(); } } } @Override src/main/java/com/zy/core/thread/SteThread.java
@@ -44,6 +44,7 @@ private SteProtocol steProtocol; private short heartBeatVal = 1; private boolean resetFlag = false; private boolean connectSte = false; public SteThread(SteSlave slave) { this.slave = slave; @@ -52,7 +53,31 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); connectSte = this.connect(); while(!connectSte){ try { connectSte = this.connect(); Thread.sleep(100); } catch (Exception e){ } } // 启动线程自动重连 new Thread(this::steConnect).start(); // 启动读数据线程 new Thread(this::readStatusSte).start(); // 启动任务下发线程 new Thread(this::taskIssued).start(); } /** * 任务下发 */ private void taskIssued() { while (true) { try { int step = 1; @@ -63,7 +88,7 @@ switch (step) { // 读数据 case 1: readStatus(); // readStatus(); break; // 写入数据 case 2: @@ -74,14 +99,55 @@ } // 心跳 // heartbeat(); Thread.sleep(500); Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); log.error("STE写线程异常"+e.getMessage()); // e.printStackTrace(); } } } private void steConnect() { while (true) { try { Thread.sleep(1000); if(!connectSte){ try { connectSte = this.connect(); Thread.sleep(100); } catch (Exception e){ } } } catch (Exception e) { log.error("ste连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); // e.printStackTrace(); } } } private void readStatusSte() { while (true) { try { Thread.sleep(50); // System.out.println("读线程"+ slave.getId()); readStatus(); } catch (Exception e) { log.error("RGV数据读取线程异常!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initSte(); // e.printStackTrace(); } } } /** * 初始化堆垛机状态 */