增加GRR模式,在GRR模式下,只有第一次才扫码,后面就不再扫码了

master
lhiven 1 year ago
parent 987bdfc10c
commit 2cb613f388

@ -763,5 +763,16 @@ namespace Rs.Framework
return SysConfigParam.GetValue<bool>(nameof(EnableTwoSpeed));
}
}
/// <summary>
/// GRR
/// </summary>
public static bool GRR
{
get
{
return SysConfigParam.GetValue<bool>(nameof(GRR));
}
}
}
}

@ -128,6 +128,7 @@ namespace Rs.MotionPlat.Flow
/// 未执行的任务数量
/// </summary>
private int undoTaskNum = 0;
int scanNum = 0;
public override void Run()
{
switch (flowStep)
@ -1469,179 +1470,186 @@ namespace Rs.MotionPlat.Flow
{
if (LoadAndUnloadTask.Instance.GetUndealedLoadToTurnoverTask().Count == 0 && !GlobalVar.VirtualAxis)
{
//没有需要给周转盘上料的任务后,就开始上相机扫码
//判断周转盘第一行有没有产品,如果有产品则拍第一行
if(TurnoverTrayManager.Instance.HasProduct(ETrayRow.One))
if(GlobalVar.GRR)
{
//找拍照起点和终点
SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 1);
SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 8);
UpCameraScanBarCodeFlow.Instance.ScanMulti(1, false);
List<VisionResult> result = UpCameraScanBarCodeFlow.Instance.Wait();
foreach (var vr in result)
scanNum++;
}
if(scanNum==1 || !GlobalVar.GRR)
{
//没有需要给周转盘上料的任务后,就开始上相机扫码
//判断周转盘第一行有没有产品,如果有产品则拍第一行
if (TurnoverTrayManager.Instance.HasProduct(ETrayRow.One))
{
if(TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct)
//找拍照起点和终点
SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 1);
SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 8);
UpCameraScanBarCodeFlow.Instance.ScanMulti(1, false);
List<VisionResult> result = UpCameraScanBarCodeFlow.Instance.Wait();
foreach (var vr in result)
{
if (vr.SearchModelOK)//定位成功
if (TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct)
{
if(!GlobalVar.EnableScanBarCodeByDownCamera)
if (vr.SearchModelOK)//定位成功
{
if(GlobalVar.RunSpace)
{
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex-1, VirtualBarCode.Code);
}
else
if (!GlobalVar.EnableScanBarCodeByDownCamera)
{
if(vr.ScanBarCodeOK)
if (GlobalVar.RunSpace)
{
OnShowGrabResult?.Invoke(vr,true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex-1, vr.SN);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, VirtualBarCode.Code);
}
else
{
int failNum = 1;
while(true)
if (vr.ScanBarCodeOK)
{
if(failNum<4)
{
//如果扫码失败再重扫一次
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
if (vrsigle.ScanBarCodeOK)
{
OnShowGrabResult?.Invoke(vrsigle, true);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
break;
}
else
{
failNum++;
OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
//LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
Thread.Sleep(1000);
}
}
else
OnShowGrabResult?.Invoke(vr, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
}
else
{
int failNum = 1;
while (true)
{
box = MsgBox.ShowDialog(AlarmConstID.ScanBarCodeFailAlarm, $"{vr.SlotIndex}穴位扫码失败", ETipButton.Retry | ETipButton.Cancel);
if(box.Button== ETipButton.Retry)
if (failNum < 4)
{
failNum = 1;
//如果扫码失败再重扫一次
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
if (vrsigle.ScanBarCodeOK)
{
OnShowGrabResult?.Invoke(vrsigle, true);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
break;
}
else
{
failNum++;
OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
//LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
Thread.Sleep(1000);
}
}
else
{
//OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
break;
box = MsgBox.ShowDialog(AlarmConstID.ScanBarCodeFailAlarm, $"{vr.SlotIndex}穴位扫码失败", ETipButton.Retry | ETipButton.Cancel);
if (box.Button == ETipButton.Retry)
{
failNum = 1;
}
else
{
//OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
break;
}
}
}
}
}
}
}
else
{
//定位失败,或者超出指定范围
}
}
else
{
//定位失败,或者超出指定范围
OnShowGrabResult?.Invoke(vr, false);
}
}
else
{
OnShowGrabResult?.Invoke(vr,false);
}
//OnUpCameraGrabResult?.Invoke(result);
}
//OnUpCameraGrabResult?.Invoke(result);
}
//判断周转盘第三行有没有产品,如果有产品则拍第三行
if (TurnoverTrayManager.Instance.HasProduct(ETrayRow.Three))
{
//找拍照起点和终点
SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 17);
SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 24);
UpCameraScanBarCodeFlow.Instance.ScanMulti(24, true);
List<VisionResult> result = UpCameraScanBarCodeFlow.Instance.Wait();
foreach (var vr in result)
//判断周转盘第三行有没有产品,如果有产品则拍第三行
if (TurnoverTrayManager.Instance.HasProduct(ETrayRow.Three))
{
if (TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct)
//找拍照起点和终点
SlotPoint grabStartPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 17);
SlotPoint grabEndPoint = TrayPointManager.GetSlotPoint(ETrayType.Turnover, 24);
UpCameraScanBarCodeFlow.Instance.ScanMulti(24, true);
List<VisionResult> result = UpCameraScanBarCodeFlow.Instance.Wait();
foreach (var vr in result)
{
if (vr.SearchModelOK)//定位成功
if (TurnoverTrayManager.Instance.Slot(vr.SlotIndex).IsHasProduct)
{
if (!GlobalVar.EnableScanBarCodeByDownCamera)
if (vr.SearchModelOK)//定位成功
{
if (GlobalVar.RunSpace)
{
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex-1, VirtualBarCode.Code);
}
else
if (!GlobalVar.EnableScanBarCodeByDownCamera)
{
if (vr.ScanBarCodeOK)
if (GlobalVar.RunSpace)
{
OnShowGrabResult?.Invoke(vr, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex- 1, vr.SN);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, VirtualBarCode.Code);
}
else
{
int failNum = 1;
while (true)
if (vr.ScanBarCodeOK)
{
if (failNum < 4)
OnShowGrabResult?.Invoke(vr, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
}
else
{
int failNum = 1;
while (true)
{
//如果扫码失败再重扫一次
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
if (vrsigle.ScanBarCodeOK)
if (failNum < 4)
{
OnShowGrabResult?.Invoke(vrsigle, true);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
break;
//如果扫码失败再重扫一次
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
if (vrsigle.ScanBarCodeOK)
{
OnShowGrabResult?.Invoke(vrsigle, true);
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
break;
}
else
{
failNum++;
OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
//LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
Thread.Sleep(1000);
}
}
else
{
failNum++;
OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
//LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
Thread.Sleep(1000);
}
}
else
{
box = MsgBox.ShowDialog(AlarmConstID.ScanBarCodeFailAlarm, $"{vr.SlotIndex}穴位扫码失败", ETipButton.Retry | ETipButton.Skip);
if (box.Button == ETipButton.Retry)
{
failNum = 1;
}
else if(box.Button== ETipButton.Skip)
{
//OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
break;
box = MsgBox.ShowDialog(AlarmConstID.ScanBarCodeFailAlarm, $"{vr.SlotIndex}穴位扫码失败", ETipButton.Retry | ETipButton.Skip);
if (box.Button == ETipButton.Retry)
{
failNum = 1;
}
else if (box.Button == ETipButton.Skip)
{
//OnShowGrabResult?.Invoke(vrsigle, true);
//复制二维码
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
break;
}
}
}
}
}
}
}
else
{
//定位失败,或者超出指定范围
}
}
else
{
//定位失败,或者超出指定范围
OnShowGrabResult?.Invoke(vr, false);
}
}
else
{
OnShowGrabResult?.Invoke(vr,false);
}
}
//OnUpCameraGrabResult?.Invoke(result);
//OnUpCameraGrabResult?.Invoke(result);
}
}
}
}

