From 2edc3c54ba7a42d5e9bb9120b9881d418e6bd408 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期五, 13 八月 2021 09:38:29 +0800 Subject: [PATCH] 1. GTS回原点修改,避免来回 2. 添加单键测量结果补偿 3. 部分条件限制,日志修改 4. 来料检debug,添加退出条件判断 --- src/Bro.Device.GTSCard/GTSCardDriver.cs | 20 +++++++--- src/Bro.M071.Process/M071Process.cs | 43 ++++++++++++++++++--- src/Bro.M071.Process/M071Process_MES.cs | 1 src/Bro.M071.Process/M071Models.cs | 25 ++++++++++++ 4 files changed, 76 insertions(+), 13 deletions(-) diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs index a1c7aa6..14b4c25 100644 --- a/src/Bro.Device.GTSCard/GTSCardDriver.cs +++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs @@ -998,18 +998,26 @@ capture = 0; //姝i檺浣� - if ((axisStatus.AxisStatus & 0x20) != 0 && !goHomePara.IsCaptureDirPositive) + if ((axisStatus.AxisStatus & 0x20) != 0) { - isRightLimitReached = true; + homeDirection = false; + + if (!goHomePara.IsCaptureDirPositive) + { + isRightLimitReached = true; + } } //璐熼檺浣� - if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive) + if ((axisStatus.AxisStatus & 0x40) != 0) { - isRightLimitReached = true; - } + homeDirection = true; - homeDirection = !homeDirection; + if (goHomePara.IsCaptureDirPositive) + { + isRightLimitReached = true; + } + } LogAsync(DateTime.Now, $"杞磠movingOption.AxisIndex}鏋侀檺浣嶇疆鎹㈠悜", ""); } diff --git a/src/Bro.M071.Process/M071Models.cs b/src/Bro.M071.Process/M071Models.cs index 790745a..6459031 100644 --- a/src/Bro.M071.Process/M071Models.cs +++ b/src/Bro.M071.Process/M071Models.cs @@ -213,6 +213,13 @@ public string KeyResultId { get; set; } #endregion + [Category("琛ュ伩閰嶇疆")] + [DisplayName("鍗曢敭琛ュ伩")] + [Description("鍗曢敭琛ュ伩")] + [TypeConverter(typeof(CollectionCountConvert))] + [Editor(typeof(ComplexCollectionEditor<KeyCompensation>), typeof(UITypeEditor))] + public List<KeyCompensation> KeyCompensationCollection { get; set; } = new List<KeyCompensation>(); + #region 妫�娴嬬浉鍏冲瓧娈� public Dictionary<string, double> KeyValues = null; //public SnapshotPoint SnapshotPoint = null; @@ -260,6 +267,24 @@ } } + public class KeyCompensation : IComplexDisplay + { + [Category("鍗曢敭琛ュ伩")] + [DisplayName("鍗曢敭缁撴灉")] + [Description("閽堝鍗曢敭鐨勬煇涓�椤圭粨鏋滃仛琛ュ伩锛屼竴鑸负Z1,Z2,Z3,Z4,B1,B2")] + public string KeyResult { get; set; } + + [Category("鍗曢敭琛ュ伩")] + [DisplayName("琛ュ伩鍊�")] + [Description("鍗曢敭缁撴灉琛ュ伩鍊�")] + public float Compensation { get; set; } + + public string GetDisplayText() + { + return $"{KeyResult} {Compensation}"; + } + } + public class ProductionMeasurement : INotifyPropertyChanged, IDisposable { public string Barcode; diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 84bb887..91791c8 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -624,7 +624,6 @@ } else { - _halconToolDict[toolKey].InputTupleDic["INPUT_Params"] = new HTuple(array); if (!_halconToolDict[toolKey].RunProcedure(out string error)) { @@ -637,14 +636,22 @@ double actualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString(_precision)); m.Spec.ActualValue = actualValue; - //M071瑕佹眰瓒呴檺鏁版嵁鍦ㄥ厑璁歌寖鍥村唴鍘嬬缉鍒板悎鏍艰寖鍥村唴 - if (_allowedShift > 0 && m.Spec.MeasureResult != null && m.Spec.MeasureResult.Value == false) + if (m.MeasureType.ToLower() == "alignment" || m.MeasureType.ToLower() == "slant") { - m.Spec.ActualValue = m.Spec.StandardValue + (actualValue - m.Spec.StandardValue) * (m.Spec.Tolrenance_Positive - m.Spec.StandardValue) / (m.Spec.Tolrenance_Positive - m.Spec.StandardValue + _allowedShift); + //M071瑕佹眰瓒呴檺鏁版嵁鍦ㄥ厑璁歌寖鍥村唴鍘嬬缉鍒板悎鏍艰寖鍥村唴 + if (_allowedShift > 0 && m.Spec.MeasureResult != null && m.Spec.MeasureResult.Value == false) + { + m.Spec.ActualValue = m.Spec.StandardValue + (actualValue - m.Spec.StandardValue) * (m.Spec.Tolrenance_Positive - m.Spec.StandardValue) / (m.Spec.Tolrenance_Positive - m.Spec.StandardValue + _allowedShift); + } } } } } + } + + if (m.Spec?.ActualValue != null) + { + LogAsync(DateTime.Now, $"{m.Name}妫�娴嬬粨鏋渰m.Spec.ActualValue.Value.ToString(_precision)}", ""); } KeyIndicator indicator = new KeyIndicator(m.Id, m.DisplayLocation); @@ -1467,20 +1474,42 @@ else { var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").DArr.ToList(); - if (results.Count == 0 || results.Any(u => u < 0)) + if (results.Count == 0 || results.Any(u => u < 0) || results.Count != k.KeyResultList.Count) { - LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁寮傚父", ""); + LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁{string.Join(",", results)}寮傚父", ""); } else { //LogAsync(DateTime.Now, $"{k.AliasName}鍘熷鏁版嵁", $"{string.Join(" ", results)}"); results = results.Select(u => u - Config.PlanCompensation).ToList(); + + string resultStr = ""; resultDict = k.KeyResultList.ToDictionary(u => u, u => { int index = k.KeyResultList.IndexOf(u); - return results[index]; + + if (index < results.Count && index >= 0) + { + double origin = results[index]; + + var compensation = k.KeyCompensationCollection.FirstOrDefault(c => c.KeyResult == u); + if (compensation != null) + { + origin = origin + compensation.Compensation; + } + + resultStr += $"{u} {origin};"; + + return origin; + } + else + { + return -999.0; + } }); + + LogAsync(DateTime.Now, $"{k.AliasName}缁撴灉锛歿resultStr}", ""); } } } diff --git a/src/Bro.M071.Process/M071Process_MES.cs b/src/Bro.M071.Process/M071Process_MES.cs index 6c09537..3f61ec4 100644 --- a/src/Bro.M071.Process/M071Process_MES.cs +++ b/src/Bro.M071.Process/M071Process_MES.cs @@ -162,6 +162,7 @@ try { result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString(); + repeatTime = -1; } catch (Exception ex) { -- Gitblit v1.8.0