|
|
@ -7,6 +7,7 @@ using Rs.MotionPlat.Commom;
|
|
|
|
using Rs.MotionPlat.Entitys;
|
|
|
|
using Rs.MotionPlat.Entitys;
|
|
|
|
using Rs.MotionPlat.Entitys.Trays;
|
|
|
|
using Rs.MotionPlat.Entitys.Trays;
|
|
|
|
using Rs.MotionPlat.Flow.Camera;
|
|
|
|
using Rs.MotionPlat.Flow.Camera;
|
|
|
|
|
|
|
|
using Rs.MotionPlat.Flow.Common;
|
|
|
|
using Rs.MotionPlat.Flow.NgFlow;
|
|
|
|
using Rs.MotionPlat.Flow.NgFlow;
|
|
|
|
using Rs.MotionPlat.Flow.SafePosFlow;
|
|
|
|
using Rs.MotionPlat.Flow.SafePosFlow;
|
|
|
|
using Rs.MotionPlat.Flow.SubFlow;
|
|
|
|
using Rs.MotionPlat.Flow.SubFlow;
|
|
|
@ -69,12 +70,14 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
TurnoverInfo curTask;
|
|
|
|
TurnoverInfo curTask;
|
|
|
|
SlotPoint curSlotPoint;
|
|
|
|
SlotPoint curSlotPoint;
|
|
|
|
SlotPoint nozzleDist;
|
|
|
|
SlotPoint nozzleDist;
|
|
|
|
double targetX = 0.0;
|
|
|
|
//double targetX = 0.0;
|
|
|
|
double targetY = 0.0;
|
|
|
|
//double targetY = 0.0;
|
|
|
|
int FetchNum = 0;//取料次数
|
|
|
|
int FetchNum = 0;//取料次数
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
ErrorCode errCode = ErrorCode.Ok;
|
|
|
|
string alarmInfo = string.Empty;
|
|
|
|
string alarmInfo = string.Empty;
|
|
|
|
ETrayType traytype;
|
|
|
|
ETrayType traytype;
|
|
|
|
|
|
|
|
AlarmEntity alarmEntity = null;
|
|
|
|
|
|
|
|
TargetPosition targetPosition = new TargetPosition();
|
|
|
|
public void Rearrange()
|
|
|
|
public void Rearrange()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
bool finished = false;
|
|
|
|
bool finished = false;
|
|
|
@ -87,7 +90,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (RearrangeTask.HasTask() && WorkEnvironment.Instance.EnvironmentOk)
|
|
|
|
if (RearrangeTask.HasTask() && WorkEnvironment.Instance.EnvironmentOk)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DischargeFlow.Instance.Stop();
|
|
|
|
DischargeFlow.Instance.Stop();
|
|
|
|
logInfo = $"接收重排任务";
|
|
|
|
logInfo = GetClassName()+$"接收重排任务";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位上方;
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位上方;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -115,31 +118,51 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logInfo = $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料";
|
|
|
|
logInfo = GetClassName() + $"吸嘴{curNozzle.NozzleIndex} 去{traytype}盘 {curTask.FromIndex + 1} 号穴位取料";
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1);
|
|
|
|
curSlotPoint = TrayPointManager.GetSlotPoint(traytype, curTask.FromIndex + 1);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (curSlotPoint != null)
|
|
|
|
if (curSlotPoint != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
|
|
|
|
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
|
|
|
|
targetX = curSlotPoint.X + nozzleDist.X;
|
|
|
|
targetPosition.X = curSlotPoint.X + nozzleDist.X;
|
|
|
|
targetY = curSlotPoint.Y + nozzleDist.Y;
|
|
|
|
targetPosition.Y = curSlotPoint.Y + nozzleDist.Y;
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetX, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
errCode = AxisControl.LoadY.MovePos(targetPosition.Y, (int)(GlobalVar.WholeSpeed));
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleR{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue<Double>($"NozzleR{curNozzle.NozzleIndex}StartPos"), (int)(GlobalVar.WholeSpeed));
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleR{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue<Double>($"NozzleR{curNozzle.NozzleIndex}StartPos"), (int)(GlobalVar.WholeSpeed));
|
|
|
|
errCode = AxisControl.LoadY.MovePos(targetY, (int)(GlobalVar.WholeSpeed));
|
|
|
|
if(errCode== ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok | GlobalVar.VirtualAxis)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = ERearrangeFlowStep.等待到取料位上方;
|
|
|
|
flowStep = ERearrangeFlowStep.等待到取料位上方;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleR{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadY运动异常).Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadX运动异常).Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "loady move isn't safe";
|
|
|
|
//logInfo = "loady move isn't safe";
|
|
|
|
Msg.ShowError(logInfo);
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.运动不安全).Transform("LoadY","TurnoverY");
|
|
|
|
MessageQueue.Instance.Warn(logInfo);
|
|
|
|
//Msg.ShowError(logInfo);
|
|
|
|
|
|
|
|
MessageQueue.Instance.Warn(GetClassName()+ alarmEntity.CN);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -147,57 +170,67 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case ERearrangeFlowStep.等待到取料位上方:
|
|
|
|
case ERearrangeFlowStep.等待到取料位上方:
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "已运动到取料位上方";
|
|
|
|
if(AxisArrived.LoadXYIsArrived(targetPosition.X,targetPosition.Y))
|
|
|
|
Thread.Sleep(100);
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + "已运动到取料位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位下方;
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位下方;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位上方;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.到取料位下方:
|
|
|
|
case ERearrangeFlowStep.到取料位下方:
|
|
|
|
if (AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").HomeStatus == EHomeStatus.Finished || GlobalVar.VirtualAxis)
|
|
|
|
logInfo = GetClassName() + "准备运动到取料位下方";
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = "准备运动到取料位下方";
|
|
|
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue<double>($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight"), GlobalVar.WholeSpeed);
|
|
|
|
targetPosition.Z = GetVacOffsetHeight(FetchNum) + SysConfigParam.GetValue<double>($"TrayNozzle{curNozzle.NozzleIndex}TakeHeight");
|
|
|
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPosition.Z, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = ERearrangeFlowStep.等待到取料位下方;
|
|
|
|
flowStep = ERearrangeFlowStep.等待到取料位下方;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = $"NozzleZ{curNozzle.NozzleIndex} 轴状态未回原,请手动回原后点击确定";
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleZ{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
Msg.ShowError(logInfo);
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
LogHelper.Error(logInfo);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待到取料位下方:
|
|
|
|
case ERearrangeFlowStep.等待到取料位下方:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "已运动到取料位下方";
|
|
|
|
logInfo = GetClassName() + "已运动到取料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.开真空;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case ERearrangeFlowStep.开真空:
|
|
|
|
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
flowStep = ERearrangeFlowStep.取料完成抬起;
|
|
|
|
flowStep = ERearrangeFlowStep.取料完成抬起;
|
|
|
|
|
|
|
|
//flowStep = ERearrangeFlowStep.开真空;
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//case ERearrangeFlowStep.开真空:
|
|
|
|
|
|
|
|
// VacManager.DischargeVacSuction(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
|
|
|
|
// flowStep = ERearrangeFlowStep.取料完成抬起;
|
|
|
|
|
|
|
|
// break;
|
|
|
|
|
|
|
|
|
|
|
|
case ERearrangeFlowStep.取料完成抬起:
|
|
|
|
case ERearrangeFlowStep.取料完成抬起:
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
targetPosition.Z = 0;
|
|
|
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPosition.Z, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "取料完成准备抬起";
|
|
|
|
logInfo = GetClassName() + "取料完成准备抬起";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.等待取料完成抬起;
|
|
|
|
flowStep = ERearrangeFlowStep.等待取料完成抬起;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleZ{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待取料完成抬起:
|
|
|
|
case ERearrangeFlowStep.等待取料完成抬起:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "取料完成已运动到抬起位,准备真空检测";
|
|
|
|
logInfo = GetClassName() + "取料完成已运动到抬起位";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.取料真空检测;
|
|
|
|
flowStep = ERearrangeFlowStep.取料真空检测;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -206,9 +239,8 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
if (Ops.IsOn($"{curNozzle.NozzleIndex}号吸嘴真空吸检测") || GlobalVar.RunSpace || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsOn($"{curNozzle.NozzleIndex}号吸嘴真空吸检测") || GlobalVar.RunSpace || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FetchNum = 0;
|
|
|
|
FetchNum = 0;
|
|
|
|
logInfo = $"吸嘴{curNozzle.NozzleIndex}真空检测 OK";
|
|
|
|
logInfo = GetClassName() + $"吸嘴{curNozzle.NozzleIndex}真空检测 OK";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
LogHelper.Debug(logInfo);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
curNozzle.Status = ENozzleStatus.ToUnload;
|
|
|
|
curNozzle.Status = ENozzleStatus.ToUnload;
|
|
|
|
curNozzle.FromType = curTask.FromType;
|
|
|
|
curNozzle.FromType = curTask.FromType;
|
|
|
@ -241,7 +273,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
curTask.Dealed = true;
|
|
|
|
curTask.Dealed = true;
|
|
|
|
if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
|
|
|
|
if (RearrangeTask.HasTask() && NozzleManager.GetNozzlesByStatus(ENozzleStatus.IDLE).Count > 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = $"检测到还有条任务未执行,继续执行";
|
|
|
|
logInfo = GetClassName() + $"检测到还有条任务未执行,继续执行";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位上方;
|
|
|
|
flowStep = ERearrangeFlowStep.到取料位上方;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -360,8 +392,6 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
case ERearrangeFlowStep.到放料位上方:
|
|
|
|
case ERearrangeFlowStep.到放料位上方:
|
|
|
|
if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
|
|
|
|
if (DischargeFlow.Instance.XYCanGoLocalArea() || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
targetX = 0.0;
|
|
|
|
|
|
|
|
targetY = 0.0;
|
|
|
|
|
|
|
|
///获取需要放料的吸嘴
|
|
|
|
///获取需要放料的吸嘴
|
|
|
|
curSlotPoint = null;
|
|
|
|
curSlotPoint = null;
|
|
|
|
curNozzle = NozzleManager.GetToUnloadNozzle();
|
|
|
|
curNozzle = NozzleManager.GetToUnloadNozzle();
|
|
|
@ -371,13 +401,15 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (curSlotPoint != null)
|
|
|
|
if (curSlotPoint != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + "到放料位上方";
|
|
|
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
|
|
|
|
nozzleDist = TrayPointManager.GetDistToNozzle1(curNozzle.NozzleIndex);
|
|
|
|
targetX = curSlotPoint.X + nozzleDist.X;
|
|
|
|
targetPosition.X = curSlotPoint.X + nozzleDist.X;
|
|
|
|
targetY = curSlotPoint.Y + nozzleDist.Y;
|
|
|
|
targetPosition.Y = curSlotPoint.Y + nozzleDist.Y;
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetX, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errCode = AxisControl.LoadY.MovePos(targetY, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.LoadY.MovePos(targetPosition.Y, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleR{curNozzle.NozzleIndex}").MoveOffset(0, GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleR{curNozzle.NozzleIndex}").MoveOffset(0, GlobalVar.WholeSpeed);
|
|
|
@ -385,57 +417,97 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = ERearrangeFlowStep.等待到放料位上方;
|
|
|
|
flowStep = ERearrangeFlowStep.等待到放料位上方;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleR{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadY运动异常).Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Msg.ShowError("loady move isn't safe");
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadX运动异常).Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.运动不安全).Transform("LoadY", "TurnoverY");
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待到放料位上方:
|
|
|
|
case ERearrangeFlowStep.等待到放料位上方:
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY", $"NozzleR{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Thread.Sleep(100);
|
|
|
|
if(AxisArrived.LoadXYIsArrived(targetPosition.X,targetPosition.Y))
|
|
|
|
logInfo = "已运动到放料位上方";
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + "已运动到放料位上方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.到放料位下方;
|
|
|
|
flowStep = ERearrangeFlowStep.到放料位下方;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
flowStep = ERearrangeFlowStep.到放料位上方;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.到放料位下方:
|
|
|
|
case ERearrangeFlowStep.到放料位下方:
|
|
|
|
logInfo = "到放料位下方";
|
|
|
|
logInfo = GetClassName() + "到放料位下方";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight") + 3, GlobalVar.WholeSpeed);
|
|
|
|
targetPosition.Z = SysConfigParam.GetValue<double>($"TurnoverNozzle{curNozzle.NozzleIndex}TakeHeight") + 3;
|
|
|
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPosition.Z, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = ERearrangeFlowStep.等待到放料位下方;
|
|
|
|
flowStep = ERearrangeFlowStep.等待到放料位下方;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleZ{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待到放料位下方:
|
|
|
|
case ERearrangeFlowStep.等待到放料位下方:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if(AxisArrived.LoadXYIsArrived(targetPosition.X,targetPosition.Y))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + "已运动到放料位下方";
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacSuction(EVacOperator.Close, true, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacBreak(EVacOperator.Open, true, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacBreak(EVacOperator.Close, false, curNozzle.NozzleIndex);
|
|
|
|
VacManager.DischargeVacBreak(EVacOperator.Close, false, curNozzle.NozzleIndex);
|
|
|
|
flowStep = ERearrangeFlowStep.放料完成抬起;
|
|
|
|
flowStep = ERearrangeFlowStep.放料完成抬起;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
flowStep = ERearrangeFlowStep.到放料位上方;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.放料完成抬起:
|
|
|
|
case ERearrangeFlowStep.放料完成抬起:
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(0, GlobalVar.WholeSpeed);
|
|
|
|
targetPosition.Z = 0;
|
|
|
|
|
|
|
|
errCode = AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").MovePos(targetPosition.Z, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "放料完成抬起";
|
|
|
|
logInfo = GetClassName() + "放料完成抬起";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.等待放料完成抬起;
|
|
|
|
flowStep = ERearrangeFlowStep.等待放料完成抬起;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get($"NozzleZ{curNozzle.NozzleIndex}运动异常").Transform(errCode);
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待放料完成抬起:
|
|
|
|
case ERearrangeFlowStep.等待放料完成抬起:
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop($"NozzleZ{curNozzle.NozzleIndex}") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "放料完成已运动到抬起位,准备真空检测";
|
|
|
|
logInfo = GetClassName() + "放料完成已运动到抬起位";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
flowStep = ERearrangeFlowStep.放料真空检测;
|
|
|
|
flowStep = ERearrangeFlowStep.放料真空检测;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -444,9 +516,9 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
flowStep = ERearrangeFlowStep.放料任务完成;
|
|
|
|
flowStep = ERearrangeFlowStep.放料任务完成;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.放料任务完成:
|
|
|
|
case ERearrangeFlowStep.放料任务完成:
|
|
|
|
logInfo = "放料任务完成";
|
|
|
|
logInfo = GetClassName() + "放料任务完成";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
//AxisControl.GetAxis($"NozzleZ{curNozzle.NozzleIndex}").Home();
|
|
|
|
if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
if (curNozzle.ToType == TurnoverType.Passed)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
|
GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have);
|
|
|
@ -480,22 +552,36 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ERearrangeFlowStep.任务结束到安全位:
|
|
|
|
case ERearrangeFlowStep.任务结束到安全位:
|
|
|
|
logInfo = "任务结束到安全位";
|
|
|
|
logInfo = GetClassName() + "任务结束到安全位";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
errCode = AxisControl.LoadX.MovePos(SysConfigParam.GetValue<double>("LoadXStartPos"), GlobalVar.WholeSpeed);
|
|
|
|
targetPosition.X = SysConfigParam.GetValue<double>("LoadXStartPos");
|
|
|
|
|
|
|
|
targetPosition.Y = SysConfigParam.GetValue<double>("LoadYStartPos");
|
|
|
|
|
|
|
|
errCode = AxisControl.LoadX.MovePos(targetPosition.X, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
errCode = AxisControl.LoadY.MovePos(SysConfigParam.GetValue<double>("LoadYStartPos"), GlobalVar.WholeSpeed);
|
|
|
|
errCode = AxisControl.LoadY.MovePos(targetPosition.Y, GlobalVar.WholeSpeed);
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务结束到安全位;
|
|
|
|
flowStep = ERearrangeFlowStep.等待任务结束到安全位;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadY运动异常).Transform(errCode.ToString());
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
alarmEntity = AlarmCollection.Get(AlarmConstID.LoadX运动异常).Transform(errCode.ToString());
|
|
|
|
|
|
|
|
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case ERearrangeFlowStep.等待任务结束到安全位:
|
|
|
|
case ERearrangeFlowStep.等待任务结束到安全位:
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis)
|
|
|
|
if (Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logInfo = "任务结束已回到安全位";
|
|
|
|
if(AxisArrived.LoadXYIsArrived(targetPosition.X,targetPosition.Y))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logInfo = GetClassName() + "任务结束已回到安全位";
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
if (RearrangeTask.ReportCenter() > 0)
|
|
|
|
if (RearrangeTask.ReportCenter() > 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -509,6 +595,11 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
MachineManage.Instance.SetLoadUnloadStatus(ERunState.Waiting);
|
|
|
|
finished = true;
|
|
|
|
finished = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
flowStep = ERearrangeFlowStep.任务结束到安全位;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -562,7 +653,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private string GetClassName()
|
|
|
|
private string GetClassName()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return string.Empty;
|
|
|
|
return "RearrangeFlow_";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|