@ -58,6 +58,7 @@
this.label6 = new System.Windows.Forms.Label();
this.cboxVirtualAxis = new System.Windows.Forms.CheckBox();
this.cboxCheckSafeEnable = new System.Windows.Forms.CheckBox();
this.cboxEnableTestFixtureFiberCheck = new System.Windows.Forms.CheckBox();
this.cboxEnableTwoSpeed = new System.Windows.Forms.CheckBox();
this.cboxEnableScanBarCodeByDownCamera = new System.Windows.Forms.CheckBox();
this.cboxEnableExceptionHandlingNozzle = new System.Windows.Forms.CheckBox();
@ -82,7 +83,7 @@
this.label27 = new System.Windows.Forms.Label();
this.txtControlCenterIP = new System.Windows.Forms.TextBox();
this.label26 = new System.Windows.Forms.Label();
this.cboxEnableTestFixtureFiberCheck = new System.Windows.Forms.CheckBox();
this.cboxGRR = new System.Windows.Forms.CheckBox();
this.tableLayoutPanel1.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox10.SuspendLayout();
@ -331,6 +332,7 @@
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.cboxVirtualAxis);
this.groupBox1.Controls.Add(this.cboxCheckSafeEnable);
this.groupBox1.Controls.Add(this.cboxGRR);
this.groupBox1.Controls.Add(this.cboxEnableTestFixtureFiberCheck);
this.groupBox1.Controls.Add(this.cboxEnableTwoSpeed);
this.groupBox1.Controls.Add(this.cboxEnableScanBarCodeByDownCamera);
@ -473,6 +475,16 @@
this.cboxCheckSafeEnable.Text = "安全检查";
this.cboxCheckSafeEnable.UseVisualStyleBackColor = true;
//
// cboxEnableTestFixtureFiberCheck
//
this.cboxEnableTestFixtureFiberCheck.AutoSize = true;
this.cboxEnableTestFixtureFiberCheck.Location = new System.Drawing.Point(294, 277);
this.cboxEnableTestFixtureFiberCheck.Name = "cboxEnableTestFixtureFiberCheck";
this.cboxEnableTestFixtureFiberCheck.Size = new System.Drawing.Size(96, 16);
this.cboxEnableTestFixtureFiberCheck.TabIndex = 8;
this.cboxEnableTestFixtureFiberCheck.Text = "启用光纤检测";
this.cboxEnableTestFixtureFiberCheck.UseVisualStyleBackColor = true;
//
// cboxEnableTwoSpeed
//
this.cboxEnableTwoSpeed.AutoSize = true;
@ -728,15 +740,15 @@
this.label26.TabIndex = 0;
this.label26.Text = "中控IP:";
//
// cboxEnableTestFixtureFiberCheck
// cboxGRR
//
this.cboxEnableTestFixtureFiberCheck.AutoSize = true;
this.cboxEnableTestFixtureFiberCheck.Location = new System.Drawing.Point(294, 277);
this.cboxEnableTestFixtureFiberCheck.Name = "cboxEnableTestFixtureFiberCheck";
this.cboxEnableTestFixtureFiberCheck.Size = new System.Drawing.Size(96, 16);
this.cboxEnableTestFixtureFiberCheck.TabIndex = 8;
this.cboxEnableTestFixtureFiberCheck.Text = "启用光纤检测";
this.cboxEnableTestFixtureFiberCheck.UseVisualStyleBackColor = true;
this.cboxGRR.AutoSize = true;
this.cboxGRR.Location = new System.Drawing.Point(391, 277);
this.cboxGRR.Name = "cboxGRR";
this.cboxGRR.Size = new System.Drawing.Size(42, 16);
this.cboxGRR.TabIndex = 8;
this.cboxGRR.Text = "GRR";
this.cboxGRR.UseVisualStyleBackColor = true;
//
// CommonConfig
//
@ -824,5 +836,6 @@
private System.Windows.Forms.Label label9;
private System.Windows.Forms.CheckBox cboxEnableTwoSpeed;
private System.Windows.Forms.CheckBox cboxEnableTestFixtureFiberCheck;
private System.Windows.Forms.CheckBox cboxGRR;
}
}
Loading…
Cancel
Save