You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
6.3 KiB
C#

2 years ago
using Rs.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Rs.MotionPlat.Flow
{
enum EStockCheckStep
{
,
Input,
Ok,
Ng,
Multi,
WaitEmpty2,
,
}
public class WorkEnvironment
{
EStockCheckStep step= EStockCheckStep.Input;
EStockCheckStep restoreStep;
public bool EnvironmentOk { get; set; } = false;
private static WorkEnvironment instance;
public static WorkEnvironment Instance
{
get
{
if (instance == null)
instance = new WorkEnvironment();
return instance;
}
}
public void Ready()
{
Task.Run(() =>
{
while(true && !EnvironmentOk)
{
switch (step)
{
case EStockCheckStep.Input:
if (!StockManager.Instance.HasTray(EStockType.Input))
{
LogHelper.Debug("Input料仓无料开始给Input料仓上料");
StockManager.Instance.Load(EStockType.Input);
}
if (!StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓无料开始给Empty2料仓上料");
StockManager.Instance.Load(EStockType.Empty2);
}
step = EStockCheckStep.Ok;
break;
case EStockCheckStep.Ok:
if (!StockManager.Instance.HasTray(EStockType.Ok))
{
LogHelper.Debug("Ok料仓无料开始给Ok料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ok");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ok);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.Ng;
}
}
else
{
step = EStockCheckStep.Ng;
}
break;
case EStockCheckStep.Ng:
if (!StockManager.Instance.HasTray(EStockType.Ng))
{
LogHelper.Debug("Ng料仓无料开始给Ng料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Ng");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Ng);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.Multi;
}
}
else
{
step = EStockCheckStep.Multi;
}
break;
case EStockCheckStep.Multi:
if (!StockManager.Instance.HasTray(EStockType.Multi))
{
LogHelper.Debug("Multi料仓无料开始给Multi料仓上料");
if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2料仓有料开始搬运Empty2->Multi");
TakeTrayFlow.Instance.Take(EStockType.Empty2, EStockType.Multi);
step = EStockCheckStep.;
restoreStep = EStockCheckStep.;
}
}
else
{
step = EStockCheckStep.;
}
break;
case EStockCheckStep.WaitEmpty2:
if (StockManager.Instance.HasTray(EStockType.Empty2))
{
LogHelper.Debug("Empty2已料仓就绪");
step = restoreStep;
restoreStep = EStockCheckStep.;
}
break;
case EStockCheckStep.:
if(TakeTrayFlow.Instance.TakeStatus== ETakeStatus.TakeOK)
{
LogHelper.Debug("搬运OK");
step = restoreStep;
restoreStep = EStockCheckStep.;
}
break;
case EStockCheckStep.:
if(StockManager.Instance.IsReady())
{
LogHelper.Debug("所有料仓准备就绪");
EnvironmentOk = true;
}
break;
}
}
});
}
}
}