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 cmbls = new List(); List cmbls2 = new List(); List cmbls3 = new List(); 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 cmbls = new List(); List cmbls2 = new List(); List cmbls3 = new List(); List cmbls4 = new List(); 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; } } /// /// 保存MES配置文件信息 /// /// /// 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(); 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; } } } }