|
|
|
@ -3,9 +3,11 @@ using Rs.DataAccess;
|
|
|
|
|
using Rs.Framework;
|
|
|
|
|
using Rs.Motion;
|
|
|
|
|
using Rs.MotionPlat.Commom;
|
|
|
|
|
using Rs.MotionPlat.Entitys;
|
|
|
|
|
using Rs.MotionPlat.Flow;
|
|
|
|
|
using Rs.MotionPlat.Flow.NormalFlow;
|
|
|
|
|
using Rs.MotionPlat.Flow.SafePosFlow;
|
|
|
|
|
using Rs.MotionPlat.Flow.SubFlow;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
@ -324,6 +326,7 @@ namespace Rs.MotionPlat.Recipe
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void TakeProduct(int slotIndex, int nozzleIndex)
|
|
|
|
|
{
|
|
|
|
|
Enum.TryParse(dt.Rows[0]["trayname"].ToString(), out ETrayType trayType);
|
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
|
Task.Run(() => {
|
|
|
|
|
while (true)
|
|
|
|
@ -335,25 +338,34 @@ namespace Rs.MotionPlat.Recipe
|
|
|
|
|
DialogResult dr = Msg.ShowQuestion("Are you sure to take product?", MessageBoxButtons.OKCancel);
|
|
|
|
|
if (dr == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
Nozzle takeNozzle=NozzleManager.GetNozzle(nozzleIndex);
|
|
|
|
|
if(Enum.TryParse<ETrayType>(m_trayName, out ETrayType takeTray))
|
|
|
|
|
ProductLocationResult fixtureret = FixedGrabProductFlow.Instance.TakePicture(trayType, slotIndex, 1);
|
|
|
|
|
if(fixtureret != null)
|
|
|
|
|
{
|
|
|
|
|
double pos = NozzleManager.GetNozzleToTrayTakeProductPos(takeTray, nozzleIndex);
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{nozzleIndex}").MovePos(pos, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode > ErrorCode.Ok) return;
|
|
|
|
|
while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
if(fixtureret.Result== EOneGrabSixteenResult.Ok || fixtureret.Result== EOneGrabSixteenResult.LocationOkScanBarcodeFail)
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(10);
|
|
|
|
|
}
|
|
|
|
|
takeNozzle.VacSuction(EIoOperate.Open,nameof(StockTrayLocationRecipe));
|
|
|
|
|
if (NozzleManager.GotoSafePos(nozzleIndex))
|
|
|
|
|
{
|
|
|
|
|
while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(10);
|
|
|
|
|
}
|
|
|
|
|
StockTakeFlow.Instance.Take(trayType, slotIndex, nozzleIndex, EStockScanBarcodeMode.Single,fixtureret,false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Nozzle takeNozzle=NozzleManager.GetNozzle(nozzleIndex);
|
|
|
|
|
//if(Enum.TryParse<ETrayType>(m_trayName, out ETrayType takeTray))
|
|
|
|
|
//{
|
|
|
|
|
// double pos = NozzleManager.GetNozzleToTrayTakeProductPos(takeTray, nozzleIndex);
|
|
|
|
|
// errCode = AxisControl.GetAxis($"NozzleZ{nozzleIndex}").MovePos(pos, GlobalVar.WholeSpeed);
|
|
|
|
|
// if (errCode > ErrorCode.Ok) return;
|
|
|
|
|
// while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
// {
|
|
|
|
|
// Thread.Sleep(10);
|
|
|
|
|
// }
|
|
|
|
|
// takeNozzle.VacSuction(EIoOperate.Open,nameof(StockTrayLocationRecipe));
|
|
|
|
|
// if (NozzleManager.GotoSafePos(nozzleIndex))
|
|
|
|
|
// {
|
|
|
|
|
// while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
// {
|
|
|
|
|
// Thread.Sleep(10);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -362,6 +374,7 @@ namespace Rs.MotionPlat.Recipe
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void DumpProduct(int slotIndex, int nozzleIndex)
|
|
|
|
|
{
|
|
|
|
|
Enum.TryParse(dt.Rows[0]["trayname"].ToString(), out ETrayType trayType);
|
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
|
Task.Run(() => {
|
|
|
|
|
while (true)
|
|
|
|
@ -373,27 +386,28 @@ namespace Rs.MotionPlat.Recipe
|
|
|
|
|
DialogResult dr = Msg.ShowQuestion("Are you sure to dump product?", MessageBoxButtons.OKCancel);
|
|
|
|
|
if (dr == DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
Nozzle takeNozzle = NozzleManager.GetNozzle(nozzleIndex);
|
|
|
|
|
if (Enum.TryParse<ETrayType>(m_trayName, out ETrayType takeTray))
|
|
|
|
|
{
|
|
|
|
|
double pos = NozzleManager.GetNozzleToTrayTakeProductPos(takeTray, nozzleIndex);
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{nozzleIndex}").MovePos(pos, GlobalVar.WholeSpeed);
|
|
|
|
|
if (errCode > ErrorCode.Ok) return;
|
|
|
|
|
while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(10);
|
|
|
|
|
}
|
|
|
|
|
takeNozzle.VacSuction(EIoOperate.Close,nameof(StockTrayLocationRecipe));
|
|
|
|
|
takeNozzle.VacBreak(EIoOperate.Open,nameof(StockTrayLocationRecipe));
|
|
|
|
|
takeNozzle.VacBreak(EIoOperate.Close, nameof(StockTrayLocationRecipe));
|
|
|
|
|
if (NozzleManager.GotoSafePos(nozzleIndex))
|
|
|
|
|
{
|
|
|
|
|
while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
StockPlaceFlow.Instance.Place(trayType, slotIndex, nozzleIndex, false,true);
|
|
|
|
|
//Nozzle takeNozzle = NozzleManager.GetNozzle(nozzleIndex);
|
|
|
|
|
//if (Enum.TryParse<ETrayType>(m_trayName, out ETrayType takeTray))
|
|
|
|
|
//{
|
|
|
|
|
// double pos = NozzleManager.GetNozzleToTrayTakeProductPos(takeTray, nozzleIndex);
|
|
|
|
|
// errCode = AxisControl.GetAxis($"NozzleZ{nozzleIndex}").MovePos(pos, GlobalVar.WholeSpeed);
|
|
|
|
|
// if (errCode > ErrorCode.Ok) return;
|
|
|
|
|
// while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
// {
|
|
|
|
|
// Thread.Sleep(10);
|
|
|
|
|
// }
|
|
|
|
|
// takeNozzle.VacSuction(EIoOperate.Close,nameof(StockTrayLocationRecipe));
|
|
|
|
|
// takeNozzle.VacBreak(EIoOperate.Open,nameof(StockTrayLocationRecipe));
|
|
|
|
|
// takeNozzle.VacBreak(EIoOperate.Close, nameof(StockTrayLocationRecipe));
|
|
|
|
|
// if (NozzleManager.GotoSafePos(nozzleIndex))
|
|
|
|
|
// {
|
|
|
|
|
// while (!Ops.IsStop($"NozzleZ{nozzleIndex}"))
|
|
|
|
|
// {
|
|
|
|
|
// Thread.Sleep(10);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|