| | |
| | | package com.mes.job; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | 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.Machine; |
| | | import com.mes.md.entity.Tasking; |
| | | import com.mes.md.mapper.MachineMapper; |
| | | import com.mes.md.service.ProjectService; |
| | | import com.mes.md.service.TaskingService; |
| | | import com.mes.tools.WebSocketServer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author SNG-010 |
| | |
| | | @Slf4j |
| | | public class PLCFlipSlice { |
| | | |
| | | PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; |
| | | @Autowired |
| | | TaskingService taskingService; |
| | | @Autowired |
| | | MachineMapper machineMapper; |
| | | //@Scheduled(fixedDelay = 500) |
| | | public void plcTurn() { |
| | | //清洗机速度 |
| | | String rinseSpeed = plcParameterObject.getPlcParameter("rinseSpeed").getValue(); |
| | | if(!Objects.equals(rinseSpeed, "")){ |
| | | //给翻片台发送磨边机速度 |
| | | S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("turnSpeed").getAddress(), Integer.parseInt(rinseSpeed)); |
| | | |
| | | public S7objectMachine s7objectMachine; |
| | | |
| | | @Autowired |
| | | ProjectService projectService; |
| | | |
| | | public List<Map> sendRecords = new ArrayList<>(); |
| | | |
| | | //@Scheduled(fixedDelay = 1000) |
| | | public void plcFlipSlice() { |
| | | Long machineId=26L; |
| | | Machine machine=machineMapper.selectById(machineId); |
| | | if (s7objectMachine==null){ |
| | | s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),"PlcFlipSlice", EPlcType.S1200); |
| | | s7objectMachine.start(); |
| | | } |
| | | PlcParameterObject plcParameterObject = s7objectMachine.PlcMesObject; |
| | | PlcParameterInfo plcRequest =plcParameterObject.getPlcParameter("plcRequest");//请求字 |
| | | PlcParameterInfo plcRequestID =plcParameterObject.getPlcParameter("plcRequestID");//请求ID |
| | | PlcParameterInfo plcRequestType =plcParameterObject.getPlcParameter("plcRequestType");//PLC请求 |
| | | |
| | | PlcParameterInfo mesSend =plcParameterObject.getPlcParameter("mesSend");//发送字 |
| | | PlcParameterInfo mesSendId =plcParameterObject.getPlcParameter("mesSendID");//发送ID |
| | | PlcParameterInfo length =plcParameterObject.getPlcParameter("length");//长 |
| | | PlcParameterInfo width =plcParameterObject.getPlcParameter("width");//宽 |
| | | PlcParameterInfo mesSendType =plcParameterObject.getPlcParameter("mesSendType");// 扫码1 不扫码2 |
| | | |
| | | String scan_id=""; |
| | | if (machine.getIsLog()>0){ |
| | | s7objectMachine.consoleLogInfo(); |
| | | } |
| | | if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) { |
| | | //发送字置0 |
| | | int finishCount=taskingService.finishMachineTask(machine); |
| | | log.info("1.发送字置零,清除上次发送的数据{},{},{},{},{}" |
| | | ,finishCount |
| | | ,length.getValue() |
| | | ,width.getValue() |
| | | ,mesSendId.getValue() |
| | | ,mesSend.getValue()); |
| | | s7objectMachine.plccontrol.writeWord(length.getAddress(), 0); |
| | | s7objectMachine.plccontrol.writeWord(width.getAddress(), 0); |
| | | s7objectMachine.plccontrol.writeWord(mesSendId.getAddress(), 0); |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 0); |
| | | return; |
| | | } |
| | | List<Tasking> taskingCount=taskingService.findMachineWorkStateTask(machine,"正在工作"); |
| | | if(("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue())&& !plcRequestID.getValue().isEmpty() |
| | | &&"开工".equals(machine.getState()) |
| | | &&taskingCount.size()<machine.getMaxTaskCount())){ |
| | | Tasking tasking; |
| | | if(machine.getMode()==1){ |
| | | //标准模式 |
| | | tasking=taskingService.startMachineTask(machine); |
| | | }else{ |
| | | //定制模式 |
| | | String PlcRequestID_=plcRequestID.getValue(); |
| | | scan_id= PlcRequestID_.substring(PlcRequestID_.lastIndexOf(",")+1); |
| | | tasking=taskingService.startScanIdMachineTask(machine,scan_id);//不管顺序,直接找从磨边机扫码后到翻片台的数据 |
| | | } |
| | | if(tasking!=null){ |
| | | log.info("4、发送数据:{},{},{},{},{}" |
| | | ,tasking.getGlassId(),tasking.getProgramId() |
| | | ,tasking.getLength().intValue(),tasking.getWidth().intValue(),1); |
| | | s7objectMachine.plccontrol.writeWord(length.getAddress(), tasking.getLength().intValue()); |
| | | s7objectMachine.plccontrol.writeWord(width.getAddress(), tasking.getWidth().intValue()); |
| | | s7objectMachine.plccontrol.writeString(mesSendId.getAddress(), tasking.getGlassId().toString()); |
| | | s7objectMachine.plccontrol.writeWord(mesSend.getAddress(), 1); |
| | | SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String sendRecord=df.format(new Date())+" "+ |
| | | tasking.getGlassId()+"-"+ |
| | | tasking.getLength()+"-"+ |
| | | tasking.getWidth(); |
| | | if (sendRecords.size()>7){ |
| | | sendRecords.remove(0); |
| | | } |
| | | Map sendContentMap=new HashMap(); |
| | | sendContentMap.put("sendContent",sendRecord); |
| | | sendRecords.add(sendContentMap); |
| | | |
| | | nullMachine(machine); |
| | | return; |
| | | }else if(!scan_id.isEmpty()){ |
| | | taskingService.scanMachineAdd(machine,scan_id); |
| | | } |
| | | } |
| | | |
| | | } |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void turnWeb() { |
| | | |
| | | public void nullMachine(Machine machine) { |
| | | if (!"".equals(machine.getRemark())){ |
| | | machine.setRemark(""); |
| | | machineMapper.updateById(machine); |
| | | } |
| | | } |
| | | @Scheduled(fixedDelay = 500) |
| | | public void flipSliceTask() { |
| | | //获取报警状态 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | // String warning = plcParameterObject.getPlcParameter("turnWarning").getValue(); |
| | | // |
| | | // if (!Objects.equals(warning, "0")) { |
| | | // //log.info("报警信息:"+warning); |
| | | // jsonObject.append("turnWarning", warning); |
| | | // } |
| | | Machine machine=machineMapper.selectById(25L); |
| | | Machine machine=machineMapper.selectById(26L); |
| | | List<Tasking> taskingList=taskingService.findMachineTask(machine); |
| | | jsonObject.append("taskingList", taskingList); |
| | | jsonObject.append("machine", machine); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("flipSlice"); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | jsonObject.append("sendRecords", sendRecords); |
| | | ArrayList<WebSocketServer> sendServer = WebSocketServer.sessionMap.get("flipSlice"); |
| | | if (sendServer != null) { |
| | | for (WebSocketServer webserver : sendServer) { |
| | | if (webserver != null) { |
| | | try { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | }catch (Exception e) { |
| | | |
| | | } |
| | | } else { |
| | | log.info("Home is closed"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void downLineTask() { |
| | | //线下任务 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | List<Tasking> downLineTask=taskingService.findDownLineTask(); |
| | | jsonObject.append("downLineTask", downLineTask); |
| | | ArrayList<WebSocketServer> sendServer = WebSocketServer.sessionMap.get("downLineTask"); |
| | | if (sendServer != null) { |
| | | for (WebSocketServer webserver : sendServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |