diff --git a/Rs.DeweyTester/Commom/Enums.cs b/Rs.DeweyTester/Commom/Enums.cs index 1294143..13a0ce4 100644 --- a/Rs.DeweyTester/Commom/Enums.cs +++ b/Rs.DeweyTester/Commom/Enums.cs @@ -6,6 +6,8 @@ using System.Threading.Tasks; namespace Rs.MotionPlat.Commom { + + /// /// 异常安全处理位 /// diff --git a/Rs.DeweyTester/Commom/GlobalVar.cs b/Rs.DeweyTester/Commom/GlobalVar.cs index 02b9236..c33bea7 100644 --- a/Rs.DeweyTester/Commom/GlobalVar.cs +++ b/Rs.DeweyTester/Commom/GlobalVar.cs @@ -17,6 +17,30 @@ namespace Rs.Framework { #region newpro + /// + /// 模拟测试良率 + /// + [ParameterInit("int", "95", "system", "模拟测试良率")] + public static int SimulateTestYield + { + get + { + return SysConfigParam.GetValue(nameof(SimulateTestYield)); + } + } + + /// + /// 模拟测试时间 + /// + [ParameterInit("int", "30", "system", "模拟测试时间")] + public static int SimulateTestTime + { + get + { + return SysConfigParam.GetValue(nameof(SimulateTestTime)); + } + } + /// /// 检测视觉软件是否打开 /// diff --git a/Rs.DeweyTester/Commom/NozzleCollection.cs b/Rs.DeweyTester/Commom/NozzleCollection.cs index 440c9cf..a03b423 100644 --- a/Rs.DeweyTester/Commom/NozzleCollection.cs +++ b/Rs.DeweyTester/Commom/NozzleCollection.cs @@ -84,12 +84,12 @@ namespace Rs.MotionPlat.Commom { if (op == EIoOperate.Open) { - Ops.On($"{NozzleIndex}号吸嘴真空吸电磁阀"); + Ops.On($"吸料真空{NozzleIndex}吸"); Thread.Sleep(GlobalVar.LoadNozzleOpenVacSuctionDelaytime); } else { - Ops.Off($"{NozzleIndex}号吸嘴真空吸电磁阀"); + Ops.Off($"吸料真空{NozzleIndex}吸"); Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime); } } @@ -101,11 +101,11 @@ namespace Rs.MotionPlat.Commom { if (op == EIoOperate.Open) { - Ops.On($"{NozzleIndex}号吸嘴真空破电磁阀"); + Ops.On($"吸料真空{NozzleIndex}破"); } else { - Ops.Off($"{NozzleIndex}号吸嘴真空破电磁阀"); + Ops.Off($"吸料真空{NozzleIndex}破"); } } @@ -115,7 +115,7 @@ namespace Rs.MotionPlat.Commom /// public bool HasProduct() { - return Ops.IsOn($"{NozzleIndex}号吸嘴真空吸检测"); + return Ops.IsOn($"吸料真空{NozzleIndex}检测"); } } @@ -494,7 +494,7 @@ namespace Rs.MotionPlat.Commom /// /// /// - public static double GotoTrayTakeProductPos(ETrayType trayType, int nozzleIndex) + public static double GetNozzleToTrayTakeProductPos(ETrayType trayType, int nozzleIndex) { double targetPos = 0.0; switch (trayType) @@ -574,5 +574,25 @@ namespace Rs.MotionPlat.Commom double offsetHeight = GetNozzleOffsetHeight(nozzleIndex); return targetPos + offsetHeight; } + + /// + /// 吸嘴运动 + /// + /// + /// + public static bool Go(Nozzle nozzle,double pos,int speed) + { + ErrorCode errCode = AxisControl.GetAxis($"NozzleZ{nozzle.NozzleIndex}").MovePos(pos, GlobalVar.WholeSpeed); + if (errCode == ErrorCode.Ok) + { + return true; + } + else + { + AlarmEntity alarmEntity = AlarmCollection.Get($"NozzleZ{nozzle.NozzleIndex}运动异常报警"); + Msgbox.ShowDialog(alarmEntity, EButtonType.Retry); + return false; + } + } } } diff --git a/Rs.DeweyTester/Entitys/SimulateTesterManager.cs b/Rs.DeweyTester/Entitys/SimulateTesterManager.cs index 559eb2b..57c7f54 100644 --- a/Rs.DeweyTester/Entitys/SimulateTesterManager.cs +++ b/Rs.DeweyTester/Entitys/SimulateTesterManager.cs @@ -56,14 +56,14 @@ namespace Rs.MotionPlat.Entitys void CheckTest() { if (!_btest) return; - if(_start.ElapsedMilliseconds>45*1000) + if(_start.ElapsedMilliseconds>GlobalVar.SimulateTestTime*1000) { _start.Stop(); _btest = false; testResult = $"1$"; Random rnd = new Random(); int randomNumber = rnd.Next(0, 100); - int res = randomNumber < 20 ? 0 : 1; + int res = randomNumber < (100-GlobalVar.SimulateTestYield) ? 0 : 1; testResult = $"Result#0#{res}#CsvInfo#FailItems#TestItems#BinInfo$"; } } diff --git a/Rs.DeweyTester/Entitys/TestFixtureManager.cs b/Rs.DeweyTester/Entitys/TestFixtureManager.cs index d32665e..49c0a8d 100644 --- a/Rs.DeweyTester/Entitys/TestFixtureManager.cs +++ b/Rs.DeweyTester/Entitys/TestFixtureManager.cs @@ -319,13 +319,13 @@ namespace Rs.MotionPlat.Entitys } while (true) { - if (dataEvent.WaitOne(10)) + if (dataEvent.WaitOne(100)) { break; } else { - Thread.Sleep(10); + Thread.Sleep(100); } } Send("Status$"); @@ -351,13 +351,13 @@ namespace Rs.MotionPlat.Entitys { while (true) { - if (dataEvent.WaitOne(10)) + if (dataEvent.WaitOne(100)) { break; } else { - Thread.Sleep(10); + Thread.Sleep(100); } } Send($"Reset$"); @@ -374,13 +374,13 @@ namespace Rs.MotionPlat.Entitys { while (true) { - if (dataEvent.WaitOne(10)) + if (dataEvent.WaitOne(100)) { break; } else { - Thread.Sleep(10); + Thread.Sleep(100); } } Send($"Pause#1$"); @@ -397,13 +397,13 @@ namespace Rs.MotionPlat.Entitys { while (true) { - if (dataEvent.WaitOne(10)) + if (dataEvent.WaitOne(100)) { break; } else { - Thread.Sleep(10); + Thread.Sleep(100); } } int noise = GlobalVar.Noise ? 1 : 0; @@ -424,7 +424,7 @@ namespace Rs.MotionPlat.Entitys { if(!Connected) { - Thread.Sleep(50); + Thread.Sleep(100); continue; } byte[] bytes=new byte[1024 *10]; @@ -656,6 +656,10 @@ namespace Rs.MotionPlat.Entitys File.AppendAllText(logFileName, $"{DateTime.Now.ToString("HH:mm:ss fff")} {log}\r\n"); } } + else + { + Thread.Sleep(100); + } } }); } @@ -684,6 +688,24 @@ namespace Rs.MotionPlat.Entitys } } + /// + /// 夹头夹紧 + /// + public void ColletOn() + { + Ops.On($"治具夹{Index}"); + Thread.Sleep(100); + } + + /// + /// 夹头松开 + /// + public void ColletOff() + { + Ops.Off($"治具夹{Index}"); + Thread.Sleep(100); + } + } public class TestFixtureManager { diff --git a/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs b/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs index 5905ae0..939d2ae 100644 --- a/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs +++ b/Rs.DeweyTester/Flow/NormalFlow/DischargeFlow.cs @@ -43,12 +43,10 @@ namespace Rs.MotionPlat.Flow 到料仓拍照位上方, 等待到料仓拍照位上方, 料仓取料拍照, - 料仓取料拍照结果处理, 到料仓取料位上方, 等待到料仓取料位上方, 到料仓取料位下方, 等待到料仓取料位下方, - 料仓取料打开真空吸, 料仓取料完成抬起, 等待料仓取料完成抬起, 料仓取料真空吸检测, @@ -275,18 +273,17 @@ namespace Rs.MotionPlat.Flow List vResult = VisionHelper.OneGrabFour(); if(vResult!=null &&vResult.Count==4) { - + for (int i = 0; i < vResult.Count; i++) + { + OneGrabFourManager.Instance.DealGrabResult(slot.Index, i + 1, vResult[i]); + } + GlobalTray.GrabTray.ChangeStatus(slot.Index, ESlotStatus.NotHave); + flowStep = EDischargeFlowStep.到料仓取料位上方; } - for(int i=0;i buttons = new List