|
|
@@ -14,7 +14,8 @@ public class PlcUtil {
|
|
|
Boolean starta = getAStart(s7PLC); //A启动中
|
|
|
Boolean startb = getBStart(s7PLC); //B启动中
|
|
|
|
|
|
- if(MesClient.tjFlaga == 2 || MesClient.tjFlagb == 2){ //运行中
|
|
|
+ // 只采集A面(成品面)数据
|
|
|
+ if(MesClient.tjFlaga == 2){ // A面运行中
|
|
|
Float dya = s7PLC.readFloat32("DB1010.2");
|
|
|
Float dla = s7PLC.readFloat32("DB1010.8");
|
|
|
Float ssa = s7PLC.readFloat32("DB1010.14");
|
|
|
@@ -45,24 +46,16 @@ public class PlcUtil {
|
|
|
|
|
|
if(MesClient.hjparams.size() == 60){
|
|
|
try{
|
|
|
- // 根据curFlag确定工位号和工件码
|
|
|
+ // 只保存A面(成品面)数据
|
|
|
String oprno = MesClient.mes_gw+"A";
|
|
|
String sn = MesClient.curSna;
|
|
|
- if(MesClient.curFlag.equals("B")){
|
|
|
- oprno = MesClient.mes_gw+"B";
|
|
|
- sn = MesClient.curSnb;
|
|
|
- }
|
|
|
if(MesClient.mes_gwflag.equals("B")){
|
|
|
- if(MesClient.curFlag.equals("A")){
|
|
|
- oprno = MesClient.mes_gw+"C";
|
|
|
- }else{
|
|
|
- oprno = MesClient.mes_gw+"D";
|
|
|
- }
|
|
|
+ oprno = MesClient.mes_gw+"C";
|
|
|
}
|
|
|
// 检查工件码是否为空,为空则不上传
|
|
|
if(sn != null && !sn.trim().isEmpty()){
|
|
|
JdbcUtils.insertCmtData(oprno,MesClient.mes_line_sn,sn, JSON.toJSONString(MesClient.hjparams));
|
|
|
- System.out.println("cmt:"+MesClient.curFlag+" sn:"+sn);
|
|
|
+ System.out.println("cmt:A面成品 sn:"+sn);
|
|
|
}else{
|
|
|
System.out.println("工件码为空,跳过保存数据");
|
|
|
}
|
|
|
@@ -72,26 +65,19 @@ public class PlcUtil {
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
+ // 保存剩余数据(仅A面)
|
|
|
if(MesClient.hjparams.size() != 60 && MesClient.hjparams.size() > 0){
|
|
|
try{
|
|
|
- // 根据curFlag确定工位号和工件码
|
|
|
+ // 只保存A面(成品面)数据
|
|
|
String oprno = MesClient.mes_gw+"A";
|
|
|
String sn = MesClient.curSna;
|
|
|
- if(MesClient.curFlag.equals("B")){
|
|
|
- oprno = MesClient.mes_gw+"B";
|
|
|
- sn = MesClient.curSnb;
|
|
|
- }
|
|
|
if(MesClient.mes_gwflag.equals("B")){
|
|
|
- if(MesClient.curFlag.equals("A")){
|
|
|
- oprno = MesClient.mes_gw+"C";
|
|
|
- }else{
|
|
|
- oprno = MesClient.mes_gw+"D";
|
|
|
- }
|
|
|
+ oprno = MesClient.mes_gw+"C";
|
|
|
}
|
|
|
// 检查工件码是否为空,为空则不上传
|
|
|
if(sn != null && !sn.trim().isEmpty()){
|
|
|
JdbcUtils.insertCmtData(oprno,MesClient.mes_line_sn,sn, JSON.toJSONString(MesClient.hjparams));
|
|
|
- System.out.println("cmt:"+MesClient.curFlag+" sn:"+sn);
|
|
|
+ System.out.println("cmt:A面成品剩余数据 sn:"+sn);
|
|
|
}else{
|
|
|
System.out.println("工件码为空,跳过保存剩余数据");
|
|
|
}
|
|
|
@@ -139,34 +125,27 @@ public class PlcUtil {
|
|
|
if(MesClient.curSna == null || MesClient.curSna.isEmpty()){
|
|
|
MesClient.curSna = MesClient.product_sn.getText();
|
|
|
}
|
|
|
- if(MesClient.lastpage == 0){
|
|
|
- MesClient.lastpage = 1;
|
|
|
- PlcUtil.changeEnable(s7PLC,false);
|
|
|
- }
|
|
|
}else{
|
|
|
- // 程序号防错功能已注释 - 直接允许启动
|
|
|
- // if(CommonUtils.checkProgramNoSn(MesClient.product_sn.getText(),MesClient.programNoA)){
|
|
|
- Boolean reta = getEnable(s7PLC);
|
|
|
- if(!reta){
|
|
|
- PlcUtil.changeEnable(MesClient.s7PLC,true);
|
|
|
- }
|
|
|
- // }
|
|
|
+ // A面(成品面)扫码后给允许启动信号
|
|
|
+ Boolean reta = getEnable(s7PLC);
|
|
|
+ if(!reta){
|
|
|
+ PlcUtil.changeEnable(MesClient.s7PLC,true);
|
|
|
+ }
|
|
|
}
|
|
|
}else if(MesClient.tjFlaga == 2){
|
|
|
Boolean afinish = getAFinish(s7PLC); //A焊接完成
|
|
|
- if(afinish){ // B启动中,A当做完成
|
|
|
+ if(afinish){
|
|
|
MesClient.tjFlaga = 3;
|
|
|
MesClient.pxstatus1.setText("A:设备运行结束,提交结果中");
|
|
|
MesClient.finish_ok_bt.setEnabled(true);
|
|
|
|
|
|
+ // A面(成品面)加工完清除允许启动信号
|
|
|
+ PlcUtil.changeEnable(s7PLC,false);
|
|
|
+
|
|
|
Boolean sendret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn.getText(),"OK",MesClient.user20,"A");
|
|
|
-// Boolean sendret = DataUtil.sendQuality(MesClient.product_sn.getText(),"OK",MesClient.user20,"A");
|
|
|
if(!sendret){
|
|
|
MesClient.pxstatus1.setText("A:结果上传MES失败");
|
|
|
MesClient.tjStatusa = 1;
|
|
|
- }else{
|
|
|
-// MesClient.pxstatus1.setText("A:提交成功");
|
|
|
-// MesClient.resetScanA();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -196,47 +175,45 @@ public class PlcUtil {
|
|
|
}
|
|
|
|
|
|
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:设备运行中");
|
|
|
- // 更新curSnb为当前文本框中的工件码
|
|
|
- if(MesClient.curSnb == null || MesClient.curSnb.isEmpty()){
|
|
|
- MesClient.curSnb = MesClient.product_sn2.getText();
|
|
|
+ // 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:设备运行中");
|
|
|
}
|
|
|
- if(MesClient.lastpage == 0){
|
|
|
- MesClient.lastpage = 1;
|
|
|
+ }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;
|
|
|
}
|
|
|
- }else{
|
|
|
- // 程序号防错功能已注释 - 直接允许启动
|
|
|
- // if(CommonUtils.checkProgramNoSn(MesClient.product_sn2.getText(),MesClient.programNoB)){
|
|
|
- Boolean reta = getEnable(s7PLC);
|
|
|
- if(!reta){
|
|
|
- PlcUtil.changeEnable(MesClient.s7PLC,true);
|
|
|
- }
|
|
|
- // }
|
|
|
}
|
|
|
- }else if(MesClient.tjFlagb == 2){
|
|
|
- Boolean bfinish = getBFinish(s7PLC); //B焊接完成
|
|
|
- if(bfinish){
|
|
|
- MesClient.tjFlagb = 3;
|
|
|
- MesClient.pxstatus2.setText("B:设备运行结束,提交结果中");
|
|
|
- MesClient.finish_ng_bt.setEnabled(true);
|
|
|
-
|
|
|
-// Boolean sendret = DataUtil.sendQuality(MesClient.product_sn2.getText(),"OK",MesClient.user20,"B");
|
|
|
- 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.resetScanB();
|
|
|
- }
|
|
|
+ }else{
|
|
|
+ // 不在B面时重置状态
|
|
|
+ if(MesClient.tjFlagb != 0){
|
|
|
+ MesClient.tjFlagb = 0;
|
|
|
+ MesClient.pxstatus2.setText("B:等待转到B面");
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -244,7 +221,7 @@ public class PlcUtil {
|
|
|
// 修改设备的禁用开关
|
|
|
public static Boolean changeEnable(S7PLC s7PLC,Boolean result){
|
|
|
try{
|
|
|
- s7PLC.writeBoolean("DB9.18.1",result); // AB
|
|
|
+ s7PLC.writeBoolean("DB9.22.3",result); // MES允许信号
|
|
|
return true;
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
@@ -256,7 +233,7 @@ public class PlcUtil {
|
|
|
public static Boolean getEnable(S7PLC s7PLC){
|
|
|
Boolean ret = false;
|
|
|
try{
|
|
|
- ret = s7PLC.readBoolean("DB9.18.1");
|
|
|
+ ret = s7PLC.readBoolean("DB9.22.3");
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -269,9 +246,13 @@ public class PlcUtil {
|
|
|
public static String getCurAside(S7PLC s7PLC){
|
|
|
String str = "A";
|
|
|
try{
|
|
|
- Boolean ret = s7PLC.readBoolean("DB1.2.0"); // 当前A面
|
|
|
- if(!ret){
|
|
|
+ Boolean retA = s7PLC.readBoolean("DB1.2.0"); // A面识别
|
|
|
+ Boolean retB = s7PLC.readBoolean("DB1.2.1"); // B面识别
|
|
|
+
|
|
|
+ if(retB){
|
|
|
str = "B";
|
|
|
+ }else if(retA){
|
|
|
+ str = "A";
|
|
|
}
|
|
|
|
|
|
}catch (Exception e){
|