优化重排时,当取料失败时增加报警处理逻辑

master
lhiven 1 year ago
parent 643fcd2663
commit 68dca5647a

@ -562,5 +562,19 @@ namespace Rs.MotionPlat.Commom
return false; return false;
} }
} }
/// <summary>
/// 判断轴是否在原点
/// </summary>
/// <param name="axisName"></param>
/// <returns></returns>
public static bool IsInOrg(string axisName)
{
IAxis axis=AxisControl.GetAxis(axisName);
axis.GetOrgStatus(out bool isInOrg);
if (isInOrg)
return true;
return false;
}
} }
} }

@ -373,7 +373,7 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
logInfo = GetClassName()+ $"NozzleZ{curNozzle.NozzleIndex} 不在原点,请手动回原后点击确定"; logInfo = GetClassName()+ $"NozzleZ{curNozzle.NozzleIndex} 轴状态未回原,请手动回原后点击确定";
MessageQueue.Instance.Warn(logInfo); MessageQueue.Instance.Warn(logInfo);
MsgBox.ShowDialog(AlarmConstID.AxisNotAtHomeAlarm, logInfo, ETipButton.Ok); MsgBox.ShowDialog(AlarmConstID.AxisNotAtHomeAlarm, logInfo, ETipButton.Ok);
} }

