|
|
|
@ -17,6 +17,7 @@ using System.Diagnostics;
|
|
|
|
|
using System.Diagnostics.Eventing.Reader;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.CompilerServices;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -291,6 +292,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
|
{
|
|
|
|
|
targetPos = GetVacOffsetHeight(reFetchNum) + SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight");
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open, false, curNozzle.NozzleIndex);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, false, curNozzle.FromIndex + 1);
|
|
|
|
|
}
|
|
|
|
|
else if (curTask.FromType == TurnoverType.ToBeTested)
|
|
|
|
|
{
|
|
|
|
@ -334,7 +337,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
/*打开排料吸嘴真空吸*/
|
|
|
|
|
//Ops.On($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
|
|
|
|
|
//Thread.Sleep(GlobalVar.LoadNozzleOpenVacSuctionDelaytime);
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open, curNozzle.NozzleIndex);
|
|
|
|
|
|
|
|
|
|
//logInfo = GetClassName()+ $"打开{curNozzle.NozzleIndex}号排料吸嘴真空吸";
|
|
|
|
|
//MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
@ -344,7 +347,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
//Ops.Off($"周转盘{curTask.FromIndex + 1}号穴位真空吸");
|
|
|
|
|
//Thread.Sleep(GlobalVar.TurnoverTrayCloseVacSuctionDelaytime);
|
|
|
|
|
//MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, curNozzle.FromIndex+1);
|
|
|
|
|
//VacManager.TurnoverTrayVacSuction(EVacOperator.Close, true, curNozzle.FromIndex+1);
|
|
|
|
|
/*打开周转盘真空破*/
|
|
|
|
|
//logInfo = GetClassName() + $"打开周转盘{curTask.FromIndex + 1}号穴位真空破";
|
|
|
|
|
//Ops.On($"周转盘{curTask.FromIndex + 1}号穴位真空破");
|
|
|
|
@ -356,7 +359,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
//Ops.Off($"周转盘{curTask.FromIndex + 1}号穴位真空破");
|
|
|
|
|
//Thread.Sleep(GlobalVar.TurnoverTrayCloseVacBreakDelaytime);
|
|
|
|
|
//MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
VacManager.TurnoverTrayVacBreak( EVacOperator.Close,curNozzle.FromIndex + 1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
|
}
|
|
|
|
|
flowStep = EDischargeFlowStep.取料完成抬起;
|
|
|
|
|
break;
|
|
|
|
@ -382,7 +389,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
|
{
|
|
|
|
|
logInfo = GetClassName()+$"取{WitchTrayWitchSlot(curNozzle.FromType, curNozzle.FromIndex)}号穴位产品完成已抬起";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
if (curTask.FromType == TurnoverType.Turnover)
|
|
|
|
|
{
|
|
|
|
|
VacManager.TurnoverTrayVacBreak(EVacOperator.Close, curNozzle.FromIndex + 1);
|
|
|
|
|
}
|
|
|
|
|
flowStep = EDischargeFlowStep.取料完成后真空检测;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -1140,6 +1151,10 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
|
{
|
|
|
|
|
targetPos = SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight");
|
|
|
|
|
/*打开周转盘真空吸*/
|
|
|
|
|
logInfo = GetClassName() + $"打开周转盘{curNozzle.ToIndex + 1}号穴位真空吸";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Open, false, curNozzle.ToIndex + 1);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -1165,18 +1180,12 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
if (curNozzle.ToType == TurnoverType.Turnover)
|
|
|
|
|
{
|
|
|
|
|
/*打开周转盘真空吸*/
|
|
|
|
|
logInfo = GetClassName() + $"打开周转盘{curNozzle.ToIndex + 1}号穴位真空吸";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
//Ops.On($"周转盘{curNozzle.ToIndex + 1}号穴位真空吸");
|
|
|
|
|
//Thread.Sleep(GlobalVar.TurnoverTrayOpenVacSuctionDelaytime);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Open, curNozzle.ToIndex + 1);
|
|
|
|
|
/*关闭排料吸嘴真空吸*/
|
|
|
|
|
logInfo = GetClassName() + $"关闭{curNozzle.NozzleIndex}号排料吸嘴真空吸";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");//关闭真空
|
|
|
|
|
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close, curNozzle.NozzleIndex);
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
|
|
|
|
|
/*打开排料吸嘴真空破*/
|
|
|
|
|
logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
@ -1192,7 +1201,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
//Ops.Off($"{curNozzle.NozzleIndex}号吸嘴真空吸电磁阀");
|
|
|
|
|
//Thread.Sleep(GlobalVar.LoadNozzleCloseVacSuctionDelaytime);
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close, curNozzle.NozzleIndex);
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close,true, curNozzle.NozzleIndex);
|
|
|
|
|
/*打开排料吸嘴真空破*/
|
|
|
|
|
logInfo = GetClassName() + $"打开{curNozzle.NozzleIndex}号排料吸嘴真空破";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
@ -1357,7 +1366,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
//排料轴先回到安全位,等待异常处理吸嘴过来处理这颗异常料
|
|
|
|
|
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
|
|
|
|
|
WarningSuckerNgFlow.Instance.DealNgProduct(ETrayType.Turnover, curNozzle.ToIndex + 1);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, curNozzle.ToIndex + 1);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, true, curNozzle.ToIndex + 1);
|
|
|
|
|
curNozzle.Reset();
|
|
|
|
|
flowStep = EDischargeFlowStep.放料任务完成;
|
|
|
|
|
exit = true;
|
|
|
|
@ -1366,7 +1375,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
if (!UpCameraCheckFlow.Instance.CheckTurnoverTrayHasProduct(null, curNozzle.ToIndex + 1))
|
|
|
|
|
{
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, curNozzle.ToIndex + 1);
|
|
|
|
|
VacManager.TurnoverTrayVacSuction(EVacOperator.Close, true, curNozzle.ToIndex + 1);
|
|
|
|
|
curNozzle.Reset();
|
|
|
|
|
flowStep = EDischargeFlowStep.放料任务完成;
|
|
|
|
|
exit = true;
|
|
|
|
@ -1471,8 +1480,18 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//复制二维码
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex-1, "");
|
|
|
|
|
//如果扫码失败再重扫一次
|
|
|
|
|
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
|
|
|
|
|
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
|
|
|
|
|
if(vrsigle.ScanBarCodeOK)
|
|
|
|
|
{
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//复制二维码
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1515,8 +1534,18 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//复制二维码
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex-1, "");
|
|
|
|
|
//如果扫码失败再重扫一次
|
|
|
|
|
UpCameraScanBarCodeFlow.Instance.ScanSingle(vr.SlotIndex, true);
|
|
|
|
|
VisionResult vrsigle = UpCameraScanBarCodeFlow.Instance.WaitSingle();
|
|
|
|
|
if (vrsigle.ScanBarCodeOK)
|
|
|
|
|
{
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, vr.SN);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//复制二维码
|
|
|
|
|
LoadAndUnloadTask.Instance.CopyBarcodeToTask(vr.SlotIndex - 1, "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|