//package com.mes.plcTaskThread; // //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 com.mes.service.ModbusTcp; //import com.mes.service.PlcAgreement; //import com.mes.service.PlcParameter; //import com.mes.utils.HexUtil; //import lombok.extern.slf4j.Slf4j; // //import java.text.SimpleDateFormat; //import java.util.*; // //@Slf4j //public class MachineDispensing extends Thread { // // // private MachineMapper machineMapper; // private TaskingService taskingService; // public static Long machineId = 16L; // public List sendRecords = new ArrayList<>(); // public Machine thisMachine; // // public MachineDispensing(Machine machine, MachineMapper machineMapper, TaskingService taskingService) { // this.thisMachine = machine; // this.machineMapper = machineMapper; // this.taskingService = taskingService; // } // // public void plcStart() { // Machine machine = machineMapper.selectById(thisMachine.getId()); // String fileName = machine.getFileName(); // ModbusTcp modbusTcp1 = new ModbusTcp(machine.getIp(), machine.getPort(), fileName); // modbusTcp1.connect(); // PlcAgreement plcAgreement = modbusTcp1.getPlcAgreement(fileName); // try { // if (!modbusTcp1.read(plcAgreement)) { // log.info("通讯读取新数据失败"); // modbusTcp1.close(); // return; // } // PlcParameter plcRequest = plcAgreement.getPlcParameter("plcRequest");//请求字 // PlcParameter plcRequestID = plcAgreement.getPlcParameter("plcRequestID");//请求ID // PlcParameter mesSend = plcAgreement.getPlcParameter("mesSend");//发送字 // PlcParameter mesSendID = plcAgreement.getPlcParameter("mesSendID");//发送ID //// PlcParameterInfo drawingMark =plcParameterObject.getPlcParameter("drawingGlue");//点胶图纸地址 // PlcParameter JPZX = plcAgreement.getPlcParameter("JPZX");//类型 // PlcParameter thickness = plcAgreement.getPlcParameter("thickness");//厚 // PlcParameter side1 = plcAgreement.getPlcParameter("side1");//下边 // PlcParameter side2 = plcAgreement.getPlcParameter("side2");//右边 // PlcParameter side3 = plcAgreement.getPlcParameter("side3");//上边 // PlcParameter side4 = plcAgreement.getPlcParameter("side4");//左边 // PlcParameter R_angle1_1 = plcAgreement.getPlcParameter("R_angle1_1");//R角1-1 // PlcParameter R_angle1_2 = plcAgreement.getPlcParameter("R_angle1_2");//R角1-2 // PlcParameter R_angle2_1 = plcAgreement.getPlcParameter("R_angle2_1");//R角2-1 // PlcParameter R_angle2_2 = plcAgreement.getPlcParameter("R_angle2_2");//R角2-2 // PlcParameter R_angle3_1 = plcAgreement.getPlcParameter("R_angle3_1");//R角3-1 // PlcParameter R_angle3_2 = plcAgreement.getPlcParameter("R_angle3_2");//R角3-2 // PlcParameter R_angle4_1 = plcAgreement.getPlcParameter("R_angle4_1");//R角4-1 // PlcParameter R_angle4_2 = plcAgreement.getPlcParameter("R_angle4_2");//R角4-2 // // PlcParameter plcReport = plcAgreement.getPlcParameter("plcReport");//汇报字 // PlcParameter plcReportID = plcAgreement.getPlcParameter("plcReportID");//汇报ID // PlcParameter mesConfirm = plcAgreement.getPlcParameter("mesConfirm");//确认字 // PlcParameter mesConfirmID = plcAgreement.getPlcParameter("mesConfirmID");//确认ID // PlcParameter machineStatusWord = plcAgreement.getPlcParameter("machineStatusWord"); // if (machine.getIsLog() > 0) { // modbusTcp1.consoleLogInfo(plcAgreement); // } // // if (0 == plcRequest.getValueInt() && 1 == mesSend.getValueInt()) { // log.info("1.发送字置零"); // //发送字置0 // String send = HexUtil.intTo2ByteHex(0); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesSend.getAddressStart() / 2)); // log.info("发送字 清空成功;内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesSend.getAddressStart())); // modbusTcp1.close(); // return; // } // if (0 == plcReport.getValueInt() && 0 != mesConfirm.getValueInt()) { // log.info("2.确认字置零"); // //发送字置0 // String send = HexUtil.intTo2ByteHex(0); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("任务完成 清空成功;内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // if (1 == plcReport.getValueInt() && 0 == mesConfirm.getValueInt()) { // int finishCount = taskingService.finishMachineTask(machine); // log.info("3、任务完成"); // if (finishCount > 0) {//有任务 // String send = HexUtil.intTo2ByteHex(1); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("任务完成 成功 内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // String send = HexUtil.intTo2ByteHex(1); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("任务完成 异常成功 内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // if (4 == plcReport.getValueInt() && 0 == mesConfirm.getValueInt()) { // int finishCount = taskingService.glassDownLineOne(machine); // if (finishCount > 0) {//有任务 // log.info("4、人工拿走"); // String send = HexUtil.intTo2ByteHex(4); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("人工拿走发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // String send = HexUtil.intTo2ByteHex(4); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("人工拿走异常 发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // if (2 == plcReport.getValueInt() && 0 == mesConfirm.getValueInt()) { // int finishCount = taskingService.loseMachineTask(machine); // if (finishCount > 0) {//有任务 // log.info("2、重发"); // String send = HexUtil.intTo2ByteHex(2); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("重发发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } else { // log.info("2、异常重发"); // String send = HexUtil.intTo2ByteHex(2); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("异常重发发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } // } // // if (3 == plcReport.getValueInt() && 0 == mesConfirm.getValueInt()) { // int finishCount = taskingService.finishMachineTask(machine); // if (finishCount > 0) {//有任务 // log.info("3、设备上人工点破损"); // String send = HexUtil.intTo2ByteHex(3); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("人工点破损发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // return; // } else { // //是否自动清除破损 // log.info("3、无效破损 (没有找到此ID的玻璃)"); // String send = HexUtil.intTo2ByteHex(3); // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart() / 2)); // log.info("发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesConfirm.getAddressStart())); // modbusTcp1.close(); // //modbusTcp1.close(); // return; // } // } // List taskingCount = taskingService.findMachineWorkStateTask(machine, "正在工作"); // if ((1 == plcRequest.getValueInt() && 0 == mesSend.getValueInt()) // && "开工".equals(machine.getState()) // && taskingCount.size() < machine.getMaxTaskCount()) { // Tasking tasking = taskingService.startMachineTask(machine); // if (tasking != null) { // log.info("4、发送任务 任务数据:{}, 设备状态:{}, ", machine, tasking); // String send = // HexUtil.intTo2ByteHex(1) + // HexUtil.intTo2ByteHex(tasking.getTaskSequence().intValue())+ // HexUtil.intTo2ByteHex(tasking.getJPZX()) + // HexUtil.intTo2ByteHex(tasking.getThickness().intValue()) + // HexUtil.intTo2ByteHex(tasking.getWidth().intValue()) + // side1 下边 = 宽度 // HexUtil.intTo2ByteHex(tasking.getLength().intValue()) + // side2 右边 = 长度 // HexUtil.intTo2ByteHex(tasking.getWidth().intValue()) + // side3 上边 = 宽度 // HexUtil.intTo2ByteHex(tasking.getLength().intValue()) + // side4 左边 = 长度 // HexUtil.intTo2ByteHex((int) ((tasking.getR_1_1() != null ? tasking.getR_1_1() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_1_2() != null ? tasking.getR_1_2() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_2_1() != null ? tasking.getR_2_1() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_2_2() != null ? tasking.getR_2_2() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_3_1() != null ? tasking.getR_3_1() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_3_2() != null ? tasking.getR_3_2() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_4_1() != null ? tasking.getR_4_1() : 0.0) * 10)) + // HexUtil.intTo2ByteHex((int) ((tasking.getR_4_2() != null ? tasking.getR_4_2() : 0.0) * 10)) ; // modbusTcp1.writeString(send, HexUtil.intTo2ByteHex(mesSend.getAddressStart() / 2)); // log.info("发送任务发送报文内容:{},发送起始地址:{}", send, HexUtil.intTo2ByteHex(mesSend.getAddressStart())); // modbusTcp1.close(); // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String sendRecord = df.format(new Date()) + " " + // tasking.getGlassId() + "-" + // tasking.getLength() + "-" + // tasking.getWidth() + "-" + // tasking.getThickness() + "-" + // tasking.getR_1_1() + "-" + // tasking.getR_1_2() + "-" + // tasking.getR_2_1() + "-" + // tasking.getR_2_2() + "-" + // tasking.getR_3_1() + "-" + // tasking.getR_3_2() + "-" + // tasking.getR_4_1() + "-" + // tasking.getR_4_2() + "-" + // tasking.getJPZX(); // if (sendRecords.size() > 7) { // sendRecords.remove(0); // } // Map sendContentMap = new HashMap(); // sendContentMap.put("sendContent", sendRecord); // sendRecords.add(sendContentMap); // return; // } // } // //} // // } catch (Exception e) { // log.info("交互逻辑错误"); // } // // modbusTcp1.close(); // //log.info("无可执行的条件"); // } // // // @Override // public void run() { // while (this != null) { // try { // Thread.sleep(1000); // plcStart(); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // } //}