From 45cefd5adacd9485b829e74a708b24796cb1165e Mon Sep 17 00:00:00 2001 From: lhiven <236881222@qq.com> Date: Fri, 19 Apr 2024 13:36:06 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E6=95=B4=E4=BD=93?= =?UTF-8?q?=E5=9B=9E=E5=8E=9F=E5=A4=B1=E8=B4=A5=E5=90=8E=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E5=86=8D=E5=9B=9E=E5=8E=9F=E3=80=82=202=E3=80=81=E6=96=99?= =?UTF-8?q?=E7=9B=98=E6=9C=AA=E6=8A=93=E8=B5=B7=E7=A1=AE=E5=AE=9A=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E9=87=8D=E8=AF=95=203=E3=80=81=E5=8F=96=E6=96=99?= =?UTF-8?q?=E7=9B=98=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=AF=B9XY=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E6=A3=80=E6=B5=8B=EF=BC=8C=E4=B8=8D=E5=9C=A8?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E6=97=B6=E9=87=8D=E6=96=B0=E8=B5=B0=E4=BD=8D?= =?UTF-8?q?=E3=80=82=204=E3=80=81=E6=89=AB=E7=A0=81=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E6=94=BE=E5=88=B0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E7=9A=84=E4=B8=8B=E6=96=B9=E3=80=82=205=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=BD=93=E6=B2=BB=E5=85=B79-16=E7=9C=9F=E7=A9=BA?= =?UTF-8?q?=E5=90=B8=E6=8A=A5=E8=AD=A6=E6=97=B6=EF=BC=8C=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E4=BD=8D=E6=B2=A1=E6=9C=89=E7=A7=BB=E5=8A=A8=E5=88=B09-16?= =?UTF-8?q?=E7=9A=84=E5=AE=89=E5=85=A8=E4=BD=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rs.SkyLine/Commom/GlobalVar.cs | 4 ++ Rs.SkyLine/Commom/Ops.cs | 1 + Rs.SkyLine/Flow/BaseFlow.cs | 2 +- Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs | 2 +- Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs | 43 ++++++++++++------- Rs.SkyLine/Flow/NormalFlow/TurnoverFlow.cs | 41 ++++++++++++++---- .../SafePosFlow/TransitModuleSafePosFlow.cs | 19 +++++--- Rs.SkyLine/FormMain.cs | 15 +++++-- Rs.SkyLine/FormMain.designer.cs | 1 + Rs.SkyLine/Properties/AssemblyInfo.cs | 2 +- 10 files changed, 94 insertions(+), 36 deletions(-) diff --git a/Rs.SkyLine/Commom/GlobalVar.cs b/Rs.SkyLine/Commom/GlobalVar.cs index 3ccef9d..7fb7110 100644 --- a/Rs.SkyLine/Commom/GlobalVar.cs +++ b/Rs.SkyLine/Commom/GlobalVar.cs @@ -1793,5 +1793,9 @@ namespace Rs.Framework return SysConfigParam.GetValue(nameof(EnableIndexTimeStatistics)); } } + /// + /// 设备是否是自动状态 + /// + public static bool DeviceIsAuto { get; set; } = true; } } diff --git a/Rs.SkyLine/Commom/Ops.cs b/Rs.SkyLine/Commom/Ops.cs index 3c0b03b..b183f11 100644 --- a/Rs.SkyLine/Commom/Ops.cs +++ b/Rs.SkyLine/Commom/Ops.cs @@ -260,6 +260,7 @@ namespace Rs.MotionPlat.Commom || MachineManage.Instance.MachineStatus == EMachineStatus.NotInit || MachineManage.Instance.MachineStatus == EMachineStatus.NotHomed || MachineManage.Instance.MachineStatus == EMachineStatus.Stop + || MachineManage.Instance.MachineStatus== EMachineStatus.HomeFail ) { if(SafeDoorCheck.Check()) diff --git a/Rs.SkyLine/Flow/BaseFlow.cs b/Rs.SkyLine/Flow/BaseFlow.cs index d87a166..7eb4d99 100644 --- a/Rs.SkyLine/Flow/BaseFlow.cs +++ b/Rs.SkyLine/Flow/BaseFlow.cs @@ -35,7 +35,7 @@ namespace Rs.MotionPlat.Flow private void task() { while (b_IsRun) { - if(b_IsStop) + if(b_IsStop || !GlobalVar.DeviceIsAuto) { Thread.Sleep(stopWaitTime); continue; diff --git a/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs b/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs index 2651516..46a1086 100644 --- a/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs @@ -265,7 +265,7 @@ namespace Rs.AutoDischarge.V3.Flow logInfo = string.Format(AlarmCollection.GetAlarm(AlarmConstID.料仓缺料盘), m_stockType.ToString()); //TestCenterMessageBox.Show(AlarmConstID.StockLackTrayAlarm +(int)m_stockType, logInfo, ETipButton.Ok); //msgBox = TestCenterMessageBox.WaitResult(AlarmConstID.StockLackTrayAlarm + (int)m_stockType); - PromptMessageBox.ShowDialog(AlarmConstID.料仓缺料盘, logInfo, ETipButton.Ok); + PromptMessageBox.ShowDialog(AlarmConstID.料仓缺料盘, logInfo, ETipButton.Retry); } break; case EStockTrayLoadFlowStep.到上料接料盘位: diff --git a/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs b/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs index ac82111..2ee9511 100644 --- a/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/TakeTrayFlow.cs @@ -169,23 +169,32 @@ namespace Rs.MotionPlat.Flow case ETakeTrayFlowStep.等待料盘准备就绪: if (StockManager.Instance.GetStock(m_fromTray).Status == EStockTrayStatus.Loaded) { - logInfo = GetClassName() + $"{m_fromTray}料仓料盘准备就绪"; - MessageQueue.Instance.Insert(logInfo); - Ops.On("上下气缸电磁阀动位"); - logInfo = GetClassName()+ "上下气缸电磁阀动位on"; - MessageQueue.Instance.Insert(logInfo); - Ops.Off("上下气缸电磁阀原位"); - logInfo = GetClassName() + "上下气缸电磁阀原位 off"; - MessageQueue.Instance.Insert(logInfo); - Thread.Sleep(150); - step = ETakeTrayFlowStep.等待运动到取料位下方; - stopwatch.Restart(); + if (AxisArrived.LoadXYIsArrived(targetX, targetY)) + { + logInfo = GetClassName() + $"{m_fromTray}料仓料盘准备就绪"; + MessageQueue.Instance.Insert(logInfo); + Ops.On("上下气缸电磁阀动位"); + logInfo = GetClassName() + "上下气缸电磁阀动位on"; + MessageQueue.Instance.Insert(logInfo); + Ops.Off("上下气缸电磁阀原位"); + logInfo = GetClassName() + "上下气缸电磁阀原位 off"; + MessageQueue.Instance.Insert(logInfo); + Thread.Sleep(150); + step = ETakeTrayFlowStep.等待运动到取料位下方; + stopwatch.Restart(); + } + else + { + step = ETakeTrayFlowStep.到取料盘上方; + } + } break; case ETakeTrayFlowStep.等待运动到取料位下方: + if ((Ops.IsOn("上下气缸动位") && stopwatch.ElapsedMilliseconds < 5000) || (GlobalVar.VirtualAxis)) { - logInfo =GetClassName()+ $"检测上下气缸动位OK"; + logInfo = GetClassName() + $"检测上下气缸动位OK"; MessageQueue.Instance.Insert(logInfo); stopwatch.Stop(); Ops.On("夹爪气缸电磁阀"); @@ -204,7 +213,7 @@ namespace Rs.MotionPlat.Flow Ops.Off($"{(int)m_toTray}号料仓斜推气缸"); logInfo = GetClassName() + $"关闭{m_toTray}号料仓斜推气缸"; MessageQueue.Instance.Insert(logInfo); - + step = ETakeTrayFlowStep.取料盘完成抬起; } else if (stopwatch.ElapsedMilliseconds > 5000) @@ -214,10 +223,11 @@ namespace Rs.MotionPlat.Flow //TestCenterMessageBox.Show(AlarmConstID.UpDownCylinderExceptionAlarm, logInfo,ETipButton.Ok); //TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm); alarmEntity = AlarmCollection.Get(AlarmConstID.上下气缸动位异常); - if(alarmEntity!=null) + if (alarmEntity != null) { LogHelper.Debug(GetClassName() + alarmEntity.CN); - AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null); + AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Retry, null); + step = ETakeTrayFlowStep.等待料盘准备就绪; } else { @@ -225,6 +235,7 @@ namespace Rs.MotionPlat.Flow } stopwatch.Restart(); } + break; case ETakeTrayFlowStep.取料盘完成抬起: Ops.Off("上下气缸电磁阀动位"); @@ -299,7 +310,7 @@ namespace Rs.MotionPlat.Flow alarmEntity = AlarmCollection.Get(AlarmConstID.抓料盘未抓起).Transform(fromTray.ToString()); if(alarmEntity!=null) { - AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null); + AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Retry, null); stopwatch.Stop(); stopwatch.Restart(); //打开夹爪 diff --git a/Rs.SkyLine/Flow/NormalFlow/TurnoverFlow.cs b/Rs.SkyLine/Flow/NormalFlow/TurnoverFlow.cs index b79330e..f1a5a4f 100644 --- a/Rs.SkyLine/Flow/NormalFlow/TurnoverFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/TurnoverFlow.cs @@ -571,7 +571,7 @@ namespace Rs.MotionPlat.Flow VacManager.TurnoverTrayVacSuction(EVacOperator.Close, true, undealTasks.Select(t => t.FromIndex + 1).ToArray()); /*打开周转盘真空破*/ VacManager.TurnoverTrayVacBreak(EVacOperator.Open, true, undealTasks.Select(t => t.FromIndex + 1).ToArray()); - ActionEnd("关闭周转盘真空吸,打开周转盘真空破"); + ActionEnd("关闭周转盘真空吸-打开周转盘真空破"); Step = ETurnoverFlowStep.周转盘取料完成抬起1; } else @@ -1036,7 +1036,7 @@ namespace Rs.MotionPlat.Flow VacManager.TransitNozzleVacBreak(ETurnoverNozzlePosition.Socket, EVacOperator.Close, true, hasProductNozzles.Select(n => n.NozzleIndex).ToArray()); //在这里更新产品状态 //TransitNozzleManager.Instance.Transi - ActionEnd("关闭周转吸头真空吸,打开周转吸头真空破,关闭周转吸头真空破"); + ActionEnd("关闭周转吸头真空吸-打开周转吸头真空破-关闭周转吸头真空破"); Step = ETurnoverFlowStep.测试位放料完成抬起1; } else @@ -1135,8 +1135,8 @@ namespace Rs.MotionPlat.Flow /*关闭周转吸头真空破*/ //VacManager.TransitNozzleVacBreak(EVacOperator.Close, true, hasProductNozzles.Select(n => n.NozzleIndex).ToArray()); - //logInfo = GetClassName() + $"测试位放料完成抬起完成2"; - //MessageQueue.Instance.Insert(logInfo); + logInfo = GetClassName() + $"测试位放料完成抬起完成2,cz:{Ops.GetCurPosition(AxisControl.TurnoverZ)}"; + MessageQueue.Instance.Insert(logInfo); Step = ETurnoverFlowStep.测试位放料完成粘料检测; } else @@ -1271,10 +1271,12 @@ namespace Rs.MotionPlat.Flow VacManager.TestTrayVacSuction(EVacOperator.Close, true, nozzle.NozzleIndex); if (nozzle.NozzleIndex < 9) { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常"); TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); } else { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常"); TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen); } break; @@ -1299,10 +1301,12 @@ namespace Rs.MotionPlat.Flow VacManager.TestTrayVacSuction(EVacOperator.Close, true, nozzle.NozzleIndex); if (nozzle.NozzleIndex < 9) { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常"); TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); } else { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常"); TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen); } break; @@ -1359,7 +1363,16 @@ namespace Rs.MotionPlat.Flow break; case ETipButton.Yes://移动到安全位 VacManager.TestTrayVacSuction(EVacOperator.Close, true, nozzle.NozzleIndex); - TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); + if (nozzle.NozzleIndex < 9) + { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常"); + TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); + } + else + { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常"); + TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen); + } break; } } @@ -1379,7 +1392,16 @@ namespace Rs.MotionPlat.Flow break; case ETipButton.Yes://移动到安全位 VacManager.TestTrayVacSuction(EVacOperator.Close, true, nozzle.NozzleIndex); - TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); + if (nozzle.NozzleIndex < 9) + { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常"); + TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket); + } + else + { + LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常"); + TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen); + } break; } } @@ -2242,7 +2264,7 @@ namespace Rs.MotionPlat.Flow VacManager.TestTrayVacSuction(EVacOperator.Close, true, undealTasks.Select(t => t.FromIndex + 1).ToArray()); /*打开测试穴位真空破*/ VacManager.TestTrayVacBreak(EVacOperator.Open, true, undealTasks.Select(t => t.FromIndex + 1).ToArray()); - ActionEnd("关闭测试穴位真空吸,打开测试穴位真空破"); + ActionEnd("关闭测试穴位真空吸-打开测试穴位真空破"); Step = ETurnoverFlowStep.测试位取料完成抬起1; } else @@ -2669,7 +2691,7 @@ namespace Rs.MotionPlat.Flow VacManager.TransitNozzleVacBreak(ETurnoverNozzlePosition.TurnoverTray, EVacOperator.Open, true, hasProductNozzles.Select(n => n.FromIndex + 1).ToArray()); /*关闭周转吸头真空破*/ VacManager.TransitNozzleVacBreak(ETurnoverNozzlePosition.TurnoverTray, EVacOperator.Close, true, hasProductNozzles.Select(n => n.FromIndex + 1).ToArray()); - ActionEnd("关闭周转吸头真空吸,打开周转吸头真空破,关闭周转吸头真空破"); + ActionEnd("关闭周转吸头真空吸-打开周转吸头真空破-关闭周转吸头真空破"); Step = ETurnoverFlowStep.周转盘放料完成抬起1; } else @@ -3178,7 +3200,8 @@ namespace Rs.MotionPlat.Flow private void ActionStart() { - timeStatistics.Restart(); + if (GlobalVar.EnableIndexTimeStatistics) + timeStatistics.Restart(); } private void ActionEnd(string actionName) diff --git a/Rs.SkyLine/Flow/SafePosFlow/TransitModuleSafePosFlow.cs b/Rs.SkyLine/Flow/SafePosFlow/TransitModuleSafePosFlow.cs index 7e04423..6fd767a 100644 --- a/Rs.SkyLine/Flow/SafePosFlow/TransitModuleSafePosFlow.cs +++ b/Rs.SkyLine/Flow/SafePosFlow/TransitModuleSafePosFlow.cs @@ -117,6 +117,8 @@ namespace Rs.MotionPlat.Flow.SafePosFlow { if(AxisArrived.PressZIsInTargetPos(targetPressZ)) { + logInfo = $"轴已抬起,cturnoverz:{Ops.GetCurPosition(AxisControl.TurnoverZ)},cpressz:{Ops.GetCurPosition(AxisControl.PressZ)}"; + MessageQueue.Instance.Insert(""); step = ETransitModuleSafePosFlowStep.到安全位; } else @@ -180,7 +182,7 @@ namespace Rs.MotionPlat.Flow.SafePosFlow { Thread.Sleep(GlobalVar.VirtualAxisMoveTime); } - logInfo = GetClassName() + $"到安全位"; + logInfo = GetClassName() + $"到安全位,tx:{targetPosition.X},ty:{targetPosition.Y}"; MessageQueue.Instance.Insert(logInfo); step = ETransitModuleSafePosFlowStep.等待运动到安全位; } @@ -201,10 +203,17 @@ namespace Rs.MotionPlat.Flow.SafePosFlow case ETransitModuleSafePosFlowStep.等待运动到安全位: if (Ops.IsStop("TurnoverX", "TurnoverY") || GlobalVar.VirtualAxis) { - logInfo = GetClassName()+ $"已运动到安全位"; - MessageQueue.Instance.Insert(logInfo); - finished = true; - taskFinishedEvent.Set(); + if(AxisArrived.TurnoverXYIsInTargetPos(targetPosition.X,targetPosition.Y)) + { + logInfo = GetClassName() + $"已运动到安全位,cx:{Ops.GetCurPosition(AxisControl.TurnoverX)},cy:{Ops.GetCurPosition(AxisControl.TurnoverY)}"; + MessageQueue.Instance.Insert(logInfo); + finished = true; + taskFinishedEvent.Set(); + } + else + { + step = ETransitModuleSafePosFlowStep.到安全位; + } } break; default: diff --git a/Rs.SkyLine/FormMain.cs b/Rs.SkyLine/FormMain.cs index d7b6587..f2e8c48 100644 --- a/Rs.SkyLine/FormMain.cs +++ b/Rs.SkyLine/FormMain.cs @@ -269,6 +269,7 @@ namespace Rs.MotionPlat //StockManager.Instance.Start(); LoadStockStatus(); HOperatorSet.ReadImage(out defaultImage, "default.bmp"); + switchButton1.Checked = GlobalVar.DeviceIsAuto; } /// @@ -382,19 +383,22 @@ namespace Rs.MotionPlat { string SN = matchResult.SN; hwin.HobjectToHimage(matchResult.SourceImage); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"sn:{SN}", 20, 20, "green"); + HOperatorSet.GetImageSize(matchResult.SourceImage, out HTuple w, out HTuple h); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"sn:{SN}", h-200, 20, "green"); } else { hwin.HobjectToHimage(matchResult.SourceImage); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "NG", 20, 20, "red"); + HOperatorSet.GetImageSize(matchResult.SourceImage, out HTuple w, out HTuple h); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "NG", h-200, 20, "red"); } } else { //加载默认图片 hwin.HobjectToHimage(defaultImage); - HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "no product", 20, 20, "red"); + HOperatorSet.GetImageSize(defaultImage, out HTuple w, out HTuple h); + HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "no product", h-200, 20, "red"); } } @@ -646,5 +650,10 @@ namespace Rs.MotionPlat } } } + + private void switchButton1_Click(object sender, EventArgs e) + { + GlobalVar.DeviceIsAuto = switchButton1.Checked; + } } } diff --git a/Rs.SkyLine/FormMain.designer.cs b/Rs.SkyLine/FormMain.designer.cs index a96d566..e63d031 100644 --- a/Rs.SkyLine/FormMain.designer.cs +++ b/Rs.SkyLine/FormMain.designer.cs @@ -494,6 +494,7 @@ namespace Rs.MotionPlat "Manual"}; this.switchButton1.TrueColor = System.Drawing.Color.Blue; this.switchButton1.TrueTextColr = System.Drawing.Color.White; + this.switchButton1.Click += new System.EventHandler(this.switchButton1_Click); // // panelEx3 // diff --git a/Rs.SkyLine/Properties/AssemblyInfo.cs b/Rs.SkyLine/Properties/AssemblyInfo.cs index 700c612..029445a 100644 --- a/Rs.SkyLine/Properties/AssemblyInfo.cs +++ b/Rs.SkyLine/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ using System.Runtime.InteropServices; // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: - [assembly: AssemblyVersion("3.20.24.10")] + [assembly: AssemblyVersion("3.20.24.13")] //[assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")]