|
|
|
@ -113,8 +113,10 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 周转流程
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class TurnoverFlow : BaseFlow
|
|
|
|
|
public class TurnoverFlow
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private Task mainTask;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 周转盘取料是否完成
|
|
|
|
|
/// </summary>
|
|
|
|
@ -170,7 +172,22 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
double targetTurnoverY = 0.0;
|
|
|
|
|
double targetTurnoverZ = 0.0;
|
|
|
|
|
double targetPressZ = 0.0;
|
|
|
|
|
string logInfo = string.Empty;
|
|
|
|
|
string alarmInfo = string.Empty;
|
|
|
|
|
Stopwatch timeStatistics = new Stopwatch();
|
|
|
|
|
bool stop = true;
|
|
|
|
|
bool run = true;
|
|
|
|
|
|
|
|
|
|
public void Init()
|
|
|
|
|
{
|
|
|
|
|
mainTask = new Task(Run);
|
|
|
|
|
mainTask.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Deinit()
|
|
|
|
|
{
|
|
|
|
|
run = false;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 可以下料到周转盘
|
|
|
|
|
/// </summary>
|
|
|
|
@ -189,8 +206,15 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
/// 获取未执行的任务
|
|
|
|
|
/// </summary>
|
|
|
|
|
private List<TurnoverInfo> undealTasks = new List<TurnoverInfo>();
|
|
|
|
|
public override void Run()
|
|
|
|
|
public void Run()
|
|
|
|
|
{
|
|
|
|
|
while (run)
|
|
|
|
|
{
|
|
|
|
|
if(stop || !GlobalVar.DeviceIsAuto)
|
|
|
|
|
{
|
|
|
|
|
Thread.Sleep(10);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
switch (Step)
|
|
|
|
|
{
|
|
|
|
|
case ETurnoverFlowStep.等待任务:
|
|
|
|
@ -284,6 +308,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + "选择了移动到安全位";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -340,7 +365,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
ActionStart();
|
|
|
|
|
logInfo = GetClassName() + $"到周转盘取料位上方,tx:{targetTurnoverX},ty:{targetTurnoverY}";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
if(GlobalVar.EnableIndexTimeStatistics)
|
|
|
|
|
if (GlobalVar.EnableIndexTimeStatistics)
|
|
|
|
|
{
|
|
|
|
|
timeStatistics.Restart();
|
|
|
|
|
}
|
|
|
|
@ -398,7 +423,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ETurnoverFlowStep.取料异常报警:
|
|
|
|
|
if(!GlobalVar.DisableTurnoverTrayKnock && GlobalVar.EnableTurnoverNozzleTakeFailKnock)
|
|
|
|
|
if (!GlobalVar.DisableTurnoverTrayKnock && GlobalVar.EnableTurnoverNozzleTakeFailKnock)
|
|
|
|
|
{
|
|
|
|
|
TrayShake.Shake(ETrayType.Turnover);
|
|
|
|
|
}
|
|
|
|
@ -468,6 +493,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = $"选择了移动到安全位";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.TurnoverTray);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -889,6 +915,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + $"点击了移动到安全位按钮";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.TransitNozzle);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -1202,6 +1229,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
case ETipButton.Yes:
|
|
|
|
|
MessageQueue.Instance.Insert(GetClassName() + $"点击了移动到安全位按钮");
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.TransitNozzle);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -1279,6 +1307,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常");
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1309,6 +1338,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}光钎异常");
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1373,6 +1403,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常");
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1402,6 +1433,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
LogHelper.Debug($"治具穴位{nozzle.NozzleIndex}真空异常");
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1796,6 +1828,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1825,6 +1858,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1869,6 +1903,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
case ETipButton.Yes://移动到安全位
|
|
|
|
|
VacManager.TestTrayVacSuction(EVacOperator.Close, true, slot.Index);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1890,6 +1925,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
case ETipButton.Yes://移动到安全位
|
|
|
|
|
VacManager.TestTrayVacSuction(EVacOperator.Close, true, slot.Index);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -2087,6 +2123,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + $"选择了移动到安全位按钮";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketTakeFail);
|
|
|
|
|
Start();
|
|
|
|
|
//if (testedSlots.Select(ts => (ts.Index >= 9 && ts.Index <= 16)).Count() > 0)
|
|
|
|
|
//{
|
|
|
|
|
// TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.SocketFrom9ToSixteen);
|
|
|
|
@ -2146,6 +2183,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.Socket);
|
|
|
|
|
}
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -2555,6 +2593,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + $"点击了移动到安全位按钮";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.TransitNozzle);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -2785,7 +2824,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
if (AxisArrived.TurnoverZIsInTargetPos(targetTurnoverZ))
|
|
|
|
|
{
|
|
|
|
|
ActionEnd("周转盘放料完成抬起");
|
|
|
|
|
if(!GlobalVar.DisableTurnoverTrayKnock && GlobalVar.EnableTurnoverNozzlePutToTurnoverTrayKnock)
|
|
|
|
|
if (!GlobalVar.DisableTurnoverTrayKnock && GlobalVar.EnableTurnoverNozzlePutToTurnoverTrayKnock)
|
|
|
|
|
{
|
|
|
|
|
TrayShake.ShakeAsync(ETrayType.Turnover);
|
|
|
|
|
}
|
|
|
|
@ -2865,6 +2904,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + "点击了移动到安全位按钮";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
TransitModuleSafePosFlow.Instance.GoSafePostion(EExceptionSafePos.TransitNozzle);
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -2967,6 +3007,7 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
logInfo = GetClassName() + "选择了移动到安全位";
|
|
|
|
|
MessageQueue.Instance.Insert(logInfo);
|
|
|
|
|
DischargeModuleGoSafePosFlow.Instance.GoSafePostion();
|
|
|
|
|
Start();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -3127,6 +3168,20 @@ namespace Rs.MotionPlat.Flow
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
|
|
|
|
stop = false;
|
|
|
|
|
}
|
|
|
|
|
public void Stop()
|
|
|
|
|
{
|
|
|
|
|
stop = true;
|
|
|
|
|
}
|
|
|
|
|
public string GetClassName()
|
|
|
|
|
{
|
|
|
|
|
return "TurnoverFlow_";
|
|
|
|
|
}
|
|
|
|
|
public bool LoadFinished()
|
|
|
|
|
{
|
|
|
|
|
return loadOk;
|
|
|
|
|