|
|
@@ -103,11 +103,7 @@ public class PlcUtil {
|
|
|
// 获取A的结束状态
|
|
|
public static Boolean getAFinish(S7PLC s7PLC){
|
|
|
try{
|
|
|
- boolean a = s7PLC.readBoolean("DB1.2.5");
|
|
|
- boolean b = s7PLC.readBoolean("DB1.2.3");
|
|
|
-// Boolean ret = s7PLC.readBoolean("DB1.2.0");
|
|
|
-
|
|
|
- return a || b;
|
|
|
+ return s7PLC.readBoolean("DB1.2.5"); // A面焊接完成
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
return false;
|
|
|
@@ -125,13 +121,9 @@ public class PlcUtil {
|
|
|
if(MesClient.curSna == null || MesClient.curSna.isEmpty()){
|
|
|
MesClient.curSna = MesClient.product_sn.getText();
|
|
|
}
|
|
|
- }else{
|
|
|
- // A面(成品面)扫码后给允许启动信号
|
|
|
- Boolean reta = getEnable(s7PLC);
|
|
|
- if(!reta){
|
|
|
- PlcUtil.changeEnable(MesClient.s7PLC,true);
|
|
|
- }
|
|
|
}
|
|
|
+ // 允许信号已在MES放行时给过一次,这里不再重复给
|
|
|
+ // 否则会把B面完成时清除的信号又拉起来
|
|
|
}else if(MesClient.tjFlaga == 2){
|
|
|
Boolean afinish = getAFinish(s7PLC); //A焊接完成
|
|
|
if(afinish){
|
|
|
@@ -139,8 +131,8 @@ public class PlcUtil {
|
|
|
MesClient.pxstatus1.setText("A:设备运行结束,提交结果中");
|
|
|
MesClient.finish_ok_bt.setEnabled(true);
|
|
|
|
|
|
- // A面(成品面)加工完清除允许启动信号
|
|
|
- PlcUtil.changeEnable(s7PLC,false);
|
|
|
+ // A面加工完,给允许启动,为翻到B面做准备(B面不管控)
|
|
|
+ PlcUtil.changeEnable(s7PLC,true);
|
|
|
|
|
|
Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn.getText(),"OK",MesClient.user20,"A");
|
|
|
if(!sendret){
|
|
|
@@ -164,56 +156,25 @@ public class PlcUtil {
|
|
|
// 获取B的结束状态
|
|
|
public static Boolean getBFinish(S7PLC s7PLC){
|
|
|
try{
|
|
|
- boolean a = s7PLC.readBoolean("DB1.2.7");
|
|
|
- boolean b = s7PLC.readBoolean("DB1.2.2");
|
|
|
-// Boolean ret = s7PLC.readBoolean("DB1.2.1");
|
|
|
- return a || b;
|
|
|
+ return s7PLC.readBoolean("DB1.2.7"); // B面焊接完成
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // B面(半成品面)不管控,B面一进入运行状态就清除允许启动信号
|
|
|
+ // 用 DB1.2.3(B面运行中) 的上升沿,运行中是保持型信号,不会像脉冲那样被漏采
|
|
|
public static void getStatusB(S7PLC s7PLC){
|
|
|
- // B面(半成品面)不需要扫码,但需要控制允许信号
|
|
|
- String page = getCurAside(s7PLC);
|
|
|
-
|
|
|
- if(page.equals("B")){ // 当前在B面
|
|
|
- Boolean startb = getBStart(s7PLC); // B面运行中
|
|
|
-
|
|
|
- if(MesClient.tjFlagb == 0){ // 初始状态
|
|
|
- // 转到B面时自动给允许启动信号
|
|
|
- Boolean reta = getEnable(s7PLC);
|
|
|
- if(!reta){
|
|
|
- PlcUtil.changeEnable(MesClient.s7PLC,true);
|
|
|
- }
|
|
|
- MesClient.tjFlagb = 1; // 标记为已给允许信号
|
|
|
- MesClient.pxstatus2.setText("B:半成品面已允许启动");
|
|
|
- }else if(MesClient.tjFlagb == 1){ // 已给允许信号,等待启动
|
|
|
- if(startb){
|
|
|
- MesClient.curFlag = "B";
|
|
|
- MesClient.tjFlagb = 2;
|
|
|
- MesClient.pxstatus2.setText("B:设备运行中");
|
|
|
- }
|
|
|
- }else if(MesClient.tjFlagb == 2){ // 运行中,等待完成
|
|
|
- Boolean bfinish = getBFinish(s7PLC); // B焊接完成
|
|
|
- if(bfinish){
|
|
|
- MesClient.tjFlagb = 3;
|
|
|
- MesClient.pxstatus2.setText("B:设备运行结束");
|
|
|
-
|
|
|
- // B面加工完清除允许启动信号
|
|
|
- PlcUtil.changeEnable(s7PLC,false);
|
|
|
-
|
|
|
- // 重置B面状态,准备下一次
|
|
|
- MesClient.tjFlagb = 0;
|
|
|
- }
|
|
|
+ if(getBStart(s7PLC)){ // B面运行中 DB1.2.3
|
|
|
+ if(MesClient.tjFlagb == 0){ // 本次运行还没处理过
|
|
|
+ PlcUtil.changeEnable(s7PLC,false); // 清除允许启动,A面必须扫码
|
|
|
+ MesClient.tjFlagb = 1; // 标记已处理,防止重复清
|
|
|
+ MesClient.pxstatus2.setText("B:设备运行中,已清除允许启动");
|
|
|
+ System.err.println("B面进入运行状态,已清除允许启动信号");
|
|
|
}
|
|
|
}else{
|
|
|
- // 不在B面时重置状态
|
|
|
- if(MesClient.tjFlagb != 0){
|
|
|
- MesClient.tjFlagb = 0;
|
|
|
- MesClient.pxstatus2.setText("B:等待转到B面");
|
|
|
- }
|
|
|
+ MesClient.tjFlagb = 0; // 运行结束,复位标记,等下一件
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -242,6 +203,29 @@ public class PlcUtil {
|
|
|
|
|
|
|
|
|
|
|
|
+ // 调试用:每秒打印关键状态位,确认PLC实际波形
|
|
|
+ public static void dumpBits(S7PLC s7PLC){
|
|
|
+ try{
|
|
|
+ boolean a识别 = s7PLC.readBoolean("DB1.2.0");
|
|
|
+ boolean b识别 = s7PLC.readBoolean("DB1.2.1");
|
|
|
+ boolean a运行 = s7PLC.readBoolean("DB1.2.2");
|
|
|
+ boolean b运行 = s7PLC.readBoolean("DB1.2.3");
|
|
|
+ boolean a焊接中 = s7PLC.readBoolean("DB1.2.4");
|
|
|
+ boolean a完成 = s7PLC.readBoolean("DB1.2.5");
|
|
|
+ boolean b焊接中 = s7PLC.readBoolean("DB1.2.6");
|
|
|
+ boolean b完成 = s7PLC.readBoolean("DB1.2.7");
|
|
|
+ boolean 允许 = s7PLC.readBoolean("DB9.22.3");
|
|
|
+ System.err.println("BITS A识别=" + a识别 + " B识别=" + b识别
|
|
|
+ + " A运行=" + a运行 + " B运行=" + b运行
|
|
|
+ + " A焊中=" + a焊接中 + " A完成=" + a完成
|
|
|
+ + " B焊中=" + b焊接中 + " B完成=" + b完成
|
|
|
+ + " 允许启动=" + 允许
|
|
|
+ + " tjFlaga=" + MesClient.tjFlaga + " tjFlagb=" + MesClient.tjFlagb);
|
|
|
+ }catch (Exception e){
|
|
|
+ System.err.println("BITS 读取失败: " + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 获取当前是A面还是B面
|
|
|
public static String getCurAside(S7PLC s7PLC){
|
|
|
String str = "A";
|