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.

317 lines
9.6 KiB
C#

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 TrayTest Empty1Tray { get { return Empty1; } }
public TrayTest InputTray { get { return Input; } }
public TrayTest OkTray { get { return Ok; } }
public TrayTest NgTray { get { return Ng; } }
public TrayTest MultiTray { get { return Multi; } }
public TrayTest Empty2Tray { get { return Empty2; } }
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}号料仓料盘到位光电检测"))
{
//switch (stockType)
//{
// case EStockType.Empty1:
// Empty1.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Input:
// Input.Status = ETrayStatus.Loaded;
// break;
// case EStockType.Ok:
// Ok.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Ng:
// Ng.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Multi:
// Multi.Status = ETrayStatus.Unloaded;
// break;
// case EStockType.Empty2:
// Empty2.Status = ETrayStatus.Loaded;
// break;
// default:
// break;
//}
return false;
}
return true;
}
public bool HasTray(int stockNo)
{
if (Ops.IsOff($"{stockNo}号料仓料盘到位光电检测"))
{
return false;
}
return true;
}
public TrayTest GetTray(EStockType stockType)
{
switch (stockType)
{
case EStockType.Empty1:
return Empty1Tray;
case EStockType.Input:
return InputTray;
case EStockType.Ok:
return OkTray;
case EStockType.Ng:
return NgTray;
case EStockType.Multi:
return MultiTray;
case EStockType.Empty2:
return Empty2Tray;
}
return null;
}
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 || StockManager.instance.HasTray(EStockType.Input)))
&& (Ok.Status == ETrayStatus.Loaded || StockManager.instance.HasTray(EStockType.Ok))
&& (Ng.Status == ETrayStatus.Loaded || StockManager.instance.HasTray(EStockType.Ng))
&& (Multi.Status == ETrayStatus.Loaded || StockManager.instance.HasTray(EStockType.Multi)));
}
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;
}
public void ChangeStatus(EStockType stock, ETrayStatus status)
{
switch (stock)
{
case EStockType.Empty1:
Empty1.ChangeStatus(status);
break;
case EStockType.Input:
Input.ChangeStatus(status);
if(status== ETrayStatus.Loaded)
{
GlobalTray.InputTray.Fill();
}
break;
case EStockType.Ok:
Ok.ChangeStatus(status);
break;
case EStockType.Ng:
Ng.ChangeStatus(status);
break;
case EStockType.Multi:
Multi.ChangeStatus(status);
break;
case EStockType.Empty2:
Empty2.ChangeStatus(status);
if(status== ETrayStatus.Loaded)
{
GlobalTray.Empty2Tray.Fill();
}
break;
}
}
public void ResetStock(EStockType stock)
{
switch (stock)
{
case EStockType.Empty1:
break;
case EStockType.Input:
break;
case EStockType.Ok:
break;
case EStockType.Ng:
break;
case EStockType.Multi:
break;
case EStockType.Empty2:
break;
}
}
public void ResetStock(int stockNo)
{
switch (stockNo)
{
case 1:
GlobalTray.Empty1Tray.ResetTray();
GlobalTray.Empty1Tray.Clear();
break;
case 2:
GlobalTray.InputTray.ResetTray();
GlobalTray.InputTray.Clear();
break;
case 3:
GlobalTray.OkTary.ResetTray();
GlobalTray.OkTary.Clear();
break;
case 4:
GlobalTray.NgTray.ResetTray();
GlobalTray.NgTray.Clear();
break;
case 5:
GlobalTray.MultiTray.ResetTray();
GlobalTray.MultiTray.Clear();
break;
case 6:
GlobalTray.Empty2Tray.ResetTray();
GlobalTray.Empty2Tray.Clear();
break;
}
}
}
}