|
|
|
|
using Rs.AutoDischarge.V3.Flow;
|
|
|
|
|
using Rs.MotionPlat.Commom;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Rs.MotionPlat.Flow
|
|
|
|
|
{
|
|
|
|
|
public enum EStockType
|
|
|
|
|
{
|
|
|
|
|
Empty1=1,
|
|
|
|
|
Input,
|
|
|
|
|
Ok,
|
|
|
|
|
Ng,
|
|
|
|
|
Multi,
|
|
|
|
|
Empty2
|
|
|
|
|
}
|
|
|
|
|
public class StockManager
|
|
|
|
|
{
|
|
|
|
|
private static StockManager instance;
|
|
|
|
|
public static StockManager Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if(instance == null)
|
|
|
|
|
instance = new StockManager();
|
|
|
|
|
return instance;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TrayTest Empty1 = new TrayTest(1);
|
|
|
|
|
TrayTest Input = new TrayTest(2);
|
|
|
|
|
TrayTest Ok = new TrayTest(3);
|
|
|
|
|
TrayTest Ng = new TrayTest(4);
|
|
|
|
|
TrayTest Multi = new TrayTest(5);
|
|
|
|
|
TrayTest Empty2 = new TrayTest(6);
|
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
|
|
|
|
Empty1.Start();
|
|
|
|
|
Input.Start();
|
|
|
|
|
Ok.Start();
|
|
|
|
|
Ng.Start();
|
|
|
|
|
Multi.Start();
|
|
|
|
|
Empty2.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool HasTray(EStockType stockType)
|
|
|
|
|
{
|
|
|
|
|
if (Ops.IsOff($"{(int)stockType}号料仓料盘到位光电检测"))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<EStockType> GetHasNotTrayStock()
|
|
|
|
|
{
|
|
|
|
|
List<EStockType> stockList = new List<EStockType>();
|
|
|
|
|
if (Ops.IsOff($"{(int)EStockType.Input}号料仓料盘到位光电检测"))
|
|
|
|
|
stockList.Add(EStockType.Input);
|
|
|
|
|
if (Ops.IsOff($"{(int)EStockType.Ok}号料仓料盘到位光电检测"))
|
|
|
|
|
stockList.Add(EStockType.Ok);
|
|
|
|
|
if (Ops.IsOff($"{(int)EStockType.Ng}号料仓料盘到位光电检测"))
|
|
|
|
|
stockList.Add(EStockType.Ng);
|
|
|
|
|
if (Ops.IsOff($"{(int)EStockType.Multi}号料仓料盘到位光电检测"))
|
|
|
|
|
stockList.Add(EStockType.Multi);
|
|
|
|
|
return stockList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsReady()
|
|
|
|
|
{
|
|
|
|
|
return ((Input.Status == ETrayStatus.Loaded)
|
|
|
|
|
&& (Ok.Status == ETrayStatus.Loaded)
|
|
|
|
|
&& (Ng.Status == ETrayStatus.Loaded)
|
|
|
|
|
&& (Multi.Status == ETrayStatus.Loaded));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Stop()
|
|
|
|
|
{
|
|
|
|
|
Empty1.Stop();
|
|
|
|
|
Input.Stop();
|
|
|
|
|
Ok.Stop();
|
|
|
|
|
Ng.Stop();
|
|
|
|
|
Multi.Stop();
|
|
|
|
|
Empty2.Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Load(EStockType stockType,bool bWholeLoad=true)
|
|
|
|
|
{
|
|
|
|
|
switch (stockType)
|
|
|
|
|
{
|
|
|
|
|
case EStockType.Empty1:
|
|
|
|
|
Empty1.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Input:
|
|
|
|
|
Input.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Ok:
|
|
|
|
|
Ok.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Ng:
|
|
|
|
|
Ng.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Multi:
|
|
|
|
|
Multi.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Empty2:
|
|
|
|
|
Empty2.Load(bWholeLoad);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UnLoad(EStockType stockType)
|
|
|
|
|
{
|
|
|
|
|
switch (stockType)
|
|
|
|
|
{
|
|
|
|
|
case EStockType.Empty1:
|
|
|
|
|
Empty1.Unload();
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Input:
|
|
|
|
|
Input.Unload();
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Ok:
|
|
|
|
|
Ok.Unload();
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Ng:
|
|
|
|
|
Ng.Unload();
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Multi:
|
|
|
|
|
Multi.Unload();
|
|
|
|
|
break;
|
|
|
|
|
case EStockType.Empty2:
|
|
|
|
|
Empty2.Unload();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ETrayStatus GetStockStatus(EStockType stockType)
|
|
|
|
|
{
|
|
|
|
|
switch (stockType)
|
|
|
|
|
{
|
|
|
|
|
case EStockType.Empty1:
|
|
|
|
|
return Empty1.Status;
|
|
|
|
|
case EStockType.Input:
|
|
|
|
|
return Input.Status;
|
|
|
|
|
case EStockType.Ok:
|
|
|
|
|
return Ok.Status;
|
|
|
|
|
case EStockType.Ng:
|
|
|
|
|
return Ng.Status;
|
|
|
|
|
case EStockType.Multi:
|
|
|
|
|
return Multi.Status;
|
|
|
|
|
case EStockType.Empty2:
|
|
|
|
|
return Empty2.Status;
|
|
|
|
|
}
|
|
|
|
|
return ETrayStatus.UnKnown;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|