package com.mes.ui; import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp; import com.mes.util.JdbcUtils; import java.nio.charset.Charset; public class ModbusUtil { public static void getDataA(ModbusTcp plc){ // 说明预设数量有变化不能修改 // 打钉数应按实际监听数算 // 41065=F-out 41066=S-out // 41069=F-min 41071=S-min 41070=F-max 41072=S-max // 预设数量=41129 完成数=41137 Short cur = plc.readInt16(1136); // System.out.println("F-out:"+plc.readInt16(1064)); // System.out.println("S-out:"+plc.readInt16(1065)); // System.out.println("F-min:"+plc.readInt16(1068)); // System.out.println("S-min:"+plc.readInt16(1070)); // System.out.println("F-max:"+plc.readInt16(1069)); // System.out.println("S-max:"+plc.readInt16(1071)); // System.out.println("预设数量:"+plc.readInt16(1128)); //System.out.println("当前数量:"+cur); if(MesClient.aMax <= 0){ MesClient.aMax = plc.readInt16(1128); // 任务数量 MesClient.param1.setText(String.valueOf(MesClient.aMax)); } if(MesClient.sortA == cur - 1){ MesClient.sortA = cur; MesClient.aFinish = plc.readInt16(1138); String fout = plc.readInt16(1064)+""; String sout = (float)plc.readInt16(1065)/1000+""; String fmin = plc.readInt16(1068)+""; String smin = (float)plc.readInt16(1070)/1000+""; String fmax = plc.readInt16(1069)+""; String smax = (float)plc.readInt16(1071)/1000+""; MesClient.param2.setText(cur+""); System.out.println("cur:"+cur); if(MesClient.sortA == 21){ plc.writeInt16(1070,(short) 3000); plc.writeInt16(1071,(short) 5000); } if(!MesClient.product_sn.getText().isEmpty()){ JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"A",fout,sout,fmin,smin,fmax,smax,"1",cur+"", MesClient.user_menu.getText()); } } upResult(); } public static void getDataB(ModbusTcp plc){ // 41065=F-out 41066=S-out // 41069=F-min 41071=S-min 41070=F-max 41072=S-max // 预设数量=41129 完成数=41137 Short cur = plc.readInt16(1136); // System.out.println("F-out:"+plc.readInt16(1064)); // System.out.println("S-out:"+plc.readInt16(1065)); // System.out.println("F-min:"+plc.readInt16(1068)); // System.out.println("S-min:"+plc.readInt16(1070)); // System.out.println("F-max:"+plc.readInt16(1069)); // System.out.println("S-max:"+plc.readInt16(1071)); // System.out.println("set:"+plc.readInt16(1128)); // System.out.println("cur:"+cur); // System.out.println("cur2:"+MesClient.sortB); if(MesClient.bMax <= 0){ MesClient.bMax = plc.readInt16(1128); MesClient.param3.setText(String.valueOf(MesClient.bMax)); } if(MesClient.sortB == cur - 1){ MesClient.sortB = cur; String fout = plc.readInt16(1064)+""; String sout = (float)plc.readInt16(1065)/1000+""; String fmin = plc.readInt16(1068)+""; String smin = (float)plc.readInt16(1070)/1000+""; String fmax = plc.readInt16(1069)+""; String smax = (float)plc.readInt16(1071)/1000+""; if(MesClient.sortB == 18){ if(MesClient.bMax == 22){ plc.writeInt16(1070,(short) 4000); plc.writeInt16(1071,(short) 5500); } } MesClient.param4.setText(cur+""); System.out.println("cur:"+cur); if(!MesClient.product_sn.getText().isEmpty()){ JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"B",fout,sout,fmin,smin,fmax,smax,"1",cur+"", MesClient.user_menu.getText()); } } upResult(); } // 上传总结果 public static void upResult(){ if(!MesClient.curSn.isEmpty() && MesClient.aMax > 0 && MesClient.aMax == MesClient.sortA && MesClient.bMax > 0 && MesClient.bMax == MesClient.sortB){ MesClient.finish_ok_bt.setEnabled(true); MesClient.finish_ng_bt.setEnabled(true); if(MesClient.tjStatus == 0 && MesClient.check_quality_result){ MesClient.tjStatus = 1; MesClient.getUser(); String retf = "OK"; if(MesClient.aFinish != MesClient.aMax){ retf = "NG"; } Boolean ret = DataUtil.sendQuality(MesClient.nettyClient, MesClient.product_sn.getText(),retf, MesClient.user20); if(!ret){ MesClient.setMenuStatus(MesClient.tjFlagTextErr,-1); } } } } // 获取控制模式 public static short getControlModel(ModbusTcp plc){ short control = 0; try{ control = plc.readInt16(1090); }catch (Exception e){ e.printStackTrace(); } return control; } // 获取二维码 public static String getSn(ModbusTcp plc){ String sn = ""; try{ sn = plc.readString(1216,40, Charset.forName("UTF8")); }catch (Exception e){ e.printStackTrace(); } return splitIntoChunks(sn,2); } // 每两个字符分割,并反转 private static String splitIntoChunks(String str, int chunkSize) { if (str == null || str.isEmpty() || chunkSize <= 0) { return ""; } int length = str.length(); int arraySize = (length + chunkSize - 1) / chunkSize; String[] result = new String[arraySize]; for (int i = 0, j = 0; i < length; i += chunkSize, j++) { int endIndex = Math.min(i + chunkSize, length); String sttr = str.substring(i, endIndex); StringBuilder sb = new StringBuilder(sttr); String reversedStr = sb.reverse().toString(); // 字符串反转 result[j] = reversedStr; } return String.join("",result); } // 远程开机 public static Boolean setPowerOn(ModbusTcp plc){ Boolean ret = false; try{ plc.writeCoil(3128,true); // plc.writeCoil(3079,false); // plc.writeCoil(3328,true); // 必须选关掉关机,开机才起左右 ret = true; }catch (Exception e){ e.printStackTrace(); ret = false; } return ret; } // 远程关机 public static Boolean setPowerOff(ModbusTcp plc){ Boolean ret = false; try{ plc.writeCoil(3128,false); // plc.writeCoil(3328,false); // plc.writeCoil(3079,true); // 关机 // 必须选关掉关机,开机才起左右 ret = true; }catch (Exception e){ e.printStackTrace(); ret = false; } return ret; } // 重置任务 public static void setTask(ModbusTcp plc,Short setNum){ try{ // 设置模式 1=标记铆接模式 plc.writeInt16(1092,(short) 1); // 设置任务 plc.writeInt16(1128,setNum); plc.writeInt16(1136,(short) 0); plc.writeInt16(1138,(short) 0); if(setNum == 22){ plc.writeInt16(1070,(short) 2500); plc.writeInt16(1071,(short) 4500); } if (setNum == 40){ plc.writeInt16(1070,(short) 2000); plc.writeInt16(1071,(short) 4000); } }catch (Exception e){ e.printStackTrace(); } } // A枪说明 192.168.1.7 // plc.writeCoil(3079,false); // plc.writeCoil(3328,true); // 必须选关掉关机,开机才起左右 //// plc.writeCoil(3128,false); // System.out.println("控制模式:"+plc.readInt16(1090)); // 1091 控制模式 // System.out.println("系统运行中:"+plc.readCoil(3128,1)); // 3129 系统运行中 // System.out.println("结束暂停:"+plc.readCoil(3132,1)); // 3133 系统运行中 // System.out.println("远程开机:"+plc.readCoil(3328,1)); // 3329 远程开机 // System.out.println("远程关机:"+plc.readCoil(3079,1)); // 3080 远程关机 // System.out.println("作业模式:"+plc.readInt16(1092)); // 1093 作业模式 // System.out.println("最大拉力:"+plc.readInt16(1064)); // 1065 最大拉力 // System.out.println("对应位移:"+plc.readInt16(1065)); // 1066 对应位移 // System.out.println("任务数量:"+plc.readInt16(1128)); // 1129 任务数量 // System.out.println("合格数量:"+plc.readInt16(1138)); // 1139 合格数量 // System.out.println("质量状态:"+plc.readInt16(1072)); // 1073 质量状态 // System.out.println("F-out:"+plc.readInt16(1064)); // System.out.println("S-out:"+plc.readInt16(1065)); // System.out.println("F-min:"+plc.readInt16(1068)); // System.out.println("S-min:"+plc.readInt16(1070)); // System.out.println("F-max:"+plc.readInt16(1069)); // System.out.println("S-max:"+plc.readInt16(1071)); }