取料失败自动回原

develop
lhiven 3 months ago
parent 6bfe88107c
commit 2d7f1dcfb0

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

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

@ -1,5 +1,6 @@
using Rs.Controls; using Rs.Controls;
using Rs.Framework; using Rs.Framework;
using Rs.Motion.Base;
using Rs.MotionPlat.Commom; using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys; using Rs.MotionPlat.Entitys;
using Rs.MotionPlat.Flow.Common; using Rs.MotionPlat.Flow.Common;
@ -36,6 +37,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
/// </summary> /// </summary>
public class StockTakeFlow public class StockTakeFlow
{ {
int takeNum = 1;
bool finished = true; bool finished = true;
Nozzle curNozzle = null; Nozzle curNozzle = null;
TraySlot waitTakeProductSlot = null; TraySlot waitTakeProductSlot = null;
@ -68,7 +70,7 @@ namespace Rs.MotionPlat.Flow.SubFlow
/// <param name="className"></param> /// <param name="className"></param>
public void Take(ETrayType trayType, int slotIndex,int nozzleIndex, EStockScanBarcodeMode scanBarCodeMode= EStockScanBarcodeMode.Multi, ProductLocationResult locaResult=null,bool needStop=true) public void Take(ETrayType trayType, int slotIndex,int nozzleIndex, EStockScanBarcodeMode scanBarCodeMode= EStockScanBarcodeMode.Multi, ProductLocationResult locaResult=null,bool needStop=true)
{ {
takeNum = 1;
if (finished) if (finished)
finished = false; finished = false;
else else
@ -252,7 +254,29 @@ namespace Rs.MotionPlat.Flow.SubFlow
} }
else 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"; logInfo = GetClassName() + $"{trayType} bin {waitTakeProductSlot.Index} take fail auto skip";
MessageQueue.Instance.Insert(logInfo); MessageQueue.Instance.Insert(logInfo);
@ -301,6 +325,8 @@ namespace Rs.MotionPlat.Flow.SubFlow
break; break;
} }
} }
}
} }
break; break;

Loading…
Cancel
Save