PlcUtil.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.mes.ui;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
  5. import com.mes.util.DateLocalUtils;
  6. import com.mes.util.JdbcUtils;
  7. import org.slf4j.LoggerFactory;
  8. import java.util.ArrayList;
  9. public class PlcUtil {
  10. private static final org.slf4j.Logger log = LoggerFactory.getLogger(PlcUtil.class);
  11. // 获取并提交所有焊机参数
  12. public static void getParamDyDl(S7PLC s7PLC){
  13. // 直接使用统一转换好的工位代号
  14. String op = MesClient.getCalculatedOp();
  15. String oprno = MesClient.mes_gw + op;
  16. Boolean ret1 = s7PLC.readBoolean("DB5000.584.2"); // 焊机1运行状态
  17. Boolean ret2 = s7PLC.readBoolean("DB5000.588.2"); // 焊机2运行状态
  18. Boolean ret3 = s7PLC.readBoolean("DB5000.592.2"); // 焊机3运行状态
  19. if(ret1 || ret2 || ret3){
  20. // 焊机1
  21. Short dya = s7PLC.readInt16("DB5000.536");
  22. Short dla = s7PLC.readInt16("DB5000.538");
  23. Short ssa = s7PLC.readInt16("DB5000.540");
  24. Short cwa = s7PLC.readInt16("DB5000.542");
  25. Short joba = s7PLC.readInt16("DB5000.544");
  26. MesClient.param1.setText(dya+"");
  27. MesClient.param2.setText(dla+"");
  28. MesClient.param3.setText(ssa+"");
  29. MesClient.param4.setText(cwa+"");
  30. MesClient.param5.setText(joba+"");
  31. // 焊机2
  32. Short dyb = s7PLC.readInt16("DB5000.552");
  33. Short dlb = s7PLC.readInt16("DB5000.554");
  34. Short ssb = s7PLC.readInt16("DB5000.556");
  35. Short cwb = s7PLC.readInt16("DB5000.558");
  36. Short jobb = s7PLC.readInt16("DB5000.560");
  37. MesClient.param21.setText(dyb+"");
  38. MesClient.param22.setText(dlb+"");
  39. MesClient.param23.setText(ssb+"");
  40. MesClient.param24.setText(cwb+"");
  41. MesClient.param25.setText(jobb+"");
  42. // 焊机3
  43. Short dyc = s7PLC.readInt16("DB5000.568");
  44. Short dlc = s7PLC.readInt16("DB5000.570");
  45. Short ssc = s7PLC.readInt16("DB5000.572");
  46. Short cwc = s7PLC.readInt16("DB5000.574");
  47. Short jobc = s7PLC.readInt16("DB5000.576");
  48. MesClient.param31.setText(dyc+"");
  49. MesClient.param32.setText(dlc+"");
  50. MesClient.param33.setText(ssc+"");
  51. MesClient.param34.setText(cwc+"");
  52. MesClient.param35.setText(jobc+"");
  53. String record_time = DateLocalUtils.getCurrentTime();
  54. MesClient.hjparams.add(dya+"|"+dla+"|"+ssa+"|"+cwa+"|"+joba+"|"+dyb+"|"+dlb+"|"+ssb+"|"+cwb+"|"+jobb+"|"+dyc+"|"+dlc+"|"+ssc+"|"+cwc+"|"+jobc+"|"+record_time);
  55. if(MesClient.hjparams.size() == 60){
  56. try{
  57. if(!MesClient.product_sn.getText().isEmpty()){
  58. JdbcUtils.insertCmtData(oprno, MesClient.mes_line_sn, MesClient.product_sn.getText(), JSON.toJSONString(MesClient.hjparams));
  59. }
  60. MesClient.hjparams = new ArrayList<>();
  61. }catch (Exception e){
  62. e.printStackTrace();
  63. }
  64. }
  65. }else{
  66. if(MesClient.hjparams.size() != 60 && MesClient.hjparams.size() > 0){
  67. try{
  68. if(!MesClient.product_sn.getText().isEmpty()){
  69. JdbcUtils.insertCmtData(oprno, MesClient.mes_line_sn, MesClient.product_sn.getText(), JSON.toJSONString(MesClient.hjparams));
  70. }
  71. MesClient.hjparams = new ArrayList<>();
  72. }catch (Exception e){
  73. e.printStackTrace();
  74. }
  75. }
  76. }
  77. }
  78. // 统一设备状态与质量提交流程
  79. public static void getStatus(S7PLC s7PLC){
  80. if(MesClient.tjFlag == 1){ // 已扫码,设备未运行
  81. Boolean feeding = getFeeding(s7PLC);
  82. if(feeding){
  83. PlcUtil.changeEnable(s7PLC,true);
  84. }
  85. Boolean start = getStart(s7PLC);
  86. if(start){
  87. MesClient.tjFlag = 2;
  88. MesClient.status_menu.setText("设备运行中");
  89. }
  90. }else if(MesClient.tjFlag == 2){
  91. Boolean finish = getFinish(s7PLC);
  92. if(finish){
  93. MesClient.tjFlag = 3;
  94. MesClient.status_menu.setText("设备运行结束,提交结果中");
  95. // 直接使用统一转换好的工位代号进行质量上传
  96. String op = MesClient.getCalculatedOp();
  97. JSONObject retObj = DataUtil.sendQuality(MesClient.product_sn.getText(), "OK", MesClient.user_menu.getText(), op);
  98. if(retObj.get("result")!=null && retObj.get("result").toString().equalsIgnoreCase("true")) {
  99. MesClient.status_menu.setText("提交成功");
  100. MesClient.resetScan();
  101. }else{
  102. if(retObj.get("result")==null){
  103. MesClient.status_menu.setText("请求失败,请重试");
  104. }else{
  105. if(retObj.get("result").toString().equalsIgnoreCase("false")){
  106. MesClient.status_menu.setText(retObj.getString("message"));
  107. }
  108. }
  109. }
  110. }
  111. }
  112. }
  113. public static Boolean getFeeding(S7PLC s7PLC){
  114. try{
  115. return s7PLC.readBoolean(MesClient.addr_feeding);
  116. }catch (Exception e){
  117. return false;
  118. }
  119. }
  120. public static Boolean getStart(S7PLC s7PLC){
  121. try{
  122. return s7PLC.readBoolean(MesClient.addr_start);
  123. }catch (Exception e){
  124. return false;
  125. }
  126. }
  127. public static Boolean getFinish(S7PLC s7PLC){
  128. try{
  129. return s7PLC.readBoolean(MesClient.addr_finish);
  130. }catch (Exception e){
  131. return false;
  132. }
  133. }
  134. public static Boolean changeEnable(S7PLC s7PLC,Boolean result){
  135. try{
  136. s7PLC.writeBoolean(MesClient.addr_enable, result);
  137. return true;
  138. }catch (Exception e){
  139. return false;
  140. }
  141. }
  142. public static Boolean getEnable(S7PLC s7PLC){
  143. try{
  144. return s7PLC.readBoolean(MesClient.addr_enable);
  145. }catch (Exception e){
  146. return false;
  147. }
  148. }
  149. }