From 490df5d4d92877171076756af73a96dee1fc053f Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期三, 25 十二月 2024 16:03:25 +0800 Subject: [PATCH] 数据回传日志记录功能修改 --- JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java | 175 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 119 insertions(+), 56 deletions(-) diff --git a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java index 2ba0640..d18c97b 100644 --- a/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java +++ b/JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/job/MarkingTask.java @@ -1,32 +1,39 @@ package com.mes.job; import cn.hutool.json.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.github.s7connector.api.DaveArea; +import com.github.s7connector.api.S7Connector; +import com.github.s7connector.api.factory.S7ConnectorFactory; +import com.github.s7connector.impl.serializer.converter.StringConverter; +import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.mes.common.S7object; +import com.mes.common.S7objectFlipSlice; +import com.mes.common.S7objectMachine; +import com.mes.common.S7objectMarking; +import com.mes.device.PlcParameterInfo; import com.mes.device.PlcParameterObject; -import com.mes.md.entity.GlassInfo; import com.mes.md.entity.Machine; import com.mes.md.entity.Tasking; -import com.mes.md.entity.WorkTaskDetail; import com.mes.md.mapper.GlassInfoMapper; import com.mes.md.mapper.MachineMapper; import com.mes.md.mapper.TaskingMapper; -import com.mes.md.mapper.WorkTaskDetailMapper; import com.mes.md.service.TaskingService; +import com.mes.service.ModbusTcp; +import com.mes.service.PlcAgreement; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import sun.nio.cs.ext.GBK; -import java.net.Socket; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.*; /** + * 鑷姩鎵撴爣鏈� * @Author : yanzhxiin * @Date: 2024/8/20 11:19 * @Description: @@ -36,71 +43,127 @@ public class MarkingTask { public static String engineerId = ""; + @Autowired TaskingMapper taskingMapper; @Autowired MachineMapper machineMapper; @Autowired TaskingService taskingService; + @Autowired + private GlassInfoMapper glassInfoMapper; -// @Scheduled(fixedDelay = 1000) - public void plcMarkingTask(Long machineId) { + public S7objectMachine s7objectMachine; + + public List<Map> sendRecords = new ArrayList<>(); + + //@Scheduled(fixedDelay = 1000) + public void plcMarkingTask() { + Long machineId=12L; Machine machine=machineMapper.selectById(machineId); - PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; - String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue(); - String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue(); - String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue(); - String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress(); - String currentSlot = plcParameterObject.getPlcParameter("Current_slot").getValue(); - if ("0".equals(taskRequestTypeValue)) { - if ("0".equals(confirmationWrodValue)) { - log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖鍙戦�佸瓧涓�0锛屼笉鎵ц浠诲姟"); + if (s7objectMachine==null){ + s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcMarking", EPlcType.S1500); + s7objectMachine.start(); + } + //PlcParameterObject plcParameterObject = S7objectMarking.getinstance().PlcMesObject; + PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; + PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//璇锋眰瀛� + PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//璇锋眰ID + PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//鍙戦�佸瓧 + PlcParameterInfo isMark =plcParameterObject.getPlcParameter("isMark");//鍙戦�両D銆�0 涓嶆墦鏍囷紝1鏍囧噯妯″紡锛�2瀹氬埗妯″紡銆� + PlcParameterInfo drawingMark =plcParameterObject.getPlcParameter("drawingMark");//鎵撴爣鍥剧焊鍦板潃 + PlcParameterInfo lengthOutOfService =plcParameterObject.getPlcParameter("length(OutOfService)");//闀� + PlcParameterInfo widthOutOfService =plcParameterObject.getPlcParameter("width(OutOfService)");//瀹� + PlcParameterInfo markingMode =plcParameterObject.getPlcParameter("markingMode");// + + PlcParameterInfo plcReport =plcParameterObject.getPlcParameter("plcReport");//姹囨姤瀛� + PlcParameterInfo plcReportID =plcParameterObject.getPlcParameter("plcReportID");//姹囨姤ID + PlcParameterInfo mesConfirm =plcParameterObject.getPlcParameter("mesConfirm");//纭瀛� + PlcParameterInfo mesConfirmID =plcParameterObject.getPlcParameter("mesConfirmID");//纭ID + if (machine.getIsLog()>0){ + s7objectMachine.consoleLogInfo(); + } + if ("0".equals(plcRequest.getValue())&&"1".equals(mesSend.getValue())) { + //鍙戦�佸瓧缃�0 + log.info("1.鍙戦�佸瓧缃浂,娓呴櫎涓婃鍙戦�佺殑鏁版嵁{},{},{},{},{}" + ,markingMode.getValue() + ,isMark.getValue() + ,lengthOutOfService.getValue() + ,widthOutOfService.getValue() + ,mesSend.getValue()); + //S7objectMarking.getinstance().plccontrol.writeString(drawingMark.getAddress(),""); + s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), 0); + s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), 0); + s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), 0); + s7objectMachine.plccontrol.writeWord(isMark.getAddress(), 0); + s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0); + return; + } + if ("0".equals(plcReport.getValue())&&"1".equals(mesConfirm.getValue())) { + log.info("2.纭瀛楃疆闆�"); + //鍙戦�佸瓧缃�0 + s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 0); + return; + } + if("1".equals(plcReport.getValue())&&"0".equals(mesConfirm.getValue())){ + int finishCount=taskingService.finishMachineTask(machine); + log.info("3銆佷换鍔″畬鎴�"); + if(finishCount>0){//鏈変换鍔� + s7objectMachine.plccontrol.writeWord(mesConfirm.getAddress(), 1); return; } - log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢鍙戦�佸瓧鏀逛负0"); - S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 0); return; } - if (!"0".equals(confirmationWrodValue)) { - log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢鍙戦�佸瓧涓嶄负0锛岀洿鎺ョ粨鏉�"); - return; + List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"姝e湪宸ヤ綔"); + if("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty() + &&"寮�宸�".equals(machine.getState()) + &&taskingCount.size()<machine.getMaxTaskCount()){ + Tasking tasking=taskingService.startMachineTask(machine); + if(tasking!=null){ + //妯″紡锛�1瀹氬埗 0 鎵归噺 鏄惁鎵撴爣锛�0涓嶆墦鏍� 1鎵撴爣 + int isMark_=(tasking.getDrawingMarking()==null||tasking.getDrawingMarking().isEmpty())?0:1; + int isMarkingMode_="瀹氬埗".equals(tasking.getTaskType()) ?1:0; + log.info("4銆佸彂閫佹暟鎹�:{},{},{},{},{},{}" + ,tasking.getProgramId() + ,tasking.getLength().intValue(),tasking.getWidth().intValue(),isMark_,isMarkingMode_,1); + if(isMark_==1){ + s7objectMachine.plccontrol.writeString(drawingMark.getAddress(), tasking.getProgramId()); + } + //S7objectMarking.getinstance().plccontrol.writeUInt32 (mesSendID.getAddress(), 2); + s7objectMachine.plccontrol.writeWord(lengthOutOfService.getAddress(), tasking.getLength().intValue()); + s7objectMachine.plccontrol.writeWord(widthOutOfService.getAddress(), tasking.getWidth().intValue()); + s7objectMachine.plccontrol.writeWord(isMark.getAddress(), isMark_); + s7objectMachine.plccontrol.writeWord(markingMode.getAddress(), isMarkingMode_); + s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1); + + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String sendRecord=df.format(new Date())+" "+ + tasking.getScanId()+"-"+ + tasking.getProgramId()+"-"+ + tasking.getLength()+"-"+ + tasking.getWidth()+"-"+ + isMark_+"-"+ + isMarkingMode_; + if (sendRecords.size()>7){ + sendRecords.remove(0); + } + Map sendContentMap=new HashMap(); + sendContentMap.put("sendContent",sendRecord); + sendRecords.add(sendContentMap); + return; + } } - if ("1".equals(taskRequestTypeValue)) { - log.info("2銆佽繘鐗囪姹傦紝涓斿彂閫佸瓧涓�0锛屾墽琛屾墦鏍囦换鍔�"); - plcRequest(glassIdeValue, confirmationWrodAddress, currentSlot,machine); - }else if ("3".equals(taskRequestTypeValue)) { - log.info("2銆佸畬鎴愯姹傦紝鎵ц瀹屾垚浠诲姟"); - plcReport(glassIdeValue, confirmationWrodAddress, currentSlot,machine); - } - } - public void plcRequest(String glassIdeValue, String confirmationWrodAddress, String currentSlot, Machine machine) { - //鏌ユ壘鎵撴爣鏈轰换鍔� - Tasking tasking=taskingService.startMachineTask(machine); - if(tasking!=null&&"寮�宸�".equals(machine.getState())){//鏈変换鍔� - log.info("鍙戦�佷换鍔★細{}",tasking); - }else{ - log.info("涓嶆弧瓒冲彂閫佹潯浠讹細{}",tasking); - } + //log.info("鏃犲彲鎵ц鐨勬潯浠�"); } - public void plcReport(String glassIdeValue, String confirmationWrodAddress, String currentSlot, Machine machine) { - //鏌ユ壘鎵撴爣鏈哄伐浣滅殑浠诲姟 - //鏌ユ壘鎵撴爣鏈轰换鍔� - int finishCount=taskingService.finishMachineTask(machine); - if(finishCount>0){//鏁版嵁宸叉爣璁板畬鎴� - log.info("姝e父姹囨姤锛�"); - - }else{ - log.info("褰撳墠鏃犲叡宸ヤ綔鐨勪换鍔★紝鏃犳晥姹囨姤瀹屾垚锛�"); - } - } - //@Scheduled(fixedDelay = 1000) + @Scheduled(fixedDelay = 500) public void markingTasks() { JSONObject jsonObject = new JSONObject(); - Machine machine=machineMapper.selectById(11L); + Machine machine=machineMapper.selectById(12L); List<Tasking> taskingList=taskingService.findMachineTask(machine); jsonObject.append("taskingList", taskingList); - + jsonObject.append("machine", machine); + jsonObject.append("sendRecords", sendRecords); ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("marking"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { -- Gitblit v1.8.0