Files
1440WGJ/JY.Inspection/Frm/FormMesGradingSet.cs
2026-07-14 13:55:17 +08:00

403 lines
21 KiB
C#

using JY.Utility;
using JYControl;
using PLCCommunication;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace JY.Inspection.Frm
{
public partial class FormMesGradingSet : MetroFramework.Forms.MetroForm
{
private FrmOmronPLCCom MelsecPLCCom;
public short[] MESGradingSet = new short[] { (short)1, (short)1, (short)1, (short)1 };
public FormMesGradingSet(FrmOmronPLCCom plcccom)
{
InitializeComponent();
MelsecPLCCom = plcccom;
}
private void FormMesGradingSet_Load(object sender, EventArgs e)
{
if (Global.systemConfig.isUpMes)
{
chkCkGrading.Visible = true;
}
else
{
chkCkGrading.Visible = false;
}
BangDingcmb();
BangDingcmbCCD();
txtgrading1.Text = IniFileHelper.ReadIniData("MES配置", "Grading1");
txtgrading2.Text = IniFileHelper.ReadIniData("MES配置", "Grading2");
txtgrading3.Text = IniFileHelper.ReadIniData("MES配置", "Grading3");
txtgrading4.Text = IniFileHelper.ReadIniData("MES配置", "Grading4");
cmbTensionStrap1.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrap1"));
cmbTensionStrap2.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrap2"));
cmbTensionStrap3.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrap3"));
cmbTensionStrapCCD1.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrapCCDReslut1"));
cmbTensionStrapCCD2.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrapCCDReslut2"));
cmbTensionStrapCCD3.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrapCCDReslut3"));
cmbTensionStrapCCD4.SelectedIndex = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "TensionStrapCCDReslut4"));
//不分类
chkStartNGFL.Checked = IniFileHelper.ReadIniData("MES配置", "StartNGFL") == "1" ? true : false;
//是否启用分档
chkCkGrading.Checked = IniFileHelper.ReadIniData("MES配置", "Grading") == "1" ? true : false;
}
public void BangDingcmb()
{
string[] bound = IniFileHelper.ReadIniData("MES配置", "NGMessage").Split(',');
List<cmb> cmbls = new List<cmb>();
List<cmb> cmbls2 = new List<cmb>();
List<cmb> cmbls3 = new List<cmb>();
for (int i = 0; i < bound.Length; i++)
{
cmb _cmb = new cmb();
_cmb.Key = i.ToString();
_cmb.Value = bound[i];
cmbls.Add(_cmb);
cmbls2.Add(_cmb);
cmbls3.Add(_cmb);
}
cmbTensionStrap1.DataSource = cmbls;
cmbTensionStrap1.DisplayMember = "Value";
cmbTensionStrap2.DataSource = cmbls2;
cmbTensionStrap2.DisplayMember = "Value";
cmbTensionStrap3.DataSource = cmbls3;
cmbTensionStrap3.DisplayMember = "Value";
}
public void BangDingcmbCCD()
{
string[] bound = IniFileHelper.ReadIniData("MES配置", "CCDResultMessage").Split(',');
List<cmb> cmbls = new List<cmb>();
List<cmb> cmbls2 = new List<cmb>();
List<cmb> cmbls3 = new List<cmb>();
List<cmb> cmbls4 = new List<cmb>();
for (int i = 0; i < bound.Length; i++)
{
cmb _cmb = new cmb();
_cmb.Key = i.ToString();
_cmb.Value = bound[i];
cmbls.Add(_cmb);
cmbls2.Add(_cmb);
cmbls3.Add(_cmb);
cmbls4.Add(_cmb);
}
cmbTensionStrapCCD1.DataSource = cmbls;
cmbTensionStrapCCD1.DisplayMember = "Value";
cmbTensionStrapCCD2.DataSource = cmbls2;
cmbTensionStrapCCD2.DisplayMember = "Value";
cmbTensionStrapCCD3.DataSource = cmbls3;
cmbTensionStrapCCD3.DisplayMember = "Value";
cmbTensionStrapCCD4.DataSource = cmbls4;
cmbTensionStrapCCD4.DisplayMember = "Value";
}
public class cmb
{
public string Key { get; set; }
public string Value { get; set; }
}
/// <summary>
/// 保存MES配置文件信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, EventArgs e)
{
if (txtgrading1.Text.Trim().Equals(""))
{
MessageBox.Show("MES参数保存失败,一档(OK拉带1)对应档位不可为空!", "系统提示");
return;
}
if (txtgrading2.Text.Trim().Equals(""))
{
MessageBox.Show("MES参数保存失败,一档(OK拉带2)对应档位不可为空!", "系统提示");
return;
}
if (txtgrading3.Text.Trim().Equals(""))
{
MessageBox.Show("MES参数保存失败,一档(OK拉带3)对应档位不可为空!", "系统提示");
return;
}
if (txtgrading4.Text.Trim().Equals(""))
{
MessageBox.Show("MES参数保存失败,一档(OK拉带4)对应档位不可为空!", "系统提示");
return;
}
if (chkStartNGFL.Checked && cmbTensionStrap1.SelectedIndex != 0 && cmbTensionStrap2.SelectedIndex != 0 && cmbTensionStrap3.SelectedIndex != 0)
{
MessageBox.Show("MES参数保存失败,NG电池不分类排出时NG拉带1和NG拉带2以及NG拉带3必须为不分类", "系统提示");
return;
}
if (!chkStartNGFL.Checked && (cmbTensionStrap1.SelectedIndex == 0 || cmbTensionStrap2.SelectedIndex == 0 || cmbTensionStrap3.SelectedIndex == 0))
{
MessageBox.Show("MES参数保存失败,NG电池分类排出时NG拉带1和NG拉带2以及NG拉带3,不能选择不分类", "系统提示");
return;
}
if (txtgrading1.Text.Trim().Equals(txtgrading2.Text.Trim()))
{
if (cmbTensionStrapCCD1.SelectedIndex == 0 || cmbTensionStrapCCD2.SelectedIndex == 0)
{
if (cmbTensionStrapCCD1.SelectedIndex == 1 || cmbTensionStrapCCD2.SelectedIndex == 1 || cmbTensionStrapCCD1.SelectedIndex == 2 || cmbTensionStrapCCD2.SelectedIndex == 2)
{
MessageBox.Show("同一档位(一档、二档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
if (txtgrading1.Text.Trim().Equals(txtgrading3.Text.Trim()))
{
if (cmbTensionStrapCCD1.SelectedIndex == 0 || cmbTensionStrapCCD3.SelectedIndex == 0)
{
if (cmbTensionStrapCCD1.SelectedIndex == 1 || cmbTensionStrapCCD3.SelectedIndex == 1 || cmbTensionStrapCCD1.SelectedIndex == 2 || cmbTensionStrapCCD3.SelectedIndex == 2)
{
MessageBox.Show("同一档位(一档、三档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
if (txtgrading1.Text.Trim().Equals(txtgrading4.Text.Trim()))
{
if (cmbTensionStrapCCD1.SelectedIndex == 0 || cmbTensionStrapCCD4.SelectedIndex == 0)
{
if (cmbTensionStrapCCD1.SelectedIndex == 1 || cmbTensionStrapCCD4.SelectedIndex == 1 || cmbTensionStrapCCD1.SelectedIndex == 2 || cmbTensionStrapCCD4.SelectedIndex == 2)
{
MessageBox.Show("同一档位(一档、四档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
if (txtgrading2.Text.Trim().Equals(txtgrading3.Text.Trim()))
{
if (cmbTensionStrapCCD2.SelectedIndex == 0 || cmbTensionStrapCCD3.SelectedIndex == 0)
{
if (cmbTensionStrapCCD2.SelectedIndex == 1 || cmbTensionStrapCCD3.SelectedIndex == 1 || cmbTensionStrapCCD2.SelectedIndex == 2 || cmbTensionStrapCCD3.SelectedIndex == 2)
{
MessageBox.Show("同一档位(二档、三档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
if (txtgrading2.Text.Trim().Equals(txtgrading4.Text.Trim()))
{
if (cmbTensionStrapCCD2.SelectedIndex == 0 || cmbTensionStrapCCD4.SelectedIndex == 0)
{
if (cmbTensionStrapCCD2.SelectedIndex == 1 || cmbTensionStrapCCD4.SelectedIndex == 1 || cmbTensionStrapCCD2.SelectedIndex == 2 || cmbTensionStrapCCD4.SelectedIndex == 2)
{
MessageBox.Show("同一档位(二档、四档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
if (txtgrading3.Text.Trim().Equals(txtgrading4.Text.Trim()))
{
if (cmbTensionStrapCCD3.SelectedIndex == 0 || cmbTensionStrapCCD4.SelectedIndex == 0)
{
if (cmbTensionStrapCCD3.SelectedIndex == 1 || cmbTensionStrapCCD4.SelectedIndex == 1 || cmbTensionStrapCCD3.SelectedIndex == 2 || cmbTensionStrapCCD4.SelectedIndex == 2)
{
MessageBox.Show("同一档位(三档、四档)不允许同时选择“不分类”与“OK/NG”", "系统提示");
return;
}
}
}
#region plc中ccd屏蔽
//开启了ccd屏蔽的,只能使用 ccd结果 不分类
//关闭了ccd屏蔽的,只能使用 ccd结果 ng ok
//同ok档位 必须有一个选择ccd ok 或者不分类
var listGradingCCD = new List<string>();
listGradingCCD.Add(txtgrading1.Text.Trim() + "-" + cmbTensionStrapCCD1.Text);
listGradingCCD.Add(txtgrading2.Text.Trim() + "-" + cmbTensionStrapCCD2.Text);
listGradingCCD.Add(txtgrading3.Text.Trim() + "-" + cmbTensionStrapCCD3.Text);
listGradingCCD.Add(txtgrading4.Text.Trim() + "-" + cmbTensionStrapCCD4.Text);
//读取plc地址W260。9 是开启屏蔽。1 是默认不开启。 反馈地址w261。 1 是正常不报警。 2 是报警。
var int_IsMaskCCD = MelsecPLCCom.lstMcUI[0].ReadshortDReg("W260");
if (int_IsMaskCCD == 9)
{
var gradingCCD_NoClassCount = listGradingCCD.Count(x => x.Contains("不分类"));
if(gradingCCD_NoClassCount <=0)
{
MessageBox.Show($"已开启CCD结果屏蔽,全部档位设置CCD结果不分类", "系统提示");
return;
}
}
else
{
//必须有一个OK ccd结果拉带
var gradingCCD_OKCount = listGradingCCD.Count(x => x.Contains("OK"));
if(gradingCCD_OKCount <= 0)
{
MessageBox.Show($"已关闭CCD结果屏蔽,档位设置至少有一个CCD结果OK选择值", "系统提示");
return;
}
var lstGradingCCD_NG = listGradingCCD.Where(x => x.Contains("NG")).Distinct().ToList();
foreach (var item_NG in lstGradingCCD_NG)
{
var grading_array = item_NG.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
var indexGrading = listGradingCCD.IndexOf(grading_array[0] + "-" + "OK");
if (indexGrading < 0)
{
MessageBox.Show($"已关闭CCD结果屏蔽,OK拉带档位{item_NG},必须选一个{grading_array[0]}档位对应的CCD结果OK值", "系统提示");
return;
}
}
}
#endregion
IniFileHelper.WriteIniData("MES配置", "Grading1", txtgrading1.Text.Trim());
IniFileHelper.WriteIniData("MES配置", "Grading2", txtgrading2.Text.Trim());
IniFileHelper.WriteIniData("MES配置", "Grading3", txtgrading3.Text.Trim());
IniFileHelper.WriteIniData("MES配置", "Grading4", txtgrading4.Text.Trim());
IniFileHelper.WriteIniData("MES配置", "TensionStrapCCDReslut1", cmbTensionStrapCCD1.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrapCCDReslut2", cmbTensionStrapCCD2.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrapCCDReslut3", cmbTensionStrapCCD3.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrapCCDReslut4", cmbTensionStrapCCD4.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrap1", cmbTensionStrap1.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrap2", cmbTensionStrap2.SelectedIndex.ToString());
IniFileHelper.WriteIniData("MES配置", "TensionStrap3", cmbTensionStrap3.SelectedIndex.ToString());
//不分类
IniFileHelper.WriteIniData("MES配置", "StartNGFL", chkStartNGFL.Checked ? "1" : "0");
//是否启用分档
IniFileHelper.WriteIniData("MES配置", "Grading", chkCkGrading.Checked ? "1" : "2");
MESGradingSet[0] = (short)1;
if ((txtgrading2.Text.Trim()+ cmbTensionStrapCCD2.Text).Equals(txtgrading1.Text.Trim()+ cmbTensionStrapCCD1.Text))
MESGradingSet[1] = MESGradingSet[0];
else
MESGradingSet[1] = (short)(MESGradingSet[0] + 1);
if ((txtgrading3.Text.Trim() + cmbTensionStrapCCD3.Text).Equals(txtgrading1.Text.Trim()+ cmbTensionStrapCCD1.Text))
MESGradingSet[2] = MESGradingSet[0];
else
{
if ((txtgrading3.Text.Trim() + cmbTensionStrapCCD3.Text).Equals(txtgrading2.Text.Trim() + cmbTensionStrapCCD2.Text))
MESGradingSet[2] = MESGradingSet[1];
else
MESGradingSet[2] = (short)(MESGradingSet[1] + 1);
}
if ((txtgrading4.Text.Trim() + cmbTensionStrapCCD4.Text).Equals(txtgrading1.Text.Trim() + cmbTensionStrapCCD1.Text))
MESGradingSet[3] = MESGradingSet[0];
else
{
if ((txtgrading4.Text.Trim() + cmbTensionStrapCCD4.Text).Equals(txtgrading2.Text.Trim() + cmbTensionStrapCCD2.Text))
MESGradingSet[3] = MESGradingSet[1];
else
{
if ((txtgrading4.Text.Trim() + cmbTensionStrapCCD4.Text).Equals(txtgrading3.Text.Trim() + cmbTensionStrapCCD3.Text))
MESGradingSet[3] = MESGradingSet[2];
else
MESGradingSet[3] = (short)(MESGradingSet[2] + 1);
}
}
int Grading = Convert.ToInt32(IniFileHelper.ReadIniData("MES配置", "Grading"));
//告诉PLC当前OK与NG拉带设置挡位
//
if(cmbTensionStrapCCD1.Text.ToUpper() =="NG")
{
MESGradingSet[0] = (short)(30 + MESGradingSet[0]);
}
if (cmbTensionStrapCCD2.Text.ToUpper() == "NG")
{
MESGradingSet[1] = (short)(30 + MESGradingSet[1]);
}
if (cmbTensionStrapCCD3.Text.ToUpper() == "NG")
{
MESGradingSet[2] = (short)(30 + MESGradingSet[2]);
}
if (cmbTensionStrapCCD4.Text.ToUpper() == "NG")
{
MESGradingSet[3] = (short)(30 + MESGradingSet[3]);
}
MelsecPLCCom.lstMcUI[0].WriteDReg("W241", MESGradingSet[0]);
MelsecPLCCom.lstMcUI[0].WriteDReg("W242", MESGradingSet[1]);
MelsecPLCCom.lstMcUI[0].WriteDReg("W243", MESGradingSet[2]);
MelsecPLCCom.lstMcUI[0].WriteDReg("W244", MESGradingSet[3]);
//+10
//MelsecPLCCom.lstMcUI[0].WriteDReg("W245", (short)cmbTensionStrap1.SelectedIndex);
//MelsecPLCCom.lstMcUI[0].WriteDReg("W246", (short)cmbTensionStrap2.SelectedIndex);
//MelsecPLCCom.lstMcUI[0].WriteDReg("W247", (short)cmbTensionStrap3.SelectedIndex);
MelsecPLCCom.lstMcUI[0].WriteDReg("W245", (short)(cmbTensionStrap1.SelectedIndex ==0 ? 99 : cmbTensionStrap1.SelectedIndex + 10));
MelsecPLCCom.lstMcUI[0].WriteDReg("W246", (short)(cmbTensionStrap2.SelectedIndex == 0 ? 99 : cmbTensionStrap2.SelectedIndex + 10));
MelsecPLCCom.lstMcUI[0].WriteDReg("W247", (short)(cmbTensionStrap3.SelectedIndex == 0 ? 99 : cmbTensionStrap3.SelectedIndex + 10));
MelsecPLCCom.lstMcUI[0].WriteDReg("W248", (short)Grading);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置一档,W241[值:{MESGradingSet[0]}-档位:{txtgrading1.Text.Trim()}{cmbTensionStrapCCD1.Text}]", LogAddtype.local, Logtype.Message);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置二档,W242[值:{MESGradingSet[1]}-档位:{txtgrading2.Text.Trim()}{cmbTensionStrapCCD2.Text}]", LogAddtype.local, Logtype.Message);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置三档,W243[值:{MESGradingSet[2]}-档位:{txtgrading3.Text.Trim()}{cmbTensionStrapCCD3.Text}]", LogAddtype.local, Logtype.Message);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置四档,W244[值:{MESGradingSet[3]}-档位:{txtgrading4.Text.Trim()}{cmbTensionStrapCCD4.Text}]", LogAddtype.local, Logtype.Message);
var ng1 = (short)(cmbTensionStrap1.SelectedIndex == 0 ? 99 : cmbTensionStrap1.SelectedIndex + 10);
var ng2 = (short)(cmbTensionStrap2.SelectedIndex == 0 ? 99 : cmbTensionStrap2.SelectedIndex + 10);
var ng3 = (short)(cmbTensionStrap3.SelectedIndex == 0 ? 99 : cmbTensionStrap3.SelectedIndex + 10);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置NG拉带1,W245[值:{ng1}-档位:{cmbTensionStrap1.Text.Trim()}]", LogAddtype.local, Logtype.Message);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置NG拉带2,W246[值:{ng2}-档位:{cmbTensionStrap2.Text.Trim()}]", LogAddtype.local, Logtype.Message);
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}]设置NG拉带3,W247[值:{ng3}-档位:{cmbTensionStrap3.Text.Trim()}]", LogAddtype.local, Logtype.Message);
if ((short)Grading == 1)
{
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}],设置W248[值:{(short)Grading}-启用分档模式]", LogAddtype.local, Logtype.Message);
}
else
{
LogManagerControl.AddLog($"用户[{Global.systemConfig.userName}],设置W248[值:{(short)Grading}-关闭分档模式]", LogAddtype.local, Logtype.Message);
}
MessageBox.Show("MES参数保存成功!", "系统提示");
this.DialogResult = DialogResult.OK;
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void cmbTensionStrap1_DropDownClosed(object sender, EventArgs e)
{
if (cmbTensionStrap1.SelectedIndex != cmbTensionStrap1.Items.Count - 1)
cmbTensionStrap2.SelectedIndex = cmbTensionStrap2.Items.Count - 1;
}
private void cmbTensionStrap2_DropDownClosed(object sender, EventArgs e)
{
if (cmbTensionStrap2.SelectedIndex != cmbTensionStrap2.Items.Count - 1)
cmbTensionStrap3.SelectedIndex = cmbTensionStrap3.Items.Count - 1;
}
private void cmbTensionStrap3_DropDownClosed(object sender, EventArgs e)
{
if (cmbTensionStrap3.SelectedIndex != cmbTensionStrap3.Items.Count - 1)
cmbTensionStrap1.SelectedIndex = cmbTensionStrap1.Items.Count - 1;
}
private void chkStartNGFL_Click(object sender, EventArgs e)
{
if (chkStartNGFL.Checked)
{
cmbTensionStrap1.SelectedIndex = 0;
cmbTensionStrap2.SelectedIndex = 0;
cmbTensionStrap3.SelectedIndex = 0;
}
}
}
}