S7PLCUtils.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.mes.util;
  2. import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
  3. import com.mes.ui.Oprno;
  4. public class S7PLCUtils {
  5. // 读取是否开始上料输出,参数为动态的几个Oprno对象,返回第一个上料状态为true的工位对象,否则返回null
  6. public static Oprno isStart(S7PLC s7PLC, Oprno... oprnos){
  7. // 遍历所有传入的Oprno对象
  8. for (Oprno oprno : oprnos) {
  9. // 检查当前工位的hgA_out和hgB_out点位
  10. if (s7PLC.readBoolean(oprno.getHgA_out()) || s7PLC.readBoolean(oprno.getHgB_out())) {
  11. // 如果当前工位的任一上料点位为true,返回该工位对象
  12. return oprno;
  13. }
  14. }
  15. // 所有工位的上料点位都为false,返回null
  16. return null;
  17. }
  18. // 读取是否加工完成输出,参数为动态的几个Oprno对象,返回第一个加工完成状态为true的工位对象,否则返回null
  19. public static Oprno isFinish(S7PLC s7PLC, Oprno... oprnos){
  20. // 遍历所有传入的Oprno对象
  21. for (Oprno oprno : oprnos) {
  22. // 检查当前工位的加工完成点位
  23. if (s7PLC.readBoolean(oprno.getProcess_ok())) {
  24. // 如果当前工位的加工完成点位为true,返回该工位对象
  25. return oprno;
  26. }
  27. }
  28. // 所有工位的加工完成点位都为false,返回null
  29. return null;
  30. }
  31. // 读取工件码
  32. public static String getSnInJXB(Oprno oprno, S7PLC s7PLC){
  33. if (s7PLC.readBoolean(oprno.getHgA_out())){
  34. return s7PLC.readString(oprno.getHgA_sn());
  35. }else if (s7PLC.readBoolean(oprno.getHgB_out())){
  36. return s7PLC.readString(oprno.getHgB_sn());
  37. }else {
  38. return "";
  39. }
  40. }
  41. //从工位上读取工件码
  42. public static String getSnInOprno(Oprno oprno, S7PLC s7PLC){
  43. return s7PLC.readString(oprno.getProduct_sn(),50);
  44. }
  45. //读取工位结果
  46. public static Boolean getResultInOprno(Oprno oprno, S7PLC s7PLC){
  47. Boolean resultOK = s7PLC.readBoolean(oprno.getProcess_result_ok());
  48. Boolean resultNG = s7PLC.readBoolean(oprno.getProcess_result_ng());
  49. // 只有当NG为true时返回false
  50. if (resultOK){
  51. return resultOK;
  52. }else return !resultOK && !resultNG;
  53. }
  54. }