|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
using HalconDotNet;
|
|
|
|
|
using Rs.AutoDischarge.V3.Flow;
|
|
|
|
|
using Rs.Camera;
|
|
|
|
|
using Rs.Controls;
|
|
|
|
|
using Rs.Framework;
|
|
|
|
@ -15,6 +16,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
|
|
|
|
|
{
|
|
|
|
@ -398,14 +400,27 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
FetchNum++;
|
|
|
|
|
if (FetchNum == 6)
|
|
|
|
|
{
|
|
|
|
|
Dictionary<ETipButton, string> buttonText = new Dictionary<ETipButton, string>();
|
|
|
|
|
if(curTask.FromType== TurnoverType.ToBeTested)
|
|
|
|
|
{
|
|
|
|
|
buttonText.Add(ETipButton.No, "结束上料|EndInput");
|
|
|
|
|
}
|
|
|
|
|
buttonText.Add(ETipButton.Yes, "继续|Continue");
|
|
|
|
|
buttonText.Add(ETipButton.Skip, "跳过|Skip");
|
|
|
|
|
buttonText.Add(ETipButton.Retry, "重试|Retry");
|
|
|
|
|
//DialogResult dr = Msg.ShowError($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定", MessageBoxButtons.RetryCancel);
|
|
|
|
|
CloseResult cr = new TakeFailMsg().ShowMsg($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定");
|
|
|
|
|
if (cr.Result == ECloseButton.Retry)
|
|
|
|
|
//CloseResult cr = new TakeFailMsg().ShowMsg($"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定");
|
|
|
|
|
//结束上料/跳过/重试/继续
|
|
|
|
|
ETipButton btnText = (ETipButton.Retry | ETipButton.Skip | ETipButton.Yes | ETipButton.No);
|
|
|
|
|
alarmInfo = $"吸嘴{curNozzle.NozzleIndex}取料{FetchNum}次失败报警,请处理后点击确定";
|
|
|
|
|
TestCenterMessageBox.Show(AlarmConstID.TrayTakeFailAlarm,alarmInfo , btnText);
|
|
|
|
|
SchedulingMessageBox box = TestCenterMessageBox.WaitResult(AlarmConstID.TrayTakeFailAlarm);
|
|
|
|
|
if (box.Button== ETipButton.Retry)
|
|
|
|
|
{
|
|
|
|
|
FetchNum = 0;
|
|
|
|
|
flowStep = EWorkFlowStep.到取料位下方;
|
|
|
|
|
}
|
|
|
|
|
else if (cr.Result == ECloseButton.Skip)//switch
|
|
|
|
|
else if (box.Button== ETipButton.Skip)//switch
|
|
|
|
|
{
|
|
|
|
|
FetchNum = 0;
|
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
@ -425,7 +440,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
flowStep = EWorkFlowStep.到下相机拍照起始位;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(cr.Result== ECloseButton.EndInput)
|
|
|
|
|
else if(box.Button== ETipButton.No)//结束上料
|
|
|
|
|
{
|
|
|
|
|
FetchNum = 0;
|
|
|
|
|
TestCenter.Instance.EndInput();
|
|
|
|
@ -439,7 +454,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
flowStep = EWorkFlowStep.任务结束到安全位;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (cr.Result == ECloseButton.Continue)
|
|
|
|
|
else if (box.Button== ETipButton.Yes)//继续
|
|
|
|
|
{
|
|
|
|
|
FetchNum = 0;
|
|
|
|
|
curNozzle.Status = ENozzleStatus.ToUnload;
|
|
|
|
@ -469,26 +484,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
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<MatchResult>();
|
|
|
|
|
for (int i = 0; i < needGrabNum; i++)
|
|
|
|
|
{
|
|
|
|
|
mrs.Add(new MatchResult());
|
|
|
|
|
}
|
|
|
|
|
flowStep = EWorkFlowStep.到放料位上方;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
flowStep = EWorkFlowStep.到下相机拍照起始位;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
flowStep = EWorkFlowStep.到下相机拍照起始位;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -947,7 +943,6 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
logInfo = "放料完成抬起";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
flowStep = EWorkFlowStep.等待放料完成抬起;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -956,7 +951,6 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
logInfo = "放料完成已运动到抬起位,准备真空检测";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
flowStep = EWorkFlowStep.放料真空检测;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -967,16 +961,14 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
logInfo = $"周转盘{curNozzle.ToIndex + 1}号穴位真空吸检测 OK";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
|
|
|
|
|
flowStep = EWorkFlowStep.放料任务完成;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
logInfo = $"放料时周转盘{curNozzle.ToIndex + 1}号穴位真空吸异常";
|
|
|
|
|
MessageQueue.Instance.Warn(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
DialogResult dr = Msg.ShowError($"周转盘{curNozzle.ToIndex + 1}号穴位真空吸异常,点击确定后跳过");
|
|
|
|
|
//TestCenterMessageBox.Show(AlarmConstID)
|
|
|
|
|
if (dr == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EWorkFlowStep.放料任务完成;
|
|
|
|
@ -991,7 +983,6 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
case EWorkFlowStep.放料任务完成:
|
|
|
|
|
logInfo = "放料任务完成";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
|
//Ops.HomeAndGoStartPos($"NozzleR{NozzleIndex}");
|
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
@ -1061,17 +1052,13 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
logInfo = "任务结束已回到安全位";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
if (TestCenter.Instance.LoadResult())
|
|
|
|
|
{
|
|
|
|
|
logInfo = "通知中控任务完成";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
|
|
|
|
|
LoadAndUnloadTask.Instance.Clear();
|
|
|
|
|
logInfo = "任务完成,清除任务";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
}
|
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
|
flowStep = EWorkFlowStep.等待任务;
|
|
|
|
@ -1143,49 +1130,49 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Input料仓上料完成:
|
|
|
|
|
if(StockManager.Instance.GetStockStatus(EStockType.Input)== AutoDischarge.V3.Flow.ETrayStatus.Loaded)
|
|
|
|
|
if(StockManager.Instance.GetStockStatus(EStockType.Input)== ETrayStatus.Loaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = restoreFlowStep;
|
|
|
|
|
restoreFlowStep = EWorkFlowStep.IDLE;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Ok料仓收料完成:
|
|
|
|
|
if(StockManager.Instance.GetStockStatus( EStockType.Ok)== AutoDischarge.V3.Flow.ETrayStatus.Unloaded)
|
|
|
|
|
if(StockManager.Instance.GetStockStatus( EStockType.Ok)== ETrayStatus.Unloaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EWorkFlowStep.等待Ok料盘搬运完成;
|
|
|
|
|
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ok);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Ok料盘搬运完成:
|
|
|
|
|
if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus( EStockType.Ok)== AutoDischarge.V3.Flow.ETrayStatus.Loaded)
|
|
|
|
|
if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus( EStockType.Ok)== ETrayStatus.Loaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = restoreFlowStep;
|
|
|
|
|
restoreFlowStep = EWorkFlowStep.IDLE;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Ng料仓收料完成:
|
|
|
|
|
if (StockManager.Instance.GetStockStatus(EStockType.Ng) == AutoDischarge.V3.Flow.ETrayStatus.Unloaded)
|
|
|
|
|
if (StockManager.Instance.GetStockStatus(EStockType.Ng) == ETrayStatus.Unloaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EWorkFlowStep.等待Ng料盘搬运完成;
|
|
|
|
|
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ng);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Ng料盘搬运完成:
|
|
|
|
|
if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Ng) == AutoDischarge.V3.Flow.ETrayStatus.Loaded)
|
|
|
|
|
if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Ng) == ETrayStatus.Loaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = restoreFlowStep;
|
|
|
|
|
restoreFlowStep = EWorkFlowStep.IDLE;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Multi料仓收料完成:
|
|
|
|
|
if (StockManager.Instance.GetStockStatus(EStockType.Multi) == AutoDischarge.V3.Flow.ETrayStatus.Unloaded)
|
|
|
|
|
if (StockManager.Instance.GetStockStatus(EStockType.Multi) == ETrayStatus.Unloaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = EWorkFlowStep.等待Multi料盘搬运完成;
|
|
|
|
|
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Multi);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case EWorkFlowStep.等待Multi料盘搬运完成:
|
|
|
|
|
if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Multi) == AutoDischarge.V3.Flow.ETrayStatus.Loaded)
|
|
|
|
|
if (TakeTrayFlow.Instance.TakeStatus == ETakeStatus.TakeOK && StockManager.Instance.GetStockStatus(EStockType.Multi) == ETrayStatus.Loaded)
|
|
|
|
|
{
|
|
|
|
|
flowStep = restoreFlowStep;
|
|
|
|
|
restoreFlowStep = EWorkFlowStep.IDLE;
|
|
|
|
|