优化出站程序逻辑
This commit is contained in:
@@ -362,3 +362,4 @@ MigrationBackup/
|
||||
FodyWeavers.xsd
|
||||
*.rar
|
||||
/LargeSquareOne/App.config
|
||||
/JinYuan.Helper/JinYuan.Helper.csproj.user
|
||||
|
||||
@@ -1790,487 +1790,488 @@ namespace JinYuan.ControlCenters
|
||||
private void BlankingStation(JYResult<byte[]> bArrays, object plcModel)
|
||||
{
|
||||
Group pf = plcModel as Group;
|
||||
if (bArrays == null)
|
||||
if (bArrays == null || !bArrays.IsSuccess || bArrays.Content == null)
|
||||
{
|
||||
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
|
||||
CommonMethods.AddLog(false, $"电芯出站PLC有触发信号,但无数据!");
|
||||
LoggerHelp.WriteLog($"电芯出站PLC有触发信号,但无数据!", "SysErrorLog");
|
||||
|
||||
return;
|
||||
}
|
||||
if (bArrays.IsSuccess && bArrays.Content != null)
|
||||
|
||||
Random random = new Random();
|
||||
//解析数据
|
||||
sw2.Restart();
|
||||
#region 数据变量定义
|
||||
List<BGearEntity> list = new List<BGearEntity>();//实体
|
||||
//int[] MyRes = new int[2];//AB反馈结果
|
||||
int[] MyRes = new int[3];//三个外观检测反馈结果
|
||||
#endregion
|
||||
//高低位转换
|
||||
byte[] bytes = bArrays.Content.ByteReverse();
|
||||
byte[] bytes1 = bArrays.Content;
|
||||
|
||||
List<string> listBarCode = GetList<string>(3, "");//电芯条码
|
||||
//List<string> listNum = GetList<string>(1, "");//进站磁悬浮动子编号
|
||||
List<short> listRes = GetList<short>(3, 0);//出站电芯反馈结果
|
||||
//反馈结果
|
||||
#region 电芯解析
|
||||
//电芯解析 从3200 开始
|
||||
listBarCode[0] = StringLib.GetStringFromByteArrayByEncoding(bytes, 0, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
listBarCode[1] = StringLib.GetStringFromByteArrayByEncoding(bytes, 40, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
listBarCode[2] = StringLib.GetStringFromByteArrayByEncoding(bytes, 80, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
#endregion
|
||||
#region 上传MES
|
||||
//D3200起
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
Random random = new Random();
|
||||
//解析数据
|
||||
sw2.Restart();
|
||||
#region 数据变量定义
|
||||
List<BGearEntity> list = new List<BGearEntity>();//实体
|
||||
//int[] MyRes = new int[2];//AB反馈结果
|
||||
int[] MyRes = new int[3];//三个外观检测反馈结果
|
||||
#endregion
|
||||
//高低位转换
|
||||
byte[] bytes = bArrays.Content.ByteReverse();
|
||||
byte[] bytes1 = bArrays.Content;
|
||||
|
||||
List<string> listBarCode = GetList<string>(3, "");//电芯条码
|
||||
//List<string> listNum = GetList<string>(1, "");//进站磁悬浮动子编号
|
||||
List<short> listRes = GetList<short>(3, 0);//出站电芯反馈结果
|
||||
//反馈结果
|
||||
#region 电芯解析
|
||||
//电芯解析 从3200 开始
|
||||
listBarCode[0] = StringLib.GetStringFromByteArrayByEncoding(bytes, 0, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
listBarCode[1] = StringLib.GetStringFromByteArrayByEncoding(bytes, 40, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
listBarCode[2] = StringLib.GetStringFromByteArrayByEncoding(bytes, 80, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
#region 上传MES
|
||||
//D3200起
|
||||
for (int i = 0; i < 3; i++)
|
||||
try
|
||||
{
|
||||
try
|
||||
BGearEntity m = new BGearEntity();
|
||||
AGearEntity TT = new AGearEntity();
|
||||
//极限件标志
|
||||
int ChallengeFlag = 0;
|
||||
//芯包信息1 D3300~D3326
|
||||
//芯包信息2 D3330~D3356
|
||||
//芯包信息3 D3360~D3386
|
||||
for (int j = 0; j < 27; j++)
|
||||
{
|
||||
BGearEntity m = new BGearEntity();
|
||||
AGearEntity TT = new AGearEntity();
|
||||
//极限件标志
|
||||
int ChallengeFlag = 0;
|
||||
//芯包信息1 D3300~D3326
|
||||
//芯包信息2 D3330~D3356
|
||||
//芯包信息3 D3360~D3386
|
||||
for (int j = 0; j < 27; j++)
|
||||
m.CCD_Data[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
|
||||
}
|
||||
// CCD
|
||||
m.CCD_Data[i, 19] = ShortLib.GetShortFromByteArray(bArrays.Content, 600 + i * 30 * 2 + 20, DataFormat.CDAB);
|
||||
|
||||
//3400 3430 3460
|
||||
m.Thickness1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2, DataFormat.CDAB).ToString();
|
||||
//3401 3431 3461
|
||||
m.ThicknessResult1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2 + 2 * 2, DataFormat.CDAB).ToString();
|
||||
//3500 3530 3560
|
||||
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);
|
||||
//}
|
||||
//不良ng编号4300
|
||||
//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 < 27; j++)
|
||||
{
|
||||
m.CCD_NgNo[i, j] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, (7800 * 2 + j * 40 * 2 + i * 2 * 1000), 20 * 2, System.Text.Encoding.ASCII).
|
||||
Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
//ShortLib.GetShortFromByteArray(bArrays.Content, 6800 *2 + j * 2, DataFormat.CDAB);
|
||||
}
|
||||
|
||||
#region 视觉新增不良缺陷数据 by clm 20260724
|
||||
List<int> qrCodeAddressList = new List<int>();
|
||||
for (int k = 0; k < 4; k++)
|
||||
{
|
||||
int address = 9750 + k * 2 + i * 8;
|
||||
qrCodeAddressList.Add(address);
|
||||
}
|
||||
|
||||
m.QrCodeWidth = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[0], DataFormat.CDAB).ToString();
|
||||
m.QrCodeHeight = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[1], DataFormat.CDAB).ToString();
|
||||
m.QrCodeTopMargin = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[2], DataFormat.CDAB).ToString();
|
||||
m.QrCodeLeftMargin = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[3], DataFormat.CDAB).ToString();
|
||||
#endregion
|
||||
|
||||
//芯包扫码时间
|
||||
//m.ScanTime[i] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
m.BarCode = listBarCode[i];
|
||||
//m.CSBYHCODEA = "TEST";
|
||||
#region 极限件查询
|
||||
//var EX = CommonMethods.db.QuerySqlList<Challenge>(CommonMethods.dBSQL.GetChallengeCode(m.BarCode));
|
||||
//for (int j = 0; j < EX.Count; j++)
|
||||
//{
|
||||
// if (string.Compare(EX[j].ChallengeBarCode, m.BarCode) == 0)
|
||||
// {
|
||||
// m.Remark += "(极限件," + EX[j].CodeMessage + "," + EX[j].WeldingCCD + ")";
|
||||
// ChallengeFlag = 1;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
//查询进站时间数据
|
||||
var w = CommonMethods.db.QuerySqlList<AGearEntity>(CommonMethods.dBSQL.GetInTime(m.BarCode));
|
||||
//获取新一行数据
|
||||
if (w.Count > 0)
|
||||
TT = w[w.Count - 1];
|
||||
//
|
||||
//if (w.Count > 0)
|
||||
// TT = w[0];
|
||||
if (TT.TestTime != null)
|
||||
m.ScanTime[0] = TT.TestTime;
|
||||
else
|
||||
m.ScanTime[0] = "";
|
||||
//芯包出站时间
|
||||
m.ScanTime[1] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
//复投次数
|
||||
m.RethrowNum = 0;
|
||||
if (w.Count > 0)
|
||||
{
|
||||
int cccc = w.Count;
|
||||
m.RethrowNum = cccc - 1;
|
||||
}
|
||||
|
||||
int Code_NG = 0;//条码有无标志 1为有,2为无
|
||||
//判断有无条码
|
||||
if (m.BarCode != null && m.BarCode != "" && m.BarCode != "ERROR")
|
||||
Code_NG = 1;
|
||||
else
|
||||
Code_NG = 2;
|
||||
|
||||
//m.ChannelNo = m.MyNo[i];
|
||||
//m.TestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
//不良代码判定
|
||||
//List<string> NGcodeList = new List<string>();
|
||||
//NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
|
||||
// , m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
|
||||
// var (NGcodeList, NGmessage) = NGWGJcode(m.CCD_Data, i);
|
||||
|
||||
//电芯CCD判定结果
|
||||
#region //电芯CCD判定结果 1 0K 0NG 2缺图
|
||||
m.CCD1 = m.CCD_Data[i, 0];
|
||||
m.CCD2 = m.CCD_Data[i, 1];
|
||||
m.CCD3 = m.CCD_Data[i, 2];
|
||||
m.CCD4 = m.CCD_Data[i, 3];
|
||||
m.CCD5 = m.CCD_Data[i, 4];
|
||||
m.CCD6 = m.CCD_Data[i, 5];
|
||||
m.CCD7 = m.CCD_Data[i, 6];
|
||||
m.CCD8 = m.CCD_Data[i, 7];
|
||||
m.CCD9 = m.CCD_Data[i, 8];
|
||||
m.CCD10 = m.CCD_Data[i, 9];
|
||||
m.CCD11 = m.CCD_Data[i, 10];
|
||||
m.CCD12 = m.CCD_Data[i, 11];
|
||||
m.CCD13 = m.CCD_Data[i, 12];
|
||||
m.CCD14 = m.CCD_Data[i, 13];
|
||||
m.CCD15 = m.CCD_Data[i, 14];
|
||||
m.CCD16 = m.CCD_Data[i, 15];
|
||||
m.CCD17 = m.CCD_Data[i, 16];
|
||||
m.CCD18 = m.CCD_Data[i, 17];
|
||||
m.CCD19 = m.CCD_Data[i, 18];
|
||||
m.CCD20 = m.CCD_Data[i, 19];
|
||||
m.CCD21 = m.CCD_Data[i, 20];
|
||||
m.CCD22 = m.CCD_Data[i, 21];
|
||||
m.CCD23 = m.CCD_Data[i, 22];
|
||||
m.CCD24 = m.CCD_Data[i, 23];
|
||||
m.CCD25 = m.CCD_Data[i, 24];
|
||||
m.CCD26 = m.CCD_Data[i, 25];
|
||||
m.CCD27 = m.CCD_Data[i, 26];
|
||||
|
||||
m.CCDResult1 = m.CCD_Data[i, 0] == 1 ? "OK" : (m.CCD_Data[i, 0] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult2 = m.CCD_Data[i, 1] == 1 ? "OK" : (m.CCD_Data[i, 1] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult3 = m.CCD_Data[i, 2] == 1 ? "OK" : (m.CCD_Data[i, 2] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult4 = m.CCD_Data[i, 3] == 1 ? "OK" : (m.CCD_Data[i, 3] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult5 = m.CCD_Data[i, 4] == 1 ? "OK" : (m.CCD_Data[i, 4] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult6 = m.CCD_Data[i, 5] == 1 ? "OK" : (m.CCD_Data[i, 5] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult7 = m.CCD_Data[i, 6] == 1 ? "OK" : (m.CCD_Data[i, 6] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult8 = m.CCD_Data[i, 7] == 1 ? "OK" : (m.CCD_Data[i, 7] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult9 = m.CCD_Data[i, 8] == 1 ? "OK" : (m.CCD_Data[i, 8] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult10 = m.CCD_Data[i, 9] == 1 ? "OK" : (m.CCD_Data[i, 9] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult11 = m.CCD_Data[i, 10] == 1 ? "OK" : (m.CCD_Data[i, 10] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult12 = m.CCD_Data[i, 11] == 1 ? "OK" : (m.CCD_Data[i, 11] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult13 = m.CCD_Data[i, 12] == 1 ? "OK" : (m.CCD_Data[i, 12] == 0 ? "NG" : "缺图");
|
||||
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" : "缺图");
|
||||
m.CCDResult21 = m.CCD_Data[i, 20] == 1 ? "OK" : (m.CCD_Data[i, 20] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult22 = m.CCD_Data[i, 21] == 9 ? "OK" : (m.CCD_Data[i, 21] == 1 ? "NG" : "缺图"); //总结果
|
||||
m.CCDResult23 = m.CCD_Data[i, 22] == 1 ? "OK" : (m.CCD_Data[i, 22] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult24 = m.CCD_Data[i, 23] == 1 ? "OK" : (m.CCD_Data[i, 23] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult25 = m.CCD_Data[i, 24] == 1 ? "OK" : (m.CCD_Data[i, 24] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult26 = m.CCD_Data[i, 25] == 1 ? "OK" : (m.CCD_Data[i, 25] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult27 = m.CCD_Data[i, 26] == 1 ? "OK" : (m.CCD_Data[i, 26] == 0 ? "NG" : "缺图");
|
||||
m.CCD1NgCode = m.CCD_NgNo[i, 0];
|
||||
m.CCD2NgCode = m.CCD_NgNo[i, 1];
|
||||
m.CCD3NgCode = m.CCD_NgNo[i, 2];
|
||||
m.CCD4NgCode = m.CCD_NgNo[i, 3];
|
||||
m.CCD5NgCode = m.CCD_NgNo[i, 4];
|
||||
m.CCD6NgCode = m.CCD_NgNo[i, 5];
|
||||
m.CCD7NgCode = m.CCD_NgNo[i, 6];
|
||||
m.CCD8NgCode = m.CCD_NgNo[i, 7];
|
||||
m.CCD9NgCode = m.CCD_NgNo[i, 8];
|
||||
m.CCD10NgCode = m.CCD_NgNo[i, 9];
|
||||
m.CCD11NgCode = m.CCD_NgNo[i, 10];
|
||||
m.CCD12NgCode = m.CCD_NgNo[i, 11];
|
||||
m.CCD13NgCode = m.CCD_NgNo[i, 12];
|
||||
m.CCD14NgCode = m.CCD_NgNo[i, 13];
|
||||
m.CCD15NgCode = m.CCD_NgNo[i, 14];
|
||||
m.CCD16NgCode = m.CCD_NgNo[i, 15];
|
||||
m.CCD17NgCode = m.CCD_NgNo[i, 16];
|
||||
m.CCD18NgCode = m.CCD_NgNo[i, 17];
|
||||
m.CCD19NgCode = m.CCD_NgNo[i, 18];
|
||||
m.CCD20NgCode = m.CCD_NgNo[i, 19];
|
||||
m.CCD21NgCode = m.CCD_NgNo[i, 20];
|
||||
m.CCD22NgCode = m.CCD_NgNo[i, 21];
|
||||
m.CCD23NgCode = m.CCD_NgNo[i, 22];
|
||||
m.CCD24NgCode = m.CCD_NgNo[i, 23];
|
||||
m.CCD25NgCode = m.CCD_NgNo[i, 24];
|
||||
m.CCD26NgCode = m.CCD_NgNo[i, 25];
|
||||
m.CCD27NgCode = m.CCD_NgNo[i, 26];
|
||||
#endregion
|
||||
|
||||
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
m.CSBYHPROCESSNAME = "外观检测";
|
||||
m.CSBYHSCHEDULE = CommonMethods.strClass;
|
||||
m.CSBYHINSTATIONTIME = m.ScanTime[0];
|
||||
m.CSBYHOUTSTATIONTIME = m.ScanTime[1];
|
||||
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)
|
||||
{
|
||||
for (int ii = 0; ii < 16; ii++)
|
||||
{
|
||||
m.CCD_Data[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
|
||||
}
|
||||
// CCD
|
||||
m.CCD_Data[i, 19] = ShortLib.GetShortFromByteArray(bArrays.Content, 600 + i * 30 * 2 + 20, DataFormat.CDAB);
|
||||
|
||||
//3400 3430 3460
|
||||
m.Thickness1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2, DataFormat.CDAB).ToString();
|
||||
//3401 3431 3461
|
||||
m.ThicknessResult1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2 + 2 * 2, DataFormat.CDAB).ToString();
|
||||
//3500 3530 3560
|
||||
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);
|
||||
//}
|
||||
//不良ng编号4300
|
||||
//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 < 27; j++)
|
||||
{
|
||||
m.CCD_NgNo[i, j] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, (7800 * 2 + j * 40 * 2 + i * 2 * 1000), 20 * 2, System.Text.Encoding.ASCII).
|
||||
Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
|
||||
//ShortLib.GetShortFromByteArray(bArrays.Content, 6800 *2 + j * 2, DataFormat.CDAB);
|
||||
}
|
||||
|
||||
#region 视觉新增不良缺陷数据 by clm 20260724
|
||||
List<int> qrCodeAddressList = new List<int>();
|
||||
for (int k = 0; k < 4; k++)
|
||||
{
|
||||
int address = 9750 + k * 2 + i * 8;
|
||||
qrCodeAddressList.Add(address);
|
||||
}
|
||||
|
||||
m.QrCodeWidth = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[0], DataFormat.CDAB).ToString();
|
||||
m.QrCodeHeight = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[1], DataFormat.CDAB).ToString();
|
||||
m.QrCodeTopMargin = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[2], DataFormat.CDAB).ToString();
|
||||
m.QrCodeLeftMargin = FloatLib.GetFloatFromByteArray(bArrays.Content, qrCodeAddressList[3], DataFormat.CDAB).ToString();
|
||||
#endregion
|
||||
|
||||
//芯包扫码时间
|
||||
//m.ScanTime[i] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
m.BarCode = listBarCode[i];
|
||||
//m.CSBYHCODEA = "TEST";
|
||||
#region 极限件查询
|
||||
//var EX = CommonMethods.db.QuerySqlList<Challenge>(CommonMethods.dBSQL.GetChallengeCode(m.BarCode));
|
||||
//for (int j = 0; j < EX.Count; j++)
|
||||
//{
|
||||
// if (string.Compare(EX[j].ChallengeBarCode, m.BarCode) == 0)
|
||||
// {
|
||||
// m.Remark += "(极限件," + EX[j].CodeMessage + "," + EX[j].WeldingCCD + ")";
|
||||
// ChallengeFlag = 1;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
//查询进站时间数据
|
||||
var w = CommonMethods.db.QuerySqlList<AGearEntity>(CommonMethods.dBSQL.GetInTime(m.BarCode));
|
||||
//获取新一行数据
|
||||
if (w.Count > 0)
|
||||
TT = w[w.Count - 1];
|
||||
//
|
||||
//if (w.Count > 0)
|
||||
// TT = w[0];
|
||||
if (TT.TestTime != null)
|
||||
m.ScanTime[0] = TT.TestTime;
|
||||
else
|
||||
m.ScanTime[0] = "";
|
||||
//芯包出站时间
|
||||
m.ScanTime[1] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
//复投次数
|
||||
m.RethrowNum = 0;
|
||||
if (w.Count > 0)
|
||||
{
|
||||
int cccc = w.Count;
|
||||
m.RethrowNum = cccc - 1;
|
||||
}
|
||||
|
||||
int Code_NG = 0;//条码有无标志 1为有,2为无
|
||||
//判断有无条码
|
||||
if (m.BarCode != null && m.BarCode != "" && m.BarCode != "ERROR")
|
||||
Code_NG = 1;
|
||||
else
|
||||
Code_NG = 2;
|
||||
|
||||
//m.ChannelNo = m.MyNo[i];
|
||||
//m.TestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
//不良代码判定
|
||||
//List<string> NGcodeList = new List<string>();
|
||||
//NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
|
||||
// , m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
|
||||
// var (NGcodeList, NGmessage) = NGWGJcode(m.CCD_Data, i);
|
||||
|
||||
//电芯CCD判定结果
|
||||
#region //电芯CCD判定结果 1 0K 0NG 2缺图
|
||||
m.CCD1 = m.CCD_Data[i, 0];
|
||||
m.CCD2 = m.CCD_Data[i, 1];
|
||||
m.CCD3 = m.CCD_Data[i, 2];
|
||||
m.CCD4 = m.CCD_Data[i, 3];
|
||||
m.CCD5 = m.CCD_Data[i, 4];
|
||||
m.CCD6 = m.CCD_Data[i, 5];
|
||||
m.CCD7 = m.CCD_Data[i, 6];
|
||||
m.CCD8 = m.CCD_Data[i, 7];
|
||||
m.CCD9 = m.CCD_Data[i, 8];
|
||||
m.CCD10 = m.CCD_Data[i, 9];
|
||||
m.CCD11 = m.CCD_Data[i, 10];
|
||||
m.CCD12 = m.CCD_Data[i, 11];
|
||||
m.CCD13 = m.CCD_Data[i, 12];
|
||||
m.CCD14 = m.CCD_Data[i, 13];
|
||||
m.CCD15 = m.CCD_Data[i, 14];
|
||||
m.CCD16 = m.CCD_Data[i, 15];
|
||||
m.CCD17 = m.CCD_Data[i, 16];
|
||||
m.CCD18 = m.CCD_Data[i, 17];
|
||||
m.CCD19 = m.CCD_Data[i, 18];
|
||||
m.CCD20 = m.CCD_Data[i, 19];
|
||||
m.CCD21 = m.CCD_Data[i, 20];
|
||||
m.CCD22 = m.CCD_Data[i, 21];
|
||||
m.CCD23 = m.CCD_Data[i, 22];
|
||||
m.CCD24 = m.CCD_Data[i, 23];
|
||||
m.CCD25 = m.CCD_Data[i, 24];
|
||||
m.CCD26 = m.CCD_Data[i, 25];
|
||||
m.CCD27 = m.CCD_Data[i, 26];
|
||||
|
||||
m.CCDResult1 = m.CCD_Data[i, 0] == 1 ? "OK" : (m.CCD_Data[i, 0] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult2 = m.CCD_Data[i, 1] == 1 ? "OK" : (m.CCD_Data[i, 1] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult3 = m.CCD_Data[i, 2] == 1 ? "OK" : (m.CCD_Data[i, 2] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult4 = m.CCD_Data[i, 3] == 1 ? "OK" : (m.CCD_Data[i, 3] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult5 = m.CCD_Data[i, 4] == 1 ? "OK" : (m.CCD_Data[i, 4] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult6 = m.CCD_Data[i, 5] == 1 ? "OK" : (m.CCD_Data[i, 5] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult7 = m.CCD_Data[i, 6] == 1 ? "OK" : (m.CCD_Data[i, 6] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult8 = m.CCD_Data[i, 7] == 1 ? "OK" : (m.CCD_Data[i, 7] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult9 = m.CCD_Data[i, 8] == 1 ? "OK" : (m.CCD_Data[i, 8] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult10 = m.CCD_Data[i, 9] == 1 ? "OK" : (m.CCD_Data[i, 9] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult11 = m.CCD_Data[i, 10] == 1 ? "OK" : (m.CCD_Data[i, 10] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult12 = m.CCD_Data[i, 11] == 1 ? "OK" : (m.CCD_Data[i, 11] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult13 = m.CCD_Data[i, 12] == 1 ? "OK" : (m.CCD_Data[i, 12] == 0 ? "NG" : "缺图");
|
||||
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" : "缺图");
|
||||
m.CCDResult21 = m.CCD_Data[i, 20] == 1 ? "OK" : (m.CCD_Data[i, 20] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult22 = m.CCD_Data[i, 21] == 9 ? "OK" : (m.CCD_Data[i, 21] == 1 ? "NG" : "缺图"); //总结果
|
||||
m.CCDResult23 = m.CCD_Data[i, 22] == 1 ? "OK" : (m.CCD_Data[i, 22] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult24 = m.CCD_Data[i, 23] == 1 ? "OK" : (m.CCD_Data[i, 23] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult25 = m.CCD_Data[i, 24] == 1 ? "OK" : (m.CCD_Data[i, 24] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult26 = m.CCD_Data[i, 25] == 1 ? "OK" : (m.CCD_Data[i, 25] == 0 ? "NG" : "缺图");
|
||||
m.CCDResult27 = m.CCD_Data[i, 26] == 1 ? "OK" : (m.CCD_Data[i, 26] == 0 ? "NG" : "缺图");
|
||||
m.CCD1NgCode = m.CCD_NgNo[i, 0];
|
||||
m.CCD2NgCode = m.CCD_NgNo[i, 1];
|
||||
m.CCD3NgCode = m.CCD_NgNo[i, 2];
|
||||
m.CCD4NgCode = m.CCD_NgNo[i, 3];
|
||||
m.CCD5NgCode = m.CCD_NgNo[i, 4];
|
||||
m.CCD6NgCode = m.CCD_NgNo[i, 5];
|
||||
m.CCD7NgCode = m.CCD_NgNo[i, 6];
|
||||
m.CCD8NgCode = m.CCD_NgNo[i, 7];
|
||||
m.CCD9NgCode = m.CCD_NgNo[i, 8];
|
||||
m.CCD10NgCode = m.CCD_NgNo[i, 9];
|
||||
m.CCD11NgCode = m.CCD_NgNo[i, 10];
|
||||
m.CCD12NgCode = m.CCD_NgNo[i, 11];
|
||||
m.CCD13NgCode = m.CCD_NgNo[i, 12];
|
||||
m.CCD14NgCode = m.CCD_NgNo[i, 13];
|
||||
m.CCD15NgCode = m.CCD_NgNo[i, 14];
|
||||
m.CCD16NgCode = m.CCD_NgNo[i, 15];
|
||||
m.CCD17NgCode = m.CCD_NgNo[i, 16];
|
||||
m.CCD18NgCode = m.CCD_NgNo[i, 17];
|
||||
m.CCD19NgCode = m.CCD_NgNo[i, 18];
|
||||
m.CCD20NgCode = m.CCD_NgNo[i, 19];
|
||||
m.CCD21NgCode = m.CCD_NgNo[i, 20];
|
||||
m.CCD22NgCode = m.CCD_NgNo[i, 21];
|
||||
m.CCD23NgCode = m.CCD_NgNo[i, 22];
|
||||
m.CCD24NgCode = m.CCD_NgNo[i, 23];
|
||||
m.CCD25NgCode = m.CCD_NgNo[i, 24];
|
||||
m.CCD26NgCode = m.CCD_NgNo[i, 25];
|
||||
m.CCD27NgCode = m.CCD_NgNo[i, 26];
|
||||
#endregion
|
||||
|
||||
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
m.CSBYHPROCESSNAME = "外观检测";
|
||||
m.CSBYHSCHEDULE = CommonMethods.strClass;
|
||||
m.CSBYHINSTATIONTIME = m.ScanTime[0];
|
||||
m.CSBYHOUTSTATIONTIME = m.ScanTime[1];
|
||||
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)
|
||||
{
|
||||
for (int ii = 0; ii < 16; ii++)
|
||||
if (m.CCD_Data[i, ii] != 1)
|
||||
{
|
||||
if (m.CCD_Data[i, ii] != 1)
|
||||
{
|
||||
//1OK,2扫码NG,3MES反馈NG,4其他NG
|
||||
MyRes[i] = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
//1OK,2扫码NG,3MES反馈NG,4其他NG
|
||||
MyRes[i] = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
MyRes[i] = 2;//扫码NG
|
||||
var judementResult = JudgmentWGJResult(1, m.CCD_Data, i);
|
||||
MyRes[i] = judementResult.Item1;
|
||||
OK_NG = judementResult.Item2;
|
||||
NG_Type = judementResult.Item3;
|
||||
m.Result = MyRes[i];
|
||||
}
|
||||
else
|
||||
MyRes[i] = 2;//扫码NG
|
||||
var judementResult = JudgmentWGJResult(1, m.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.CSBYHOUTSTATIONJUDGMENTRESULT = m.judgment_result[i] = OK_NG;
|
||||
|
||||
m.Remark += NG_Type;
|
||||
NG_Type = "";//清除上一次不良字符串
|
||||
OK_NG = ""; //清除上一次结果
|
||||
m.Remark += NG_Type;
|
||||
NG_Type = "";//清除上一次不良字符串
|
||||
OK_NG = ""; //清除上一次结果
|
||||
|
||||
list.Add(m);
|
||||
list.Add(m);
|
||||
|
||||
string ur2 = CommonMethods.mesConfig.ResultProcessParamMesUrl;
|
||||
string siteCode1 = CommonMethods.mesConfig.siteCode;
|
||||
string lineCode1 = CommonMethods.mesConfig.lineCode;
|
||||
string equipNum1 = CommonMethods.mesConfig.equipNum;
|
||||
string materialCode1 = CommonMethods.mesConfig.MaterialCode;
|
||||
string userName1 = CommonMethods.mesConfig.mesUserName;
|
||||
MesUploadType unloadType = MesUploadType.DD;
|
||||
string Mesage = "";
|
||||
//加判断无条码不上传mes 1为有条码
|
||||
if (Code_NG == 1)
|
||||
string ur2 = CommonMethods.mesConfig.ResultProcessParamMesUrl;
|
||||
string siteCode1 = CommonMethods.mesConfig.siteCode;
|
||||
string lineCode1 = CommonMethods.mesConfig.lineCode;
|
||||
string equipNum1 = CommonMethods.mesConfig.equipNum;
|
||||
string materialCode1 = CommonMethods.mesConfig.MaterialCode;
|
||||
string userName1 = CommonMethods.mesConfig.mesUserName;
|
||||
MesUploadType unloadType = MesUploadType.DD;
|
||||
string Mesage = "";
|
||||
//加判断无条码不上传mes 1为有条码
|
||||
if (Code_NG == 1)
|
||||
{
|
||||
string MesMessage = "";
|
||||
MesResType mesResType = MesResType.C;
|
||||
if (CommonMethods.mesConfig.isUpMes)
|
||||
{
|
||||
string MesMessage = "";
|
||||
MesResType mesResType = MesResType.C;
|
||||
if (CommonMethods.mesConfig.isUpMes)
|
||||
string url = CommonMethods.mesConfig.OutStationMesUrl;
|
||||
string siteCode = CommonMethods.mesConfig.siteCode;
|
||||
string lineCode = CommonMethods.mesConfig.lineCode;
|
||||
string equipNum = CommonMethods.mesConfig.equipNum;
|
||||
string materialCode = CommonMethods.mesConfig.MaterialCode;
|
||||
string userName = CommonMethods.mesConfig.mesUserName;
|
||||
int type = 1;
|
||||
//int type = 1;
|
||||
//string materialLotCodeLocator = "";
|
||||
var (NGcodeList, NGmessage) = NGWGJcode(m.CCD_NgNo, i);
|
||||
bool Res = CommonMethods.hbgMes.OutboundInformations(url, siteCode, lineCode, equipNum, materialCode, userName, m, ref MesMessage, ref mesResType, NGcodeList, NGmessage);
|
||||
//bool Res = CommonMethods.hbgMes.SingleCellOutStation(url, siteCode, lineCode, equipNum, materialCode, userName, m,)
|
||||
if (MesMessage.Contains("发生一个或多个错误"))
|
||||
{
|
||||
string url = CommonMethods.mesConfig.OutStationMesUrl;
|
||||
string siteCode = CommonMethods.mesConfig.siteCode;
|
||||
string lineCode = CommonMethods.mesConfig.lineCode;
|
||||
string equipNum = CommonMethods.mesConfig.equipNum;
|
||||
string materialCode = CommonMethods.mesConfig.MaterialCode;
|
||||
string userName = CommonMethods.mesConfig.mesUserName;
|
||||
int type = 1;
|
||||
//int type = 1;
|
||||
//string materialLotCodeLocator = "";
|
||||
var (NGcodeList, NGmessage) = NGWGJcode(m.CCD_NgNo, i);
|
||||
bool Res = CommonMethods.hbgMes.OutboundInformations(url, siteCode, lineCode, equipNum, materialCode, userName, m, ref MesMessage, ref mesResType, NGcodeList, NGmessage);
|
||||
//bool Res = CommonMethods.hbgMes.SingleCellOutStation(url, siteCode, lineCode, equipNum, materialCode, userName, m,)
|
||||
if (MesMessage.Contains("发生一个或多个错误"))
|
||||
{
|
||||
MesMessage = "上传失败,";
|
||||
}
|
||||
else
|
||||
{
|
||||
m.Flag = 1;
|
||||
}
|
||||
if (Res)
|
||||
{
|
||||
//MES出站判定结果
|
||||
m.Result = MyRes[i];
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += "芯包重量NG,"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += "芯包侧厚NG,"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
|
||||
m.Remark += MesMessage;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (mesResType)
|
||||
{
|
||||
case MesResType.A:// 停线,设备报警停机
|
||||
//m.listRes[i] = 10;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 3;
|
||||
m.Remark += "MES NG";
|
||||
break;
|
||||
case MesResType.B://不停机,MEs NG品要排出,要给PLC发NG信号
|
||||
//m.listRes[i] = 9;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 3;
|
||||
m.Remark += "MES NG";
|
||||
break;
|
||||
case MesResType.C://可忽略
|
||||
//m.listRes[i] = 1;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 1;
|
||||
m.Remark += "MES Alerm OK";
|
||||
break;
|
||||
case MesResType.D://可忽略
|
||||
//m.listRes[i] = 1;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 1;
|
||||
m.Remark += "MES OK";
|
||||
break;
|
||||
default:
|
||||
m.Remark += "MES NG";
|
||||
m.Result = MyRes[i] = 3;
|
||||
break;
|
||||
}
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += "芯包重量NG,"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += "芯包侧厚NG,"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
|
||||
m.Remark += MesMessage;
|
||||
}
|
||||
//发送产品结果参数给MES
|
||||
bool Res1 = CommonMethods.hbgMes.ProducResultParam(ur2, siteCode1, lineCode1, equipNum1, materialCode1, userName1, m, unloadType, ref Mesage);
|
||||
list[i].PlcResult = MyRes[i];
|
||||
#region 排出 5 厚度NG电芯 6 外观NG电芯,
|
||||
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 = "已上传";
|
||||
else
|
||||
m.UpState = "未上传";
|
||||
MesMessage = "上传失败,";
|
||||
}
|
||||
else
|
||||
{
|
||||
m.Result = MyRes[i];
|
||||
m.Remark += "本地存储";
|
||||
m.UpState = "未上传";
|
||||
m.Flag = 1;
|
||||
}
|
||||
if (CommonMethods.sysConfig.OKSwitching)
|
||||
if (Res)
|
||||
{
|
||||
//调试发OK
|
||||
m.Result = MyRes[i] = 1;
|
||||
//m.Result = "OK";
|
||||
//MES出站判定结果
|
||||
m.Result = MyRes[i];
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += "芯包重量NG,"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += "芯包侧厚NG,"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
|
||||
m.Remark += MesMessage;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (mesResType)
|
||||
{
|
||||
case MesResType.A:// 停线,设备报警停机
|
||||
//m.listRes[i] = 10;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 3;
|
||||
m.Remark += "MES NG";
|
||||
break;
|
||||
case MesResType.B://不停机,MEs NG品要排出,要给PLC发NG信号
|
||||
//m.listRes[i] = 9;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 3;
|
||||
m.Remark += "MES NG";
|
||||
break;
|
||||
case MesResType.C://可忽略
|
||||
//m.listRes[i] = 1;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 1;
|
||||
m.Remark += "MES Alerm OK";
|
||||
break;
|
||||
case MesResType.D://可忽略
|
||||
//m.listRes[i] = 1;
|
||||
// m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i] = 1;
|
||||
m.Remark += "MES OK";
|
||||
break;
|
||||
default:
|
||||
m.Remark += "MES NG";
|
||||
m.Result = MyRes[i] = 3;
|
||||
break;
|
||||
}
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += "芯包重量NG,"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += "芯包侧厚NG,"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
|
||||
m.Remark += MesMessage;
|
||||
}
|
||||
//发送产品结果参数给MES
|
||||
bool Res1 = CommonMethods.hbgMes.ProducResultParam(ur2, siteCode1, lineCode1, equipNum1, materialCode1, userName1, m, unloadType, ref Mesage);
|
||||
list[i].PlcResult = MyRes[i];
|
||||
#region 排出 5 厚度NG电芯 6 外观NG电芯,
|
||||
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 = "已上传";
|
||||
else
|
||||
m.UpState = "未上传";
|
||||
}
|
||||
else
|
||||
{
|
||||
m.Result = MyRes[i] = 2;
|
||||
m.Result = MyRes[i];
|
||||
m.Remark += "本地存储";
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += ",芯包重量NG"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += ",芯包侧厚NG"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += ",芯包CCD极性检测NG"; }
|
||||
m.UpState = "未上传";
|
||||
}
|
||||
#region//极限件发3给PLC
|
||||
//if (ChallengeFlag == 1)
|
||||
//{
|
||||
// if (string.Compare(EX[0].WeldingCCD, "焊前CCD") == 0 || string.Compare(EX[0].WeldingCCD, "焊前ccd") == 0)
|
||||
// {
|
||||
// MyRes[i] = 3;
|
||||
// }
|
||||
// if (string.Compare(EX[0].WeldingCCD, "焊后CCD") == 0 || string.Compare(EX[0].WeldingCCD, "焊后ccd") == 0)
|
||||
// {
|
||||
// MyRes[i] = 4;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
if (CommonMethods.sysConfig.OKSwitching)
|
||||
{
|
||||
//调试发OK
|
||||
m.Result = MyRes[i] = 1;
|
||||
//m.Result = "OK";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
else
|
||||
{
|
||||
LoggerHelp.WriteLog($"外观检测出站线程数据解析:{ex}", "SysErrorLog");
|
||||
m.Result = MyRes[i] = 2;
|
||||
m.Remark += "本地存储";
|
||||
////芯包重量1判定结果
|
||||
//if (m.list_Data1[i, 10] == 2) { m.Remark += ",芯包重量NG"; }
|
||||
////芯包侧厚判定结果
|
||||
//if (m.list_Data1[i, 11] == 2) { m.Remark += ",芯包侧厚NG"; }
|
||||
////芯包CCD极性检测结果
|
||||
//if (m.list_Data1[i, 12] == 2) { m.Remark += ",芯包CCD极性检测NG"; }
|
||||
m.UpState = "未上传";
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
JYResult result1 = null;
|
||||
JYResult result2 = null;
|
||||
JYResult result3 = null;
|
||||
if (pf.IsFeedbackPlc)
|
||||
{
|
||||
//result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
//result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
// if (CommonMethods.sysConfig.OKSwitching)
|
||||
{
|
||||
//调试发OK
|
||||
//MyRes[0] = 1;
|
||||
//MyRes[1] = 1;
|
||||
Thread.Sleep(500);
|
||||
result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
|
||||
}
|
||||
//else
|
||||
#region//极限件发3给PLC
|
||||
//if (ChallengeFlag == 1)
|
||||
//{
|
||||
// //将mes反馈的结果发给PLC
|
||||
// Thread.Sleep(500);
|
||||
// result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
// result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
// if (string.Compare(EX[0].WeldingCCD, "焊前CCD") == 0 || string.Compare(EX[0].WeldingCCD, "焊前ccd") == 0)
|
||||
// {
|
||||
// MyRes[i] = 3;
|
||||
// }
|
||||
// if (string.Compare(EX[0].WeldingCCD, "焊后CCD") == 0 || string.Compare(EX[0].WeldingCCD, "焊后ccd") == 0)
|
||||
// {
|
||||
// MyRes[i] = 4;
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
}
|
||||
JYResult result4 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
|
||||
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||
LoggerHelp.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||
|
||||
Task.Run(() => { SendDateMQTT.Instance.EnterandExitSendMessge(1); });
|
||||
//数据存储 - 异步处理
|
||||
Task.Run(() =>
|
||||
catch (Exception ex)
|
||||
{
|
||||
SaveBlankingData(list);
|
||||
});
|
||||
|
||||
sw2.Stop();
|
||||
////输出下料数据处理耗时:
|
||||
CommonMethods.AddDataMonitorLog(0, $"外观检测出站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
|
||||
LoggerHelp.WriteInfo($"外观检测进站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
|
||||
LoggerHelp.WriteLog($"外观检测出站线程数据解析:{ex}", "SysErrorLog");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
JYResult result1 = null;
|
||||
JYResult result2 = null;
|
||||
JYResult result3 = null;
|
||||
if (pf.IsFeedbackPlc)
|
||||
{
|
||||
//result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
//result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
// if (CommonMethods.sysConfig.OKSwitching)
|
||||
{
|
||||
//调试发OK
|
||||
//MyRes[0] = 1;
|
||||
//MyRes[1] = 1;
|
||||
Thread.Sleep(500);
|
||||
result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// //将mes反馈的结果发给PLC
|
||||
// Thread.Sleep(500);
|
||||
// result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
|
||||
// result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
|
||||
//}
|
||||
}
|
||||
JYResult result4 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
|
||||
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||
LoggerHelp.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
|
||||
|
||||
Task.Run(() => { SendDateMQTT.Instance.EnterandExitSendMessge(1); });
|
||||
//数据存储 - 异步处理
|
||||
Task.Run(() =>
|
||||
{
|
||||
SaveBlankingData(list);
|
||||
});
|
||||
|
||||
sw2.Stop();
|
||||
////输出下料数据处理耗时:
|
||||
CommonMethods.AddDataMonitorLog(0, $"外观检测出站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
|
||||
LoggerHelp.WriteInfo($"外观检测进站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
|
||||
}
|
||||
/// <summary>
|
||||
/// 电池结果判断
|
||||
@@ -2340,8 +2341,6 @@ namespace JinYuan.ControlCenters
|
||||
}
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region 创建空的数组List
|
||||
public List<T> GetList<T>(int num, T data)
|
||||
{
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user