patrick.xu
2021-06-01 aefe9f2572eac7c61f6d2952593ec18a700dfcf0
MainForm.cs
@@ -208,6 +208,10 @@
            opc.Write(OPCOutputTag.DetectResult_NG, false);
            CommonUtil.WriteLog(LogType.Inf, "初始化下料NA");
            //250表示启动时需要大复位报警
            opc.Write(OPCOutputTag.Alarm, 250);
            CommonUtil.WriteLog(LogType.Inf, "软件启动大复位");
            string continuousNGStr = ConfigurationManager.AppSettings["ContinuousNGThreshold"];
            if (int.TryParse(continuousNGStr, out int temp))
            {
@@ -666,7 +670,7 @@
                                opc.Write(OPCOutputTag.DetectResult_OK, true);
                                opc.Write(OPCOutputTag.DetectResult_NG, false);
                                CommonUtil.WriteLog(LogType.Inf, $"{x.DetectID}|{x.ProductNo}产品应放入OK Tray");
                                CommonUtil.WriteLog(LogType.Inf, $"{x?.DetectID}|{x?.ProductNo}产品应放入OK Tray");
                                _continuousNG = 0;
                                break;
@@ -674,7 +678,7 @@
                                opc.Write(OPCOutputTag.DetectResult_OK, false);
                                opc.Write(OPCOutputTag.DetectResult_NG, true);
                                CommonUtil.WriteLog(LogType.Inf, $"{x.DetectID}|{x.ProductNo}产品应放入NG Tray");
                                CommonUtil.WriteLog(LogType.Inf, $"{x?.DetectID}|{x?.ProductNo}产品应放入NG Tray");
                                CommonUtil.StepControl.RemoveById(detectID);
                                _continuousNG++;
@@ -683,7 +687,7 @@
                                opc.Write(OPCOutputTag.DetectResult_OK, false);
                                opc.Write(OPCOutputTag.DetectResult_NG, false);
                                CommonUtil.WriteLog(LogType.Inf, $"{x.DetectID}|{x.ProductNo}产品应放入NA Tray");
                                CommonUtil.WriteLog(LogType.Inf, $"{x?.DetectID}|{x?.ProductNo}产品应放入NA Tray");
                                CommonUtil.StepControl.RemoveById(detectID);
                                _continuousNG = 0;
@@ -714,7 +718,7 @@
                        if (_continuousNG >= _continuousNGThreshold)
                        {
                            //脚本中设置报警码2000表示连续NG次数到达设定报警上限
                            opc.Write(OPCInputTag.Alarm, 2000);
                            opc.Write(OPCOutputTag.Alarm, 2000);
                            CommonUtil.WriteLog(LogType.Inf, $"产品连续NG{_continuousNG}次,报警提示");
                            _continuousNG = 0;
@@ -1071,18 +1075,34 @@
        #region 事件
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Stop();
            SaveMeasureTTL();
            Task.Factory.StartNew(() =>
            try
            {
                Stop();
                SaveMeasureTTL();
                //Task.Factory.StartNew(() =>
                //{
                SpotCheckData data = new SpotCheckData();
                data.UpdateLastBreakProductQty(measureResultTTL.ProductQuntity);
                DownTimeData downTimeData = new DownTimeData();
                DownTime downTime = new DownTime() { BeginTime = DateTime.Now, Type = DownTimeType.Closed };
                downTimeData.SaveDownTime(downTime);
            });
                //});
            MessageHandler.MessageHandlerInstance.Close();
                MessageHandler.MessageHandlerInstance.Close();
            }
            catch (Exception ex)
            {
                Trace.TraceError($"界面关闭异常:{ex.Message}");
            }
            finally
            {
                lock (CommonUtil.UploadDataLock)
                {
                    //CommonUtil.UploadDoneHandle.WaitOne();
                    CommonUtil.UploadDataEnable = false;
                    System.Environment.Exit(0);
                }
            }
        }
        private void btnConfig_Click(object sender, EventArgs e)
@@ -1643,8 +1663,11 @@
        private void btnPlcOperation_Click(object sender, EventArgs e)
        {
            FormPlcOperation frm = new FormPlcOperation(opc);
            frm.ShowDialog();
            //if (new ConfigPassword("").ShowDialog() == DialogResult.OK)
            {
                FormPlcOperation frm = new FormPlcOperation(opc);
                frm.ShowDialog();
            }
        }
        private void btnCheck_Click(object sender, EventArgs e)