commit
This commit is contained in:
		| @@ -7,6 +7,10 @@ import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar; | ||||
| import com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar; | ||||
| import com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar; | ||||
| import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||
| import com.cnbm.packing.dto.CamlineExtendArgDTO; | ||||
| import com.cnbm.packing.entity.WoPackagingBox; | ||||
| import com.cnbm.packing.entity.WoPackagingBoxSubstrate; | ||||
| import com.cnbm.packing.entity.WoPowerLevel; | ||||
| import com.cnbm.packing.service.*; | ||||
| import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||
| import com.cnbm.s7.s7connector.type.PlcVar; | ||||
| @@ -18,6 +22,8 @@ import org.springframework.boot.ApplicationRunner; | ||||
| import org.springframework.core.annotation.Order; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.Arrays; | ||||
| import java.util.Date; | ||||
| import java.util.concurrent.Executors; | ||||
| import java.util.concurrent.ScheduledExecutorService; | ||||
| @@ -150,199 +156,191 @@ public class KukaJoinThread implements ApplicationRunner { | ||||
|     @Override | ||||
|     public void run(ApplicationArguments args) throws Exception { | ||||
|  | ||||
| //        kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||
| //            @Override | ||||
| //            public void run() { | ||||
|         kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 //调度开始 | ||||
| //                logger.info(""); | ||||
| //                logger.info("=================  现在开始执行 过程一 任务   =================="); | ||||
| //            } | ||||
| //        },1,1, TimeUnit.SECONDS); | ||||
|                 Integer subArrived = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, true); | ||||
|                 if(subArrived != 1){ | ||||
|                     logger.info("失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
|                 } | ||||
|  | ||||
|                 //一. 从plc 中获取 subId 和 lineNum | ||||
|                 String subId = (String) read(S7Client.S7_KUKA,Step1Plc2MesVar.SubIdToMes); | ||||
|                 Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step1Plc2MesVar.LineNum); | ||||
|  | ||||
|  | ||||
|                 //二. MES 业务 | ||||
|                 //===============           MES 业务 开始         ================= | ||||
|                 //1. 从comline数据库中获取 实际pmpp | ||||
|                 float pmppBySubId = service.getPMPPBySubId(subId); | ||||
|                 //2. 匹配和计算补偿功率 | ||||
|                 float actualPMPP = compensationPowerServiceBiz.calculCompensationPMPP(pmppBySubId,lineNum); | ||||
|                 //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||
|                 WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(actualPMPP, lineNum); | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||
|                 logger.info("采集到 基板ID: "+subId+", 线边号:"+lineNum+",dLable_Pnom: "+argByPMPP.getPowerClass() +",dLable_Voc: "+argByPMPP.getLableVoc()+",dLable_Isc: "+argByPMPP.getLableIsc()+",dLable_Vmpp: "+argByPMPP.getLableVmpp()+",dLable_Impp: "+argByPMPP.getLableImpp()); | ||||
|  | ||||
| //        kukaStep1.scheduleAtFixedRate(new Runnable() { | ||||
| //            @Override | ||||
| //            public void run() { | ||||
| //                //调度开始 | ||||
| ////                logger.info(""); | ||||
| ////                logger.info("=================  现在开始执行 过程一 任务   =================="); | ||||
| //                Integer subArrived = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, true); | ||||
| //                if(subArrived != 1){ | ||||
| //                    logger.info("失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
| //                } | ||||
| // | ||||
| //                //一. 从plc 中获取 subId 和 lineNum | ||||
| //                String subId = (String) read(S7Client.S7_KUKA,Step1Plc2MesVar.SubIdToMes); | ||||
| //                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step1Plc2MesVar.LineNum); | ||||
| //                logger.info("采集到 基板ID: "+subId+", 线边号:"+lineNum); | ||||
| // | ||||
| //                //二. MES 业务 | ||||
| //                //===============           MES 业务 开始         ================= | ||||
| //                //1. 从comline数据库中获取 实际pmpp | ||||
| //                float pmppBySubId = service.getPMPPBySubId(subId); | ||||
| //                //2. 匹配和计算补偿功率 | ||||
| //                float actualPMPP = compensationPowerServiceBiz.calculCompensationPMPP(pmppBySubId,lineNum); | ||||
| //                //3. 依据补偿功率,获取工艺参数,并且把这些工艺参数传给kuka | ||||
| //                WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(actualPMPP, lineNum); | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())); | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()); | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()); | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()); | ||||
| // | ||||
| // | ||||
| // | ||||
| //                //4. 把基板录到数据库 | ||||
| //                WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); | ||||
| //                woPackagingBoxSubstrate.setLineBody(lineNum); | ||||
| //                woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()); | ||||
| //                woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()); | ||||
| //                woPackagingBoxSubstrate.setWoSubstrateId(subId); | ||||
| // | ||||
| //                //5. 从camline那里获取可变字段 | ||||
| //                CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); | ||||
| //                woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); | ||||
| //                woPackagingBoxSubstrate.setPmpp(actualPMPP); | ||||
| //                woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()); | ||||
| //                woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); | ||||
| //                woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); | ||||
| //                woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()); | ||||
| //                woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); | ||||
| //                woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()); | ||||
| //                woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); | ||||
| //                woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()); | ||||
| //                woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); | ||||
| //                woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()); | ||||
| //                woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); | ||||
| //                woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); | ||||
| //                woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); | ||||
| //                woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); | ||||
| //                woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); | ||||
| //                woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); | ||||
| //                woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()); | ||||
| //                woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); | ||||
| //                woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()); | ||||
| //                woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); | ||||
| //                woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2()); | ||||
| //                woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); | ||||
| //                woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()); | ||||
| //                woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()); | ||||
| //                woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()); | ||||
| //                woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); | ||||
| //                woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); | ||||
| //                woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); | ||||
| //                woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); | ||||
| //                woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()); | ||||
| //                woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); | ||||
| // | ||||
| //                substrateServiceBiz.insert(woPackagingBoxSubstrate); | ||||
| //                //===============           MES 业务 结束         ================= | ||||
| // | ||||
| //                //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||
| // | ||||
| //                //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
| //                Integer subArrived2 = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, false); | ||||
| //                if(subArrived2 != 1){ | ||||
| //                    logger.info("失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
| //                } | ||||
| //                write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,false); | ||||
| //            } | ||||
| //        },1,1, TimeUnit.SECONDS); | ||||
| // | ||||
| // | ||||
| //        kukaStep2.scheduleAtFixedRate(new Runnable() { | ||||
| //            @Override | ||||
| //            public void run() { | ||||
| //                //调度开始 | ||||
| // | ||||
| //                Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); | ||||
| //                if(shelfIsFull != 1){ | ||||
| //                    logger.info("失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); | ||||
| //                } | ||||
| // | ||||
| //                //一. 从plc 中获取 subIdList 和 lineNum | ||||
| //                String[] subIdList = (String[])read(S7Client.S7_KUKA,Step2Plc2MesVar.SubIdList); | ||||
| ////                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step2Plc2MesVar.LineNum); | ||||
| //                logger.info("获取到基板列表:"+ Arrays.toString(subIdList)); | ||||
| // | ||||
| //                //二. MES 业务 | ||||
| //                //===============           MES 业务 开始         ================= | ||||
| //                //1.MES 生成BoxId | ||||
| //                if(subIdList.length<=0){ | ||||
| //                    logger.info("失败"+" --- "+"从plc里面获取到的基板列表 为空"); | ||||
| //                } | ||||
| //                WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); | ||||
| //                String boxId = getBoxId(bySubId.getSapMaterial()); | ||||
| //                logger.info("mes 生成的boxId :"+ boxId); | ||||
| //                //2. 依次update 基板表,把boxId 赋予这些基板 | ||||
| //                for(int i=0;i<subIdList.length;i++){ | ||||
| //                    substrateServiceBiz.updatePackagingBoxIdByWoSubstrateId(boxId,subIdList[i]); | ||||
| //                } | ||||
| //                //3.去camline数据库 查询此基板ID 对应的订单 | ||||
| //                String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); | ||||
| //                //4. box信息录入到box表 | ||||
| //                WoPackagingBox woPackagingBox = new WoPackagingBox(); | ||||
| //                woPackagingBox.setBoxNo(boxId); | ||||
| //                woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||
| //                woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); | ||||
| //                woPackagingBox.setLineBody(bySubId.getLineBody()); | ||||
| //                woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); | ||||
| //                woPackagingBox.setOrderNum(orderNameBySubId); | ||||
| //                //1-手动模式,2-自动模式 | ||||
| //                woPackagingBox.setModel(2); | ||||
| //                boxServiceBiz.insert(woPackagingBox); | ||||
| //                //===============           MES 业务 结束         ================= | ||||
| // | ||||
| //                //三. 把生成的BoxId 告诉kuka | ||||
| //                write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,boxId); | ||||
| // | ||||
| //                //四. 当MES完成任务后,把MesToPlc.ShelfIsFullFinish变量置为true,告诉plc,我操作完成了 | ||||
| //                write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,true); | ||||
| // | ||||
| //                //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
| //                Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); | ||||
| //                if(subArrived2 != 1){ | ||||
| //                    logger.info("失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
| //                } | ||||
| //                write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||
| //            } | ||||
| //        },1,1, TimeUnit.SECONDS); | ||||
| // | ||||
| // | ||||
| //        kukaStep3.scheduleAtFixedRate(new Runnable() { | ||||
| //            @Override | ||||
| //            public void run() { | ||||
| //                //调度开始 | ||||
| //                Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); | ||||
| //                if(shelfIsFull != 1){ | ||||
| //                    logger.info("失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||
| //                } | ||||
| // | ||||
| //                //一. 从plc 中获取 subIdList 和 lineNum | ||||
| //                String boxId = (String)read(S7Client.S7_KUKA,Step3Plc2MesVar.BoxId); | ||||
| //                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step3Plc2MesVar.LineNum); | ||||
| //                logger.info("到达站台的boxId :"+boxId); | ||||
| // | ||||
| //                //二. MES 业务 | ||||
| //                //===============           MES 业务 开始         ================= | ||||
| //                //1. box信息录入到box表 | ||||
| //                boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); | ||||
| //                //===============           MES 业务 结束         ================= | ||||
| // | ||||
| // | ||||
| //                //四. 当MES完成任务后,把MesToPlc.ShelfIsFullArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||
| //                write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||
| // | ||||
| //                //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
| //                Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); | ||||
| //                if(subArrived2 != 1){ | ||||
| //                    logger.info("失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||
| //                } | ||||
| //                write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); | ||||
| // | ||||
| // | ||||
| //            } | ||||
| //        },1,1, TimeUnit.SECONDS); | ||||
|  | ||||
|                 //4. 把基板录到数据库 | ||||
|                 WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); | ||||
|                 woPackagingBoxSubstrate.setLineBody(lineNum); | ||||
|                 woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()); | ||||
|                 woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()); | ||||
|                 woPackagingBoxSubstrate.setWoSubstrateId(subId); | ||||
|  | ||||
|                 //5. 从camline那里获取可变字段 | ||||
|                 CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); | ||||
|                 woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); | ||||
|                 woPackagingBoxSubstrate.setPmpp(actualPMPP); | ||||
|                 woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()); | ||||
|                 woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); | ||||
|                 woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); | ||||
|                 woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()); | ||||
|                 woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); | ||||
|                 woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()); | ||||
|                 woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); | ||||
|                 woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()); | ||||
|                 woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); | ||||
|                 woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()); | ||||
|                 woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); | ||||
|                 woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); | ||||
|                 woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); | ||||
|                 woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); | ||||
|                 woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); | ||||
|                 woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); | ||||
|                 woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()); | ||||
|                 woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); | ||||
|                 woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()); | ||||
|                 woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); | ||||
|                 woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2()); | ||||
|                 woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); | ||||
|                 woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()); | ||||
|                 woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()); | ||||
|                 woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()); | ||||
|                 woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); | ||||
|                 woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); | ||||
|                 woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); | ||||
|                 woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); | ||||
|                 woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()); | ||||
|                 woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); | ||||
|  | ||||
|                 substrateServiceBiz.insert(woPackagingBoxSubstrate); | ||||
|                 //===============           MES 业务 结束         ================= | ||||
|  | ||||
|                 //三. 当MES完成任务后,把MesToPlc.SubArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||
|  | ||||
|                 //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
|                 Integer subArrived2 = waitingForTarget(Step1Plc2MesVar.SubArrivedToMes, false); | ||||
|                 if(subArrived2 != 1){ | ||||
|                     logger.info("失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
|                 } | ||||
|                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,false); | ||||
|             } | ||||
|         },1,1, TimeUnit.SECONDS); | ||||
|  | ||||
|  | ||||
|         kukaStep2.scheduleAtFixedRate(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 //调度开始 | ||||
|  | ||||
|                 Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); | ||||
|                 if(shelfIsFull != 1){ | ||||
|                     logger.info("失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); | ||||
|                 } | ||||
|  | ||||
|                 //一. 从plc 中获取 subIdList 和 lineNum | ||||
|                 String[] subIdList = (String[])read(S7Client.S7_KUKA,Step2Plc2MesVar.SubIdList); | ||||
| //                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step2Plc2MesVar.LineNum); | ||||
|                 logger.info("获取到基板列表:"+ Arrays.toString(subIdList)); | ||||
|  | ||||
|                 //二. MES 业务 | ||||
|                 //===============           MES 业务 开始         ================= | ||||
|                 //1.MES 生成BoxId | ||||
|                 if(subIdList.length<=0){ | ||||
|                     logger.info("失败"+" --- "+"从plc里面获取到的基板列表 为空"); | ||||
|                 } | ||||
|                 WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); | ||||
|                 String boxId = getBoxId(bySubId.getSapMaterial()); | ||||
|                 logger.info("mes 生成的boxId :"+ boxId); | ||||
|                 //2. 依次update 基板表,把boxId 赋予这些基板 | ||||
|                 for(int i=0;i<subIdList.length;i++){ | ||||
|                     substrateServiceBiz.updatePackagingBoxIdByWoSubstrateId(boxId,subIdList[i]); | ||||
|                 } | ||||
|                 //3.去camline数据库 查询此基板ID 对应的订单 | ||||
|                 String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); | ||||
|                 //4. box信息录入到box表 | ||||
|                 WoPackagingBox woPackagingBox = new WoPackagingBox(); | ||||
|                 woPackagingBox.setBoxNo(boxId); | ||||
|                 woPackagingBox.setPackagingTime(LocalDateTime.now()); | ||||
|                 woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); | ||||
|                 woPackagingBox.setLineBody(bySubId.getLineBody()); | ||||
|                 woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); | ||||
|                 woPackagingBox.setOrderNum(orderNameBySubId); | ||||
|                 //1-手动模式,2-自动模式 | ||||
|                 woPackagingBox.setModel(2); | ||||
|                 woPackagingBox.setCreateTime(LocalDateTime.now()); | ||||
|                 boxServiceBiz.insert(woPackagingBox); | ||||
|                 //===============           MES 业务 结束         ================= | ||||
|  | ||||
|                 //三. 把生成的BoxId 告诉kuka | ||||
|                 write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,boxId); | ||||
|  | ||||
|                 //四. 当MES完成任务后,把MesToPlc.ShelfIsFullFinish变量置为true,告诉plc,我操作完成了 | ||||
|                 write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,true); | ||||
|  | ||||
|                 //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
|                 Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); | ||||
|                 if(subArrived2 != 1){ | ||||
|                     logger.info("失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); | ||||
|                 } | ||||
|                 write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||
|             } | ||||
|         },1,1, TimeUnit.SECONDS); | ||||
|  | ||||
|  | ||||
|         kukaStep3.scheduleAtFixedRate(new Runnable() { | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 //调度开始 | ||||
|                 Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); | ||||
|                 if(shelfIsFull != 1){ | ||||
|                     logger.info("失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||
|                 } | ||||
|  | ||||
|                 //一. 从plc 中获取 subIdList 和 lineNum | ||||
|                 String boxId = (String)read(S7Client.S7_KUKA,Step3Plc2MesVar.BoxId); | ||||
|                 Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step3Plc2MesVar.LineNum); | ||||
|                 logger.info("到达站台的boxId :"+boxId); | ||||
|  | ||||
|                 //二. MES 业务 | ||||
|                 //===============           MES 业务 开始         ================= | ||||
|                 //1. box信息录入到box表 | ||||
|                 boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); | ||||
|                 //===============           MES 业务 结束         ================= | ||||
|  | ||||
|  | ||||
|                 //四. 当MES完成任务后,把MesToPlc.ShelfIsFullArrivedFinish变量置为true,告诉plc,我操作完成了 | ||||
|                 write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||
|  | ||||
|                 //四. mes 监控 到PlcToMes.SubArrived==false,就把MesToPlc.SubArrivedFinish置为false | ||||
|                 Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); | ||||
|                 if(subArrived2 != 1){ | ||||
|                     logger.info("失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); | ||||
|                 } | ||||
|                 write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); | ||||
|  | ||||
|  | ||||
|             } | ||||
|         },1,1, TimeUnit.SECONDS); | ||||
|  | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar; | ||||
| import com.cnbm.packing.service.DynamicDataSourceService; | ||||
| import com.cnbm.s7.entity.R; | ||||
| import com.cnbm.s7.s7connector.enmuc.S7Client; | ||||
| import com.cnbm.s7.s7connector.type.PlcVar; | ||||
| import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | ||||
| @@ -20,6 +21,7 @@ import com.cnbm.common.utils.Result; | ||||
| import springfox.documentation.annotations.ApiIgnore; | ||||
|  | ||||
| import java.io.UnsupportedEncodingException; | ||||
| import java.math.BigDecimal; | ||||
| import java.text.ParseException; | ||||
| import java.util.Map; | ||||
|  | ||||
| @@ -124,6 +126,34 @@ public class TestController { | ||||
|         } | ||||
|         return R.ok(); | ||||
|     } | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         BigDecimal voc = new BigDecimal(59.799); | ||||
|         System.out.println(Float.valueOf(voc.toString())); | ||||
|     } | ||||
|  | ||||
|     @PostMapping("/testWrite") | ||||
|     public R testWrite() { | ||||
|         BigDecimal voc = new BigDecimal(59.799); | ||||
|         BigDecimal isc = new BigDecimal(3.799); | ||||
|         BigDecimal vmpp = new BigDecimal(46.799); | ||||
|         BigDecimal impp = new BigDecimal(3.0799); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,new Integer(1)); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,voc); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,isc); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,vmpp); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,impp); | ||||
|  | ||||
|  | ||||
|         write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,"12345678901111111111"); | ||||
|         write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,true); | ||||
|         write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); | ||||
|  | ||||
|         write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); | ||||
|  | ||||
|  | ||||
|         return R.ok(); | ||||
|     } | ||||
|     @PostMapping("/testlogger") | ||||
|     public R testlogger() { | ||||
|         logger.info("test logger"); | ||||
| @@ -159,4 +189,51 @@ public class TestController { | ||||
|         return new Result<String>().ok(service.getExtendArgFromCamline(subId.toString()).toString()); | ||||
|     } | ||||
|  | ||||
|     private void write(S7Client s7Client, Step1Mes2PlcVar var, Object newValue) { | ||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||
|             String[] s = (String[])newValue; | ||||
|             String[] ss = (String[])newValue; | ||||
|             if(s.length > var.getLength() ){ | ||||
|                 ss = new String[var.getLength()]; | ||||
|                 for(int i=0;i< var.getLength();i++){ | ||||
|                     ss[i] = s[i]; | ||||
|                 } | ||||
|             } | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||
|         }else { | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||
|         } | ||||
|     } | ||||
|     private void write(S7Client s7Client, Step2Mes2PlcVar var, Object newValue) { | ||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||
|             String[] s = (String[])newValue; | ||||
|             String[] ss = (String[])newValue; | ||||
|             if(s.length > var.getLength() ){ | ||||
|                 ss = new String[var.getLength()]; | ||||
|                 for(int i=0;i< var.getLength();i++){ | ||||
|                     ss[i] = s[i]; | ||||
|                 } | ||||
|             } | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||
|         }else { | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void write(S7Client s7Client, Step3Mes2PlcVar var, Object newValue) { | ||||
|         if(var.getType().equals(PlcVar.STRING_Array)){ | ||||
|             String[] s = (String[])newValue; | ||||
|             String[] ss = (String[])newValue; | ||||
|             if(s.length > var.getLength() ){ | ||||
|                 ss = new String[var.getLength()]; | ||||
|                 for(int i=0;i< var.getLength();i++){ | ||||
|                     ss[i] = s[i]; | ||||
|                 } | ||||
|             } | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),ss); | ||||
|         }else { | ||||
|             s7Client.write(var.getArea(), var.getAreaNumber(), var.getByteOffset(), var.getBitOffset(), var.getStrSize(), var.getType(),newValue); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -178,7 +178,7 @@ public enum S7Client { | ||||
|                             ); | ||||
|                             return type.toObject(read); | ||||
|                         } | ||||
|                     }catch (Exception e) { | ||||
|                     }catch (Throwable e) { | ||||
|                         throw new S7CheckResultException("read errMsg : "+e.getMessage()); | ||||
|                     } | ||||
|  | ||||
| @@ -293,7 +293,7 @@ public enum S7Client { | ||||
|                            ); | ||||
|                        } | ||||
|                        return null; | ||||
|                    }catch (Exception e) { | ||||
|                    }catch (Throwable e) { | ||||
|                        throw new S7CheckResultException("write errMsg : "+e.getMessage()); | ||||
|                    } | ||||
|                }, | ||||
|   | ||||
		Referens i nytt ärende
	
	Block a user