This commit is contained in:
ldw
2025-09-23 16:58:47 +08:00
parent bdce83e590
commit 96348bdf82
3 changed files with 225 additions and 708 deletions
+116 -52
View File
@@ -257,9 +257,13 @@ namespace JinYuan.ControlCenters
}
return Result;
}
private int JudgmentCCDResult(int A, int[,] B, int C)
/// <summary>
/// 判断总结果
/// </summary>
private (short, string, string) JudgmentWGJResult(int A, int[,] B, int C)
{
var ngType = new string[16] {"正面(2D/3D)结果",
var ngType = new string[20] {"正面(2D/3D)结果",
"反面(2D/3D)结果",
"左侧面(2D/3D)结果",
"右侧面(2D/3D)结果",
@@ -273,14 +277,19 @@ namespace JinYuan.ControlCenters
"中ME2结果",
"中ME3结果",
"中ME4结果",
"极柱(POS/NEG)结果",
"防爆阀(PRO)结果"
"右极柱(POS/NEG)结果",
"左极柱(POS/NEG)结果",
"防爆阀(PRO)结果",
"二维码结果",
"厚度结果",
"平面度结果"
};
int Result = 1;
OK_NG = "OK";
for (int i = 0; i < 16; i++)
short Result = 1;
var OK_NG = "OK";
var NG_Type = "";
for (int i = 0; i < 20; i++)
{
if (B[C,i] !=1)
if (B[C, i] != 1)
{
//1OK,2扫码NG,3MES反馈NG,4其他NG
Result = 4;
@@ -295,27 +304,44 @@ namespace JinYuan.ControlCenters
OK_NG = "NG";
}
return Result;
return (Result, OK_NG, NG_Type);
}
private int JudgmentThickNessResult(int[,] B, int C,int ccdResult =1)
//下料不良代码 外观检
public (List<string>, List<string>) NGWGJcode(string[,] lstResult, int index)
{
var ngType = new string[3] {"厚度1结果",
"厚度2结果",
"厚度3结果"
};
int Result = ccdResult;
for (int i = 0; i < 3; i++)
{
if (B[C, i] != 1)
{
//1OK,2扫码NG,3MES反馈NG,4其他NG
Result = 4;
OK_NG = "NG";
NG_Type += $"{ngType[i]}(NG),";
}
}
return Result;
List<string> NGcodelist = new List<string>();
List<string> NGmessagelist = new List<string>();
for (int i = 0; i < 20; i++)
{
var tempStr = lstResult[index, i];
if (tempStr.IndexOf(",") >= 0)
{
var arr = tempStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var str in arr)
{
var strCode = str.PadLeft(3, '0');
if (NGcodelist.Contains($"PFVA{strCode}"))
{
continue;
}
NGcodelist.Add($"PFVA{strCode}");
var codeEntity = CommonMethods.listNgCodeEntity.FirstOrDefault(x => strCode == x.ngCode);
if (codeEntity != null)
{
NGmessagelist.Add(codeEntity.ngMessage);
}
else
{
NGmessagelist.Add("未匹配不良编号");
}
}
}
}
return (NGcodelist, NGmessagelist);
}
#region 上料工位(数据处理)
/// <summary>
@@ -1805,26 +1831,37 @@ namespace JinYuan.ControlCenters
//芯包信息1 D3300~D3326
//芯包信息2 D3330~D3356
//芯包信息3 D3360~D3386
for (int j = 0; j < 16; j++)
for (int j = 0; j < 20; j++)
{
m.CCD_Data[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
}
//3400
m.Thickness1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2, DataFormat.CDAB).ToString();
m.ThicknessResult1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2 + 2 * 2, DataFormat.CDAB).ToString();
//3500
m.flatness_setpoint = FloatLib.GetFloatFromByteArray(bArrays.Content, 600 + i * 30 * 2, DataFormat.CDAB).ToString();
m.flatness_actual = FloatLib.GetFloatFromByteArray(bArrays.Content, 600 + i * 30 * 2 + 2 * 2, DataFormat.CDAB).ToString();
//厚度3400
for (int j = 0; j < 3; j++)
{
m.Thickness_Data[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2 + j * 4, DataFormat.CDAB);
}
//厚度plc 3500
for (int j = 0; j < 3; j++)
{
m.Thickness_PLCData[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 500 + i * 30 * 2 + j * 2, DataFormat.CDAB);
}
//for (int j = 0; j < 3; j++)
//{
// m.Thickness_Data[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2 + j * 4, DataFormat.CDAB);
//}
////厚度plc 3500
//for (int j = 0; j < 3; j++)
//{
// m.Thickness_PLCData[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 500 + i * 30 * 2 + j * 2, DataFormat.CDAB);
//}
//不良ng编号4300
for (int j = 0; j < 16; j++)
//for (int j = 0; j < 20; j++)
//{
// m.CCD_NgNo[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 2200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
//}
for (int j = 0; j < 20; j++)
{
m.CCD_NgNo[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 2200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
m.CCD_NgNo[i, j] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, (7800 * 2 + j * 40 * 2), 20 * 2, System.Text.Encoding.ASCII).
Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
//ShortLib.GetShortFromByteArray(bArrays.Content, 6800 *2 + j * 2, DataFormat.CDAB);
}
//芯包扫码时间
//m.ScanTime[i] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -1898,22 +1935,27 @@ namespace JinYuan.ControlCenters
m.CCDResult14 = m.CCD_Data[i, 13] == 1 ? "OK" : (m.CCD_Data[i, 13] == 0 ? "NG" : "缺图");
m.CCDResult15 = m.CCD_Data[i, 14] == 1 ? "OK" : (m.CCD_Data[i, 14] == 0 ? "NG" : "缺图");
m.CCDResult16 = m.CCD_Data[i, 15] == 1 ? "OK" : (m.CCD_Data[i, 15] == 0 ? "NG" : "缺图");
m.CCDResult17 = m.CCD_Data[i, 16] == 1 ? "OK" : (m.CCD_Data[i, 16] == 0 ? "NG" : "缺图");
m.CCDResult18 = m.CCD_Data[i, 17] == 1 ? "OK" : (m.CCD_Data[i, 17] == 0 ? "NG" : "缺图");
m.CCDResult19 = m.CCD_Data[i, 18] == 1 ? "OK" : (m.CCD_Data[i, 18] == 0 ? "NG" : "缺图");
m.CCDResult20 = m.CCD_Data[i, 19] == 1 ? "OK" : (m.CCD_Data[i, 19] == 0 ? "NG" : "缺图");
#endregion
#region //厚度判定结果
m.ThicknessResult1 = m.Thickness_PLCData[i, 0] == 1 ? "OK" : (m.Thickness_PLCData[i, 0] == 0 ? "NG" : "缺测");
m.ThicknessResult2 = m.Thickness_PLCData[i, 1] == 1 ? "OK" : (m.Thickness_PLCData[i, 1] == 0 ? "NG" : "缺测");
m.ThicknessResult3 = m.Thickness_PLCData[i, 2] == 1 ? "OK" : (m.Thickness_PLCData[i, 2] == 0 ? "NG" : "缺测");
#endregion
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
m.CSBYHPROCESSNAME = "外观检测";
m.CSBYHSCHEDULE = CommonMethods.strClass;
m.CSBYHINSTATIONTIME = m.ScanTime[0];
m.CSBYHINSTATIONTIME = m.ScanTime[0];
m.CSBYHOUTSTATIONTIME = m.ScanTime[1];
m.Thickness1 = SaveTwoNum(m.Thickness_Data[i, 0]);
m.Thickness2 = SaveTwoNum(m.Thickness_Data[i, 1]);
m.Thickness3 = SaveTwoNum(m.Thickness_Data[i, 2]);
m.MaterialCode = CommonMethods.mesConfig.MaterialCode;
//m.Thickness1 = SaveTwoNum(m.Thickness_Data[i, 0]);
//m.Thickness2 = SaveTwoNum(m.Thickness_Data[i, 1]);
//m.Thickness3 = SaveTwoNum(m.Thickness_Data[i, 2]);
m.ChannelNo = i + 1;
{ //此处预留
m.out_battery_grade = "";//出入站条码等级
m.in_battery_grade = "";
m.appearance_standard = "";
}
//条码,芯包重量,芯包侧厚,芯包CCD极性检测,电芯裁切粘连,电芯裁切毛刺,芯包焊印位置,
//芯包正面极耳撕裂,芯包背面极耳撕裂,芯包正面极耳翻折,芯包背面极耳翻折
if (Code_NG == 1)
@@ -1931,14 +1973,15 @@ namespace JinYuan.ControlCenters
}
else
MyRes[i] = 2;//扫码NG
MyRes[i] = JudgmentCCDResult(Code_NG, m.CCD_Data,i);
MyRes[i] = JudgmentThickNessResult(m.Thickness_PLCData, i, MyRes[i]);
var judementResult = JudgmentWGJResult(1, list[i].CCD_Data, i);
MyRes[i] = judementResult.Item1;
OK_NG = judementResult.Item2;
NG_Type = judementResult.Item3;
m.Result = MyRes[i];
m.CSBYHOUTSTATIONJUDGMENTRESULT = m.judgment_result[i] = OK_NG;
m.Remark += NG_Type;
m.MaterialCode = CommonMethods.mesConfig.MaterialCode;
NG_Type = "";//清除上一次不良字符串
OK_NG = ""; //清除上一次结果
@@ -2034,7 +2077,28 @@ namespace JinYuan.ControlCenters
}
//发送产品结果参数给MES
bool Res1 = CommonMethods.hbgMes.ProducResultParam(ur2, siteCode1, lineCode1, equipNum1, materialCode1, userName1, m, unloadType, ref Mesage);
list[i].PlcResult = MyRes[i];
#region 排出 3 外观NG电芯,4 厚度NG电芯
for (int i = 0; i < list.Count; i++)
{
if (list[i].PlcResult != 1)
{
//厚度不良分档 5 测厚不良 6 外观不良
if (list[i].CCD19 != 1)
{
m.Result = MyRes[i] = 5;
list[i].Remark += $",测厚度NG";
}
else
{
//外观不良分档
m.Result = MyRes[i] = 6;
list[i].Remark += $",外观检NG不良";
}
}
}
#endregion
if (m.Flag == 1)
m.UpState = "已上传";