@ -1,8 +1,15 @@
using Rs.Camera; using Rs.AutoDischarge.V3.Flow;
using Rs.Camera;
using Rs.Controls; using Rs.Controls;
using Rs.Framework; using Rs.Framework;
using Rs.Motion; using Rs.Motion;
using Rs.MotionPlat.Commom; 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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
@ -11,6 +18,7 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using static Rs.MotionPlat.Commom.SchedulingMessageBox;
namespace Rs.MotionPlat.Flow namespace Rs.MotionPlat.Flow
{ {
@ -23,6 +31,7 @@ namespace Rs.MotionPlat.Flow
, ,
, ,
, ,
,
, ,
, ,
, ,
@ -64,6 +73,8 @@ namespace Rs.MotionPlat.Flow
double targetY = 0.0; double targetY = 0.0;
int FetchNum = 0;//取料次数 int FetchNum = 0;//取料次数
ErrorCode errCode = ErrorCode.Ok; ErrorCode errCode = ErrorCode.Ok;
string alarmInfo = string.Empty;
ETrayType traytype;
public void Rearrange() public void Rearrange()
{ {
bool finished = false; bool finished = false;
@ -78,7 +89,6 @@ namespace Rs.MotionPlat.Flow
DischargeFlow.Instance.Stop(); DischargeFlow.Instance.Stop();
logInfo = $"接收重排任务"; logInfo = $"接收重排任务";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
@ -87,10 +97,10 @@ namespace Rs.MotionPlat.Flow
curNozzle = NozzleManager.GetIdelNozzle(true); curNozzle = NozzleManager.GetIdelNozzle(true);
if (curTask != null && curNozzle != null) if (curTask != null && curNozzle != null)
{ {
if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis) if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
{ {
curSlotPoint = null; curSlotPoint = null;
ETrayType traytype = ETrayType.Ok; traytype = ETrayType.Ok;
switch (curTask.FromType) switch (curTask.FromType)
{ {
case TurnoverType.Passed: case TurnoverType.Passed:
@ -107,8 +117,7 @@ namespace Rs.MotionPlat.Flow
} }
logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料"; logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料";
curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1); curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1);
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
if (curSlotPoint != null) if (curSlotPoint != null)
{ {
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex); nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
@ -128,9 +137,8 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
logInfo = "x y move isn't safe"; logInfo = "loady move isn't safe";
Msg.ShowError(logInfo); Msg.ShowError(logInfo);
LogHelper.Error(logInfo);
MessageQueue.Instance.Warn(logInfo); MessageQueue.Instance.Warn(logInfo);
} }
} }
@ -142,63 +150,39 @@ namespace Rs.MotionPlat.Flow
logInfo = "已运动到取料位上方"; logInfo = "已运动到取料位上方";
Thread.Sleep(100); Thread.Sleep(100);
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
if (GlobalVar.VirtualAxis) if (AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").HomeStatus == EHomeStatus.Finished || GlobalVar.VirtualAxis)
{ {
Thread.Sleep(GlobalVar.VirtualAxisMoveTime); logInfo = "准备运动到取料位下方";
flowStep = ERearrangeFlowStep.; MessageQueue.Instance.Insert(logInfo);
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue<double>($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight"), GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
flowStep = ERearrangeFlowStep.;
}
} }
else else
{ {
if (AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").HomeStatus == EHomeStatus.Finished) logInfo = $"NozzleZ{curNozzle.NozzleIndex} 轴状态未回原,请手动回原后点击确定";
{ Msg.ShowError(logInfo);
logInfo = "准备运动到取料位下方"; LogHelper.Error(logInfo);
MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue<double>($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight"), GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok)
{
flowStep = ERearrangeFlowStep.;
}
}
else
{
logInfo = $"NozzleZ{curNozzle.NozzleIndex} 不在原点,请手动回原后点击确定";
Msg.ShowError(logInfo);
LogHelper.Error(logInfo);
}
} }
break; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis) if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{ {
logInfo = "已运动到取料位下方"; logInfo = "已运动到取料位下方";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
if (GlobalVar.VirtualAxis) VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
{ flowStep = ERearrangeFlowStep.;
flowStep = ERearrangeFlowStep.;
}
else
{
Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
Thread.Sleep(GlobalVar.LoadNozzleOpenVacSuctionDelaytime);
logInfo = $"打开{curNozzle.NozzleIndex}号吸嘴真空吸";
MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.;
}
break; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
@ -207,7 +191,6 @@ namespace Rs.MotionPlat.Flow
{ {
logInfo = "取料完成准备抬起"; logInfo = "取料完成准备抬起";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
@ -216,7 +199,6 @@ namespace Rs.MotionPlat.Flow
{ {
logInfo = "取料完成已运动到抬起位,准备真空检测"; logInfo = "取料完成已运动到抬起位,准备真空检测";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
@ -271,111 +253,115 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
//FetchNum++; if (FetchNum == 0)
//if (FetchNum == 6) {
//{ //这个时候Z&R回原一次然后再重新取料
// //DialogResult dr = Msg.ShowError($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定", MessageBoxButtons.RetryCancel); ZRHomeFlow.Instance.GoHome(curNozzle.NozzleIndex);
// CloseResult cr = new TakeFailMsg().ShowMsg($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定"); }
// if (cr.Result == ECloseButton.Retry) FetchNum++;
// { if (FetchNum >= GlobalVar.DischargeRetakeNum)
// FetchNum = 0; {
// flowStep = ERearrangeFlowStep.到取料位下方; DischargeDumpFlow.Instance.Start(curTask.FromType, curNozzle.NozzleIndex, curNozzle.FromIndex);
// } alarmInfo = string.Format(AlarmCollection.GetAlarm(AlarmConstID.tray), curNozzle.NozzleIndex, curNozzle.FromIndex + 1);
// else if (cr.Result == ECloseButton.Skip)//switch flowStep = ERearrangeFlowStep.;
// { }
// FetchNum = 0; else
// if (curTask.FromType == TurnoverType.Turnover) {
// { flowStep = ERearrangeFlowStep.;
// GlobalTray.TurnoverTray.ChangeStatus(curTask.FromIndex + 1, ESlotStatus.NotHave); }
// } }
// else if (curTask.FromType == TurnoverType.ToBeTested) break;
// { //TestCenterMessageBox.Show(AlarmConstID.TrayTakeFailAlarm, alarmInfo, btnText, buttonText);
// GlobalTray.InputTray.ChangeStatus(GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index, ESlotStatus.NotHave); case ERearrangeFlowStep.:
// } ETipButton btnText = (ETipButton.Retry | ETipButton.Skip | ETipButton.Yes);
// if (LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode) > 0 && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0) Dictionary<ETipButton, string> buttonText = new Dictionary<ETipButton, string>();
// { buttonText.Add(ETipButton.Retry, "重试|Retry");
// flowStep = ERearrangeFlowStep.到取料位上方; buttonText.Add(ETipButton.Skip, "跳过|Skip");
// } buttonText.Add(ETipButton.Yes, "移动到安全位|MoveToSafePos");
// else int alarmid = AlarmConstID.tray;
// { SchedulingMessageBox box = MsgBox.ShowDialog(alarmid, alarmInfo, btnText, buttonText);
// flowStep = ERearrangeFlowStep.到下相机拍照起始位; switch (box.Button)
// } {
// } case ETipButton.Retry:
// else if (cr.Result == ECloseButton.EndInput) logInfo = GetClassName() + $"选择了重试,继续取料";
// { MessageQueue.Instance.Insert(logInfo);
// FetchNum = 0; if (curTask.FromType == TurnoverType.ToBeTested)
// TestCenter.Instance.EndInput(); {
// LoadAndUnloadTask.Instance.ClearUndoTask(); //检测料盘是否在上料位,在上料位则继续取料,不在上料位,则通知料仓把料盘送到上料位
// if (NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload).Count > 0) if (!StockManager.Instance.GetStock(ETrayType.Input).HasTray())
// { {
// flowStep = ERearrangeFlowStep.到下相机拍照起始位; logInfo = GetClassName() + $"检测到料盘不在就绪状态,上料盘";
// } MessageQueue.Instance.Insert(logInfo);
// else StockManager.Instance.GetStock(ETrayType.Input).Load(EStockTrayLoadMode.AfterBacked, null);//.Load(EStockType.Input, EStockTrayLoadMode.AfterBacked);
// { }
// flowStep = ERearrangeFlowStep.任务结束到安全位; }
// } FetchNum = 0;
// } flowStep = ERearrangeFlowStep.;
// else if (cr.Result == ECloseButton.Continue) break;
// { case ETipButton.Skip:
// FetchNum = 0; SlotProductHasOrNotResult haveProduct = null;
// curNozzle.Status = ENozzleStatus.ToUnload; logInfo = GetClassName() + "选择了跳过";
// curNozzle.FromType = curTask.FromType; MessageQueue.Instance.Insert(logInfo);
// curNozzle.FromFloor = curTask.FromFloor; if (!StockManager.Instance.GetStock(traytype).HasTray())
{
// curNozzle.ToType = curTask.ToType; logInfo = GetClassName() + $"检测到料盘不在上料位";
// curNozzle.ToIndex = curTask.ToIndex; MessageQueue.Instance.Insert(logInfo);
// curTask.SuckerNo = curNozzle.NozzleIndex; StockManager.Instance.GetStock(traytype).Load(EStockTrayLoadMode.AfterBacked, null);//.Load(EStockType.Input, EStockTrayLoadMode.AfterBacked);
// curNozzle.TurnoverGUID = curTask.GUID; logInfo = GetClassName() + $"上料完成,通知相机拍照,检测产品是否已拿走";
// if (curTask.FromType == TurnoverType.Turnover) MessageQueue.Instance.Insert(logInfo);
// { }
// curNozzle.SN = curTask.SN; haveProduct = UpCameraCheckFlow.Instance.CheckStockTrayHasProduct(traytype, curNozzle.FromIndex + 1, true);
// curNozzle.FromIndex = curTask.FromIndex; if (!haveProduct.HasProduct)
// GlobalTray.TurnoverTray.ChangeStatus(curTask.FromIndex + 1, ESlotStatus.NotHave); {
// } logInfo = GetClassName() + "检测到产品已拿走,流程继续";
// else if (curTask.FromType == TurnoverType.ToBeTested) MessageQueue.Instance.Insert(logInfo);
// { FetchNum = 0;
// curNozzle.FromIndex = GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index; //执行料仓Tray取料NG时的处理流程流程处理结束后流程继续
// GlobalTray.InputTray.ChangeStatus(GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index, ESlotStatus.NotHave); GlobalTray.GetTray(traytype).ChangeStatus(curNozzle.FromIndex + 1, ESlotStatus.NotHave);
// } if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
// curNozzle.Update(); {
// curTask.Dealed = true; flowStep = ERearrangeFlowStep.;
// if (LoadAndUnloadTask.Instance.GetTaskNum(curTask.taskMode) > 0 && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0) }
// { else
// flowStep = ERearrangeFlowStep.到取料位上方; {
// } flowStep = ERearrangeFlowStep.;
// else }
// { }
// if (GlobalVar.VirtualAxis) else
// { {
// foreach (Nozzle nl in NozzleManager.GetNozzlesByStatus(ENozzleStatus.ToUnload)) alarmInfo = $"检测到{curNozzle.FromIndex + 1}号穴位产品未取出,请处理";
// { flowStep = ERearrangeFlowStep.;
// if (string.IsNullOrEmpty(nl.SN)) }
// nl.SN = nl.FromIndex.ToString().PadLeft(18, '0');
// //nl.SN = GuidHelper.Create();
// }
// mrs = new List<MatchResult>();
// for (int i = 0; i < needGrabNum; i++)
// {
// mrs.Add(new MatchResult());
// }
// flowStep = ERearrangeFlowStep.到放料位上方;
// }
// else
// {
// flowStep = ERearrangeFlowStep.到下相机拍照起始位;
// }
// } break;
// } case ETipButton.Yes://移动到安全位
//} //通知料仓把料盘退回到安全位
//else if (curTask.FromType == TurnoverType.ToBeTested)
//{ {
// flowStep = ERearrangeFlowStep.到取料位下方; 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; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
if (SafeControl.Instance.XYCanMove() || GlobalVar.VirtualAxis) if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
{ {
targetX = 0.0; targetX = 0.0;
targetY = 0.0; targetY = 0.0;
@ -408,7 +394,7 @@ namespace Rs.MotionPlat.Flow
} }
else else
{ {
Msg.ShowError("x y move isn't safe"); Msg.ShowError("loady move isn't safe");
} }
break; break;
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
@ -417,7 +403,6 @@ namespace Rs.MotionPlat.Flow
Thread.Sleep(100); Thread.Sleep(100);
logInfo = "已运动到放料位上方"; logInfo = "已运动到放料位上方";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
@ -425,7 +410,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
logInfo = "到放料位下方"; logInfo = "到放料位下方";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight") + 3, GlobalVar.WholeSpeed); errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight") + 3, GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis) if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{ {
@ -435,15 +419,9 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis) if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
{ {
logInfo = "已运动到放料位下方"; VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
MessageQueue.Instance.Insert(logInfo); VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
LogHelper.Debug(logInfo); VacManager.DischargeVacBreak(EVacOperator.Close, false, curNozzle.NozzleIndex);
Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
Thread.Sleep(GlobalVar.LoadNozzleOpenVacBreakDelaytime);
Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空破电磁阀");
Thread.Sleep(GlobalVar.LoadNozzleCloseVacBreakDelaytime);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
@ -454,7 +432,6 @@ namespace Rs.MotionPlat.Flow
{ {
logInfo = "放料完成抬起"; logInfo = "放料完成抬起";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
@ -463,7 +440,6 @@ namespace Rs.MotionPlat.Flow
{ {
logInfo = "放料完成已运动到抬起位,准备真空检测"; logInfo = "放料完成已运动到抬起位,准备真空检测";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
flowStep = ERearrangeFlowStep.; flowStep = ERearrangeFlowStep.;
} }
break; break;
@ -473,7 +449,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
logInfo = "放料任务完成"; logInfo = "放料任务完成";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home(); AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
if (curNozzle.ToType == TurnoverType.Passed) if (curNozzle.ToType == TurnoverType.Passed)
{ {
@ -510,7 +485,6 @@ namespace Rs.MotionPlat.Flow
case ERearrangeFlowStep.: case ERearrangeFlowStep.:
logInfo = "任务结束到安全位"; logInfo = "任务结束到安全位";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>("LoadXStartPos"), GlobalVar.WholeSpeed); errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>("LoadXStartPos"), GlobalVar.WholeSpeed);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis) if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{ {
@ -526,17 +500,14 @@ namespace Rs.MotionPlat.Flow
{ {
logInfo = "任务结束已回到安全位"; logInfo = "任务结束已回到安全位";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
if (RearrangeTask.ReportCenter() > 0) if (RearrangeTask.ReportCenter() > 0)
{ {
logInfo = "通知中控任务完成"; logInfo = "通知中控任务完成";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
RearrangeTask.RemoveAll(); RearrangeTask.RemoveAll();
logInfo = "任务完成,清除任务"; logInfo = "任务完成,清除任务";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
LogHelper.Debug(logInfo);
} }
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting); MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
finished = true; finished = true;
@ -550,25 +521,24 @@ namespace Rs.MotionPlat.Flow
private double GetVacOffsetHeight(int fetchNum) 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: count = (fetchNum / 2) + 1;
return 0; offsetDisct = -0.1 * count;
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;
} }
else if (oddOrEven == 0)
{
count = (fetchNum / 2);
offsetDisct = 0.1 * count;
}
return offsetDisct;
} }
private SlotPoint GetSlotPoint(TurnoverType trayType) private SlotPoint GetSlotPoint(TurnoverType trayType)
@ -593,5 +563,11 @@ namespace Rs.MotionPlat.Flow
} }
return pt; return pt;
} }
private string GetClassName()
{
return string.Empty;
}
} }
} }

Loading…
Cancel
Save