From 68dca5647aa040fa0a383e027f1e66c2e90fa5de Mon Sep 17 00:00:00 2001
From: lhiven <236881222@qq.com>
Date: Sat, 27 Jan 2024 13:46:55 +0900
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=87=8D=E6=8E=92=E6=97=B6?=
=?UTF-8?q?=EF=BC=8C=E5=BD=93=E5=8F=96=E6=96=99=E5=A4=B1=E8=B4=A5=E6=97=B6?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8A=A5=E8=AD=A6=E5=A4=84=E7=90=86=E9=80=BB?=
=?UTF-8?q?=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Rs.SkyLine/Commom/Ops.cs | 14 +
Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs | 2 +-
Rs.SkyLine/Flow/RearrangeFlow.cs | 344 +++++++++-----------
3 files changed, 175 insertions(+), 185 deletions(-)
diff --git a/Rs.SkyLine/Commom/Ops.cs b/Rs.SkyLine/Commom/Ops.cs
index 0a50528..1b00b30 100644
--- a/Rs.SkyLine/Commom/Ops.cs
+++ b/Rs.SkyLine/Commom/Ops.cs
@@ -562,5 +562,19 @@ namespace Rs.MotionPlat.Commom
return false;
}
}
+
+ ///
+ /// 判断轴是否在原点
+ ///
+ ///
+ ///
+ public static bool IsInOrg(string axisName)
+ {
+ IAxis axis=AxisControl.GetAxis(axisName);
+ axis.GetOrgStatus(out bool isInOrg);
+ if (isInOrg)
+ return true;
+ return false;
+ }
}
}
diff --git a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs
index 32b714b..51537f8 100644
--- a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs
+++ b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs
@@ -373,7 +373,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
- logInfo = GetClassName()+ $"NozzleZ{curNozzle.NozzleIndex} 不在原点,请手动回原后点击确定";
+ logInfo = GetClassName()+ $"NozzleZ{curNozzle.NozzleIndex} 轴状态未回原,请手动回原后点击确定";
MessageQueue.Instance.Warn(logInfo);
MsgBox.ShowDialog(AlarmConstID.AxisNotAtHomeAlarm, logInfo, ETipButton.Ok);
}
diff --git a/Rs.SkyLine/Flow/RearrangeFlow.cs b/Rs.SkyLine/Flow/RearrangeFlow.cs
index 2efe4a3..ccabc43 100644
--- a/Rs.SkyLine/Flow/RearrangeFlow.cs
+++ b/Rs.SkyLine/Flow/RearrangeFlow.cs
@@ -1,8 +1,15 @@
-using Rs.Camera;
+using Rs.AutoDischarge.V3.Flow;
+using Rs.Camera;
using Rs.Controls;
using Rs.Framework;
using Rs.Motion;
using Rs.MotionPlat.Commom;
+using Rs.MotionPlat.Entitys;
+using Rs.MotionPlat.Entitys.Trays;
+using Rs.MotionPlat.Flow.Camera;
+using Rs.MotionPlat.Flow.NgFlow;
+using Rs.MotionPlat.Flow.SafePosFlow;
+using Rs.MotionPlat.Flow.SubFlow;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -11,6 +18,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
+using static Rs.MotionPlat.Commom.SchedulingMessageBox;
namespace Rs.MotionPlat.Flow
{
@@ -23,6 +31,7 @@ namespace Rs.MotionPlat.Flow
等待到取料位下方,
开真空,
取料真空检测,
+ 取料失败报警,
取料完成抬起,
等待取料完成抬起,
到放料位上方,
@@ -64,6 +73,8 @@ namespace Rs.MotionPlat.Flow
double targetY = 0.0;
int FetchNum = 0;//取料次数
ErrorCode errCode = ErrorCode.Ok;
+ string alarmInfo = string.Empty;
+ ETrayType traytype;
public void Rearrange()
{
bool finished = false;
@@ -78,7 +89,6 @@ namespace Rs.MotionPlat.Flow
DischargeFlow.Instance.Stop();
logInfo = $"接收重排任务";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.到取料位上方;
}
break;
@@ -87,10 +97,10 @@ namespace Rs.MotionPlat.Flow
curNozzle = NozzleManager.GetIdelNozzle(true);
if (curTask != null && curNozzle != null)
{
- if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis)
+ if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
{
curSlotPoint = null;
- ETrayType traytype = ETrayType.Ok;
+ traytype = ETrayType.Ok;
switch (curTask.FromType)
{
case TurnoverType.Passed:
@@ -107,8 +117,7 @@ namespace Rs.MotionPlat.Flow
}
logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料";
curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1);
- MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
+ MessageQueue.Instance.Insert(logInfo);
if (curSlotPoint != null)
{
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
@@ -128,9 +137,8 @@ namespace Rs.MotionPlat.Flow
}
else
{
- logInfo = "x y move isn't safe";
+ logInfo = "loady move isn't safe";
Msg.ShowError(logInfo);
- LogHelper.Error(logInfo);
MessageQueue.Instance.Warn(logInfo);
}
}
@@ -142,63 +150,39 @@ namespace Rs.MotionPlat.Flow
logInfo = "已运动到取料位上方";
Thread.Sleep(100);
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.到取料位下方;
}
break;
case ERearrangeFlowStep.到取料位下方:
- if (GlobalVar.VirtualAxis)
+ if (AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").HomeStatus == EHomeStatus.Finished || GlobalVar.VirtualAxis)
{
- Thread.Sleep(GlobalVar.VirtualAxisMoveTime);
- flowStep = ERearrangeFlowStep.等待到取料位下方;
+ logInfo = "准备运动到取料位下方";
+ MessageQueue.Instance.Insert(logInfo);
+ errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight"), GlobalVar.WholeSpeed);
+ if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
+ {
+ flowStep = ERearrangeFlowStep.等待到取料位下方;
+ }
}
else
{
- if (AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").HomeStatus == EHomeStatus.Finished)
- {
- logInfo = "准备运动到取料位下方";
- MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
- errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight"), GlobalVar.WholeSpeed);
- if (errCode == ErrorCode.Ok)
- {
- flowStep = ERearrangeFlowStep.等待到取料位下方;
- }
- }
- else
- {
- logInfo = $"NozzleZ{curNozzle.NozzleIndex} 不在原点,请手动回原后点击确定";
- Msg.ShowError(logInfo);
- LogHelper.Error(logInfo);
- }
+ logInfo = $"NozzleZ{curNozzle.NozzleIndex} 轴状态未回原,请手动回原后点击确定";
+ Msg.ShowError(logInfo);
+ LogHelper.Error(logInfo);
}
-
break;
case ERearrangeFlowStep.等待到取料位下方:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
logInfo = "已运动到取料位下方";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.开真空;
}
break;
case ERearrangeFlowStep.开真空:
- if (GlobalVar.VirtualAxis)
- {
- flowStep = ERearrangeFlowStep.取料完成抬起;
- }
- else
- {
- Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
- Thread.Sleep(GlobalVar.LoadNozzleOpenVacSuctionDelaytime);
- logInfo = $"打开{curNozzle.NozzleIndex}号吸嘴真空吸";
- MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
- flowStep = ERearrangeFlowStep.取料完成抬起;
- }
-
+ VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
+ flowStep = ERearrangeFlowStep.取料完成抬起;
break;
case ERearrangeFlowStep.取料完成抬起:
@@ -207,7 +191,6 @@ namespace Rs.MotionPlat.Flow
{
logInfo = "取料完成准备抬起";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.等待取料完成抬起;
}
break;
@@ -216,7 +199,6 @@ namespace Rs.MotionPlat.Flow
{
logInfo = "取料完成已运动到抬起位,准备真空检测";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.取料真空检测;
}
break;
@@ -271,111 +253,115 @@ namespace Rs.MotionPlat.Flow
}
else
{
- //FetchNum++;
- //if (FetchNum == 6)
- //{
- // //DialogResult dr = Msg.ShowError($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定", MessageBoxButtons.RetryCancel);
- // CloseResult cr = new TakeFailMsg().ShowMsg($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定");
- // if (cr.Result == ECloseButton.Retry)
- // {
- // FetchNum = 0;
- // flowStep = ERearrangeFlowStep.到取料位下方;
- // }
- // else if (cr.Result == ECloseButton.Skip)//switch
- // {
- // FetchNum = 0;
- // if (curTask.FromType == TurnoverType.Turnover)
- // {
- // GlobalTray.TurnoverTray.ChangeStatus(curTask.FromIndex + 1, ESlotStatus.NotHave);
- // }
- // else if (curTask.FromType == TurnoverType.ToBeTested)
- // {
- // GlobalTray.InputTray.ChangeStatus(GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index, ESlotStatus.NotHave);
- // }
- // if (LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode) > 0 && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
- // {
- // flowStep = ERearrangeFlowStep.到取料位上方;
- // }
- // else
- // {
- // flowStep = ERearrangeFlowStep.到下相机拍照起始位;
- // }
- // }
- // else if (cr.Result == ECloseButton.EndInput)
- // {
- // FetchNum = 0;
- // TestCenter.Instance.EndInput();
- // LoadAndUnloadTask.Instance.ClearUndoTask();
- // if (NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload).Count > 0)
- // {
- // flowStep = ERearrangeFlowStep.到下相机拍照起始位;
- // }
- // else
- // {
- // flowStep = ERearrangeFlowStep.任务结束到安全位;
- // }
- // }
- // else if (cr.Result == ECloseButton.Continue)
- // {
- // FetchNum = 0;
- // curNozzle.Status = ENozzleStatus.ToUnload;
- // curNozzle.FromType = curTask.FromType;
- // curNozzle.FromFloor = curTask.FromFloor;
-
- // curNozzle.ToType = curTask.ToType;
- // curNozzle.ToIndex = curTask.ToIndex;
- // curTask.SuckerNo = curNozzle.NozzleIndex;
- // curNozzle.TurnoverGUID = curTask.GUID;
- // if (curTask.FromType == TurnoverType.Turnover)
- // {
- // curNozzle.SN = curTask.SN;
- // curNozzle.FromIndex = curTask.FromIndex;
- // GlobalTray.TurnoverTray.ChangeStatus(curTask.FromIndex + 1, ESlotStatus.NotHave);
- // }
- // else if (curTask.FromType == TurnoverType.ToBeTested)
- // {
- // curNozzle.FromIndex = GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index;
- // GlobalTray.InputTray.ChangeStatus(GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index, ESlotStatus.NotHave);
- // }
- // curNozzle.Update();
- // curTask.Dealed = true;
- // if (LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode) > 0 && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
- // {
- // flowStep = ERearrangeFlowStep.到取料位上方;
- // }
- // else
- // {
- // if (GlobalVar.VirtualAxis)
- // {
- // foreach (Nozzle nl in NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload))
- // {
- // if (string.IsNullOrEmpty(nl.SN))
- // nl.SN = nl.FromIndex.ToString().PadLeft(18, '0');
- // //nl.SN = GuidHelper.Create();
- // }
- // mrs = new List();
- // for (int i = 0; i < needGrabNum; i++)
- // {
- // mrs.Add(new MatchResult());
- // }
- // flowStep = ERearrangeFlowStep.到放料位上方;
- // }
- // else
- // {
- // flowStep = ERearrangeFlowStep.到下相机拍照起始位;
- // }
+ if (FetchNum == 0)
+ {
+ //这个时候Z&R回原一次,然后再重新取料
+ ZRHomeFlow.Instance.GoHome(curNozzle.NozzleIndex);
+ }
+ FetchNum++;
+ if (FetchNum >= GlobalVar.DischargeRetakeNum)
+ {
+ DischargeDumpFlow.Instance.Start(curTask.FromType, curNozzle.NozzleIndex, curNozzle.FromIndex);
+ alarmInfo = string.Format(AlarmCollection.GetAlarm(AlarmConstID.料仓tray盘取料报警), curNozzle.NozzleIndex, curNozzle.FromIndex + 1);
+ flowStep = ERearrangeFlowStep.取料失败报警;
+ }
+ else
+ {
+ flowStep = ERearrangeFlowStep.到取料位下方;
+ }
+ }
+ break;
+ //TestCenterMessageBox.Show(AlarmConstID.TrayTakeFailAlarm, alarmInfo, btnText, buttonText);
+ case ERearrangeFlowStep.取料失败报警:
+ ETipButton btnText = (ETipButton.Retry | ETipButton.Skip | ETipButton.Yes);
+ Dictionary buttonText = new Dictionary();
+ buttonText.Add(ETipButton.Retry, "重试|Retry");
+ buttonText.Add(ETipButton.Skip, "跳过|Skip");
+ buttonText.Add(ETipButton.Yes, "移动到安全位|MoveToSafePos");
+ int alarmid = AlarmConstID.料仓tray盘取料报警;
+ SchedulingMessageBox box = MsgBox.ShowDialog(alarmid, alarmInfo, btnText, buttonText);
+ switch (box.Button)
+ {
+ case ETipButton.Retry:
+ logInfo = GetClassName() + $"选择了重试,继续取料";
+ MessageQueue.Instance.Insert(logInfo);
+ if (curTask.FromType == TurnoverType.ToBeTested)
+ {
+ //检测料盘是否在上料位,在上料位则继续取料,不在上料位,则通知料仓把料盘送到上料位
+ if (!StockManager.Instance.GetStock(ETrayType.Input).HasTray())
+ {
+ logInfo = GetClassName() + $"检测到料盘不在就绪状态,上料盘";
+ MessageQueue.Instance.Insert(logInfo);
+ StockManager.Instance.GetStock(ETrayType.Input).Load(EStockTrayLoadMode.AfterBacked, null);//.Load(EStockType.Input, EStockTrayLoadMode.AfterBacked);
+ }
+ }
+ FetchNum = 0;
+ flowStep = ERearrangeFlowStep.到取料位上方;
+ break;
+ case ETipButton.Skip:
+ SlotProductHasOrNotResult haveProduct = null;
+ logInfo = GetClassName() + "选择了跳过";
+ MessageQueue.Instance.Insert(logInfo);
+ if (!StockManager.Instance.GetStock(traytype).HasTray())
+ {
+ logInfo = GetClassName() + $"检测到料盘不在上料位";
+ MessageQueue.Instance.Insert(logInfo);
+ StockManager.Instance.GetStock(traytype).Load(EStockTrayLoadMode.AfterBacked, null);//.Load(EStockType.Input, EStockTrayLoadMode.AfterBacked);
+ logInfo = GetClassName() + $"上料完成,通知相机拍照,检测产品是否已拿走";
+ MessageQueue.Instance.Insert(logInfo);
+ }
+ haveProduct = UpCameraCheckFlow.Instance.CheckStockTrayHasProduct(traytype, curNozzle.FromIndex + 1, true);
+ if (!haveProduct.HasProduct)
+ {
+ logInfo = GetClassName() + "检测到产品已拿走,流程继续";
+ MessageQueue.Instance.Insert(logInfo);
+ FetchNum = 0;
+ //执行料仓Tray取料NG时的处理流程,流程处理结束后,流程继续
+ GlobalTray.GetTray(traytype).ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
+ if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
+ {
+ flowStep = ERearrangeFlowStep.到取料位上方;
+ }
+ else
+ {
+ flowStep = ERearrangeFlowStep.到放料位上方;
+ }
+ }
+ else
+ {
+ alarmInfo = $"检测到{curNozzle.FromIndex + 1}号穴位产品未取出,请处理";
+ flowStep = ERearrangeFlowStep.取料失败报警;
+ }
- // }
- // }
- //}
- //else
- //{
- // flowStep = ERearrangeFlowStep.到取料位下方;
- //}
+ break;
+ case ETipButton.Yes://移动到安全位
+ //通知料仓把料盘退回到安全位
+ if (curTask.FromType == TurnoverType.ToBeTested)
+ {
+ logInfo = GetClassName() + $"通知料仓把料盘退回到安全位";
+ MessageQueue.Instance.Insert(logInfo);
+ StockManager.Instance.GetStock(ETrayType.Input).Unload(EStockTrayUnLoadMode.Back, null);//.UnLoad(EStockType.Input, EStockTrayUnLoadMode.Back);
+ //StockManager.Instance.Wait(EStockType.Input);
+ logInfo = GetClassName() + $"料仓已退回到安全位";
+ MessageQueue.Instance.Insert(logInfo);
+ }
+ else if (curTask.FromType == TurnoverType.Turnover)
+ {
+ logInfo = GetClassName() + $"通知排料头回安全位";
+ MessageQueue.Instance.Insert(logInfo);
+ DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
+ logInfo = GetClassName() + $"排料头已回到安全位";
+ MessageQueue.Instance.Insert(logInfo);
+ }
+ alarmInfo = $"已运动到安全位,{curNozzle.NozzleIndex}号排料吸嘴取{curNozzle.FromIndex}号穴位产品次失败,请处理";
+ flowStep = ERearrangeFlowStep.取料失败报警;
+ break;
+ default:
+ break;
}
break;
case ERearrangeFlowStep.到放料位上方:
- if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis)
+ if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
{
targetX = 0.0;
targetY = 0.0;
@@ -408,7 +394,7 @@ namespace Rs.MotionPlat.Flow
}
else
{
- Msg.ShowError("x y move isn't safe");
+ Msg.ShowError("loady move isn't safe");
}
break;
case ERearrangeFlowStep.等待到放料位上方:
@@ -417,7 +403,6 @@ namespace Rs.MotionPlat.Flow
Thread.Sleep(100);
logInfo = "已运动到放料位上方";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.到放料位下方;
}
@@ -425,7 +410,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.到放料位下方:
logInfo = "到放料位下方";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight") + 3, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
@@ -435,15 +419,9 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.等待到放料位下方:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{
- logInfo = "已运动到放料位下方";
- MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
- Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
- Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
- Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
- Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
- Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
- Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
+ VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
+ VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
+ VacManager.DischargeVacBreak(EVacOperator.Close, false, curNozzle.NozzleIndex);
flowStep = ERearrangeFlowStep.放料完成抬起;
}
@@ -454,7 +432,6 @@ namespace Rs.MotionPlat.Flow
{
logInfo = "放料完成抬起";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.等待放料完成抬起;
}
break;
@@ -463,7 +440,6 @@ namespace Rs.MotionPlat.Flow
{
logInfo = "放料完成已运动到抬起位,准备真空检测";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.放料真空检测;
}
break;
@@ -473,7 +449,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.放料任务完成:
logInfo = "放料任务完成";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
if (curNozzle.ToType == TurnoverType.Passed)
{
@@ -510,7 +485,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.任务结束到安全位:
logInfo = "任务结束到安全位";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue("LoadXStartPos"), GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
@@ -526,17 +500,14 @@ namespace Rs.MotionPlat.Flow
{
logInfo = "任务结束已回到安全位";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
if (RearrangeTask.ReportCenter() > 0)
{
logInfo = "通知中控任务完成";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
RearrangeTask.RemoveAll();
logInfo = "任务完成,清除任务";
MessageQueue.Instance.Insert(logInfo);
- LogHelper.Debug(logInfo);
}
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
finished = true;
@@ -550,25 +521,24 @@ namespace Rs.MotionPlat.Flow
private double GetVacOffsetHeight(int fetchNum)
{
- switch (fetchNum)
+ if (fetchNum == 0) return 0;
+ //先判断是奇数还是偶数
+ int count = 0;
+ int oddOrEven = fetchNum & 0x01;
+
+ double offsetDisct = 0.0;
+ if (oddOrEven == 1)
{
- case 0:
- return 0;
- case 1:
- return -0.1;
- case 2:
- return -0.2;
- case 3:
- return -0.3;
- case 4:
- return 0.1;
- case 5:
- return 0.2;
- case 6:
- return 0.3;
- default:
- return 0;
+ count = (fetchNum / 2) + 1;
+ offsetDisct = -0.1 * count;
}
+
+ else if (oddOrEven == 0)
+ {
+ count = (fetchNum / 2);
+ offsetDisct = 0.1 * count;
+ }
+ return offsetDisct;
}
private SlotPoint GetSlotPoint(TurnoverType trayType)
@@ -593,5 +563,11 @@ namespace Rs.MotionPlat.Flow
}
return pt;
}
+ private string GetClassName()
+ {
+ return string.Empty;
+ }
}
+
+
}