using JinYuan.CommunicationLib.Enum;
using JinYuan.DataConvertLib;
using JinYuan.Helper;
using JinYuan.MES.Enums;
using JinYuan.MES.Models;
using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using PLCCommunication;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Diagnostics.Eventing.Reader;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
namespace JinYuan.ControlCenters
{
public partial class ControlCenter
{
private void UpAB(ref BGearEntity m)
{
for (int i = 0; i < 10; i++) { }
}
#region 保留2位小数
private float SaveTwoNum(float TNum)
{
//1.2333 0.998
int value = (int)(TNum * 1000) % 10;
value = value > 4 ? 10 - value : -value;
TNum += ((float)value / 1000);
//保留3位小数
TNum = (float)(int)(TNum * 1000) / 1000;
return TNum;
}
#endregion
//不良类型
string NG_Type = ""; // 用于备注
string OK_NG = ""; // OK或NG
#region 判断总结果
///
/// 判断总结果
///
private int JudgmentResult(int A, int B, int C, int D, int E, int F, int G, int H, int I, int J, int K, int L, int M, int N)
{
//条码,芯包重量,芯包侧厚,芯包CCD极性检测,电芯裁切粘连,电芯裁切毛刺,芯包铜焊印位置,
//芯包正面极耳撕裂H,芯包背面极耳撕裂,芯包正面极耳翻折J,芯包背面极耳翻折,测厚压力结果,
//焊前CCD检测结果,铝焊印位置判定结果
//目前先判断条码,芯包重量,芯包侧厚,芯包CCD极性检测,芯包正面极耳撕裂,芯包正面极耳翻折
int Result = 0;
OK_NG = "OK";
if (A == 2 || B == 2 || C == 2 || D == 2 || H == 2 || J == 2)
{
//ed
Result = 2;
OK_NG = "NG";
}
else if (A == 1 && B == 1 && C == 1 && D == 1 && H == 1 && J == 1)
{
Result = 1;
OK_NG = "OK";
}
else
{
Result = 1;
OK_NG = "OK";
}
if (A == 2)
{
NG_Type += "无条码_";
Result = 2;
}
if (B == 2)
{
NG_Type += "芯包重量1NG_";
//return 2;
Result = 2;
}
if (C == 2)
{
NG_Type += "芯包侧厚NG_";
//return 2;
Result = 2;
}
if (D == 2)
{
NG_Type += "芯包CCD极性检测NG_";
//return 2;
Result = 2;
}
//if (E == 2)
//{
// NG_Type += "电芯裁切粘连NG_";
// //return 2;
//}
//if (F == 2)
//{
// NG_Type += "电芯裁切毛刺NG_";
// //return 2;
//}
//if (G == 2)
//{
// NG_Type += "芯包铜焊印位置判定NG_";
// //return 2;
//}
if (H == 2)
{
NG_Type += "芯包正面极耳撕裂NG_";
//return 2;
}
//if (I == 2)
//{
// NG_Type += "芯包背面极耳撕裂NG_";
// //return 2;
//}
if (J == 2)
{
NG_Type += "芯包正面极耳翻折NG_";
//return 2;
}
//if (K == 2)
//{
// NG_Type += "芯包背面极耳翻折NG_";
// //return 2;
//}
if (L == 2)
{
NG_Type += "测厚压力NG_";
//return 2;
}
if (M == 2)
{
NG_Type += "焊前CCD检测NG_";
//return 2;
}
if (N == 2)
{
NG_Type += "铝焊印位置判定NG_";
//return 2;
}
if (Result == 1)
{
NG_Type += "OK_";
}
return Result;
}
#region 上料工位(数据处理)
///
/// 上料工位
///
int JXCount = 0;
Stopwatch sw2 = new Stopwatch();
//上料解析
private void FeedingStation(JYResult bArrays, object plcModel)
{
Group pf = plcModel as Group;
if (bArrays == null)
{
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddLog(false, $"电芯进站PLC有触发信号,但无数据!");
LogHelper.Instance.WriteLog($"电芯进站PLC有触发信号,但无数据!", "Info");
}
if (bArrays.IsSuccess && bArrays.Content != null)
{
sw2.Restart();
//解析数据
List list = new List();//实体
List listBarCode = GetList(4, "");//电芯条码
//List listNum = GetList(1, "");//进站磁悬浮动子编号
List listRes = GetList(4, 0);//进站电芯反馈结果
byte[] bytes = bArrays.Content.ByteReverse();//高低位转换
// 从D2100开始
#region 数据解析
//电芯条码
//从bytes读取第二位参数到第三位参数的内容 0-19 第四位参数为格式 第五位为规则
listBarCode[0] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 200, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
listBarCode[1] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 240, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
listBarCode[2] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 280, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
listBarCode[3] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 320, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
//listBarCode[0] = "TEST";
//listBarCode[1] = "TEST";
//listBarCode[2] = "TEST";
//listBarCode[3] = "TEST";
for (int i = 0; i < 4; i++)
{
//有无条码标志
int CodeFlag = 1;
//极限件标志
int ChallengeFlag = 0;
AGearEntity m = new AGearEntity();
try
{
//判断条码是否为空
if (listBarCode[i] == null || listBarCode[i] == "" || listBarCode[i] == "ERROR")
{
CodeFlag = 0;
//continue;
}
m.TestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
m.BarCode = listBarCode[i];
//判断是否极限件 查询极限件数据
var EX = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetChallengeCode(listBarCode[i]));
for (int j = 0; j < EX.Count; j++)
{
if (string.Compare(EX[j].ChallengeBarCode, listBarCode[i]) == 0)
{
m.Remark += "(极限件," + EX[j].CodeMessage + "," + EX[j].WeldingCCD + ")";
ChallengeFlag = 1;
}
}
if (CodeFlag == 1)
{
List MesMessage = new List();
List mesResType = new List();
if (CommonMethods.mesConfig.isUpMes)
{
string url = CommonMethods.mesConfig.InPutStationMesUrl;
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;
string MesMessage1 = "";
MesResType mesResType1 = MesResType.A;
bool Res = CommonMethods.hbgMes.SingleCellInStation(url, siteCode, lineCode, equipNum, materialCode, userName, listBarCode[i], ref MesMessage1, ref mesResType1);
if (MesMessage1.Contains("发生一个或多个错误"))
{
MesMessage1 = "上传失败";
}
else
{
m.Flag = 1;
}
if (Res)
{
m.Result = "OK";
listRes[i] = 1;
m.Remark += MesMessage1;
}
else
{
m.Result = "NG";
switch (mesResType1)
{
case MesResType.A:// 停线,设备报警停机
//listRes[i] = 10;
listRes[i] = 2;
//m.Remark = MesMessage1;
break;
case MesResType.B:
//listRes[i] = 9;
listRes[i] = 2;
//m.Remark = MesMessage1;
break;
case MesResType.C:
//listRes[i] = 1;
listRes[i] = 2;
//m.Remark = MesMessage1;
break;
case MesResType.D:
listRes[i] = 2;
//m.Remark = MesMessage1;
break;
default:
listRes[i] = 2;
break;
}
if (CommonMethods.sysConfig.OKSwitching)
{
//调试发OK
listRes[i] = 1;
//m.Result = "OK";
}
m.Remark += MesMessage1;
}
}
else
{
m.Flag = 0;
m.ID = i + 1;
m.CNum = "i";
//电芯反馈结果
listRes[i] = 1;
m.Result = "OK";
m.Remark += "本地存储";
m.UpState = "未上传";
// m.Remark = "本地存储";
//if (CommonMethods.sysConfig.OKSwitching)
//{
// //调试发OK
// listRes[j] = 1;
// m.Result = "OK";
//}
list.Add(m);
}
}
else
{
//无条码不上传
m.Flag = 0;
m.Result = "NG";
listRes[i] = 2;
m.Remark += "无条码";
}
//极限件发3给PLC
if (ChallengeFlag == 1)
{
if (string.Compare(EX[0].WeldingCCD, "焊前CCD") == 0)
{
listRes[i] = 3;
}
if (string.Compare(EX[0].WeldingCCD, "焊后CCD") == 0)
{
listRes[i] = 4;
}
}
if (m.Flag == 1)
m.UpState = "已上传";
else
m.UpState = "未上传";
list.Add(m);
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"卷芯进站线程数据解析:{ex}", "SysErrorLog");
}
}
#endregion
//if (CommonMethods.sysConfig.OKSwitching)
//{
// //调试发OK
// listRes[0] = 1;
// listRes[1] = 1;
// listRes[2] = 1;
// listRes[3] = 1;
// //m.Result = "OK";
//}
JYResult result = CommonMethods.PlcLink.WriteValue("D2100", listRes[0], Data_Type.Short);//调试结果写入PLC
CommonMethods.PlcLink.WriteValue("D2101", listRes[1], Data_Type.Short);//调试结果写入PLC
CommonMethods.PlcLink.WriteValue("D2102", listRes[2], Data_Type.Short);//调试结果写入PLC
CommonMethods.PlcLink.WriteValue("D2103", listRes[3], Data_Type.Short);//调试结果写入PLC
//CommonMethods.PlcLink.WriteInt16("D2100", listRes[0]);//调试结果OK写入PLC
if (result != null)
{
string strres = $"卷心工位发送给PLC: D2100={listRes[0]},D2101={listRes[1]},D2102={listRes[2]},D2103={listRes[3]},";
CommonMethods.AddDataMonitorLog(0, strres);
}
//写入·结果反馈
//JYResult result = CommonMethods.PlcLink.WriteValue("D2100", listRes.ToArray(), Data_Type.ArrShort);//判断结果写入PLC
//JYResult result = CommonMethods.PlcLink.WriteValue("D2100", listRes.ToArray(), Data_Type.ArrShort);//调试结果OK写入PLC
Task.Run(() => { SendDateMQTT.Instance.EnterandExitSendMessge(0); });
//读取结果显示
//数据存储 -异步处理
Task.Run(() => { SaveFeedingData(list); });
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
sw2.Stop();
////输出上料数据处理耗时:
CommonMethods.AddDataMonitorLog(0, $"卷芯进站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
}
}
#region 保存上料数据
///
/// 保存上料数据到数据
///
///
private void SaveFeedingData(List list)
{
//数据的保存
try
{
if (list != null && list.Count > 0)
{
//数据显示
List Blist = list;
int i = 0;
string strRes = "";
foreach (AGearEntity m in list)
{
if (true)
{
//int b1 = CommonMethods.dbServer.Delete(it => it.containerCode == m.DiRFID);
Thread.Sleep(10);
//int b2 = CommonMethods.dbServer.Delete(it => it.containerCode == m.GaoRFID);
//int b1 = CommonMethods.dbServer.Delete(it => it.containerCode == m.BarCode);
bool b = CommonMethods.db.AddReturnBool(m);
//strRes = b1 > 0 ? ",远删Yes" : ",远删No";
strRes += b;
DataTurnover server = new DataTurnover
{
equipNum = CommonMethods.mesConfig.equipNum,
containerCode = m.BarCode,
identification = m.BarCode,
message = m.Result,
Time = DateTime.Now,
};
try
{
//bool res = CommonMethods.dbServer.AddReturnBool(server);
//strRes += res == true ? ",远存Yes" : ",远存No";
}
catch (Exception ex)
{
JYResult result = CommonMethods.PlcLink.WriteValue("D80", 1, Data_Type.Short);//反馈PLC结果
CommonMethods.AddDataMonitorLog(1, $"服务器连接失败!解决办法:1、请检查MES网络,2、查看服务器是否正常!!");
LogHelper.Instance.WriteError($"服务器连接失败:{ex}", "系统报错");
}
}
else
{
strRes = ",不存储";
}
//m.Remark = m.Remark + strRes;
Blist[i].Remark = m.Remark;
i++;
}
//数据显示
CommonMethods.ShowFeedingDelegate.Invoke(Blist);
}
else
{
LogHelper.Instance.WriteError($"电芯进站数据List为空", "SysErrorLog");
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"卷芯上料保存处理异常:{ex}", "SysErrorLog");
}
}
#endregion
#endregion
//NG出站解析
private void NGStation(JYResult bArrays, object plcModel)
{
Group pf = plcModel as Group;
if (bArrays == null)
{
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddLog(false, $"NG出站PLC有触发信号,但无数据!");
LogHelper.Instance.WriteLog($"NG出站PLC有触发信号,但无数据!", "SysErrorLog");
}
if (bArrays.IsSuccess && bArrays.Content != null)
{
Random random = new Random();
//解析数据
sw2.Restart();
#region 数据变量定义
List list = new List();//实体
int[] MyRes = new int[2];//AB反馈结果
#endregion
//高低位转换
byte[] bytes = bArrays.Content.ByteReverse();
byte[] bytes1 = bArrays.Content;
//反馈结果
#region 电芯解析
//D3100起
//电芯解析
#region 上传MES
for (int i = 0; i < 2; i++)
{
try
{
int ChallengeFlag = 0;
BGearEntity m = new BGearEntity();
AGearEntity TT = new AGearEntity();
if (i == 0)
{
m.A_B = "A芯包";
//A_NG芯包信息1 D2442~D2446
for (int j = 0; j < 5; j++)
{
m.NG_Data1[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 84 + j * 2, DataFormat.CDAB);
}
//A_NG芯包信息2 D2452~D2468
for (int j = 0; j < 9; j++)
{
m.NG_Data2[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 104 + j * 4, DataFormat.CDAB);
}
}
else
{
m.A_B = "B芯包";
//B_NG芯包信息1 D2447~D2451
for (int j = 0; j < 5; j++)
{
m.NG_Data1[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 94 + j * 2, DataFormat.CDAB);
}
//B_NG芯包信息2 D2470~D2486
for (int j = 0; j < 9; j++)
{
m.NG_Data2[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 140 + j * 4, DataFormat.CDAB);
}
}
//芯包条码 D2400~D3239
m.CSBYHCODEA = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 40 * i, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
//m.CSBYHCODEA = "TEST";
//判断是否极限件 查询极限件数据
var EX = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetChallengeCode(m.CSBYHCODEA));
for (int j = 0; j < EX.Count; j++)
{
if (string.Compare(EX[j].ChallengeBarCode, m.CSBYHCODEA) == 0)
{
m.Remark += "(极限件," + EX[j].CodeMessage + "," + EX[j].WeldingCCD + ")";
ChallengeFlag = 1;
}
}
//查询进站时间数据
var w = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetInTime(m.CSBYHCODEA));
//获取最新一行数据
if (w.Count > 0)
TT = w[w.Count - 1];
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");
int Code_NG = 0;//条码有无标志 1为有,2为无
//判断有无条码
if (m.CSBYHCODEA != null && m.CSBYHCODEA != "")
Code_NG = 1;
else
Code_NG = 2;
//m.TestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//不良代码判定
List NGcodeList = new List();
NGcodeList = NGCarcode(m.NG_Data1[i, 1], m.NG_Data1[i, 3], m.NG_Data1[i, 4]);
//芯包重量1判定结果
if (m.NG_Data1[i, 1] == 1)
m.CSBYHWEIGHTRESULTA1 = "OK";
else if (m.NG_Data1[i, 1] == 2)
m.CSBYHWEIGHTRESULTA1 = "NG";
else
m.CSBYHWEIGHTRESULTA1 = "无";
//芯包侧厚判定结果
if (m.NG_Data1[i, 3] == 1)
m.CSBYHTHICKNESSTESTJUDGERESULTA = "OK";
else if (m.NG_Data1[i, 3] == 2)
m.CSBYHTHICKNESSTESTJUDGERESULTA = "NG";
else
m.CSBYHTHICKNESSTESTJUDGERESULTA = "无";
//芯包CCD极性检测结果
if (m.NG_Data1[i, 4] == 1)
m.CSBYHPOLARITYRESULTA = "OK";
else if (m.NG_Data1[i, 4] == 2)
m.CSBYHPOLARITYRESULTA = "NG";
else
m.CSBYHPOLARITYRESULTA = "无";
//电芯裁切粘连判定结果
m.CSBYHCUTADHESIONJUDGERESULTA = "无";
//电芯裁切毛刺判定结果
m.CSBYHCUTBURRJUDGERESULTA = "无";
//芯包焊印位置判定结果
m.CSBYHSOLDERJUDGERESULTA = "无";
m.CSBYHSOLDERJUDGERESULTA2 = "无";
m.AluminiumWeldPositionResult1 = "无";
m.AluminiumWeldPositionResult2 = "无";
//芯包正面极耳撕裂判定结果
m.CSBYHFRONTEARCRACKLEJUDGERESULTA = "无";
//芯包背面极耳撕裂判定结果
m.CSBYHBACKEARCRACKLEJUDGERESULTA = "无";
//芯包正面极耳翻折检测结果
m.CSBYHFRONTEARFLODINGRESULTA = "无";
//芯包背面极耳翻折检测结果
m.CSBYHBACKEARFLODINGRESULTA = "无";
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
m.CSBYHWEIGHTNOA1 = m.NG_Data1[i, 2];
m.CSBYHTHICKNESSTESTSTATIONNOA = m.NG_Data1[i, 4];
m.CSBYHTOOLNOA = 0;
m.CSBYHCUWELDINGSTATIONNOA1 = 0;
m.CSBYHCUWELDINGSTATIONNOA2 = 0;
m.CSBYHCUWELDINGSTATIONNOA3 = 0;
m.CSBYHCUWELDHEADCOUNTA1 = 0;
m.CSBYHCUWELDHEADCOUNTA2 = 0;
m.CSBYHCUWELDHEADCOUNTA3 = 0;
m.CSBYHCUWELDBASECOUNTA1 = 0;
m.CSBYHCUWELDBASECOUNTA2 = 0;
m.CSBYHCUWELDBASECOUNTA3 = 0;
m.CSBYHALWELDINGSTATIONNOA1 = 0;
m.CSBYHALWELDINGSTATIONNOA2 = 0;
m.CSBYHALWELDINGSTATIONNOA3 = 0;
m.CSBYHALWELDHEADCOUNTA1 = 0;
m.CSBYHALWELDHEADCOUNTA2 = 0;
m.CSBYHALWELDHEADCOUNTA3 = 0;
m.CSBYHALWELDBASECOUNTA1 = 0;
m.CSBYHALWELDBASECOUNTA2 = 0;
m.CSBYHALWELDBASECOUNTA3 = 0;
m.CSBYHCUTABCUTTERCOUNTA = 0;
m.CSBYHALTABCUTTERCOUNTA = 0;
m.CSBYHCUTABCUTTERNOA = 0;
m.CSBYHALTABCUTTERNOA = 0;
m.CSBYHPROCESSNAME = "超声波预焊接";
m.CSBYHSCHEDULE = CommonMethods.strClass;
m.CSBYHINSTATIONTIME = m.ScanTime[0];
m.CSBYHOUTSTATIONTIME = m.ScanTime[1];
//m.CSBYHABNORMALINFORMATION = m.list_Process[i, 4];
m.CSBYHWEIGHTA1MAXSETTING = SaveTwoNum(m.NG_Data2[i, 0]);
m.CSBYHWEIGHTA1MINSETTING = SaveTwoNum(m.NG_Data2[i, 1]);
m.CSBYHWEIGHTA1 = SaveTwoNum(m.NG_Data2[i, 2]);
m.CSBYHTHICKNESSTESTPRESSUREMAXSETTINGA = SaveTwoNum(m.NG_Data2[i, 3]);
m.CSBYHTHICKNESSTESTPRESSUREMINSETTINGA = SaveTwoNum(m.NG_Data2[i, 4]);
m.CSBYHTHICKNESSTESTPRESSUREA = SaveTwoNum(m.NG_Data2[i, 5]);
m.CSBYHTHICKNESSTESTPRESSURESIZEA = SaveTwoNum(m.NG_Data2[i, 6]);
m.CSBYHTHICKNESSTESTPRESSUREMAXSIZEA = SaveTwoNum(m.NG_Data2[i, 7]);
m.CSBYHTHICKNESSTESTPRESSUREMINSIZEA = SaveTwoNum(m.NG_Data2[i, 8]);
m.CSBYHCUWELDINGPRESSUREMAXSETTING1 = 0;
m.CSBYHCUWELDINGPRESSUREMAXSETTING2 = 0;
m.CSBYHCUWELDINGPRESSUREMAXSETTING3 = 0;
m.CSBYHCUWELDINGPRESSUREMINSETTING = 0;//压力最小值
m.CSBYHCUWELDINGPOWERMAXSETTING1 = 0;
m.CSBYHCUWELDINGPOWERMAXSETTING2 = 0;
m.CSBYHCUWELDINGPOWERMAXSETTING3 = 0;
m.CSBYHCUWELDINGPOWERMINSETTING1 = 0;
m.CSBYHCUWELDINGPOWERMINSETTING2 = 0;
m.CSBYHCUWELDINGPOWERMINSETTING3 = 0;
m.CSBYHCUWELDINGENERGYMAXSETTING1 = 0;
m.CSBYHCUWELDINGENERGYMAXSETTING2 = 0;
m.CSBYHCUWELDINGENERGYMAXSETTING3 = 0;
m.CSBYHCUWELDINGENERGYMINSETTING1 = 0;
m.CSBYHCUWELDINGENERGYMINSETTING2 = 0;
m.CSBYHCUWELDINGENERGYMINSETTING3 = 0;
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING1 = 0;
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING2 = 0;
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING3 = 0;
m.CSBYHCUWELDINGAMPLITUDEMINSETTING1 = 0;
m.CSBYHCUWELDINGAMPLITUDEMINSETTING2 = 0;
m.CSBYHCUWELDINGAMPLITUDEMINSETTING3 = 0;
m.CSBYHCUPRESSUREA1 = 0;
m.CSBYHCUPOWERA1 = 0;
m.CSBYHCUENERGYA1 = 0;
m.CSBYHCUAMPLITUDEA1 = 0;
m.CSBYHCUTIMEA1 = 0;
m.CSBYHCUPRESSUREA2 = 0;
m.CSBYHCUPOWERA2 = 0;
m.CSBYHCUENERGYA2 = 0;
m.CSBYHCUAMPLITUDEA2 = 0;
m.CSBYHCUTIMEA2 = 0;
m.CSBYHCUPRESSUREA3 = 0;
m.CSBYHCUPOWERA3 = 0;
m.CSBYHCUENERGYA3 = 0;
m.CSBYHCUAMPLITUDEA3 = 0;
m.CSBYHCUTIMEA3 = 0;
m.CSBYHALWELDINGPRESSUREMAXSETTING1 = 0;
m.CSBYHALWELDINGPRESSUREMAXSETTING2 = 0;
m.CSBYHALWELDINGPRESSUREMAXSETTING3 = 0;
m.CSBYHALWELDINGPRESSUREMINSETTING = 0;
m.CSBYHALWELDINGPOWERMAXSETTING1 = 0;
m.CSBYHALWELDINGPOWERMAXSETTING2 = 0;
m.CSBYHALWELDINGPOWERMAXSETTING3 = 0;
m.CSBYHALWELDINGPOWERMINSETTING1 = 0;
m.CSBYHALWELDINGPOWERMINSETTING2 = 0;
m.CSBYHALWELDINGPOWERMINSETTING3 = 0;
m.CSBYHALWELDINGENERGYMAXSETTING1 = 0;
m.CSBYHALWELDINGENERGYMAXSETTING2 = 0;
m.CSBYHALWELDINGENERGYMAXSETTING3 = 0;
m.CSBYHALWELDINGENERGYMINSETTING1 = 0;
m.CSBYHALWELDINGENERGYMINSETTING2 = 0;
m.CSBYHALWELDINGENERGYMINSETTING3 = 0;
m.CSBYHALWELDINGAMPLITUDEMAXSETTING1 = 0;
m.CSBYHALWELDINGAMPLITUDEMAXSETTING2 = 0;
m.CSBYHALWELDINGAMPLITUDEMAXSETTING3 = 0;
m.CSBYHALWELDINGAMPLITUDEMINSETTING1 = 0;
m.CSBYHALWELDINGAMPLITUDEMINSETTING2 = 0;
m.CSBYHALWELDINGAMPLITUDEMINSETTING3 = 0;
m.CSBYHALPRESSUREA1 = 0;
m.CSBYHALPOWERA1 = 0;
m.CSBYHALENERGYA1 = 0;
m.CSBYHALAMPLITUDEA1 = 0;
m.CSBYHALTIMEA1 = 0;
m.CSBYHALPRESSUREA2 = 0;
m.CSBYHALPOWERA2 = 0;
m.CSBYHALENERGYA2 = 0;
m.CSBYHALAMPLITUDEA2 = 0;
m.CSBYHALTIMEA2 = 0;
m.CSBYHALPRESSUREA3 = 0;
m.CSBYHALPOWERA3 = 0;
m.CSBYHALENERGYA3 = 0;
m.CSBYHALAMPLITUDEA3 = 0;
m.CSBYHALTIMEA3 = 0;
m.CSBYHCUTABLENGTHA = 0;
m.CSBYHCUTABWIDTHA = 0;
m.CSBYHALTABLENGTHA = 0;
m.CSBYHALTABWIDTHA = 0;
m.CSBYHTOPTOSOLDERDISTANCEA = 0;
m.CSBYHTOPTOSOLDERDISTANCEA2 = 0;
m.AluminumToWeld1 = 0;
m.AluminumToWeld2 = 0;
m.CSBYHSOLDERTOEARDISTANCEA = 0;
//MyRes[i] = JudgmentResult(Code_NG, m.list_Data1[i, 1], m.list_Data1[i, 4], m.list_Data1[i, 5], m.list_Data1[i, 15],
// m.list_Data1[i, 16], m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19],
// m.list_Data1[i, 20], m.list_Data1[i, 21], m.list_Data2[i, 59], m.list_Data2[i, 60],
// m.list_Data2[i, 63], m.list_Data2[i, 64]);
//初值OK
m.Result = m.listRes[i] = 1;
m.CSBYHOUTSTATIONJUDGMENTRESULT = "OK";
//优先级 :条码 MES 极性 重量 测厚压力 测厚位移 (焊前CCD 正面极耳撕裂和翻折)
//无条码则无后面检测
if (m.NG_Data1[i, 1] == 2 || m.NG_Data1[i, 3] == 2 || m.NG_Data1[i, 4] == 2)
{
m.Result = m.listRes[i] = 2;
m.CSBYHOUTSTATIONJUDGMENTRESULT = "NG";
}
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
m.Remark += "NG小车1,";
//芯包测厚(位移)判定结果
if (m.NG_Data1[i, 3] == 2) { m.Remark += "芯包侧厚(位移)NG,"; }
//芯包测厚(压力)判定结果 ()
if (false) { m.Remark += "芯包侧厚(压力)NG,"; }
//芯包重量1判定结果
if (m.NG_Data1[i, 1] == 2) { m.Remark += "芯包重量NG,"; }
//芯包CCD极性检测结果
if (m.NG_Data1[i, 4] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
if (Code_NG == 1)
{
string MesMessage = "";
MesResType mesResType = MesResType.C;
//m.Result = MyRes[i] = m.listRes[i] = 2;
//m.UpState = "未上传";
//m.Remark = "出站前NG";
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 = "";
#region NG小车排料调出站
bool Res = CommonMethods.hbgMes.OutboundInformations(url, siteCode, lineCode, equipNum, materialCode, userName, m, ref MesMessage, ref mesResType, NGcodeList);
//bool Res = CommonMethods.hbgMes.SingleCellOutStation(url, siteCode, lineCode, equipNum, materialCode, userName, m,)
if (MesMessage.Contains("发生一个或多个错误"))
{
MesMessage = "上传失败,";
}
else
{
m.Flag = 1;
}
//m.UpState = "已上传";
if (Res)
{
m.Remark += MesMessage;
}
else
{
m.CSBYHOUTSTATIONJUDGMENTRESULT = "NG";
switch (mesResType)
{
case MesResType.A:// 停线,设备报警停机
m.listRes[i] = 2;
MyRes[i] = m.listRes[i];
break;
case MesResType.B://不停机,MEs NG品要排出,要给PLC发NG信号
m.listRes[i] = 2;
MyRes[i] = m.listRes[i];
break;
case MesResType.C://可忽略
m.listRes[i] = 2;
MyRes[i] = m.listRes[i];
break;
default:
m.listRes[i] = 2;
MyRes[i] = m.listRes[i];
break;
}
////芯包测厚(位移)判定结果
//if (m.NG_Data1[i, 3] == 2) { m.Remark += "芯包侧厚(位移)NG,"; }
////芯包测厚(压力)判定结果
//if (false) { m.Remark += "芯包侧厚(压力)NG,"; }
////芯包重量1判定结果
//if (m.NG_Data1[i, 1] == 2) { m.Remark += "芯包重量NG,"; }
////芯包CCD极性检测结果
//if (m.NG_Data1[i, 4] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
m.Remark += MesMessage;
}
#endregion
bool Res1 = CommonMethods.hbgMes.ProducResultParam(ur2, siteCode1, lineCode1, equipNum1, materialCode1, userName1, m, unloadType, ref Mesage);
if (m.Flag == 1)
m.UpState = "已上传";
else
m.UpState = "未上传";
}
else
{
m.CSBYHOUTSTATIONJUDGMENTRESULT = "NG";
m.Result = MyRes[i] = m.listRes[i] = 2;
m.UpState = "未上传";
////芯包测厚(位移)判定结果
//if (m.NG_Data1[i, 3] == 2) { m.Remark += "芯包侧厚(位移)NG,"; }
////芯包测厚(压力)判定结果
//if (false) { m.Remark += "芯包侧厚(压力)NG,"; }
////芯包重量1判定结果
//if (m.NG_Data1[i, 1] == 2) { m.Remark += "芯包重量NG,"; }
////芯包CCD极性检测结果
//if (m.NG_Data1[i, 4] == 2) { m.Remark += "芯包CCD极性检测NG,"; }
}
}
else
{
m.CSBYHOUTSTATIONJUDGMENTRESULT = "NG";
m.Result = MyRes[i] = m.listRes[i] = 2;
m.Remark += "无条码,本地存储";
//正常无条码,以下不会NG不会出现
////芯包重量1判定结果
//if (m.NG_Data1[i, 1] == 2) { m.Remark += ",芯包重量NG"; }
////芯包侧厚判定结果
//if (m.NG_Data1[i, 3] == 2) { m.Remark += ",芯包侧厚NG"; }
////芯包CCD极性检测结果
//if (m.NG_Data1[i, 4] == 2) { m.Remark += ",芯包CCD极性检测NG"; }
m.UpState = "未上传";
}
//极限件发3给PLC
//if (ChallengeFlag == 1)
//{
// if (string.Compare(EX[0].WeldingCCD, "焊前CCD") == 0)
// {
// MyRes[i] = 3;
// }
// if (string.Compare(EX[0].WeldingCCD, "焊后CCD") == 0)
// {
// MyRes[i] = 4;
// }
//}
Task.Run(() => { SendDateMQTT.Instance.EnterandExitSendMessge(1); });
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"卷芯出站线程数据解析:{ex}", "SysErrorLog");
}
}
#endregion
JYResult result1 = null;
JYResult result2 = 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
}
JYResult result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
//CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]}");
//LogHelper.Instance.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]}");
//数据存储 - 异步处理
Task.Run(() =>
{
SaveBlankingData(list);
});
sw2.Stop();
////输出下料数据处理耗时:
CommonMethods.AddDataMonitorLog(0, $"NG出站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
}
}
#region 下料工位(数据处理)
//int OutCount = 0;
//下料解析
private void BlankingStation(JYResult bArrays, object plcModel)
{
Group pf = plcModel as Group;
if (bArrays == null)
{
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddLog(false, $"电芯出站PLC有触发信号,但无数据!");
LogHelper.Instance.WriteLog($"电芯出站PLC有触发信号,但无数据!", "SysErrorLog");
}
if (bArrays.IsSuccess && bArrays.Content != null)
{
Random random = new Random();
//解析数据
sw2.Restart();
#region 数据变量定义
List list = new List();//实体
int[] MyRes = new int[2];//AB反馈结果
#endregion
//高低位转换
byte[] bytes = bArrays.Content.ByteReverse();
byte[] bytes1 = bArrays.Content;
//反馈结果
#region 电芯解析
//电芯解析
#region 上传MES
//D3100起
for (int i = 0; i < 2; i++)
{
try
{
BGearEntity m = new BGearEntity();
AGearEntity TT = new AGearEntity();
//极限件标志
int ChallengeFlag = 0;
if (i == 0)
{
//为了同时上传AB消息而增加,后续可能不需要
UpAB(ref m);
m.A_B = "A芯包";
//A芯包信息1 D3240~D3262
for (int j = 0; j < 28; j++)
{
m.list_Data1[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 280 + j * 2, DataFormat.CDAB);
}
//A芯包信息2(焊机相关次数) D3300~D3326
for (int j = 0; j < 19; j++)
{
m.list_Data2[i, j] = IntLib.GetIntFromByteArray(bArrays.Content, 400 + j * 4, DataFormat.CDAB);
}
//A芯包信息3(设定值) D3400~D3506
for (int j = 0; j < 54; j++)
{
m.list_Data3[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 600 + j * 4, DataFormat.CDAB);
}
//A芯包信息4(实际值) D3550~D3634
for (int j = 0; j < 47; j++)
{
m.list_Data4[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 900 + j * 4, DataFormat.CDAB);
}
for (int j = 0; j <1; j++)
{
m.list_pan[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content,1088 + j * 2, DataFormat.CDAB);
}
}
else
{
m.A_B = "B芯包";
//B芯包信息1 D3740~D3762
for (int j = 0; j < 28; j++)
{
m.list_Data1[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 1280 + j * 2, DataFormat.CDAB);
}
//B芯包信息2(焊机相关次数) D3800~D3826
for (int j = 0; j < 19; j++)
{
m.list_Data2[i, j] = IntLib.GetIntFromByteArray(bArrays.Content, 1400 + j * 4, DataFormat.CDAB);
}
//B芯包信息3(设定值) D3900~D4006
for (int j = 0; j < 54; j++)
{
m.list_Data3[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 1600 + j * 4, DataFormat.CDAB);
}
//B芯包信息4(实际值) D4050~D4134
for (int j = 0; j < 47; j++)
{
m.list_Data4[i, j] = FloatLib.GetFloatFromByteArray(bArrays.Content, 1900 + j * 4, DataFormat.CDAB);
}
for (int j = 0; j < 1; j++)
{
m.list_pan[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 1188 + j * 2, DataFormat.CDAB);
}
}
//芯包扫码时间
//m.ScanTime[i] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//芯包条码 D3200~D3239
m.CSBYHCODEA = StringLib.GetStringFromByteArrayByEncoding(bytes1, 200 + 40 * i, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
//m.CSBYHCODEA = "TEST";
var EX = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetChallengeCode(m.CSBYHCODEA));
for (int j = 0; j < EX.Count; j++)
{
if (string.Compare(EX[j].ChallengeBarCode, m.CSBYHCODEA) == 0)
{
m.Remark += "(极限件," + EX[j].CodeMessage + "," + EX[j].WeldingCCD + ")";
ChallengeFlag = 1;
}
}
//查询进站时间数据
var w = CommonMethods.db.QuerySqlList(CommonMethods.dBSQL.GetInTime(m.CSBYHCODEA));
//获取新一行数据
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.CSBYHCODEA != null && m.CSBYHCODEA != "" && m.CSBYHCODEA != "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 NGcodeList = new List();
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]);
//芯包重量1判定结果
if (m.list_Data1[i, 10] == 1)
m.CSBYHWEIGHTRESULTA1 = "OK";
else if (m.list_Data1[i, 10] == 2)
m.CSBYHWEIGHTRESULTA1 = "NG";
else
m.CSBYHWEIGHTRESULTA1 = "OK";
//芯包侧厚判定结果
if (m.list_Data1[i, 11] == 1)
m.CSBYHTHICKNESSTESTJUDGERESULTA = "OK";
else if (m.list_Data1[i, 11] == 2)
m.CSBYHTHICKNESSTESTJUDGERESULTA = "NG";
else
m.CSBYHTHICKNESSTESTJUDGERESULTA = "OK";
//芯包CCD极性检测结果
if (m.list_Data1[i, 12] == 1)
m.CSBYHPOLARITYRESULTA = "OK";
else if (m.list_Data1[i, 12] == 2)
m.CSBYHPOLARITYRESULTA = "NG";
else
m.CSBYHPOLARITYRESULTA = "OK";
//电芯裁切粘连判定结果
if (m.list_Data1[i, 13] == 1)
m.CSBYHCUTADHESIONJUDGERESULTA = "OK";
else if (m.list_Data1[i, 13] == 2)
m.CSBYHCUTADHESIONJUDGERESULTA = "NG";
else
m.CSBYHCUTADHESIONJUDGERESULTA = "OK";
//电芯裁切毛刺判定结果
if (m.list_Data1[i, 14] == 1)
m.CSBYHCUTBURRJUDGERESULTA = "OK";
else if (m.list_Data1[i, 14] == 2)
m.CSBYHCUTBURRJUDGERESULTA = "NG";
else
m.CSBYHCUTBURRJUDGERESULTA = "OK";
//芯包铜焊印位置判定结果1
if (m.list_Data1[i, 15] == 1)
{
m.CSBYHSOLDERJUDGERESULTA = "OK";
}
else if (m.list_Data1[i, 15] == 2)
{
m.CSBYHSOLDERJUDGERESULTA = "NG";
}
else
{
m.CSBYHSOLDERJUDGERESULTA = "OK";
}
//芯包铜焊印位置判定结果2
if (m.list_Data1[i, 26] == 1)
{
m.CSBYHSOLDERJUDGERESULTA2 = "OK";
}
else if (m.list_Data1[i, 26] == 2)
{
m.CSBYHSOLDERJUDGERESULTA2 = "NG";
}
else
{
m.CSBYHSOLDERJUDGERESULTA2 = "OK";
}
//芯包正面极耳撕裂判定结果
if (m.list_Data1[i, 16] == 1)
m.CSBYHFRONTEARCRACKLEJUDGERESULTA = "OK";
else if (m.list_Data1[i, 16] == 2)
m.CSBYHFRONTEARCRACKLEJUDGERESULTA = "NG";
else
m.CSBYHFRONTEARCRACKLEJUDGERESULTA = "OK";
//芯包背面极耳撕裂判定结果
if (m.list_Data1[i, 17] == 1)
m.CSBYHBACKEARCRACKLEJUDGERESULTA = "OK";
else if (m.list_Data1[i, 17] == 2)
m.CSBYHBACKEARCRACKLEJUDGERESULTA = "NG";
else
m.CSBYHBACKEARCRACKLEJUDGERESULTA = "OK";
//芯包正面极耳翻折检测结果
if (m.list_Data1[i, 18] == 1)
m.CSBYHFRONTEARFLODINGRESULTA = "OK";
else if (m.list_Data1[i, 18] == 2)
m.CSBYHFRONTEARFLODINGRESULTA = "NG";
else
m.CSBYHFRONTEARFLODINGRESULTA = "OK";
//芯包背面极耳翻折检测结果
if (m.list_Data1[i, 19] == 1)
m.CSBYHBACKEARFLODINGRESULTA = "OK";
else if (m.list_Data1[i, 19] == 2)
m.CSBYHBACKEARFLODINGRESULTA = "NG";
else
m.CSBYHBACKEARFLODINGRESULTA = "OK";
//电芯测厚压力结果
if (m.list_Data1[i, 23] == 1)
m.ThicknessPressureResult = "OK";
else if (m.list_Data1[i, 23] == 2)
m.ThicknessPressureResult = "NG";
else
m.ThicknessPressureResult = "OK";
//芯包焊前CCD检测结果
if (m.list_Data1[i, 24] == 1)
m.PreweldResult = "OK";
else if (m.list_Data1[i, 24] == 2)
m.PreweldResult = "NG";
else
m.PreweldResult = "OK";
//芯包铝焊印位置判定结果1
if (m.list_Data1[i, 25] == 1)
{
m.AluminiumWeldPositionResult1 = "OK";
}
else if (m.list_Data1[i, 25] == 2)
{
m.AluminiumWeldPositionResult1 = "NG";
}
else
{
m.AluminiumWeldPositionResult1 = "OK";
}
//芯包铝焊印位置判定结果2
if (m.list_Data1[i, 27] == 1)
{
m.AluminiumWeldPositionResult2 = "OK";
}
else if (m.list_Data1[i, 27] == 2)
{
m.AluminiumWeldPositionResult2 = "NG";
}
else
{
m.AluminiumWeldPositionResult2 = "OK";
}
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//m.RingA = m.list_Data1[i, 0];//无环轨编号,不显示
m.CSBYHWEIGHTNOA1 = m.list_Data1[i, 1];
m.CSBYHTHICKNESSTESTSTATIONNOA = m.list_Data1[i, 2];
m.CSBYHTOOLNOA = m.list_Data1[i, 3];
m.CSBYHCUWELDINGSTATIONNOA1 = m.list_Data1[i, 4];
m.CSBYHCUWELDINGSTATIONNOA2 = m.list_Data1[i, 5];
m.CSBYHCUWELDINGSTATIONNOA3 = m.list_Data1[i, 6];
m.CSBYHALWELDINGSTATIONNOA1 = m.list_Data1[i, 7];
m.CSBYHALWELDINGSTATIONNOA2 = m.list_Data1[i, 8];
m.CSBYHALWELDINGSTATIONNOA3 = m.list_Data1[i, 9];
m.CSBYHCUTABCUTTERNOA = m.list_Data1[i, 21];
m.CSBYHALTABCUTTERNOA = m.list_Data1[i, 22];
m.CSBYHCUWELDHEADCOUNTA1 = m.list_Data2[i, 0];
m.CSBYHCUWELDHEADCOUNTA2 = m.list_Data2[i, 2];
m.CSBYHCUWELDHEADCOUNTA3 = m.list_Data2[i, 4];
m.CSBYHCUWELDBASECOUNTA1 = m.list_Data2[i, 1];
m.CSBYHCUWELDBASECOUNTA2 = m.list_Data2[i, 3];
m.CSBYHCUWELDBASECOUNTA3 = m.list_Data2[i, 5];
m.CSBYHALWELDHEADCOUNTA1 = m.list_Data2[i, 6];
m.CSBYHALWELDHEADCOUNTA2 = m.list_Data2[i, 8];
m.CSBYHALWELDHEADCOUNTA3 = m.list_Data2[i, 10];
m.CSBYHALWELDBASECOUNTA1 = m.list_Data2[i, 7];
m.CSBYHALWELDBASECOUNTA2 = m.list_Data2[i, 9];
m.CSBYHALWELDBASECOUNTA3 = m.list_Data2[i, 11];
m.CSBYHCUTABCUTTERCOUNTA = m.list_Data2[i, 12];
m.CSBYHALTABCUTTERCOUNTA = m.list_Data2[i, 13];
m.CopperWeldHeadLife = m.list_Data2[i, 14];
m.CopperWeldSeatLife = m.list_Data2[i, 15];
m.AluminiumWeldHeadLife = m.list_Data2[i, 16];
m.AluminiumWeldSeatLife = m.list_Data2[i, 17];
m.CuttingKnifeLife = m.list_Data2[i, 18];
m.CSBYHPROCESSNAME = "超声波预焊接";
m.CSBYHSCHEDULE = CommonMethods.strClass;
m.CSBYHINSTATIONTIME = m.ScanTime[0];
m.CSBYHOUTSTATIONTIME = m.ScanTime[1];
m.CSBYHWEIGHTA1MAXSETTING = SaveTwoNum(m.list_Data3[i, 0]);
m.CSBYHWEIGHTA1MINSETTING = SaveTwoNum(m.list_Data3[i, 1]);
m.CSBYHTHICKNESSTESTPRESSUREMAXSETTINGA = SaveTwoNum(m.list_Data3[i, 2]);
m.CSBYHTHICKNESSTESTPRESSUREMINSETTINGA = SaveTwoNum(m.list_Data3[i, 3]);
m.CSBYHTHICKNESSTESTPRESSUREMAXSIZEA = SaveTwoNum(m.list_Data3[i, 4]);
m.CSBYHTHICKNESSTESTPRESSUREMINSIZEA = SaveTwoNum(m.list_Data3[i, 5]);
m.CSBYHCUWELDINGPRESSUREMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 6]);//压力最大
m.CSBYHCUWELDINGPRESSUREMINSETTING = SaveTwoNum(m.list_Data3[i, 7]);//压力最小值
m.CSBYHCUWELDINGPRESSUREMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 14]);//压力只有一个设定值,显示该值
m.CSBYHCUWELDINGPRESSUREMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 22]);//压力只有一个设定值,显示该值
m.CSBYHCUWELDINGPOWERMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 8]);
m.CSBYHCUWELDINGPOWERMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 16]);
m.CSBYHCUWELDINGPOWERMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 24]);
m.CSBYHCUWELDINGPOWERMINSETTING1 = SaveTwoNum(m.list_Data3[i, 9]);
m.CSBYHCUWELDINGPOWERMINSETTING2 = SaveTwoNum(m.list_Data3[i, 17]);
m.CSBYHCUWELDINGPOWERMINSETTING3 = SaveTwoNum(m.list_Data3[i, 25]);
m.CSBYHCUWELDINGENERGYMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 10]);
m.CSBYHCUWELDINGENERGYMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 18]);
m.CSBYHCUWELDINGENERGYMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 26]);
m.CSBYHCUWELDINGENERGYMINSETTING1 = SaveTwoNum(m.list_Data3[i, 11]);
m.CSBYHCUWELDINGENERGYMINSETTING2 = SaveTwoNum(m.list_Data3[i, 19]);
m.CSBYHCUWELDINGENERGYMINSETTING3 = SaveTwoNum(m.list_Data3[i, 27]);
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 12]);
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 20]);
m.CSBYHCUWELDINGAMPLITUDEMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 28]);
m.CSBYHCUWELDINGAMPLITUDEMINSETTING1 = SaveTwoNum(m.list_Data3[i, 13]);
m.CSBYHCUWELDINGAMPLITUDEMINSETTING2 = SaveTwoNum(m.list_Data3[i, 21]);
m.CSBYHCUWELDINGAMPLITUDEMINSETTING3 = SaveTwoNum(m.list_Data3[i, 29]);
m.CSBYHALWELDINGPRESSUREMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 30]);//
m.CSBYHALWELDINGPRESSUREMINSETTING = SaveTwoNum(m.list_Data3[i, 31]);//
m.CSBYHALWELDINGPRESSUREMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 38]);//
m.CSBYHALWELDINGPRESSUREMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 46]);//
m.CSBYHALWELDINGPOWERMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 32]);
m.CSBYHALWELDINGPOWERMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 40]);
m.CSBYHALWELDINGPOWERMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 48]);
m.CSBYHALWELDINGPOWERMINSETTING1 = SaveTwoNum(m.list_Data3[i, 33]);
m.CSBYHALWELDINGPOWERMINSETTING2 = SaveTwoNum(m.list_Data3[i, 41]);
m.CSBYHALWELDINGPOWERMINSETTING3 = SaveTwoNum(m.list_Data3[i, 49]);
m.CSBYHALWELDINGENERGYMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 34]);
m.CSBYHALWELDINGENERGYMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 42]);
m.CSBYHALWELDINGENERGYMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 50]);
m.CSBYHALWELDINGENERGYMINSETTING1 = SaveTwoNum(m.list_Data3[i, 35]);
m.CSBYHALWELDINGENERGYMINSETTING2 = SaveTwoNum(m.list_Data3[i, 43]);
m.CSBYHALWELDINGENERGYMINSETTING3 = SaveTwoNum(m.list_Data3[i, 51]);
m.CSBYHALWELDINGAMPLITUDEMAXSETTING1 = SaveTwoNum(m.list_Data3[i, 36]);
m.CSBYHALWELDINGAMPLITUDEMAXSETTING2 = SaveTwoNum(m.list_Data3[i, 44]);
m.CSBYHALWELDINGAMPLITUDEMAXSETTING3 = SaveTwoNum(m.list_Data3[i, 52]);
m.CSBYHALWELDINGAMPLITUDEMINSETTING1 = SaveTwoNum(m.list_Data3[i, 37]);
m.CSBYHALWELDINGAMPLITUDEMINSETTING2 = SaveTwoNum(m.list_Data3[i, 45]);
m.CSBYHALWELDINGAMPLITUDEMINSETTING3 = SaveTwoNum(m.list_Data3[i, 53]);
//m.pan = m.list_pan[i, 0];
m.CSBYHWEIGHTA1 = SaveTwoNum(m.list_Data4[i, 0]);
m.CSBYHTHICKNESSTESTPRESSUREA = SaveTwoNum(m.list_Data4[i, 1]);
m.CSBYHTHICKNESSTESTPRESSURESIZEA = SaveTwoNum(m.list_Data4[i, 2]);
m.CSBYHCUTABLENGTHA = SaveTwoNum(m.list_Data4[i, 3]);
m.CSBYHCUTABWIDTHA = SaveTwoNum(m.list_Data4[i, 4]);
m.CSBYHALTABLENGTHA = SaveTwoNum(m.list_Data4[i, 5]);
m.CSBYHALTABWIDTHA = SaveTwoNum(m.list_Data4[i, 6]);
m.CSBYHCUTADHESIONRESULTA = SaveTwoNum(m.list_Data4[i, 7]);
m.CSBYHCUTBURRRESULTA = SaveTwoNum(m.list_Data4[i, 8]);
m.CSBYHTOPTOSOLDERDISTANCEA = SaveTwoNum(m.list_Data4[i, 9]);
m.CSBYHTOPTOSOLDERDISTANCEA2 = SaveTwoNum(m.list_Data4[i, 45]);
m.CSBYHSOLDERTOEARDISTANCEA = SaveTwoNum(m.list_Data4[i, 10]);
m.CSBYHFRONTEARCRACKLERESULTA = SaveTwoNum(m.list_Data4[i, 11]);
m.CSBYHBACKEARCRACKLERESULTA = SaveTwoNum(m.list_Data4[i, 12]);
m.AluminumToWeld1 = SaveTwoNum(m.list_Data4[i, 44]);
m.AluminumToWeld2 = SaveTwoNum(m.list_Data4[i, 46]);
m.CSBYHCUPRESSUREA1 = SaveTwoNum(m.list_Data4[i, 13]);
m.CSBYHCUPOWERA1 = SaveTwoNum(m.list_Data4[i, 14]);
m.CSBYHCUENERGYA1 = SaveTwoNum(m.list_Data4[i, 15]);
m.CSBYHCUAMPLITUDEA1 = SaveTwoNum(m.list_Data4[i, 16]);
m.CSBYHCUTIMEA1 = SaveTwoNum(m.list_Data4[i, 17]);
m.CSBYHCUPRESSUREA2 = SaveTwoNum(m.list_Data4[i, 18]);
m.CSBYHCUPOWERA2 = SaveTwoNum(m.list_Data4[i, 19]);
m.CSBYHCUENERGYA2 = SaveTwoNum(m.list_Data4[i, 20]);
m.CSBYHCUAMPLITUDEA2 = SaveTwoNum(m.list_Data4[i, 21]);
m.CSBYHCUTIMEA2 = SaveTwoNum(m.list_Data4[i, 22]);
m.CSBYHCUPRESSUREA3 = SaveTwoNum(m.list_Data4[i, 23]);
m.CSBYHCUPOWERA3 = SaveTwoNum(m.list_Data4[i, 24]);
m.CSBYHCUENERGYA3 = SaveTwoNum(m.list_Data4[i, 25]);
m.CSBYHCUAMPLITUDEA3 = SaveTwoNum(m.list_Data4[i, 26]);
m.CSBYHCUTIMEA3 = SaveTwoNum(m.list_Data4[i, 27]);
m.CSBYHALPRESSUREA1 = SaveTwoNum(m.list_Data4[i, 28]);
m.CSBYHALPOWERA1 = SaveTwoNum(m.list_Data4[i, 29]);
m.CSBYHALENERGYA1 = SaveTwoNum(m.list_Data4[i, 30]);
m.CSBYHALAMPLITUDEA1 = SaveTwoNum(m.list_Data4[i, 31]);
m.CSBYHALTIMEA1 = SaveTwoNum(m.list_Data4[i, 32]);
m.CSBYHALPRESSUREA2 = SaveTwoNum(m.list_Data4[i, 33]);
m.CSBYHALPOWERA2 = SaveTwoNum(m.list_Data4[i, 34]);
m.CSBYHALENERGYA2 = SaveTwoNum(m.list_Data4[i, 35]);
m.CSBYHALAMPLITUDEA2 = SaveTwoNum(m.list_Data4[i, 36]);
m.CSBYHALTIMEA2 = SaveTwoNum(m.list_Data4[i, 37]);
m.CSBYHALPRESSUREA3 = SaveTwoNum(m.list_Data4[i, 38]);
m.CSBYHALPOWERA3 = SaveTwoNum(m.list_Data4[i, 39]);
m.CSBYHALENERGYA3 = SaveTwoNum(m.list_Data4[i, 40]);
m.CSBYHALAMPLITUDEA3 = SaveTwoNum(m.list_Data4[i, 41]);
m.CSBYHALTIMEA3 = SaveTwoNum(m.list_Data4[i, 42]);
m.ThicknessMeasureDisplacement = m.list_Data4[i, 43];
//条码,芯包重量,芯包侧厚,芯包CCD极性检测,电芯裁切粘连,电芯裁切毛刺,芯包焊印位置,
//芯包正面极耳撕裂,芯包背面极耳撕裂,芯包正面极耳翻折,芯包背面极耳翻折
MyRes[i] = JudgmentResult(Code_NG, m.list_Data1[i, 10], m.list_Data1[i, 11],
m.list_Data1[i, 12], m.list_Data1[i, 13], m.list_Data1[i, 14], m.list_Data1[i, 15],
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.Result = MyRes[i];
m.CSBYHOUTSTATIONJUDGMENTRESULT = m.judgment_result[i] = OK_NG; ;
m.Remark += NG_Type;
NG_Type = "";//清除上一次不良字符串
OK_NG = ""; //清除上一次结果
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 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 = "";
bool Res = CommonMethods.hbgMes.OutboundInformations(url, siteCode, lineCode, equipNum, materialCode, userName, m, ref MesMessage, ref mesResType, NGcodeList);
//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.Remark = MesMessage[i];
break;
case MesResType.B://不停机,MEs NG品要排出,要给PLC发NG信号
//m.listRes[i] = 9;
m.Result = MyRes[i] = 2;
//m.Remark = MesMessage[i];
break;
case MesResType.C://可忽略
//m.listRes[i] = 1;
m.Result = MyRes[i] = 2;
//m.Remark = MesMessage[i];
break;
default:
m.Result = MyRes[i] = 2;
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;
}
bool Res1 = CommonMethods.hbgMes.ProducResultParam(ur2, siteCode1, lineCode1, equipNum1, materialCode1, userName1, m, unloadType, ref Mesage);
if (m.Flag == 1)
m.UpState = "已上传";
else
m.UpState = "未上传";
}
else
{
m.Result = MyRes[i];
m.Remark += "本地存储";
m.UpState = "未上传";
}
if (CommonMethods.sysConfig.OKSwitching)
{
//调试发OK
m.Result = MyRes[i] = 1;
//m.Result = "OK";
}
}
else
{
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 = "未上传";
}
//极限件发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;
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"卷芯出站线程数据解析:{ex}", "SysErrorLog");
}
}
#endregion
JYResult result1 = null;
JYResult result2 = 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
}
//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 result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]}");
LogHelper.Instance.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]}");
Task.Run(() => { SendDateMQTT.Instance.EnterandExitSendMessge(1); });
//数据存储 - 异步处理
Task.Run(() =>
{
SaveBlankingData(list);
});
sw2.Stop();
////输出下料数据处理耗时:
CommonMethods.AddDataMonitorLog(0, $"卷芯出站共耗时:{sw2.Elapsed.TotalMilliseconds}ms");
}
}
///
/// 电池结果判断
///
///
///
///
private ushort GetResult(AGearEntity m, ref string strErr)
{
//strErr = "";
//bool b = m.YaLiValue <= 2 ? true : false;//压力值结果NG
//if (b)
//{
// strErr = "良品";
// return 1;
//}
//if (!b)
//{
// strErr = "压力值NG";
// return 5;
//}
return 1;
}
#region 保存下料数据
///
/// 保存下料数据到数据
///
///
private void SaveBlankingData(List list)
{
//数据的保存
try
{
if (list != null && list.Count > 0)
{
//数据显示
List Blist = list;
int i = 0;
string strRes = "";
foreach (BGearEntity m in list)
{
if (true)
{
bool b = CommonMethods.db.AddReturnBool(m);
//strRes = b ? ",本存Yes" : ",本存No";
#region 存储到服务器
try
{
//int b1 = CommonMethods.dbServer.Delete(it => it.containerCode == m.RFID);
//bool res = CommonMethods.dbServer.AddReturnBool(server);
//strRes += res == true ? ",远存Yes" : ",远存No";
}
catch (Exception ex)
{
//JYResult result = CommonMethods.PlcLink.WriteValue("D80", 1, Data_Type.Short);//反馈PLC结果
//CommonMethods.AddDataMonitorLog(1, $"服务器连接失败!解决办法:1、请检查MES网络,2、查看服务器是否正常!");
//LogHelper.Instance.WriteError($"服务器连接失败:{ex}", "系统报错");
}
#endregion
}
else
{
strRes = ",不存储";
}
m.Remark = m.Remark + strRes;
Blist[i].Remark = m.Remark;
i++;
}
//数据显示
CommonMethods.ShowBlankingDelegate.Invoke(Blist);
}
else
{
LogHelper.Instance.WriteError($"电芯出站数据List为空", "SysErrorLog");
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"电芯出站数据保存异常:{ex}", "SysErrorLog");
}
}
#endregion
#endregion
#region 创建空的数组List
public List GetList(int num, T data)
{
List list = new List();
for (int i = 0; i < num; i++)
{
list.Add(data);
}
return list;
}
public List GetMesType(int Num)
{
List mesResTypes = new List();
for (int i = 0; i < Num; i++)
{
mesResTypes.Add(MesResType.UnKnow);
}
return mesResTypes;
}
///
/// PLC内批量写\0
///
///
///
public string GetString_0(int Num)
{
string ff = "";
for (int i = 0; i < Num; i++)
{
ff = ff.Insert(ff.Length, "\0");
}
return ff;
}
public string GetBarCodeNum(int Num)
{
string CodeNo = "";
int CodeLenth = Num.ToString().Length;
switch (CodeLenth)
{
case 1:
return CodeNo = $"00000{Num}";
case 2:
return CodeNo = $"0000{Num}";
case 3:
return CodeNo = $"000{Num}";
case 4:
return CodeNo = $"00{Num}";
case 5:
return CodeNo = $"0{Num}";
default:
return CodeNo = $"{Num}";
}
}
#endregion
#region 下料不良代码
public List NGcode(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m)
{
//芯包重量、测厚位移、极性、铜焊印位置1、铜焊印位置2、正面极耳撕裂、背面极耳撕裂、
//正面极耳翻折、背面极耳翻折、测厚压力、焊前CCD、铝焊印位置1、铝焊印位置2
List NGcodelist = new List();
if (a == 2 || b == 2) NGcodelist.Add("ETPP120");
if (j == 2) NGcodelist.Add("ETPP119");
if (c == 2) NGcodelist.Add("ETPP005");
if (d == 2 || e == 2 || l == 2 || m == 2) NGcodelist.Add("ETPP118");
if (f == 2 || g == 2) NGcodelist.Add("ETPP106");
if (h == 2 || i == 2) NGcodelist.Add("ETPP108");
if (k == 2) NGcodelist.Add("ETPA111");
return NGcodelist;
}
#endregion
#region NG下料不良代码
public List NGCarcode(int a, int b, int c)
{
//芯包重量、测厚位移、极性
List NGcodelist = new List();
if (a == 2) NGcodelist.Add("ETPP120");
if (b == 2) NGcodelist.Add("ETPP120");
if (c == 2) NGcodelist.Add("ETPP105");
return NGcodelist;
}
#endregion
}
}
#endregion
#endregion
#endregion