取料失败自动回原

8Nozzle
lhiven 6 months ago
parent 6bfe88107c
commit 2d7f1dcfb0

@ -452,7 +452,8 @@ namespace Rs.MotionPlat.Flow
else if (fixtureret != null && fixtureret.Result == EOneGrabSixteenResult.LocationOkScanBarcodeFail)
{
Nozzle idleNozzle = NozzleManager.GetIdelNozzle();
if (!GlobalVar.ScanFailToTest)
//if (!GlobalVar.ScanFailToTest)
if(false)
{
StockTakeFlow.Instance.Take(ETrayType.Input, ret.SlotIndex, idleNozzle.NozzleIndex);
//放料

@ -1,5 +1,6 @@
using Rs.Controls;
using Rs.Framework;
using Rs.Motion.Base;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow.Common;
@ -32,6 +33,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
}
public class FixtureTakeFlow
{
int takeNum = 1;
bool finished = true;
EFixtureTakeFlowStep flowStep = EFixtureTakeFlowStep.;
public FixtureTakeFlow()
@ -58,6 +60,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
AlarmEntity alarmEntity = new AlarmEntity();
public void Take(int fixtureIndex,int nozzleIndex=-1,bool btest=false, bool needStop = true)
{
takeNum = 1;
if (finished)
finished = false;
else
@ -245,9 +248,30 @@ namespace Rs.MotionPlat.Flow.SubFlow
}
else
{
if (takeNum < 2)
{
takeNum++;
IAxis homeAxis = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}");
if (homeAxis != null)
{
homeAxis.Home();
Thread.Sleep(500);
while (true)
{
if (homeAxis.HomeStatus == Motion.EHomeStatus.Finished)
{
break;
}
Thread.Sleep(100);
}
}
flowStep = EFixtureTakeFlowStep.;
}
else
{
alarmEntity = AlarmCollection.Get(AlarmConstID.).Transform(curNozzle.NozzleIndex, curFixture.Index);
if(alarmEntity!=null)
if (alarmEntity != null)
{
logInfo = alarmEntity.CN;
MessageQueue.Instance.Warn(logInfo);
@ -279,6 +303,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
Msg.ShowError("Translated document cann't find item 治具取料失败真空报警");
}
}
}
break;
default:

@ -1,5 +1,6 @@
using Rs.Controls;
using Rs.Framework;
using Rs.Motion.Base;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow.Common;
@ -36,6 +37,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
/// </summary>
public class StockTakeFlow
{
int takeNum = 1;
bool finished = true;
Nozzle curNozzle = null;
TraySlot waitTakeProductSlot = null;
@ -68,7 +70,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
/// <param name="className"></param>
public void Take(ETrayType trayType, int slotIndex,int nozzleIndex, EStockScanBarcodeMode scanBarCodeMode= EStockScanBarcodeMode.Multi, ProductLocationResult locaResult=null,bool needStop=true)
{
takeNum = 1;
if (finished)
finished = false;
else
@ -252,7 +254,29 @@ namespace Rs.MotionPlat.Flow.SubFlow
}
else
{
if(GlobalVar.BinTakeFailSkip && trayType== ETrayType.Input)
if(takeNum<2)
{
takeNum++;
IAxis homeAxis = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}");
if (homeAxis != null)
{
homeAxis.Home();
Thread.Sleep(500);
while (true)
{
if (homeAxis.HomeStatus == Motion.EHomeStatus.Finished)
{
break;
}
Thread.Sleep(100);
}
}
flowStep = EStockTakeFlowStep.;
}
else
{
if (GlobalVar.BinTakeFailSkip && trayType == ETrayType.Input)
{
logInfo = GetClassName() + $"{trayType} bin {waitTakeProductSlot.Index} take fail auto skip";
MessageQueue.Instance.Insert(logInfo);
@ -301,6 +325,8 @@ namespace Rs.MotionPlat.Flow.SubFlow
break;
}
}
}
}
break;

Loading…
Cancel
Save