package com.mes.ui; import com.alibaba.fastjson2.JSON; import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.mes.component.MyDialog; import com.mes.util.DateLocalUtils; import com.mes.util.JdbcUtils; import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.Arrays; public class PlcUtil { public static void getParamDyDl(S7PLC s7PLC){ Boolean starta = s7PLC.readBoolean("DB1.2.2"); //A启动中 Boolean startb = s7PLC.readBoolean("DB1.2.3"); //B启动中 String oprno = MesClient.mes_gw+"A"; if(startb){ oprno = MesClient.mes_gw+"B"; } if(MesClient.mes_gwflag.equals("B")){ if(oprno.equals(MesClient.mes_gw+"A")){ oprno = MesClient.mes_gw+"C"; }else{ oprno = MesClient.mes_gw+"D"; } } if(MesClient.tjFlaga == 2 || MesClient.tjFlagb == 2){ //运行中 Float dya = s7PLC.readFloat32("DB1010.2"); Float dla = s7PLC.readFloat32("DB1010.8"); Float ssa = s7PLC.readFloat32("DB1010.14"); Short cwa = s7PLC.readInt16("DB1010.18"); Short joba = s7PLC.readInt16("DB1010.20"); // MesClient.param1.setText(dya+""); // MesClient.param2.setText(dla+""); // MesClient.param3.setText(ssa+""); // MesClient.param4.setText(cwa+""); // MesClient.param5.setText(joba+""); Float dyb = s7PLC.readFloat32("DB1010.26"); Float dlb = s7PLC.readFloat32("DB1010.34"); Float ssb = s7PLC.readFloat32("DB1010.42"); Short cwb = s7PLC.readInt16("DB1010.46"); Short jobb = s7PLC.readInt16("DB1010.48"); // MesClient.param21.setText(dyb+""); // MesClient.param22.setText(dlb+""); // MesClient.param23.setText(ssb+""); // MesClient.param24.setText(cwb+""); // MesClient.param25.setText(jobb+""); String record_time = DateLocalUtils.getCurrentTime(); MesClient.hjparams.add(dya+"|"+dla+"|"+ssa+"|"+cwa+"|"+joba+"|"+dyb+"|"+dlb+"|"+ssb+"|"+cwb+"|"+jobb+"|"+record_time); if(MesClient.hjparams.size() == 60){ try{ if(MesClient.curFlag.equals("A")){ JdbcUtils.insertCmtData(oprno,MesClient.mes_line_sn,MesClient.product_sn.getText(), JSON.toJSONString(MesClient.hjparams)); }else{ JdbcUtils.insertCmtData(oprno,MesClient.mes_line_sn,MesClient.product_sn2.getText(), JSON.toJSONString(MesClient.hjparams)); } System.out.println("cmt:"+MesClient.curFlag); MesClient.hjparams = new ArrayList<>(); }catch (Exception e){ e.printStackTrace(); } } } } public static void getStatusAOld(S7PLC s7PLC){ String sna = ""; if(MesClient.tjFlaga == 1){ // 待运行 MesClient.checkA = 0; Boolean starta = s7PLC.readBoolean("DB1.2.2"); //A启动中 if(starta){ MesClient.curFlag = "A"; MesClient.tjFlaga = 2; MesClient.pxstatus1.setText("A:设备运行中"); PlcUtil.changeEnable(MesClient.s7PLC,false); } }else if(MesClient.tjFlaga == 2){ // 运行中 MesClient.batch_scan_1.setEnabled(false); Boolean starta = s7PLC.readBoolean("DB1.2.5"); //A焊接完成 Boolean startb = s7PLC.readBoolean("DB1.2.3"); //B启动中 if(starta || startb){ // B启动中,A当做完成 MesClient.tjFlaga = 3; MesClient.pxstatus1.setText("A:设备运行结束,提交结果中"); MesClient.finish_ok_bt.setEnabled(true); Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn.getText(),"OK",MesClient.user20,"A"); if(!sendret){ MesClient.pxstatus1.setText("A:结果上传MES失败"); MesClient.tjStatusa = 1; }else{ // MesClient.pxstatus1.setText("A:提交成功"); // MesClient.status_menu.setText("A件提交成功"); // MesClient.resetScanA(); } } // Boolean sa = s7PLC.readBoolean("DB1.2.2"); //A启动中 // if(!sa){ // MesClient.pxstatus1.setText("A:设备运行停止"); // MesClient.finish_ok_bt.setEnabled(true); // } } } public static void getStatusBOld(S7PLC s7PLC){ String snb = ""; if(MesClient.tjFlagb == 0){ // 未扫码 snb = s7PLC.readString("DB8.100",50); System.out.println("snb:"+snb); if(!snb.isEmpty() && !MesClient.curSnb.equals(snb) && snb.length() == 33){ MesClient.product_sn2.setText(snb); }else{ snb = ""; } if(!MesClient.mesQualityFlagB && !snb.isEmpty() && MesClient.curSnb.isEmpty()){ // 查询工件质量 if(!MesClient.tcp_connect_flag) { MesClient.status_menu.setText("未连接MES服务器"); }else{ if(MesClient.checkB == 0) { MesClient.checkB = 1; MesClient.getUser(); Boolean sendret = DataUtil.checkQuality(MesClient.nettyClient,snb,MesClient.user20,"B"); if(!sendret){ MesClient.pxstatus2.setText("B:查询质量失败"); MesClient.checkB = 0; } } } } }else if(MesClient.tjFlagb == 1){ // 待运行 MesClient.checkB = 0; Boolean startb = s7PLC.readBoolean("DB1.2.3"); //B启动中 if(startb){ MesClient.curFlag = "B"; MesClient.tjFlagb = 2; MesClient.pxstatus2.setText("B:设备运行中"); PlcUtil.changeEnable(MesClient.s7PLC,false); } }else if(MesClient.tjFlagb == 2){ // 运行中 MesClient.batch_scan_2.setEnabled(false); Boolean starta = s7PLC.readBoolean("DB1.2.7"); //B焊接完成 Boolean startb = s7PLC.readBoolean("DB1.2.2"); //A启动中 if(starta || startb){ MesClient.tjFlagb = 3; MesClient.pxstatus2.setText("B:设备运行结束,提交结果中"); MesClient.finish_ng_bt.setEnabled(true); Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn2.getText(),"OK",MesClient.user20,"B"); if(!sendret){ MesClient.pxstatus2.setText("B:结果上传MES失败"); MesClient.tjStatusb = 1; }else{ // MesClient.pxstatus2.setText("B:提交成功"); // MesClient.status_menu.setText("B件提交成功"); // MesClient.resetScanB(); } } } } public static void getStatusA(S7PLC s7PLC){ if(MesClient.tjFlaga == 1){ // 已扫码,设备未运行 Boolean starta = getAStart(s7PLC); //A启动中 if(starta){ MesClient.curFlag = "A"; MesClient.tjFlaga = 2; MesClient.pxstatus1.setText("A:设备运行中"); // MesClient.formatScanType(1); // MesClient.batch_scan_1.setEnabled(false); PlcUtil.changeEnable(s7PLC,false); } }else if(MesClient.tjFlaga == 2){ Boolean afinish = getAFinish(s7PLC); //A焊接完成 if(afinish){ // B启动中,A当做完成 MesClient.tjFlaga = 3; MesClient.pxstatus1.setText("A:设备运行结束,提交结果中"); MesClient.finish_ok_bt.setEnabled(true); MesClient.finish_ng_bt.setEnabled(true); Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn.getText(),"OK",MesClient.user20,"A"); if(!sendret){ MesClient.pxstatus1.setText("A:结果上传MES失败"); MesClient.tjStatusa = 1; } } } } public static void getStatusB(S7PLC s7PLC){ if(MesClient.tjFlagb == 1){ // 已扫码,设备未运行 Boolean startb = getBStart(s7PLC); //B启动中 if(startb){ MesClient.curFlag = "B"; MesClient.tjFlagb = 2; MesClient.pxstatus2.setText("B:设备运行中"); MesClient.batch_scan_2.setEnabled(false); MesClient.formatScanType(1); PlcUtil.changeEnable(s7PLC,false); } }else if(MesClient.tjFlagb == 2){ Boolean bfinish = getBFinish(s7PLC); //B焊接完成 if(bfinish){ MesClient.tjFlagb = 3; MesClient.pxstatus2.setText("B:设备运行结束,提交结果中"); MesClient.finish_ng_bt2.setEnabled(true); MesClient.finish_ok_bt2.setEnabled(true); Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn2.getText(),"OK",MesClient.user20,"B"); if(!sendret){ MesClient.pxstatus2.setText("B:结果上传MES失败"); MesClient.tjStatusb = 1; } } } } // 获取A启动状态 public static Boolean getAStart(S7PLC s7PLC){ try{ return s7PLC.readBoolean("DB1.2.2"); }catch (Exception e){ e.printStackTrace(); return false; } } // 获取A的结束状态 public static Boolean getAFinish(S7PLC s7PLC){ try{ boolean a = s7PLC.readBoolean("DB1.2.5"); boolean b = s7PLC.readBoolean("DB1.2.6"); return a || b; }catch (Exception e){ e.printStackTrace(); return false; } } // 获取B启动状态 public static Boolean getBStart(S7PLC s7PLC){ try{ return s7PLC.readBoolean("DB1.2.6"); }catch (Exception e){ e.printStackTrace(); return false; } } // 获取B的结束状态 public static Boolean getBFinish(S7PLC s7PLC){ try{ boolean a = s7PLC.readBoolean("DB1.2.7"); boolean b = s7PLC.readBoolean("DB1.2.4"); return a || b; }catch (Exception e){ e.printStackTrace(); return false; } } // 修改设备的禁用开关 // DB9.26.4 MES允许启动信号 public static Boolean changeEnable(S7PLC s7PLC,Boolean result){ try{ //DB9.21.7 A//DB9.26.4 B s7PLC.writeBoolean("DB9.30.4",result); // s7PLC.writeBoolean("DB9.21.7",result); return true; }catch (Exception e){ e.printStackTrace(); return false; } } // 获取当前是A面还是B面 public static String getCurAside(S7PLC s7PLC){ String str = "A"; try{ Boolean ret = s7PLC.readBoolean("DB1.2.0"); // 当前A面 if(!ret){ str = "B"; } }catch (Exception e){ e.printStackTrace(); } return str; } }