package com.mes.util; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.mes.ui.Oprno; public class S7PLCUtils { // 读取是否开始上料输出,参数为动态的几个Oprno对象,返回第一个上料状态为true的工位对象,否则返回null public static Oprno isStart(S7PLC s7PLC, Oprno... oprnos){ // 遍历所有传入的Oprno对象 for (Oprno oprno : oprnos) { // 检查当前工位的hgA_out和hgB_out点位 if (s7PLC.readBoolean(oprno.getHgA_out()) || s7PLC.readBoolean(oprno.getHgB_out())) { // 如果当前工位的任一上料点位为true,返回该工位对象 return oprno; } } // 所有工位的上料点位都为false,返回null return null; } // 读取是否加工完成输出,参数为动态的几个Oprno对象,返回第一个加工完成状态为true的工位对象,否则返回null public static Oprno isFinish(S7PLC s7PLC, Oprno... oprnos){ // 遍历所有传入的Oprno对象 for (Oprno oprno : oprnos) { // 检查当前工位的加工完成点位 if (s7PLC.readBoolean(oprno.getProcess_ok())) { // 如果当前工位的加工完成点位为true,返回该工位对象 return oprno; } } // 所有工位的加工完成点位都为false,返回null return null; } // 读取工件码 public static String getSnInJXB(Oprno oprno, S7PLC s7PLC){ if (s7PLC.readBoolean(oprno.getHgA_out())){ return s7PLC.readString(oprno.getHgA_sn()); }else if (s7PLC.readBoolean(oprno.getHgB_out())){ return s7PLC.readString(oprno.getHgB_sn()); }else { return ""; } } //从工位上读取工件码 public static String getSnInOprno(Oprno oprno, S7PLC s7PLC){ return s7PLC.readString(oprno.getProduct_sn(),50); } //读取工位结果 public static Boolean getResultInOprno(Oprno oprno, S7PLC s7PLC){ Boolean resultOK = s7PLC.readBoolean(oprno.getProcess_result_ok()); Boolean resultNG = s7PLC.readBoolean(oprno.getProcess_result_ng()); // 只有当NG为true时返回false if (resultOK){ return resultOK; }else return !resultOK && !resultNG; } }