From e54c5a471c372e314f89c340644ddda98ab063bb Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期三, 19 八月 2020 11:04:22 +0800
Subject: [PATCH] 1. 优化gts板卡回原点操作 2. 添加数据精度配置 3. 添加HalconTool异常捕捉分类和部分非空判断
---
src/Bro.Device.GTSCard/GTSCardDriver.cs | 17 +++++---
src/Bro.M071.Process/M071Process.cs | 38 ++++++++++++++----
src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs | 8 +++
src/Bro.M071.Process/M071Config.cs | 5 ++
4 files changed, 51 insertions(+), 17 deletions(-)
diff --git a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
index f1f385d..ceb3068 100644
--- a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
+++ b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
@@ -136,9 +136,15 @@
catch (HDevEngineException ex)
{
IsSuccessful = false;
+ errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}";
+ return false;
+ }
+ catch (Exception ex)
+ {
+ IsSuccessful = false;
//Trace.TraceInformation("HDevProgram {0} Run fail , Line number: {1}, Halcon error number : {2},ex:{3}", ex.ProcedureName, ex.LineNumber, ex.HalconError, ex.Message);
//return;
- errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}";
+ errorMsg = $"{ex.Message}";
return false;
}
}
diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index 573f480..c430886 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -894,11 +894,9 @@
short capture = 0;
GTSCardAPI.TTrapPrm trapPrm;
- //鎼滅储璺濈 闃舵1
- // 鍚姩Home鎹曡幏
- short sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
+
// 鍒囨崲鍒扮偣浣嶈繍鍔ㄦā寮�
- sRtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex);
+ short sRtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex);
// 璇诲彇鐐逛綅妯″紡杩愬姩鍙傛暟
sRtn = GTSCardAPI.GT_GetTrapPrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, out trapPrm);
trapPrm.acc = movingOption.VelocityPara.Acc;
@@ -912,6 +910,10 @@
{
PositionReset(movingOption.AxisIndex, 1);
ClearStatus(movingOption.AxisIndex, 1);
+
+ //鎼滅储璺濈 闃舵1
+ // 鍚姩Home鎹曡幏
+ sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
// 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈
sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, homeDirection ? 99999999 : -99999999);
@@ -942,8 +944,6 @@
if (isStop && capture != 1)
{
- ClearStatus((short)movingOption.AxisIndex, 1);
-
if (((axisStatus.AxisStatus & 0x20) != 0) || ((axisStatus.AxisStatus & 0x40) != 0))
{
//movingOption.GoHomePara.HomeDir = (short)(movingOption.GoHomePara.HomeDir == 1 ? -1 : 1);
@@ -954,7 +954,6 @@
isRightLimitReached = true;
}
-
//璐熼檺浣�
if ((axisStatus.AxisStatus & 0x40) != 0 && goHomePara.IsCaptureDirPositive)
{
@@ -963,6 +962,8 @@
homeDirection = !homeDirection;
}
+
+ ClearStatus(movingOption.AxisIndex, 1);
}
if (capture == 1)
@@ -970,6 +971,7 @@
if (!isRightLimitReached)
{
capture = 0;
+ ClearStatus(movingOption.AxisIndex, 1);
//GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME);
continue;
}
@@ -977,6 +979,7 @@
//鍏坰top
MoveStop((short)movingOption.AxisIndex, 0);
ClearStatus((short)movingOption.AxisIndex, 1);
+
//宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2
// 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�"
sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + goHomePara.HomeOffset);
diff --git a/src/Bro.M071.Process/M071Config.cs b/src/Bro.M071.Process/M071Config.cs
index c1e726f..08a33a7 100644
--- a/src/Bro.M071.Process/M071Config.cs
+++ b/src/Bro.M071.Process/M071Config.cs
@@ -80,6 +80,11 @@
[DisplayName("4.骞抽潰琛ュ伩鍊�")]
public double PlanCompensation { get; set; }
+ [Category("妫�娴嬭缃�")]
+ [Description("鏁版嵁绮惧害璁剧疆")]
+ [DisplayName("5.鏁版嵁绮惧害浣嶆暟")]
+ public int Precision { get; set; } = 3;
+
//[Category("妫�娴嬭缃�")]
//[DisplayName("缁撴灉鏁版嵁淇濆瓨璺緞")]
//[Description("妫�娴嬬粨鏋滄暟鎹繚瀛樿矾寰�")]
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 7847649..a3a23dc 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -48,6 +48,9 @@
public event Action OnFullResetDone;
#endregion
+ string _precision = "f3";
+
+
public override void Open()
{
InitialSetting();
@@ -63,6 +66,11 @@
Reset(null, null, null);
FullReset(null);
+
+ if (Config.Precision > 0)
+ {
+ _precision = "f" + Config.Precision;
+ }
}
private void InitialMotionCardBaseAxisAlarm()
@@ -367,17 +375,28 @@
}
else
{
- var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.ToList().ConvertAll(v => v ?? -999)).ToArray();
- _halconToolDict[toolKey].InputTupleDic["INPUT_Params"] = new HTuple(array);
- if (!_halconToolDict[toolKey].RunProcedure(out string error))
+ //var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.ToList().ConvertAll(v => v ?? -999)).ToArray();
+ var array = m.KeyUnitCollection.SelectMany(u => u.MeasureValueDict.Values.Select(v => v ?? -999)).ToArray();
+
+ if (array == null || array.Length == 0)
{
- LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}绠楁硶寮傚父,{error}", "");
+ LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}鏈兘鑾峰彇瀵瑰簲妫�娴嬪��", "");
m.Spec.ActualValue = -999;
}
else
{
- m.Spec.ActualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString("f2"));
- //LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", "");
+
+ _halconToolDict[toolKey].InputTupleDic["INPUT_Params"] = new HTuple(array);
+ if (!_halconToolDict[toolKey].RunProcedure(out string error))
+ {
+ LogAsync(DateTime.Now, $"{m.GetDisplayText()}{m.Spec.Code}绠楁硶寮傚父,{error}", "");
+ m.Spec.ActualValue = -999;
+ }
+ else
+ {
+ m.Spec.ActualValue = double.Parse(_halconToolDict[toolKey].GetResultTuple("OUTPUT_Result").D.ToString(_precision));
+ //LogAsync(DateTime.Now, $"{m.GetDisplayText()}鏁版嵁{m.Spec.ActualValue}锛岀粨鏋渰(m.Spec.MeasureResult == null ? "TBD" : (m.Spec.MeasureResult == true ? "OK" : "NG"))}", "");
+ }
}
}
}
@@ -385,7 +404,7 @@
//LogAsync(DateTime.Now, $"{m.GetDisplayText()}妫�娴嬬粨鏋�", $"{((m.Spec.MeasureResult ?? false) ? "OK" : "NG")}");
KeyIndicator indicator = new KeyIndicator(m.Id, m.DisplayLocation);
- indicator.Text = (m.Spec.ActualValue == null || m.Spec.ActualValue == -999) ? "NA" : m.Spec.ActualValue.Value.ToString("f2");
+ indicator.Text = (m.Spec.ActualValue == null || m.Spec.ActualValue == -999) ? "NA" : m.Spec.ActualValue.Value.ToString(_precision);
indicator.ResultState = m.Spec.MeasureResult;
pMeasure.ElementList.Add(indicator);
//杈撳嚭鍥惧舰鍩哄厓鍒扮晫闈�
@@ -517,7 +536,7 @@
measurementUnitResult.Keys = measurementUnit.KeyUnitCollection[0].KeyResultId + "~" + measurementUnit.KeyUnitCollection[measurementUnit.KeyUnitCollection.Count() - 1].KeyResultId;
}
measurementUnitResult.MeasurementType = measurementUnit.MeasureType;
- measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue == null ? "NA" : measurementUnit.Spec.ActualValue.Value.ToString("f2");
+ measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue == null ? "NA" : measurementUnit.Spec.ActualValue.Value.ToString(_precision);
measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG";
measurementUnitResults.Add(measurementUnitResult);
@@ -533,7 +552,7 @@
keyUnitData.ProductionBarcode = productionMeasurementRecords.ProductionBarcode;
keyUnitData.Key = keyUnit.Key;
keyUnitData.MeasurementItem = keyValue.Key;
- keyUnitData.ItemValue = keyValue.Value == null ? "NA" : keyValue.Value.Value.ToString("f2");
+ keyUnitData.ItemValue = keyValue.Value == null ? "NA" : keyValue.Value.Value.ToString(_precision);
keyUnitDatas.Add(keyUnitData);
MeasurementAndKeyDataRelation measurementAndKeyDataRelation = new MeasurementAndKeyDataRelation();
@@ -1129,6 +1148,7 @@
{
_halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image;
_halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X / 1000000.0;
+ _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Y"] = scanParam.Resolution_Y / 1000000.0;
_halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z / 1000000.0;
_halconToolDict[keyToolKey].InputTupleDic["INPUT_ImageId"] = $"{k.AliasName}_{DateTime.Now.ToString("HHmmssfff")}.tif";
if (!_halconToolDict[keyToolKey].RunProcedure(out string error))
--
Gitblit v1.8.0