CCD20
This commit is contained in:
@@ -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 = "已上传";
|
||||
|
||||
Reference in New Issue
Block a user