package com.mes.plcTaskThread; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.mes.common.S7objectMachine; 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.TaskingService; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; import java.util.*; @Slf4j public class MachineFlipSlice extends Thread{ private MachineMapper machineMapper; private TaskingService taskingService; private S7objectMachine s7objectMachine; public static int thinness = 40; public static int edgSpeed = 40; //public static Long machineId = 6L; public List sendRecords = new ArrayList<>(); public Machine thisMachine; public MachineFlipSlice(Machine machine,MachineMapper machineMapper, TaskingService taskingService){ this.thisMachine = machine; this.machineMapper = machineMapper; this.taskingService = taskingService; } public void plcStart() { //Long machineId=26L; Machine machine=machineMapper.selectById(thisMachine.getId()); if (s7objectMachine==null){ s7objectMachine=new S7objectMachine(machine.getIp(),machine.getPort(),machine.getFileName(), 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(plcRequestType.getValue())&&!"0".equals(mesSendType.getValue())) { //发送字置0 log.info("1.发送类型字置零,清除上次发送的类型数据{}->0",mesSendType.getValue()); s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), 0); return; } if ("0".equals(plcRequest.getValue())&&!"0".equals(mesSend.getValue())) { //发送字置0 int finishCount=taskingService.finishMachineTask(machine); nullMachine(machine); log.info("2.发送字置零,清除上次发送的数据{},{},{},{},{}" ,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; } if ("1".equals(plcRequestType.getValue())&&"0".equals(mesSendType.getValue())) { //发送类型 1扫码 2不扫码 int type=machine.getMode()==1?2:1; log.info("3.发送类型数据0->{}",mesSendType.getValue()); s7objectMachine.plccontrol.writeWord(mesSendType.getAddress(), type); return; } List taskingCount=taskingService.findMachineWorkStateTask(machine,"正在工作"); if(("1".equals(plcRequest.getValue())&&"0".equals(mesSend.getValue()) &&"开工".equals(machine.getState()) &&taskingCount.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); } }else if("0".equals(plcRequest.getValue())){ nullMachine(machine); } } public void nullMachine(Machine machine) { if (!"".equals(machine.getRemark())){ machine.setRemark(""); machineMapper.updateById(machine); } } @Override public void run() { while (this != null) { try { Thread.sleep(1000); plcStart(); } catch (InterruptedException e) { e.printStackTrace(); } } } }