Files
604WGJ/JinYuan.ControlCenter/ControlCenter_Plc.cs
T
2026-08-12 14:32:27 +08:00

1985 lines
99 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using JinYuan.CommunicationLib.Enum;
using JinYuan.DataConvertLib;
using JinYuan.Helper;
using JinYuan.MES.Enums;
using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using PLCCommunication;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
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 判断总结果
/// <summary>
/// 判断总结果
/// </summary>
//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;
//}
/// <summary>
/// 判断总结果
/// </summary>
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;
}
/// <summary>
/// 判断总结果
/// </summary>
private (short, string, string) JudgmentWGJResult(int A, int[,] B, int C)
{
short Result = 1;
var OK_NG = "OK";
var NG_Type = "";
for (int i = 0; i < 20; i++)
{
if (B[C, i] != 1)
{
//1OK,2扫码NG,3MES反馈NG,4其他NG
Result = 4;
OK_NG = "NG";
NG_Type += $"{ConstValue.CCDNameArr[i]}(NG),";
}
}
if (A == 2)
{
NG_Type += "无条码,";
Result = 2;
OK_NG = "NG";
}
return (Result, OK_NG, NG_Type);
}
//下料不良代码 外观检
public (List<string>, List<string>) NGWGJcode(string[,] lstResult, int index)
{
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 == null)
continue;
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);
}
#endregion
#region 上料工位(数据处理)
/// <summary>
/// 上料工位
/// </summary>
int JXCount = 0;
Stopwatch sw2 = new Stopwatch();
//上料解析
private void FeedingStation(JYResult<byte[]> bArrays, object plcModel)
{
Group pf = plcModel as Group;
if (bArrays == null)
{
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddLog(false, $"电芯进站PLC有触发信号,但无数据!");//存系统日志
LoggerHelp.WriteLog($"电芯进站PLC有触发信号,但无数据!", "Info");
}
if (bArrays.IsSuccess && bArrays.Content != null)
{
sw2.Restart();
//解析数据
//1257 3个条码
List<AGearEntity> list = new List<AGearEntity>();//实体
List<string> listBarCode = GetList<string>(2, "");//电芯条码
//List<string> listNum = GetList<string>(1, "");//进站磁悬浮动子编号
List<short> listRes = GetList<short>(2, 0);//进站电芯反馈结果
byte[] bytes = bArrays.Content.ByteReverse();//高低位转换
byte[] bytes1 = bArrays.Content;
// 从D2200开始
#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] = 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();
//listBarCode[0] = "TEST";
//listBarCode[1] = "TEST";
//listBarCode[2] = "TEST";
//listBarCode[3] = "TEST";
#endregion
for (int i = 0; i < 2; 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<Challenge>(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<string> MesMessage = new List<string>();
List<MesResType> mesResType = new List<MesResType>();
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 modelName = CommonMethods.mesConfig.ModelName;
string MesMessage1 = "";
MesResType mesResType1 = MesResType.A;
bool Res = CommonMethods.hbgMes.SingleCellInStation(url, siteCode, lineCode, modelName, 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] = 3;
m.Remark += "MES NG";
break;
case MesResType.B:
//listRes[i] = 9;
listRes[i] = 3;
m.Remark += "MES NG";
break;
case MesResType.C:
//listRes[i] = 1;
listRes[i] = 3;
m.Remark += "MES NG";
break;
case MesResType.D:
listRes[i] = 1;
m.Remark += "MES OK";
break;
default:
listRes[i] = 3;
m.Remark += "MES NG";
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 = m.ID.ToString();
//电芯反馈结果
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
//需要沟通极限 发多少给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)
{
LoggerHelp.WriteLog($"外观检测进站线程数据解析:{ex}", "SysErrorLog");
}
}
//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]},";
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 保存上料数据
/// <summary>
/// 保存上料数据到数据
/// </summary>
/// <param name="list"></param>
private void SaveFeedingData(List<AGearEntity> list)
{
//数据的保存
try
{
if (list != null && list.Count > 0)
{
//数据显示
List<AGearEntity> Blist = list;
int i = 0;
string strRes = "";
foreach (AGearEntity m in list)
{
if (true)
{
//int b1 = CommonMethods.dbServer.Delete<DataTurnover>(it => it.containerCode == m.DiRFID);
Thread.Sleep(10);
//int b2 = CommonMethods.dbServer.Delete<DataTurnover>(it => it.containerCode == m.GaoRFID);
//int b1 = CommonMethods.dbServer.Delete<DataTurnover>(it => it.containerCode == m.BarCode);
bool b = CommonMethods.db.AddReturnBool<AGearEntity>(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<DataTurnover>(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、查看服务器是否正常!!");
LoggerHelp.WriteLog($"服务器连接失败:{ex}", "系统报错");
}
}
else
{
strRes = ",不存储";
}
//m.Remark = m.Remark + strRes;
Blist[i].Remark = m.Remark;
i++;
}
//数据显示
CommonMethods.ShowFeedingDelegate.Invoke(Blist);
}
else
{
LoggerHelp.WriteLog($"电芯进站数据List为空", "SysErrorLog");
}
}
catch (Exception ex)
{
LoggerHelp.WriteLog($"外观检测上料保存处理异常:{ex}", "SysErrorLog");
}
}
#endregion
#endregion
#region NG出站解析
private void NGStation(JYResult<byte[]> 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有触发信号,但无数据!");
LoggerHelp.WriteLog($"NG出站PLC有触发信号,但无数据!", "SysErrorLog");
}
}
#endregion
#region 下料工位(数据处理)
//int OutCount = 0;
#region //下料解析 预焊检
//private void BlankingStation_YHJ(JYResult<byte[]> 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<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(bArrays.Content, 0, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
// listBarCode[1] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 40, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
// listBarCode[2] = StringLib.GetStringFromByteArrayByEncoding(bArrays.Content, 80, 40, System.Text.Encoding.ASCII).Replace('\0', ' ').Replace('\r', ' ').Replace(" ", "").Trim();
// #region 上传MES
// //D3100起
// for (int i = 0; i < 3; i++)
// {
// try
// {
// BGearEntity m = new BGearEntity();
// AGearEntity TT = new AGearEntity();
// //极限件标志
// int ChallengeFlag = 0;
// if (i == 0)
// {
// //为了同时上传AB消息而增加,后续可能不需要
// UpAB(ref m);
// m.A_B = "A芯包";
// //芯包信息1 D3300~D3326
// for (int j = 0; j < 27; j++)
// {
// m.list_Data1[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 280 + j * 2, DataFormat.CDAB);
// }
// //芯包信息2 D3330~D3356
// for (int j = 0; j < 27; j++)
// {
// m.list_Data2[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 280 + j * 2, DataFormat.CDAB);
// }
// //芯包信息3 D3360~D3386
// for (int j = 0; j < 27; j++)
// {
// m.list_Data3[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 280 + j * 2, DataFormat.CDAB);
// }
// //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<Challenge>(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<AGearEntity>(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<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]);
// //芯包重量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");
// }
//}
#endregion
//下料解析 外观检
private void BlankingStation(JYResult<byte[]> bArrays, object plcModel)
{
Group pf = plcModel as Group;
if (bArrays == null)
{
CommonMethods.PlcLink.WriteInt16(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddLog(false, $"电芯出站PLC有触发信号,但无数据!");
LoggerHelp.WriteLog($"电芯出站PLC有触发信号,但无数据!", "SysErrorLog");
}
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[2];//三个外观检测反馈结果
#endregion
//高低位转换
byte[] bytes = bArrays.Content.ByteReverse();
byte[] bytes1 = bArrays.Content;
List<string> listBarCode = GetList<string>(2, "");//电芯条码
//List<string> listNum = GetList<string>(1, "");//进站磁悬浮动子编号
List<short> listRes = GetList<short>(2, 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 < 2; i++)
{
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 < ConstValue.COUNT_CCD; j++)
{
m.CCD_Data[i, j] = ShortLib.GetShortFromByteArray(bArrays.Content, 200 + i * 30 * 2 + j * 2, DataFormat.CDAB);
}
#region 注释掉的采集数据 by clm 20260812
//3400
//m.Thickness1 = FloatLib.GetFloatFromByteArray(bArrays.Content, 400 + i * 30 * 2, DataFormat.CDAB);
//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);
//}
//不良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);
//}
#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.Replace('/', '-');
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.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" : "缺图");
#region 注释代码
//m.CCDResult21 = m.CCD_Data[i, 20] == 1 ? "OK" : (m.CCD_Data[i, 20] == 0 ? "NG" : "缺图");
//m.CCDResult22 = m.CCD_Data[i, 21] == 1 ? "OK" : (m.CCD_Data[i, 21] == 0 ? "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" : "缺图");
#endregion
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 < ConstValue.COUNT_CCD; ii++)
{
if (m.CCD_Data[i, ii] != 1)
{
//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];
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 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 modelName = CommonMethods.mesConfig.ModelName;
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;
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, modelName, 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, siteCode, lineCode, equipNum, materialCode, userName, m, unloadType, ref Mesage);
if (Mesage.Contains("发生一个或多个错误"))
{
m.Remark += "结果参数上传失败,";
}
else
{
m.Flag1 = 1;
}
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];
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 = "未上传";
}
#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
}
catch (Exception ex)
{
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]}");
LoggerHelp.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");
}
}
/// <summary>
/// 电池结果判断
/// </summary>
/// <param name="HJ_Result"></param>
/// <param name="strErr"></param>
/// <returns></returns>
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 保存下料数据
/// <summary>
/// 保存下料数据到数据
/// </summary>
/// <param name="list"></param>
private void SaveBlankingData(List<BGearEntity> list)
{
//数据的保存
try
{
if (list != null && list.Count > 0)
{
//数据显示
List<BGearEntity> Blist = list;
int i = 0;
string strRes = "";
foreach (BGearEntity m in list)
{
bool b = CommonMethods.db.AddReturnBool<BGearEntity>(m);
if(!b)
{
strRes = ",不存储";
}
m.Remark = m.Remark + strRes;
Blist[i].Remark = m.Remark;
i++;
}
//数据显示
CommonMethods.ShowBlankingDelegate.Invoke(Blist);
}
else
{
LoggerHelp.WriteLog($"电芯出站数据List为空", "SysErrorLog");
}
}
catch (Exception ex)
{
LoggerHelp.WriteLog($"电芯出站数据保存异常:{ex}", "SysErrorLog");
}
}
#endregion
#endregion
#region 创建空的数组List
public List<T> GetList<T>(int num, T data)
{
List<T> list = new List<T>();
for (int i = 0; i < num; i++)
{
list.Add(data);
}
return list;
}
public List<MesResType> GetMesType(int Num)
{
List<MesResType> mesResTypes = new List<MesResType>();
for (int i = 0; i < Num; i++)
{
mesResTypes.Add(MesResType.UnKnow);
}
return mesResTypes;
}
/// <summary>
/// PLC内批量写\0
/// </summary>
/// <param name="Num"></param>
/// <returns></returns>
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<string> 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<string> NGcodelist = new List<string>();
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;
}
//下料不良代码 外观检
public (List<string>, List<string>) NGWGJcode(int[,] lstResult, int index)
{
List<string> NGcodelist = new List<string>();
List<string> NGmessagelist = new List<string>();
for (int i = 0; i < 16; i++)
{
if (lstResult[index, i] != 0)
{
var strCode = lstResult[index, i].ToString().PadLeft(3, '0');
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);
}
#endregion
#region NG下料不良代码
public List<string> NGCarcode(int a, int b, int c)
{
//芯包重量、测厚位移、极性
List<string> NGcodelist = new List<string>();
if (a == 2) NGcodelist.Add("ETPP120");
if (b == 2) NGcodelist.Add("ETPP120");
if (c == 2) NGcodelist.Add("ETPP105");
return NGcodelist;
}
#endregion
}
}