1.整理WaferInfoRt类
This commit is contained in:
parent
8f0f96fd33
commit
c93b2028a8
|
@ -1,6 +1,6 @@
|
|||
namespace Aitex.Core.Common
|
||||
{
|
||||
public enum WaferTrayStatus
|
||||
public enum TrayStatus
|
||||
{
|
||||
Empty = 0,
|
||||
Normal = 1,
|
|
@ -1,503 +1,513 @@
|
|||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using DocumentFormat.OpenXml.Bibliography;
|
||||
using MECF.Framework.Common.CommonData;
|
||||
using MECF.Framework.Common.Jobs;
|
||||
using MECF.Framework.Common.Properties;
|
||||
|
||||
namespace Aitex.Core.Common
|
||||
{
|
||||
[Serializable]
|
||||
[DataContract]
|
||||
public class WaferInfoRt : NotifiableItem
|
||||
{
|
||||
private string procesjobid;
|
||||
[Serializable]
|
||||
[DataContract]
|
||||
public class WaferInfoRt : NotifiableItem
|
||||
{
|
||||
#region WaferInfo
|
||||
|
||||
private string controljobid;
|
||||
|
||||
private SubstrateTransportStatus substtransstatus;
|
||||
|
||||
private EnumE90Status Subste90status;
|
||||
|
||||
private SubstHistory[] substhists;
|
||||
|
||||
private string waferID;
|
||||
|
||||
private string _waferOrigin;
|
||||
|
||||
private string hostlaserMark1;
|
||||
|
||||
private string hostlaserMark2;
|
||||
|
||||
private string laserMarker;
|
||||
|
||||
private string t7Code;
|
||||
|
||||
private string _laserMarkerScore;
|
||||
|
||||
private string _t7CodeScore;
|
||||
|
||||
private string _imageFileName;
|
||||
|
||||
private string _imageFilePath;
|
||||
|
||||
private WaferStatus status;
|
||||
|
||||
private WaferTrayStatus trayState = WaferTrayStatus.Empty;
|
||||
|
||||
private bool isChecked;
|
||||
|
||||
private EnumWaferProcessStatus processState;
|
||||
|
||||
private bool isSource;
|
||||
|
||||
private bool isDestination;
|
||||
|
||||
[DataMember]
|
||||
public string ProcessJobID
|
||||
{
|
||||
get => procesjobid;
|
||||
set
|
||||
{
|
||||
procesjobid = value;
|
||||
InvokePropertyChanged("ProcessJobID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string ControlJobID
|
||||
{
|
||||
get => controljobid;
|
||||
set
|
||||
{
|
||||
controljobid = value;
|
||||
InvokePropertyChanged("ControlJobID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public SubstrateTransportStatus SubstTransStatus
|
||||
{
|
||||
get => substtransstatus;
|
||||
set
|
||||
{
|
||||
substtransstatus = value;
|
||||
InvokePropertyChanged("SubstTransStatus");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public EnumE90Status SubstE90Status
|
||||
{
|
||||
get => Subste90status;
|
||||
set
|
||||
{
|
||||
Subste90status = value;
|
||||
InvokePropertyChanged("SubstE90Status");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public SubstHistory[] SubstHists
|
||||
{
|
||||
get => substhists;
|
||||
set
|
||||
{
|
||||
substhists = value;
|
||||
InvokePropertyChanged("SubstHists");
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsEmpty => Status == WaferStatus.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string WaferID
|
||||
{
|
||||
get => waferID;
|
||||
set
|
||||
{
|
||||
waferID = value;
|
||||
InvokePropertyChanged("WaferID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string WaferOrigin
|
||||
{
|
||||
get => _waferOrigin;
|
||||
set
|
||||
{
|
||||
_waferOrigin = value;
|
||||
InvokePropertyChanged("WaferOrigin");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string HostLaserMark1
|
||||
{
|
||||
get => hostlaserMark1;
|
||||
set
|
||||
{
|
||||
hostlaserMark1 = value;
|
||||
InvokePropertyChanged("HostLaserMark1");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string HostLaserMark2
|
||||
{
|
||||
get => hostlaserMark2;
|
||||
set
|
||||
{
|
||||
hostlaserMark2 = value;
|
||||
InvokePropertyChanged("HostLaserMark2");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string LaserMarker
|
||||
{
|
||||
get => laserMarker;
|
||||
set
|
||||
{
|
||||
laserMarker = value;
|
||||
InvokePropertyChanged("LaserMarker");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string T7Code
|
||||
{
|
||||
get => t7Code;
|
||||
set
|
||||
{
|
||||
t7Code = value;
|
||||
InvokePropertyChanged("T7Code");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string LaserMarkerScore
|
||||
{
|
||||
get => _laserMarkerScore;
|
||||
set
|
||||
{
|
||||
_laserMarkerScore = value;
|
||||
InvokePropertyChanged("LaserMarker1Score");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string T7CodeScore
|
||||
{
|
||||
get => _t7CodeScore;
|
||||
set
|
||||
{
|
||||
_t7CodeScore = value;
|
||||
InvokePropertyChanged("T7CodeScore");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string ImageFileName
|
||||
{
|
||||
get => _imageFileName;
|
||||
set
|
||||
{
|
||||
_imageFileName = value;
|
||||
InvokePropertyChanged("ImageFileName");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string ImageFilePath
|
||||
{
|
||||
get => _imageFilePath;
|
||||
set
|
||||
{
|
||||
_imageFilePath = value;
|
||||
InvokePropertyChanged("ImageFilePath");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string LotId { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string TransFlag { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public WaferStatus Status
|
||||
{
|
||||
get => status;
|
||||
set
|
||||
{
|
||||
status = value;
|
||||
InvokePropertyChanged("Status");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public WaferTrayStatus TrayState
|
||||
{
|
||||
get => trayState;
|
||||
set
|
||||
{
|
||||
trayState = value;
|
||||
InvokePropertyChanged("TrayState");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string CurrentCarrierID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Station { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Slot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayUsedForWhichPM { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayOriginStation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayOriginSlot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string TrayBelongTo { get; set; }
|
||||
public bool IsWaferEmpty => WaferStatus == WaferStatus.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int OriginStation { get; set; }
|
||||
public Guid WaferInnerID { get; set; } = Guid.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int OriginSlot { get; set; }
|
||||
[DataMember]
|
||||
public string LotId { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string OriginCarrierID { get; set; }
|
||||
[DataMember]
|
||||
public ProcessJobInfo ProcessJob { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int DestinationStation { get; set; }
|
||||
[DataMember]
|
||||
public int NextSequenceStep { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string DestinationCarrierID { get; set; }
|
||||
[DataMember]
|
||||
public int WaferOriginStation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int DestinationSlot { get; set; }
|
||||
[DataMember]
|
||||
public int WaferOriginSlot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int NextStation { get; set; }
|
||||
[DataMember]
|
||||
public WaferSize Size { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int NextStationSlot { get; set; }
|
||||
[DataMember]
|
||||
public bool HasWarning { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Notch { get; set; }
|
||||
[DataMember]
|
||||
public string PPID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public WaferSize Size { get; set; }
|
||||
[DataMember]
|
||||
public string TransFlag { get; set; }
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
get => isChecked;
|
||||
private string waferID;
|
||||
[DataMember]
|
||||
public string WaferID
|
||||
{
|
||||
get => waferID;
|
||||
set
|
||||
{
|
||||
isChecked = value;
|
||||
InvokePropertyChanged("IsChecked");
|
||||
}
|
||||
}
|
||||
{
|
||||
waferID = value;
|
||||
InvokePropertyChanged("WaferID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string PPID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public EnumWaferProcessStatus ProcessState
|
||||
{
|
||||
get => processState;
|
||||
private string processJobID;
|
||||
[DataMember]
|
||||
public string ProcessJobID
|
||||
{
|
||||
get => processJobID;
|
||||
set
|
||||
{
|
||||
processState = value;
|
||||
InvokePropertyChanged("ProcessStatus");
|
||||
}
|
||||
}
|
||||
{
|
||||
processJobID = value;
|
||||
InvokePropertyChanged("ProcessJobID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public bool IsSource
|
||||
{
|
||||
get => isSource;
|
||||
private string controlJobID;
|
||||
[DataMember]
|
||||
public string ControlJobID
|
||||
{
|
||||
get => controlJobID;
|
||||
set
|
||||
{
|
||||
isSource = value;
|
||||
InvokePropertyChanged("IsSource");
|
||||
}
|
||||
}
|
||||
{
|
||||
controlJobID = value;
|
||||
InvokePropertyChanged("ControlJobID");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public bool IsDestination
|
||||
{
|
||||
get => isDestination;
|
||||
private string _waferOrigin;
|
||||
[DataMember]
|
||||
public string WaferOrigin
|
||||
{
|
||||
get => _waferOrigin;
|
||||
set
|
||||
{
|
||||
isDestination = value;
|
||||
InvokePropertyChanged("IsDestination");
|
||||
}
|
||||
}
|
||||
{
|
||||
_waferOrigin = value;
|
||||
InvokePropertyChanged("WaferOrigin");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public Guid InnerId { get; set; }
|
||||
private WaferStatus waferStatus = WaferStatus.Empty;
|
||||
[DataMember]
|
||||
public WaferStatus WaferStatus
|
||||
{
|
||||
get => waferStatus;
|
||||
set
|
||||
{
|
||||
waferStatus = value;
|
||||
InvokePropertyChanged("WaferStatus");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public ProcessJobInfo ProcessJob { get; set; }
|
||||
private bool isChecked;
|
||||
public bool IsChecked
|
||||
{
|
||||
get => isChecked;
|
||||
set
|
||||
{
|
||||
isChecked = value;
|
||||
InvokePropertyChanged("IsChecked");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public int NextSequenceStep { get; set; }
|
||||
private WaferProcessStatus processState;
|
||||
[DataMember]
|
||||
public WaferProcessStatus ProcessState
|
||||
{
|
||||
get => processState;
|
||||
set
|
||||
{
|
||||
processState = value;
|
||||
InvokePropertyChanged("ProcessStatus");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public int TrayProcessCount { get; set; }
|
||||
private SubstrateTransportStatus substtransstatus;
|
||||
[DataMember]
|
||||
public SubstrateTransportStatus SubstTransStatus
|
||||
{
|
||||
get => substtransstatus;
|
||||
set
|
||||
{
|
||||
substtransstatus = value;
|
||||
InvokePropertyChanged("SubstTransStatus");
|
||||
}
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public bool HasWarning { get; set; }
|
||||
private EnumE90Status Subste90status;
|
||||
[DataMember]
|
||||
public EnumE90Status SubstE90Status
|
||||
{
|
||||
get => Subste90status;
|
||||
set
|
||||
{
|
||||
Subste90status = value;
|
||||
InvokePropertyChanged("SubstE90Status");
|
||||
}
|
||||
}
|
||||
|
||||
public WaferInfoRt()
|
||||
{
|
||||
InnerId = Guid.Empty;
|
||||
}
|
||||
private SubstHistory[] substhists;
|
||||
[DataMember]
|
||||
public SubstHistory[] SubstHists
|
||||
{
|
||||
get => substhists;
|
||||
set
|
||||
{
|
||||
substhists = value;
|
||||
InvokePropertyChanged("SubstHists");
|
||||
}
|
||||
}
|
||||
|
||||
public WaferInfoRt(string waferID, WaferStatus status = WaferStatus.Empty)
|
||||
: this()
|
||||
{
|
||||
WaferID = waferID;
|
||||
Status = status;
|
||||
TrayState = WaferTrayStatus.Empty;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public void Update(WaferInfoRt source)
|
||||
{
|
||||
InnerId = source.InnerId;
|
||||
WaferID = source.waferID;
|
||||
WaferOrigin = source.WaferOrigin;
|
||||
LaserMarker = source.LaserMarker;
|
||||
LaserMarkerScore = source.LaserMarkerScore;
|
||||
T7Code = source.T7Code;
|
||||
T7CodeScore = source.T7CodeScore;
|
||||
Status = source.Status;
|
||||
ProcessState = source.ProcessState;
|
||||
IsSource = source.IsSource;
|
||||
IsDestination = source.IsDestination;
|
||||
Station = source.Station;
|
||||
Slot = source.Slot;
|
||||
OriginStation = source.OriginStation;
|
||||
OriginSlot = source.OriginSlot;
|
||||
if (source.OriginCarrierID != null)
|
||||
{
|
||||
OriginCarrierID = source.OriginCarrierID;
|
||||
}
|
||||
if (source.DestinationCarrierID != null)
|
||||
{
|
||||
DestinationCarrierID = source.DestinationCarrierID;
|
||||
}
|
||||
DestinationStation = source.DestinationStation;
|
||||
DestinationSlot = source.DestinationSlot;
|
||||
NextStation = source.NextStation;
|
||||
NextStationSlot = source.NextStationSlot;
|
||||
Notch = source.Notch;
|
||||
Size = source.Size;
|
||||
TransFlag = source.TransFlag;
|
||||
LotId = source.LotId;
|
||||
PPID = source.PPID;
|
||||
ProcessJobID = source.ProcessJobID;
|
||||
ProcessJob = source.ProcessJob;
|
||||
NextSequenceStep = source.NextSequenceStep;
|
||||
SubstHists = source.SubstHists;
|
||||
HasWarning = source.HasWarning;
|
||||
SubstE90Status = source.SubstE90Status;
|
||||
PPID = source.PPID;
|
||||
HostLaserMark1 = source.HostLaserMark1;
|
||||
HostLaserMark2 = source.HostLaserMark2;
|
||||
if (TrayState == WaferTrayStatus.Empty && source.TrayState != 0)
|
||||
{
|
||||
TrayState = source.TrayState;
|
||||
TrayUsedForWhichPM = source.TrayUsedForWhichPM;
|
||||
TrayOriginStation = source.TrayOriginStation;
|
||||
TrayOriginSlot = source.TrayOriginSlot;
|
||||
TrayProcessCount = source.TrayProcessCount;
|
||||
}
|
||||
}
|
||||
#region TrayInfo
|
||||
|
||||
public WaferInfoRt Clone()
|
||||
{
|
||||
return new WaferInfoRt
|
||||
{
|
||||
InnerId = InnerId,
|
||||
WaferID = waferID,
|
||||
WaferOrigin = WaferOrigin,
|
||||
LaserMarker = LaserMarker,
|
||||
LaserMarkerScore = LaserMarkerScore,
|
||||
T7Code = T7Code,
|
||||
T7CodeScore = T7CodeScore,
|
||||
Status = Status,
|
||||
ProcessState = ProcessState,
|
||||
IsSource = IsSource,
|
||||
IsDestination = IsDestination,
|
||||
Station = Station,
|
||||
Slot = Slot,
|
||||
OriginStation = OriginStation,
|
||||
OriginSlot = OriginSlot,
|
||||
OriginCarrierID = OriginCarrierID,
|
||||
DestinationCarrierID = DestinationCarrierID,
|
||||
DestinationStation = DestinationStation,
|
||||
DestinationSlot = DestinationSlot,
|
||||
NextStation = NextStation,
|
||||
NextStationSlot = NextStationSlot,
|
||||
Notch = Notch,
|
||||
Size = Size,
|
||||
TransFlag = TransFlag,
|
||||
LotId = LotId,
|
||||
ProcessJob = ProcessJob,
|
||||
NextSequenceStep = NextSequenceStep,
|
||||
SubstHists = SubstHists,
|
||||
HasWarning = HasWarning,
|
||||
SubstE90Status = SubstE90Status,
|
||||
TrayUsedForWhichPM = TrayUsedForWhichPM,
|
||||
TrayState = TrayState,
|
||||
TrayOriginStation = TrayOriginSlot,
|
||||
TrayOriginSlot = TrayOriginSlot,
|
||||
TrayProcessCount = TrayProcessCount,
|
||||
PPID = PPID
|
||||
};
|
||||
}
|
||||
public bool IsTrayEmpty => TrayState == TrayStatus.Empty;
|
||||
|
||||
public void SetEmpty()
|
||||
{
|
||||
InnerId = Guid.Empty;
|
||||
WaferID = string.Empty;
|
||||
WaferOrigin = string.Empty;
|
||||
LaserMarker = string.Empty;
|
||||
LaserMarkerScore = string.Empty;
|
||||
T7Code = string.Empty;
|
||||
T7CodeScore = string.Empty;
|
||||
Status = WaferStatus.Empty;
|
||||
ProcessState = EnumWaferProcessStatus.Idle;
|
||||
IsSource = false;
|
||||
IsDestination = false;
|
||||
Station = 0;
|
||||
Slot = 0;
|
||||
OriginStation = 0;
|
||||
OriginSlot = 0;
|
||||
DestinationStation = 0;
|
||||
DestinationSlot = 0;
|
||||
Notch = 0;
|
||||
TransFlag = string.Empty;
|
||||
LotId = string.Empty;
|
||||
ProcessJob = null;
|
||||
NextSequenceStep = 0;
|
||||
HasWarning = false;
|
||||
PPID = "";
|
||||
TrayState = WaferTrayStatus.Empty;
|
||||
TrayUsedForWhichPM = 0;
|
||||
TrayOriginStation = 0;
|
||||
TrayOriginSlot = 0;
|
||||
TrayProcessCount = 0;
|
||||
}
|
||||
}
|
||||
[DataMember]
|
||||
public Guid TrayInnerID { get; set; } = Guid.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int TrayProcessCount { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayUsedForWhichPM { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string TrayBelongTo { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayOriginStation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int TrayOriginSlot { get; set; }
|
||||
|
||||
private TrayStatus trayState = TrayStatus.Empty;
|
||||
[DataMember]
|
||||
public TrayStatus TrayState
|
||||
{
|
||||
get => trayState;
|
||||
set
|
||||
{
|
||||
trayState = value;
|
||||
InvokePropertyChanged("TrayState");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
[DataMember]
|
||||
public string CurrentCarrierID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Station { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Slot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string OriginCarrierID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int DestinationStation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string DestinationCarrierID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int DestinationSlot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int NextStation { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int NextStationSlot { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Notch { get; set; }
|
||||
|
||||
private bool isSource;
|
||||
[DataMember]
|
||||
public bool IsSource
|
||||
{
|
||||
get => isSource;
|
||||
set
|
||||
{
|
||||
isSource = value;
|
||||
InvokePropertyChanged("IsSource");
|
||||
}
|
||||
}
|
||||
|
||||
private bool isDestination;
|
||||
[DataMember]
|
||||
public bool IsDestination
|
||||
{
|
||||
get => isDestination;
|
||||
set
|
||||
{
|
||||
isDestination = value;
|
||||
InvokePropertyChanged("IsDestination");
|
||||
}
|
||||
}
|
||||
|
||||
#region δʹÓÃ
|
||||
|
||||
private string hostlaserMark1;
|
||||
[DataMember]
|
||||
public string HostLaserMark1
|
||||
{
|
||||
get => hostlaserMark1;
|
||||
set
|
||||
{
|
||||
hostlaserMark1 = value;
|
||||
InvokePropertyChanged("HostLaserMark1");
|
||||
}
|
||||
}
|
||||
|
||||
private string hostlaserMark2;
|
||||
[DataMember]
|
||||
public string HostLaserMark2
|
||||
{
|
||||
get => hostlaserMark2;
|
||||
set
|
||||
{
|
||||
hostlaserMark2 = value;
|
||||
InvokePropertyChanged("HostLaserMark2");
|
||||
}
|
||||
}
|
||||
|
||||
private string laserMarker;
|
||||
[DataMember]
|
||||
public string LaserMarker
|
||||
{
|
||||
get => laserMarker;
|
||||
set
|
||||
{
|
||||
laserMarker = value;
|
||||
InvokePropertyChanged("LaserMarker");
|
||||
}
|
||||
}
|
||||
|
||||
private string t7Code;
|
||||
[DataMember]
|
||||
public string T7Code
|
||||
{
|
||||
get => t7Code;
|
||||
set
|
||||
{
|
||||
t7Code = value;
|
||||
InvokePropertyChanged("T7Code");
|
||||
}
|
||||
}
|
||||
|
||||
private string _laserMarkerScore;
|
||||
[DataMember]
|
||||
public string LaserMarkerScore
|
||||
{
|
||||
get => _laserMarkerScore;
|
||||
set
|
||||
{
|
||||
_laserMarkerScore = value;
|
||||
InvokePropertyChanged("LaserMarker1Score");
|
||||
}
|
||||
}
|
||||
|
||||
private string _t7CodeScore;
|
||||
[DataMember]
|
||||
public string T7CodeScore
|
||||
{
|
||||
get => _t7CodeScore;
|
||||
set
|
||||
{
|
||||
_t7CodeScore = value;
|
||||
InvokePropertyChanged("T7CodeScore");
|
||||
}
|
||||
}
|
||||
|
||||
private string _imageFileName;
|
||||
[DataMember]
|
||||
public string ImageFileName
|
||||
{
|
||||
get => _imageFileName;
|
||||
set
|
||||
{
|
||||
_imageFileName = value;
|
||||
InvokePropertyChanged("ImageFileName");
|
||||
}
|
||||
}
|
||||
|
||||
private string _imageFilePath;
|
||||
[DataMember]
|
||||
public string ImageFilePath
|
||||
{
|
||||
get => _imageFilePath;
|
||||
set
|
||||
{
|
||||
_imageFilePath = value;
|
||||
InvokePropertyChanged("ImageFilePath");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public WaferInfoRt()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public WaferInfoRt(string waferID)
|
||||
{
|
||||
WaferID = waferID;
|
||||
}
|
||||
|
||||
public void Update(WaferInfoRt source)
|
||||
{
|
||||
//WaferInfo
|
||||
WaferInnerID = source.WaferInnerID;
|
||||
LotId = source.LotId;
|
||||
ProcessJob = source.ProcessJob;
|
||||
NextSequenceStep = source.NextSequenceStep;
|
||||
WaferOriginStation = source.WaferOriginStation;
|
||||
WaferOriginSlot = source.WaferOriginSlot;
|
||||
Size = source.Size;
|
||||
HasWarning = source.HasWarning;
|
||||
PPID = source.PPID;
|
||||
WaferID = source.WaferID;
|
||||
TransFlag = source.TransFlag;
|
||||
ProcessJobID = source.ProcessJobID;
|
||||
ControlJobID = source.ControlJobID;
|
||||
WaferOrigin = source.WaferOrigin;
|
||||
WaferStatus = source.WaferStatus;
|
||||
IsChecked = source.IsChecked;
|
||||
ProcessState = source.ProcessState;
|
||||
SubstTransStatus = source.SubstTransStatus;
|
||||
SubstE90Status = source.SubstE90Status;
|
||||
SubstHists = source.SubstHists;
|
||||
|
||||
//TrayInfo
|
||||
TrayInnerID = source.TrayInnerID;
|
||||
TrayProcessCount = source.TrayProcessCount;
|
||||
TrayUsedForWhichPM = source.TrayUsedForWhichPM;
|
||||
TrayBelongTo = source.TrayBelongTo;
|
||||
TrayOriginStation = source.TrayOriginStation;
|
||||
TrayOriginSlot = source.TrayOriginSlot;
|
||||
TrayState = source.TrayState;
|
||||
}
|
||||
|
||||
public WaferInfoRt Clone()
|
||||
{
|
||||
return new WaferInfoRt
|
||||
{
|
||||
//WaferInfo
|
||||
WaferInnerID = WaferInnerID,
|
||||
LotId = LotId,
|
||||
ProcessJob = ProcessJob,
|
||||
NextSequenceStep = NextSequenceStep,
|
||||
WaferOriginStation = WaferOriginStation,
|
||||
WaferOriginSlot = WaferOriginSlot,
|
||||
Size = Size,
|
||||
HasWarning = HasWarning,
|
||||
PPID = PPID,
|
||||
WaferID = WaferID,
|
||||
TransFlag = TransFlag,
|
||||
ProcessJobID = ProcessJobID,
|
||||
ControlJobID = ControlJobID,
|
||||
WaferOrigin = WaferOrigin,
|
||||
WaferStatus = WaferStatus,
|
||||
IsChecked = IsChecked,
|
||||
ProcessState = ProcessState,
|
||||
SubstTransStatus = SubstTransStatus,
|
||||
SubstE90Status = SubstE90Status,
|
||||
SubstHists = SubstHists,
|
||||
|
||||
//TrayInfo
|
||||
TrayInnerID = TrayInnerID,
|
||||
TrayProcessCount = TrayProcessCount,
|
||||
TrayUsedForWhichPM = TrayUsedForWhichPM,
|
||||
TrayBelongTo = TrayBelongTo,
|
||||
TrayOriginStation = TrayOriginStation,
|
||||
TrayOriginSlot = TrayOriginSlot,
|
||||
TrayState = TrayState,
|
||||
};
|
||||
}
|
||||
|
||||
public void SetWaferTrayEmpty()
|
||||
{
|
||||
//WaferInfo
|
||||
WaferInnerID = Guid.Empty;
|
||||
LotId = string.Empty;
|
||||
ProcessJob = null;
|
||||
NextSequenceStep = 0;
|
||||
WaferOriginStation = 0;
|
||||
WaferOriginSlot = 0;
|
||||
Size = WaferSize.WS0;
|
||||
HasWarning = false;
|
||||
PPID = string.Empty;
|
||||
WaferID = string.Empty;
|
||||
TransFlag = string.Empty;
|
||||
ProcessJobID = string.Empty;
|
||||
ControlJobID = string.Empty;
|
||||
WaferOrigin = string.Empty;
|
||||
WaferStatus = WaferStatus.Empty;
|
||||
IsChecked = false;
|
||||
ProcessState = WaferProcessStatus.Idle;
|
||||
SubstTransStatus = SubstrateTransportStatus.None;
|
||||
SubstE90Status = EnumE90Status.None;
|
||||
SubstHists = null;
|
||||
|
||||
//TrayInfo
|
||||
TrayInnerID = Guid.Empty;
|
||||
TrayProcessCount = 0;
|
||||
TrayUsedForWhichPM = 0;
|
||||
TrayBelongTo = string.Empty;
|
||||
TrayOriginStation = 0;
|
||||
TrayOriginSlot = 0;
|
||||
TrayState = TrayStatus.Empty;
|
||||
}
|
||||
|
||||
public void SetWaferEmpty()
|
||||
{
|
||||
//WaferInfo
|
||||
WaferInnerID = Guid.Empty;
|
||||
LotId = string.Empty;
|
||||
ProcessJob = null;
|
||||
NextSequenceStep = 0;
|
||||
WaferOriginStation = 0;
|
||||
WaferOriginSlot = 0;
|
||||
Size = WaferSize.WS0;
|
||||
HasWarning = false;
|
||||
PPID = string.Empty;
|
||||
WaferID = string.Empty;
|
||||
TransFlag = string.Empty;
|
||||
ProcessJobID = string.Empty;
|
||||
ControlJobID = string.Empty;
|
||||
WaferOrigin = string.Empty;
|
||||
WaferStatus = WaferStatus.Empty;
|
||||
IsChecked = false;
|
||||
ProcessState = WaferProcessStatus.Idle;
|
||||
SubstTransStatus = SubstrateTransportStatus.None;
|
||||
SubstE90Status = EnumE90Status.None;
|
||||
SubstHists = null;
|
||||
}
|
||||
|
||||
public void SetTrayEmpty()
|
||||
{
|
||||
//TrayInfo
|
||||
TrayInnerID = Guid.Empty;
|
||||
TrayProcessCount = 0;
|
||||
TrayUsedForWhichPM = 0;
|
||||
TrayBelongTo = string.Empty;
|
||||
TrayOriginStation = 0;
|
||||
TrayOriginSlot = 0;
|
||||
TrayState = TrayStatus.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
namespace Aitex.Core.Common
|
||||
{
|
||||
public enum EnumWaferProcessStatus
|
||||
public enum WaferProcessStatus
|
||||
{
|
||||
Idle = 0,
|
||||
InProcess = 1,
|
|
@ -259,7 +259,7 @@
|
|||
<Compile Include="Aitex\Core\Common\DeviceData\ServoState.cs" />
|
||||
<Compile Include="Aitex\Core\Common\DeviceData\TritonRfMatchMode.cs" />
|
||||
<Compile Include="Aitex\Core\Common\EnumE90Status.cs" />
|
||||
<Compile Include="Aitex\Core\Common\EnumWaferProcessStatus.cs" />
|
||||
<Compile Include="Aitex\Core\Common\WaferProcessStatus.cs" />
|
||||
<Compile Include="Aitex\Core\Common\ProcessStatus.cs" />
|
||||
<Compile Include="Aitex\Core\Common\SubstAccessType.cs" />
|
||||
<Compile Include="Aitex\Core\Common\SubstHistory.cs" />
|
||||
|
@ -267,7 +267,7 @@
|
|||
<Compile Include="Aitex\Core\Common\WaferInfoRt.cs" />
|
||||
<Compile Include="Aitex\Core\Common\WaferSize.cs" />
|
||||
<Compile Include="Aitex\Core\Common\WaferStatus.cs" />
|
||||
<Compile Include="Aitex\Core\Common\WaferTrayStatus.cs" />
|
||||
<Compile Include="Aitex\Core\Common\TrayStatus.cs" />
|
||||
<Compile Include="Aitex\Core\RT\ConfigCenter\CONFIG.cs" />
|
||||
<Compile Include="Aitex\Core\RT\ConfigCenter\ConfigEntry.cs" />
|
||||
<Compile Include="Aitex\Core\RT\ConfigCenter\ConfigItem.cs" />
|
||||
|
|
|
@ -134,14 +134,14 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
foreach (var item2 in item.Value)
|
||||
{
|
||||
item2.Value.SetEmpty();
|
||||
item2.Value.SetWaferTrayEmpty();
|
||||
}
|
||||
}
|
||||
if (OnlyTrayModule.Contains(item.Key))
|
||||
{
|
||||
foreach (var item3 in item.Value)
|
||||
{
|
||||
item3.Value.Status = WaferStatus.Empty;
|
||||
item3.Value.WaferStatus = WaferStatus.Empty;
|
||||
}
|
||||
}
|
||||
if (!OnlyWaferModule.Contains(item.Key))
|
||||
|
@ -150,7 +150,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
foreach (var item4 in item.Value)
|
||||
{
|
||||
item4.Value.TrayState = WaferTrayStatus.Empty;
|
||||
item4.Value.TrayState = TrayStatus.Empty;
|
||||
}
|
||||
}
|
||||
AllLocationWafers = dictionary;
|
||||
|
@ -221,16 +221,16 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[module][i] = new WaferInfoRt();
|
||||
if (OnlyTrayModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][i].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][i].WaferStatus = WaferStatus.Empty;
|
||||
}
|
||||
if (OnlyWaferModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][i].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[module][i].TrayState = TrayStatus.Empty;
|
||||
}
|
||||
if (WaferTrayModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][i].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][i].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[module][i].WaferStatus = WaferStatus.Empty;
|
||||
AllLocationWafers[module][i].TrayState = TrayStatus.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -240,12 +240,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
public void WaferMoved(ModuleName moduleFrom, int slotFrom, ModuleName moduleTo, int slotTo)
|
||||
{
|
||||
UpdateWaferHistory(moduleFrom, slotFrom, SubstAccessType.Left);
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].IsEmpty && AllLocationWafers[moduleFrom][slotFrom].TrayState == WaferTrayStatus.Empty)
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].IsWaferEmpty && AllLocationWafers[moduleFrom][slotFrom].TrayState == TrayStatus.Empty)
|
||||
{
|
||||
LOG.Write($"Invalid wafer move, no wafer at source, {moduleFrom}{slotFrom + 1}=>{moduleTo}{slotTo + 1}");
|
||||
return;
|
||||
}
|
||||
if (!AllLocationWafers[moduleFrom][slotFrom].IsEmpty && !AllLocationWafers[moduleTo][slotTo].IsEmpty)
|
||||
if (!AllLocationWafers[moduleFrom][slotFrom].IsWaferEmpty && !AllLocationWafers[moduleTo][slotTo].IsWaferEmpty)
|
||||
{
|
||||
LOG.Write($"Invalid wafer move, destination has wafer, {moduleFrom}{slotFrom + 1}=>{moduleTo}{slotTo + 1}");
|
||||
return;
|
||||
|
@ -266,8 +266,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
var trayOriginSlot2 = AllLocationWafers[moduleTo][slotTo].TrayOriginSlot;
|
||||
var trayProcessCount2 = AllLocationWafers[moduleTo][slotTo].TrayProcessCount;
|
||||
var waferOrigin = AllLocationWafers[moduleFrom][slotFrom].WaferOrigin;
|
||||
var InnerIdForm= AllLocationWafers[moduleFrom][slotFrom].InnerId;
|
||||
var InnerIdTo = AllLocationWafers[moduleTo][slotTo].InnerId;
|
||||
var InnerIdForm= AllLocationWafers[moduleFrom][slotFrom].WaferInnerID;
|
||||
var InnerIdTo = AllLocationWafers[moduleTo][slotTo].WaferInnerID;
|
||||
var TrayBelongTo_Form = AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo;
|
||||
var TrayBelongTo_To = AllLocationWafers[moduleTo][slotTo].TrayBelongTo;
|
||||
var waferInfo = CopyWaferInfo(moduleTo, slotTo, AllLocationWafers[moduleFrom][slotFrom]);
|
||||
|
@ -275,7 +275,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
DeleteWaferForMove(moduleFrom, slotFrom);
|
||||
if (OnlyWaferModule.Contains(moduleTo) && WaferTrayModule.Contains(moduleFrom))//wafer回来
|
||||
{
|
||||
AllLocationWafers[moduleTo][slotTo].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayState = TrayStatus.Empty;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayOriginStation = 0;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayOriginSlot = 0;
|
||||
|
@ -287,7 +287,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = trayProcessCount;
|
||||
|
||||
//新加的两个参数
|
||||
AllLocationWafers[moduleFrom][slotFrom].InnerId = InnerIdForm;
|
||||
AllLocationWafers[moduleFrom][slotFrom].WaferInnerID = InnerIdForm;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = TrayBelongTo_Form;
|
||||
|
||||
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = "";
|
||||
|
@ -299,14 +299,14 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[moduleTo][slotTo].TrayOriginStation = trayOriginStation2;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayOriginSlot = trayOriginSlot2;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayProcessCount = trayProcessCount2;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = TrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginStation = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
|
||||
|
||||
//新加的两个参数
|
||||
AllLocationWafers[moduleTo][slotTo].InnerId = InnerIdTo;//目的地的信息被清了,重新赋值
|
||||
AllLocationWafers[moduleTo][slotTo].WaferInnerID = InnerIdTo;//目的地的信息被清了,重新赋值
|
||||
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = TrayBelongTo_To;
|
||||
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = "";
|
||||
|
@ -318,20 +318,20 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[moduleTo][slotTo].TrayOriginStation = trayOriginStation;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayOriginSlot = trayOriginSlot;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayProcessCount = trayProcessCount;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = TrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginStation = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
|
||||
|
||||
//新加的两个参数
|
||||
AllLocationWafers[moduleTo][slotTo].InnerId = InnerIdForm;
|
||||
AllLocationWafers[moduleTo][slotTo].WaferInnerID = InnerIdForm;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = TrayBelongTo_Form;
|
||||
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = "";
|
||||
}
|
||||
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferMoved, waferOrigin, moduleFrom.ToString(), slotFrom + 1, moduleTo.ToString(), slotTo + 1);
|
||||
WaferMoveHistoryRecorder.WaferMoved(waferInfo.InnerId.ToString(), moduleTo.ToString(), slotTo, waferInfo.Status.ToString());
|
||||
WaferMoveHistoryRecorder.WaferMoved(waferInfo.WaferInnerID.ToString(), moduleTo.ToString(), slotTo, waferInfo.WaferStatus.ToString());
|
||||
EV.Notify("WAFER_LEFT_POSITION", new SerializableDictionary<string, string>
|
||||
{
|
||||
{
|
||||
|
@ -377,7 +377,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
UpdateWaferE90State(waferInfo.WaferID, EnumE90Status.Processed);
|
||||
}
|
||||
if (moduleTo == (ModuleName)waferInfo.OriginStation && waferInfo.SubstE90Status != EnumE90Status.Processed)
|
||||
if (moduleTo == (ModuleName)waferInfo.WaferOriginStation && waferInfo.SubstE90Status != EnumE90Status.Processed)
|
||||
{
|
||||
UpdateWaferTransportState(waferInfo.WaferID, SubstrateTransportStatus.AtSource);
|
||||
}
|
||||
|
@ -394,7 +394,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
var trayState = AllLocationWafers[moduleFrom][slotFrom].TrayState;
|
||||
UpdateWaferHistory(moduleFrom, slotFrom, SubstAccessType.Left);
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].TrayState == WaferTrayStatus.Empty)
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].TrayState == TrayStatus.Empty)
|
||||
{
|
||||
LOG.Write($"Invalid wafer move, no wafer at tray, {moduleFrom}{slotFrom + 1}=>{moduleTo}{slotTo + 1}");
|
||||
return;
|
||||
|
@ -411,20 +411,20 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[moduleTo][slotTo].TrayOriginStation = AllLocationWafers[moduleFrom][slotFrom].TrayOriginStation;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayOriginSlot = AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayProcessCount = AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount;
|
||||
AllLocationWafers[moduleTo][slotTo].InnerId = AllLocationWafers[moduleFrom][slotFrom].InnerId;
|
||||
AllLocationWafers[moduleTo][slotTo].WaferInnerID = AllLocationWafers[moduleFrom][slotFrom].WaferInnerID;
|
||||
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayState = TrayStatus.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginStation = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
|
||||
AllLocationWafers[moduleFrom][slotFrom].InnerId=Guid.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].WaferInnerID =Guid.Empty;
|
||||
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = "";
|
||||
|
||||
if (OnlyTrayModule.Contains(moduleTo))
|
||||
{
|
||||
AllLocationWafers[moduleTo][slotTo].WaferOrigin = $"{ModuleHelper.GetAbbr((ModuleName)AllLocationWafers[moduleTo][slotTo].TrayOriginStation)}.{AllLocationWafers[moduleTo][slotTo].TrayOriginSlot + 1:D2}";
|
||||
AllLocationWafers[moduleTo][slotTo].OriginSlot = AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot;
|
||||
AllLocationWafers[moduleTo][slotTo].WaferOriginSlot = AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot;
|
||||
}
|
||||
}
|
||||
_needSerialize = true;
|
||||
|
@ -434,12 +434,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
public void WaferDuplicated(ModuleName moduleFrom, int slotFrom, ModuleName moduleTo, int slotTo)
|
||||
{
|
||||
UpdateWaferHistory(moduleFrom, slotFrom, SubstAccessType.Left);
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].IsEmpty)
|
||||
if (AllLocationWafers[moduleFrom][slotFrom].IsWaferEmpty)
|
||||
{
|
||||
LOG.Write($"Invalid wafer move, no wafer at source, {moduleFrom}{slotFrom + 1}=>{moduleTo}{slotTo + 1}");
|
||||
return;
|
||||
}
|
||||
if (!AllLocationWafers[moduleTo][slotTo].IsEmpty)
|
||||
if (!AllLocationWafers[moduleTo][slotTo].IsWaferEmpty)
|
||||
{
|
||||
LOG.Write($"Invalid wafer move, destination has wafer, {moduleFrom}{slotFrom + 1}=>{moduleTo}{slotTo + 1}");
|
||||
return;
|
||||
|
@ -448,7 +448,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
var waferInfo = CopyWaferInfo(moduleTo, slotTo, AllLocationWafers[moduleFrom][slotFrom]);
|
||||
UpdateWaferHistory(moduleTo, slotTo, SubstAccessType.Arrive);
|
||||
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferMoved, waferOrigin, moduleFrom.ToString(), slotFrom + 1, moduleTo.ToString(), slotTo + 1);
|
||||
WaferMoveHistoryRecorder.WaferMoved(waferInfo.InnerId.ToString(), moduleTo.ToString(), slotTo, waferInfo.Status.ToString());
|
||||
WaferMoveHistoryRecorder.WaferMoved(waferInfo.WaferInnerID.ToString(), moduleTo.ToString(), slotTo, waferInfo.WaferStatus.ToString());
|
||||
EV.Notify("WAFER_LEFT_POSITION", new SerializableDictionary<string, string>
|
||||
{
|
||||
{
|
||||
|
@ -510,7 +510,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
UpdateWaferE90State(waferInfo.WaferID, EnumE90Status.Processed);
|
||||
}
|
||||
if (moduleTo == (ModuleName)waferInfo.OriginStation && waferInfo.SubstE90Status != EnumE90Status.Processed)
|
||||
if (moduleTo == (ModuleName)waferInfo.WaferOriginStation && waferInfo.SubstE90Status != EnumE90Status.Processed)
|
||||
{
|
||||
UpdateWaferTransportState(waferInfo.WaferID, SubstrateTransportStatus.AtSource);
|
||||
}
|
||||
|
@ -519,8 +519,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
UpdateWaferTransportState(waferInfo.WaferID, SubstrateTransportStatus.AtDestination);
|
||||
}
|
||||
}
|
||||
UpdateWaferProcessStatus(moduleFrom, slotFrom, EnumWaferProcessStatus.Failed);
|
||||
UpdateWaferProcessStatus(moduleTo, slotTo, EnumWaferProcessStatus.Failed);
|
||||
UpdateWaferProcessStatus(moduleFrom, slotFrom, WaferProcessStatus.Failed);
|
||||
UpdateWaferProcessStatus(moduleTo, slotTo, WaferProcessStatus.Failed);
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
||||
|
@ -554,7 +554,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
foreach (var item in locationWafer.Value)
|
||||
{
|
||||
if (item.Value != null && !item.Value.IsEmpty && item.Value.ProcessJob != null && item.Value.ProcessJob.Name == jobName)
|
||||
if (item.Value != null && !item.Value.IsWaferEmpty && item.Value.ProcessJob != null && item.Value.ProcessJob.Name == jobName)
|
||||
{
|
||||
list.Add(item.Value);
|
||||
}
|
||||
|
@ -599,7 +599,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
foreach (var item in locationWafer.Value)
|
||||
{
|
||||
if (item.Value.OriginCarrierID == Originalcarrier && item.Value.OriginSlot == Originalslot)
|
||||
if (item.Value.OriginCarrierID == Originalcarrier && item.Value.WaferOriginSlot == Originalslot)
|
||||
{
|
||||
list.Add(item.Value);
|
||||
}
|
||||
|
@ -620,7 +620,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
|
||||
public bool CheckNoWafer(ModuleName module, int slot)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].IsEmpty;
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].IsWaferEmpty;
|
||||
}
|
||||
|
||||
public bool CheckNoWafer(string module, int slot)
|
||||
|
@ -630,12 +630,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
|
||||
public bool CheckHasWafer(ModuleName module, int slot)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && !AllLocationWafers[module][slot].IsEmpty;
|
||||
return IsWaferSlotLocationValid(module, slot) && !AllLocationWafers[module][slot].IsWaferEmpty;
|
||||
}
|
||||
|
||||
public bool CheckWaferIsDummy(ModuleName module, int slot)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && !AllLocationWafers[module][slot].IsEmpty && AllLocationWafers[module][slot].Status == WaferStatus.Dummy;
|
||||
return IsWaferSlotLocationValid(module, slot) && !AllLocationWafers[module][slot].IsWaferEmpty && AllLocationWafers[module][slot].WaferStatus == WaferStatus.Dummy;
|
||||
}
|
||||
|
||||
public bool CheckWaferExistFlag(string moduleNo, string[] flagStrings, out string reason)
|
||||
|
@ -651,13 +651,13 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
if (text == "1")
|
||||
{
|
||||
if (IsWaferSlotLocationValid(result, num) && AllLocationWafers[result][num].IsEmpty)
|
||||
if (IsWaferSlotLocationValid(result, num) && AllLocationWafers[result][num].IsWaferEmpty)
|
||||
{
|
||||
reason = "Flag Mis-Match";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (IsWaferSlotLocationValid(result, num) && !AllLocationWafers[result][num].IsEmpty)
|
||||
else if (IsWaferSlotLocationValid(result, num) && !AllLocationWafers[result][num].IsWaferEmpty)
|
||||
{
|
||||
reason = "Flag Mis-Match";
|
||||
return false;
|
||||
|
@ -674,12 +674,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
|
||||
public bool CheckNoTray(ModuleName module, int slot)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].TrayState == WaferTrayStatus.Empty;
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].TrayState == TrayStatus.Empty;
|
||||
}
|
||||
|
||||
public bool CheckHasTray(ModuleName module, int slot)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].TrayState != WaferTrayStatus.Empty;
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].TrayState != TrayStatus.Empty;
|
||||
}
|
||||
|
||||
public bool CheckWaferFull(ModuleName module)
|
||||
|
@ -687,7 +687,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
var dictionary = AllLocationWafers[module];
|
||||
foreach (var item in dictionary)
|
||||
{
|
||||
if (item.Value.IsEmpty)
|
||||
if (item.Value.IsWaferEmpty)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -700,7 +700,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
var dictionary = AllLocationWafers[module];
|
||||
foreach (var item in dictionary)
|
||||
{
|
||||
if (!item.Value.IsEmpty)
|
||||
if (!item.Value.IsWaferEmpty)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -710,7 +710,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
|
||||
public bool CheckWafer(ModuleName module, int slot, WaferStatus state)
|
||||
{
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].Status == state;
|
||||
return IsWaferSlotLocationValid(module, slot) && AllLocationWafers[module][slot].WaferStatus == state;
|
||||
}
|
||||
|
||||
public WaferInfoRt CreateWafer(ModuleName module, int slot, WaferStatus state)
|
||||
|
@ -735,8 +735,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].Status = state;
|
||||
AllLocationWafers[module][slot].ProcessState = EnumWaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].WaferStatus = state;
|
||||
AllLocationWafers[module][slot].ProcessState = WaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].SubstE90Status = EnumE90Status.NeedProcessing;
|
||||
AllLocationWafers[module][slot].WaferID = GenerateWaferId(module, slot, text);
|
||||
AllLocationWafers[module][slot].WaferOrigin = GenerateOrigin(module, slot);
|
||||
|
@ -745,8 +745,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].TrayBelongTo = "System";
|
||||
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[module][slot].OriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].OriginSlot = slot;
|
||||
AllLocationWafers[module][slot].WaferOriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].WaferOriginSlot = slot;
|
||||
AllLocationWafers[module][slot].OriginCarrierID = text;
|
||||
AllLocationWafers[module][slot].LotId = "";
|
||||
AllLocationWafers[module][slot].HostLaserMark1 = "";
|
||||
|
@ -754,23 +754,23 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[module][slot].LaserMarker = "";
|
||||
AllLocationWafers[module][slot].T7Code = "";
|
||||
AllLocationWafers[module][slot].PPID = "";
|
||||
AllLocationWafers[module][slot].TrayState = WaferTrayStatus.Normal;
|
||||
AllLocationWafers[module][slot].TrayState = TrayStatus.Normal;
|
||||
AllLocationWafers[module][slot].TrayOriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].TrayOriginSlot = slot;
|
||||
AllLocationWafers[module][slot].TrayProcessCount = (SC.ContainsItem("System.DefaultTrayProcessCount") ? SC.GetValue<int>("System.DefaultTrayProcessCount") : 10);
|
||||
if (AllLocationWafers[module][slot].InnerId == Guid.Empty)//创建时可能有Tray,防位置GUID被覆盖
|
||||
if (AllLocationWafers[module][slot].WaferInnerID == Guid.Empty)//创建时可能有Tray,防位置GUID被覆盖
|
||||
{
|
||||
AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].WaferInnerID = Guid.NewGuid();
|
||||
}
|
||||
if (OnlyTrayModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][slot].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][slot].WaferStatus = WaferStatus.Empty;
|
||||
|
||||
}
|
||||
else if (OnlyWaferModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][slot].InnerId = Guid.NewGuid();//单独出现Wafer地方必须创建,这里是EFEM版本
|
||||
AllLocationWafers[module][slot].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[module][slot].WaferInnerID = Guid.NewGuid();//单独出现Wafer地方必须创建,这里是EFEM版本
|
||||
AllLocationWafers[module][slot].TrayState = TrayStatus.Empty;
|
||||
}
|
||||
var substHistory = new SubstHistory(module.ToString(), slot, DateTime.Now, SubstAccessType.Create);
|
||||
AllLocationWafers[module][slot].SubstHists = new SubstHistory[1] { substHistory };
|
||||
|
@ -778,7 +778,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
UpdateWaferE90State(AllLocationWafers[module][slot].WaferID, EnumE90Status.NeedProcessing);
|
||||
UpdateWaferTransportState(AllLocationWafers[module][slot].WaferID, SubstrateTransportStatus.AtSource);
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].InnerId.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].WaferInnerID.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
_needSerialize = true;
|
||||
return AllLocationWafers[module][slot];
|
||||
}
|
||||
|
@ -805,8 +805,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].Status = state;
|
||||
AllLocationWafers[module][slot].ProcessState = EnumWaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].WaferStatus = state;
|
||||
AllLocationWafers[module][slot].ProcessState = WaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].SubstE90Status = EnumE90Status.NeedProcessing;
|
||||
AllLocationWafers[module][slot].WaferID = GenerateWaferId(module, slot, text);
|
||||
AllLocationWafers[module][slot].WaferOrigin = GenerateOrigin(module, slot);
|
||||
|
@ -815,8 +815,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].TrayBelongTo = "System";
|
||||
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[module][slot].OriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].OriginSlot = slot;
|
||||
AllLocationWafers[module][slot].WaferOriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].WaferOriginSlot = slot;
|
||||
AllLocationWafers[module][slot].OriginCarrierID = text;
|
||||
AllLocationWafers[module][slot].LotId = "";
|
||||
AllLocationWafers[module][slot].HostLaserMark1 = "";
|
||||
|
@ -825,23 +825,23 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[module][slot].T7Code = "";
|
||||
AllLocationWafers[module][slot].PPID = "";
|
||||
AllLocationWafers[module][slot].Size = wz;
|
||||
AllLocationWafers[module][slot].TrayState = WaferTrayStatus.Normal;
|
||||
AllLocationWafers[module][slot].TrayState = TrayStatus.Normal;
|
||||
AllLocationWafers[module][slot].TrayOriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].TrayOriginSlot = slot;
|
||||
AllLocationWafers[module][slot].TrayProcessCount = (SC.ContainsItem("System.DefaultTrayProcessCount") ? SC.GetValue<int>("System.DefaultTrayProcessCount") : 10);
|
||||
if (AllLocationWafers[module][slot].InnerId == Guid.Empty)//创建时可能有Tray,防位置GUID被覆盖
|
||||
if (AllLocationWafers[module][slot].WaferInnerID == Guid.Empty)//创建时可能有Tray,防位置GUID被覆盖
|
||||
{
|
||||
AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].WaferInnerID = Guid.NewGuid();
|
||||
}
|
||||
if (OnlyTrayModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][slot].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][slot].WaferStatus = WaferStatus.Empty;
|
||||
|
||||
}
|
||||
else if (OnlyWaferModule.Contains(module))
|
||||
{
|
||||
AllLocationWafers[module][slot].TrayState = WaferTrayStatus.Empty;
|
||||
AllLocationWafers[module][slot].InnerId = Guid.NewGuid();//单独出现Wafer地方必须创建,这里是EFEM版本
|
||||
AllLocationWafers[module][slot].TrayState = TrayStatus.Empty;
|
||||
AllLocationWafers[module][slot].WaferInnerID = Guid.NewGuid();//单独出现Wafer地方必须创建,这里是EFEM版本
|
||||
}
|
||||
var substHistory = new SubstHistory(module.ToString(), slot, DateTime.Now, SubstAccessType.Create);
|
||||
AllLocationWafers[module][slot].SubstHists = new SubstHistory[1] { substHistory };
|
||||
|
@ -849,12 +849,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
UpdateWaferE90State(AllLocationWafers[module][slot].WaferID, EnumE90Status.NeedProcessing);
|
||||
UpdateWaferTransportState(AllLocationWafers[module][slot].WaferID, SubstrateTransportStatus.AtSource);
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].InnerId.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].WaferInnerID.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
_needSerialize = true;
|
||||
return AllLocationWafers[module][slot];
|
||||
}
|
||||
|
||||
public WaferInfoRt CreateTray(ModuleName module, int slot, WaferTrayStatus trayStatu = WaferTrayStatus.Normal)
|
||||
public WaferInfoRt CreateTray(ModuleName module, int slot, TrayStatus trayStatu = TrayStatus.Normal)
|
||||
{
|
||||
if (OnlyWaferModule.Contains(module))
|
||||
{
|
||||
|
@ -881,17 +881,17 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].TrayBelongTo = "System";
|
||||
AllLocationWafers[module][slot].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][slot].ProcessState = EnumWaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].WaferStatus = WaferStatus.Empty;
|
||||
AllLocationWafers[module][slot].ProcessState = WaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][slot].SubstE90Status = EnumE90Status.NeedProcessing;
|
||||
AllLocationWafers[module][slot].WaferID = GenerateWaferId(module, slot, text);
|
||||
AllLocationWafers[module][slot].WaferOrigin = GenerateOrigin(module, slot);
|
||||
AllLocationWafers[module][slot].Station = (int)module;
|
||||
AllLocationWafers[module][slot].Slot = slot;
|
||||
AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].WaferInnerID = Guid.NewGuid();
|
||||
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
|
||||
AllLocationWafers[module][slot].OriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].OriginSlot = slot;
|
||||
AllLocationWafers[module][slot].WaferOriginStation = (int)module;
|
||||
AllLocationWafers[module][slot].WaferOriginSlot = slot;
|
||||
AllLocationWafers[module][slot].OriginCarrierID = text;
|
||||
AllLocationWafers[module][slot].LotId = "";
|
||||
AllLocationWafers[module][slot].HostLaserMark1 = "";
|
||||
|
@ -909,13 +909,13 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
UpdateWaferE90State(AllLocationWafers[module][slot].WaferID, EnumE90Status.NeedProcessing);
|
||||
UpdateWaferTransportState(AllLocationWafers[module][slot].WaferID, SubstrateTransportStatus.AtSource);
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].InnerId.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
WaferDataRecorder.CreateWafer(AllLocationWafers[module][slot].WaferInnerID.ToString(), carrierGuid, module.ToString(), slot, AllLocationWafers[module][slot].WaferID, AllLocationWafers[module][slot].ProcessState.ToString());
|
||||
_needSerialize = true;
|
||||
return AllLocationWafers[module][slot];
|
||||
}
|
||||
public void DelectGuid(ModuleName module, int slotFrom)
|
||||
{
|
||||
AllLocationWafers[module][0].InnerId = Guid.Empty;
|
||||
AllLocationWafers[module][0]. WaferInnerID = Guid.Empty;
|
||||
}
|
||||
public void DeleteWafer(ModuleName module, int slotFrom, int count = 1)
|
||||
{
|
||||
|
@ -929,14 +929,14 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
LOG.Write($"Invalid wafer delete, invalid parameter, {module}, {num + 1}");
|
||||
continue;
|
||||
}
|
||||
UpdateWaferTrayStatus(module, num, WaferTrayStatus.Empty);
|
||||
UpdateWaferTrayStatus(module, num, TrayStatus.Empty);
|
||||
UpdateWaferE90State(AllLocationWafers[module][num].WaferID, EnumE90Status.None);
|
||||
UpdateWaferTransportState(AllLocationWafers[module][num].WaferID, SubstrateTransportStatus.None);
|
||||
WaferDataRecorder.DeleteWafer(AllLocationWafers[module][num].InnerId.ToString());
|
||||
AllLocationWafers[module][num].SetEmpty();
|
||||
WaferDataRecorder.DeleteWafer(AllLocationWafers[module][num].WaferInnerID.ToString());
|
||||
AllLocationWafers[module][num].SetWaferTrayEmpty();
|
||||
AllLocationWafers[module][num].SubstHists = null;
|
||||
_dictWaferInfo.Remove(AllLocationWafers[module][num].WaferID);
|
||||
AllLocationWafers[module][num].InnerId = Guid.Empty;
|
||||
AllLocationWafers[module][num].WaferInnerID = Guid.Empty;
|
||||
AllLocationWafers[module][num].TrayBelongTo = "";
|
||||
}
|
||||
}
|
||||
|
@ -959,8 +959,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
return;
|
||||
}
|
||||
AllLocationWafers[module][num].Status = WaferStatus.Empty;
|
||||
AllLocationWafers[module][num].ProcessState = EnumWaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][num].WaferStatus = WaferStatus.Empty;
|
||||
AllLocationWafers[module][num].ProcessState = WaferProcessStatus.Idle;
|
||||
AllLocationWafers[module][num].ProcessJobID = "";
|
||||
AllLocationWafers[module][num].ProcessJob = null;
|
||||
}
|
||||
|
@ -980,7 +980,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
LOG.Write($"Invalid wafer delete, invalid parameter, {module}, {num + 1}");
|
||||
continue;
|
||||
}
|
||||
AllLocationWafers[module][num].SetEmpty();
|
||||
AllLocationWafers[module][num].SetWaferTrayEmpty();
|
||||
AllLocationWafers[module][num].SubstHists = null;
|
||||
_dictWaferInfo.Remove(AllLocationWafers[module][num].WaferID);
|
||||
}
|
||||
|
@ -1000,12 +1000,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
UpdateWaferE90State(AllLocationWafers[module][num].WaferID, EnumE90Status.Lost);
|
||||
UpdateWaferTransportState(AllLocationWafers[module][num].WaferID, SubstrateTransportStatus.None);
|
||||
UpdateWaferTrayStatus(AllLocationWafers[module][num].WaferID, WaferTrayStatus.Empty);
|
||||
UpdateWaferTrayStatus(AllLocationWafers[module][num].WaferID, TrayStatus.Empty);
|
||||
UpdateWaferHistory(module, slotFrom, SubstAccessType.Delete);
|
||||
lock (_lockerWaferList)
|
||||
{
|
||||
WaferDataRecorder.DeleteWafer(AllLocationWafers[module][num].InnerId.ToString());
|
||||
AllLocationWafers[module][num].SetEmpty();
|
||||
WaferDataRecorder.DeleteWafer(AllLocationWafers[module][num].WaferInnerID.ToString());
|
||||
AllLocationWafers[module][num].SetWaferTrayEmpty();
|
||||
_dictWaferInfo.Remove(AllLocationWafers[module][num].WaferID);
|
||||
|
||||
}
|
||||
|
@ -1023,7 +1023,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].LaserMarker = laserMarker;
|
||||
WaferDataRecorder.SetWaferMarker(AllLocationWafers[module][slot].InnerId.ToString(), laserMarker);
|
||||
WaferDataRecorder.SetWaferMarker(AllLocationWafers[module][slot].WaferInnerID.ToString(), laserMarker);
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1071,7 +1071,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[module][slot].LaserMarkerScore = laserMarkerScore;
|
||||
AllLocationWafers[module][slot].ImageFileName = fileName;
|
||||
AllLocationWafers[module][slot].ImageFilePath = filePath;
|
||||
WaferDataRecorder.SetWaferMarkerWithScoreAndFileName(AllLocationWafers[module][slot].InnerId.ToString(), laserMarker, laserMarkerScore, fileName, filePath);
|
||||
WaferDataRecorder.SetWaferMarkerWithScoreAndFileName(AllLocationWafers[module][slot].WaferInnerID.ToString(), laserMarker, laserMarkerScore, fileName, filePath);
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1086,7 +1086,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].T7Code = T7Code;
|
||||
WaferDataRecorder.SetWaferT7Code(AllLocationWafers[module][slot].InnerId.ToString(), T7Code);
|
||||
WaferDataRecorder.SetWaferT7Code(AllLocationWafers[module][slot].WaferInnerID.ToString(), T7Code);
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1101,7 +1101,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].PPID = PPID;
|
||||
WaferDataRecorder.SetWaferSequence(AllLocationWafers[module][slot].InnerId.ToString(), PPID);
|
||||
WaferDataRecorder.SetWaferSequence(AllLocationWafers[module][slot].WaferInnerID.ToString(), PPID);
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1119,7 +1119,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
AllLocationWafers[module][slot].T7CodeScore = t7CodeScore;
|
||||
AllLocationWafers[module][slot].ImageFileName = fileName;
|
||||
AllLocationWafers[module][slot].ImageFilePath = filePath;
|
||||
WaferDataRecorder.SetWaferT7CodeWithScoreAndFileName(AllLocationWafers[module][slot].InnerId.ToString(), t7Code, t7CodeScore, fileName, filePath);
|
||||
WaferDataRecorder.SetWaferT7CodeWithScoreAndFileName(AllLocationWafers[module][slot].WaferInnerID.ToString(), t7Code, t7CodeScore, fileName, filePath);
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1152,7 +1152,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
_needSerialize = true;
|
||||
}
|
||||
|
||||
public void UpdateWaferProcessStatus(ModuleName module, int slot, EnumWaferProcessStatus status)
|
||||
public void UpdateWaferProcessStatus(ModuleName module, int slot, WaferProcessStatus status)
|
||||
{
|
||||
if (!IsWaferSlotLocationValid(module, slot))
|
||||
{
|
||||
|
@ -1162,7 +1162,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].ProcessState = status;
|
||||
WaferDataRecorder.SetWaferStatus(AllLocationWafers[module][slot].InnerId.ToString(), status.ToString());
|
||||
WaferDataRecorder.SetWaferStatus(AllLocationWafers[module][slot].WaferInnerID.ToString(), status.ToString());
|
||||
}
|
||||
_needSerialize = true;
|
||||
}
|
||||
|
@ -1172,20 +1172,20 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
switch (status)
|
||||
{
|
||||
case ProcessStatus.Busy:
|
||||
UpdateWaferProcessStatus(module, slot, EnumWaferProcessStatus.InProcess);
|
||||
UpdateWaferProcessStatus(module, slot, WaferProcessStatus.InProcess);
|
||||
break;
|
||||
case ProcessStatus.Completed:
|
||||
UpdateWaferProcessStatus(module, slot, EnumWaferProcessStatus.Completed);
|
||||
UpdateWaferProcessStatus(module, slot, WaferProcessStatus.Completed);
|
||||
break;
|
||||
case ProcessStatus.Failed:
|
||||
case ProcessStatus.Abort:
|
||||
UpdateWaferProcessStatus(module, slot, EnumWaferProcessStatus.Failed);
|
||||
UpdateWaferProcessStatus(module, slot, WaferProcessStatus.Failed);
|
||||
break;
|
||||
case ProcessStatus.Idle:
|
||||
UpdateWaferProcessStatus(module, slot, EnumWaferProcessStatus.Idle);
|
||||
UpdateWaferProcessStatus(module, slot, WaferProcessStatus.Idle);
|
||||
break;
|
||||
case ProcessStatus.Wait:
|
||||
UpdateWaferProcessStatus(module, slot, EnumWaferProcessStatus.InProcess);
|
||||
UpdateWaferProcessStatus(module, slot, WaferProcessStatus.InProcess);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1195,19 +1195,19 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
switch (status)
|
||||
{
|
||||
case ProcessStatus.Busy:
|
||||
UpdateWaferProcessStatus(waferID, EnumWaferProcessStatus.InProcess);
|
||||
UpdateWaferProcessStatus(waferID, WaferProcessStatus.InProcess);
|
||||
break;
|
||||
case ProcessStatus.Completed:
|
||||
UpdateWaferProcessStatus(waferID, EnumWaferProcessStatus.Completed);
|
||||
UpdateWaferProcessStatus(waferID, WaferProcessStatus.Completed);
|
||||
break;
|
||||
case ProcessStatus.Failed:
|
||||
UpdateWaferProcessStatus(waferID, EnumWaferProcessStatus.Failed);
|
||||
UpdateWaferProcessStatus(waferID, WaferProcessStatus.Failed);
|
||||
break;
|
||||
case ProcessStatus.Idle:
|
||||
UpdateWaferProcessStatus(waferID, EnumWaferProcessStatus.Idle);
|
||||
UpdateWaferProcessStatus(waferID, WaferProcessStatus.Idle);
|
||||
break;
|
||||
case ProcessStatus.Wait:
|
||||
UpdateWaferProcessStatus(waferID, EnumWaferProcessStatus.InProcess);
|
||||
UpdateWaferProcessStatus(waferID, WaferProcessStatus.InProcess);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1250,7 +1250,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
{
|
||||
lock (_lockerWaferList)
|
||||
{
|
||||
if (!waferInfo.IsEmpty)
|
||||
if (!waferInfo.IsWaferEmpty)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1294,7 +1294,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
},
|
||||
{
|
||||
"SubstSource",
|
||||
((ModuleName)waferInfo.OriginStation).ToString()
|
||||
((ModuleName)waferInfo.WaferOriginStation).ToString()
|
||||
},
|
||||
{
|
||||
"SubstState",
|
||||
|
@ -1345,7 +1345,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
var sECsDataItem = new SECsDataItem(SECsFormat.List);
|
||||
sECsDataItem.Add("SourceCarrier", waferInfo.OriginCarrierID ?? "");
|
||||
sECsDataItem.Add("SourceSlot", (waferInfo.OriginSlot + 1).ToString());
|
||||
sECsDataItem.Add("SourceSlot", (waferInfo.WaferOriginSlot + 1).ToString());
|
||||
sECsDataItem.Add("CurrentCarrier", text ?? "");
|
||||
sECsDataItem.Add("CurrentSlot", (waferInfo.Slot + 1).ToString());
|
||||
sECsDataItem.Add("LaserMark1", waferInfo.LaserMarker ?? "");
|
||||
|
@ -1379,12 +1379,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
},
|
||||
{
|
||||
"SubstSource",
|
||||
((ModuleName)waferInfo.OriginStation).ToString()
|
||||
((ModuleName)waferInfo.WaferOriginStation).ToString()
|
||||
},
|
||||
{ "SourceCarrier", waferInfo.OriginCarrierID },
|
||||
{
|
||||
"SourceSlot",
|
||||
waferInfo.OriginSlot + 1
|
||||
waferInfo.WaferOriginSlot + 1
|
||||
},
|
||||
{
|
||||
"Slot",
|
||||
|
@ -1463,7 +1463,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
public void UpdateWaferE90State(ModuleName module, int slot, EnumE90Status E90state)
|
||||
{
|
||||
var wafer = GetWafer(module, slot);
|
||||
if (wafer.IsEmpty)
|
||||
if (wafer.IsWaferEmpty)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -1502,12 +1502,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
},
|
||||
{
|
||||
"SubstSource",
|
||||
((ModuleName)wafer.OriginStation).ToString()
|
||||
((ModuleName)wafer.WaferOriginStation).ToString()
|
||||
},
|
||||
{ "SourceCarrier", wafer.OriginCarrierID },
|
||||
{
|
||||
"SourceSlot",
|
||||
wafer.OriginSlot + 1
|
||||
wafer.WaferOriginSlot + 1
|
||||
},
|
||||
{
|
||||
"Slot",
|
||||
|
@ -1591,7 +1591,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].LotId = lotId;
|
||||
WaferDataRecorder.SetWaferLotId(AllLocationWafers[module][slot].InnerId.ToString(), lotId);
|
||||
WaferDataRecorder.SetWaferLotId(AllLocationWafers[module][slot].WaferInnerID.ToString(), lotId);
|
||||
Singleton<CarrierManager>.Instance.UpdateCarrierLot(module.ToString(), lotId);
|
||||
}
|
||||
_needSerialize = true;
|
||||
|
@ -1625,7 +1625,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
_needSerialize = true;
|
||||
}
|
||||
|
||||
public void UpdateWaferProcessStatus(string waferID, EnumWaferProcessStatus status)
|
||||
public void UpdateWaferProcessStatus(string waferID, WaferProcessStatus status)
|
||||
{
|
||||
var wafer = GetWafer(waferID);
|
||||
lock (_lockerWaferList)
|
||||
|
@ -1647,7 +1647,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
var array = wafer;
|
||||
foreach (var waferInfo in array)
|
||||
{
|
||||
WaferDataRecorder.SetProcessInfo(waferInfo.InnerId.ToString(), processId);
|
||||
WaferDataRecorder.SetProcessInfo(waferInfo.WaferInnerID.ToString(), processId);
|
||||
}
|
||||
}
|
||||
_needSerialize = true;
|
||||
|
@ -1721,7 +1721,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
return $"{ModuleHelper.GetAbbr(module)}.{slot + 1:D2}";
|
||||
}
|
||||
|
||||
public void UpdateWaferTrayStatus(string waferid, WaferTrayStatus state)
|
||||
public void UpdateWaferTrayStatus(string waferid, TrayStatus state)
|
||||
{
|
||||
if (string.IsNullOrEmpty(waferid))
|
||||
{
|
||||
|
@ -1742,12 +1742,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
|
|||
}
|
||||
}
|
||||
|
||||
public void UpdateWaferTrayStatus(ModuleName module, int slot, WaferTrayStatus status)
|
||||
public void UpdateWaferTrayStatus(ModuleName module, int slot, TrayStatus status)
|
||||
{
|
||||
lock (_lockerWaferList)
|
||||
{
|
||||
AllLocationWafers[module][slot].TrayState = status;
|
||||
if (status == WaferTrayStatus.Empty)
|
||||
if (status == TrayStatus.Empty)
|
||||
{
|
||||
AllLocationWafers[module][slot].TrayProcessCount = 0;
|
||||
}
|
||||
|
|
|
@ -1482,7 +1482,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts
|
|||
string slot = "";
|
||||
for (int i = 0; i < _slotNumber && i < wafers.Length; i++)
|
||||
{
|
||||
slot += wafers[i].IsEmpty ? "0" : "1";
|
||||
slot += wafers[i].IsWaferEmpty ? "0" : "1";
|
||||
}
|
||||
|
||||
return slot;
|
||||
|
@ -1493,9 +1493,9 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts
|
|||
var wafers = WaferManager.Instance.GetWafers(ModuleHelper.Converter(Name));
|
||||
foreach (var wafer in wafers)
|
||||
{
|
||||
if (wafer.Status == WaferStatus.Crossed || wafer.Status == WaferStatus.Double)
|
||||
if (wafer.WaferStatus == WaferStatus.Crossed || wafer.WaferStatus == WaferStatus.Double)
|
||||
{
|
||||
EV.PostWarningLog(Name, $"At least one wafer is {wafer.Status.ToString()}.");
|
||||
EV.PostWarningLog(Name, $"At least one wafer is {wafer.WaferStatus.ToString()}.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1514,7 +1514,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts
|
|||
var wafers = WaferManager.Instance.GetWafers(ModuleHelper.Converter(Name));
|
||||
for (int i = 0; i < _slotNumber; i++)
|
||||
{
|
||||
if (wafers[i].IsEmpty)
|
||||
if (wafers[i].IsWaferEmpty)
|
||||
slot.Add(i);
|
||||
}
|
||||
return slot;
|
||||
|
|
|
@ -2116,11 +2116,11 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBas
|
|||
var wafers = WaferManager.Instance.GetWafers(ModuleHelper.Converter(Name));
|
||||
foreach (var wafer in wafers)
|
||||
{
|
||||
if (wafer.IsEmpty) continue;
|
||||
if (wafer.Status == WaferStatus.Crossed || wafer.Status == WaferStatus.Double)
|
||||
if (wafer.IsWaferEmpty) continue;
|
||||
if (wafer.WaferStatus == WaferStatus.Crossed || wafer.WaferStatus == WaferStatus.Double)
|
||||
{
|
||||
//EV.PostWarningLog(Name, $"At least one wafer is {wafer.Status.ToString()}.");
|
||||
reason = $"At least one wafer is {wafer.Status.ToString()}.";
|
||||
reason = $"At least one wafer is {wafer.WaferStatus.ToString()}.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -2320,7 +2320,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.LoadPortBas
|
|||
string slot = "";
|
||||
for (int i = 0; i < 25; i++)
|
||||
{
|
||||
slot += wafers[i].IsEmpty ? "0" : "1";
|
||||
slot += wafers[i].IsWaferEmpty ? "0" : "1";
|
||||
}
|
||||
|
||||
return slot;
|
||||
|
|
|
@ -351,7 +351,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.OpenStages
|
|||
int OcrThreshold = SC.GetValue<int>("Process.OCRScoreThreshold");
|
||||
foreach(var wafer in wafers)
|
||||
{
|
||||
if (wafer.IsEmpty)
|
||||
if (wafer.IsWaferEmpty)
|
||||
continue;
|
||||
if (wafer.SubstE90Status != EnumE90Status.Processed)
|
||||
continue;
|
||||
|
@ -361,7 +361,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.OpenStages
|
|||
if(waferscore < (float)OcrThreshold)
|
||||
{
|
||||
wafer.SubstE90Status = EnumE90Status.Aborted;
|
||||
wafer.ProcessState = EnumWaferProcessStatus.Failed;
|
||||
wafer.ProcessState = WaferProcessStatus.Failed;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -635,13 +635,13 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.OpenStages
|
|||
|
||||
foreach(var wafer in WaferManager.Instance.GetWafers(LPModuleName))
|
||||
{
|
||||
if (wafer.IsEmpty) continue;
|
||||
if(wafer.Status == WaferStatus.Crossed)
|
||||
if (wafer.IsWaferEmpty) continue;
|
||||
if(wafer.WaferStatus == WaferStatus.Crossed)
|
||||
{
|
||||
reason = "Crossed wafer";
|
||||
return false;
|
||||
}
|
||||
if (wafer.Status == WaferStatus.Double)
|
||||
if (wafer.WaferStatus == WaferStatus.Double)
|
||||
{
|
||||
reason = "Double wafer";
|
||||
return false;
|
||||
|
|
|
@ -496,13 +496,13 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.OpenStages
|
|||
}
|
||||
foreach (var wafer in WaferManager.Instance.GetWafers(LPModuleName))
|
||||
{
|
||||
if (wafer.IsEmpty) continue;
|
||||
if (wafer.Status == WaferStatus.Crossed)
|
||||
if (wafer.IsWaferEmpty) continue;
|
||||
if (wafer.WaferStatus == WaferStatus.Crossed)
|
||||
{
|
||||
reason = "Crossed wafer";
|
||||
return false;
|
||||
}
|
||||
if (wafer.Status == WaferStatus.Double)
|
||||
if (wafer.WaferStatus == WaferStatus.Double)
|
||||
{
|
||||
reason = "Double wafer";
|
||||
return false;
|
||||
|
|
|
@ -235,7 +235,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.OcrReaders
|
|||
public void Monitor()
|
||||
{
|
||||
var wafer = WaferManager.Instance.GetWafers(ModuleName.Aligner)[0];
|
||||
if(wafer.IsEmpty) CurrentLaserMark = string.Empty;
|
||||
if(wafer.IsWaferEmpty) CurrentLaserMark = string.Empty;
|
||||
//if (IO.DI["DI_PreAlignerWaferOn"].Value) CurrentLaserMark = string.Empty;
|
||||
}
|
||||
|
||||
|
|
|
@ -150,12 +150,12 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.OcrReaders
|
|||
reason = "";
|
||||
CurrentLaserMark = param[0].ToString();
|
||||
var wafer = WaferManager.Instance.GetWafer(InstalledModule, 0);
|
||||
if (!wafer.IsEmpty)
|
||||
if (!wafer.IsWaferEmpty)
|
||||
{
|
||||
wafer.LaserMarker = CurrentLaserMark;
|
||||
Guid guid = Guid.NewGuid();
|
||||
OCRDataRecorder.OcrReadComplete(guid.ToString(), wafer.WaferID, wafer.OriginStation.ToString(),
|
||||
wafer.OriginCarrierID ?? "", wafer.OriginSlot.ToString(), "0", "0", true, CurrentLaserMark,
|
||||
OCRDataRecorder.OcrReadComplete(guid.ToString(), wafer.WaferID, wafer.WaferOriginStation.ToString(),
|
||||
wafer.OriginCarrierID ?? "", wafer.WaferOriginSlot.ToString(), "0", "0", true, CurrentLaserMark,
|
||||
"0", "0");
|
||||
|
||||
}
|
||||
|
|
|
@ -619,7 +619,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HwinRobot
|
|||
}
|
||||
else
|
||||
{
|
||||
WaferManager.Instance.GetWafer(CurrentInteractModule, i).Status = GetWaferStarusByNum(waferStatue, out msg);// Aitex.Core.Common.WaferStatus.Crossed;
|
||||
WaferManager.Instance.GetWafer(CurrentInteractModule, i).WaferStatus = GetWaferStarusByNum(waferStatue, out msg);// Aitex.Core.Common.WaferStatus.Crossed;
|
||||
}
|
||||
errorMessage += $"slot {i + 1} has {msg}!" + "\r\n";
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.HwinRobot
|
|||
{
|
||||
if (!WaferManager.Instance.CheckHasTray(CurrentInteractModule, i))
|
||||
{
|
||||
WaferManager.Instance.CreateTray(CurrentInteractModule, i,Aitex.Core.Common.WaferTrayStatus.Crossed);
|
||||
WaferManager.Instance.CreateTray(CurrentInteractModule, i,Aitex.Core.Common.TrayStatus.Crossed);
|
||||
}
|
||||
errorMessage += $"slot {i + 1} has crossed wafer!" + "\r\n";
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs
|
|||
public virtual void OnProcessStart(string guid, string recipeName, bool isClean)
|
||||
{
|
||||
ProcessDataRecorder.Start(guid, recipeName,
|
||||
WaferManager.Instance.GetWafer(ModuleHelper.Converter(Module), 0).InnerId.ToString(), Module);
|
||||
WaferManager.Instance.GetWafer(ModuleHelper.Converter(Module), 0).WaferInnerID.ToString(), Module);
|
||||
|
||||
if (!isClean)
|
||||
{
|
||||
|
|
|
@ -330,7 +330,7 @@ namespace Aitex.Core.RT.Device.Unit
|
|||
if (!_doM1.SetValue(false, out var reason)) LOG.Error($"{Module} reset DO failed, {reason}");
|
||||
_state = TurnOverState.Idle;
|
||||
var wafer = WaferManager.Instance.GetWafer(ModuleName.TurnOverStation, 0);
|
||||
if (!wafer.IsEmpty)
|
||||
if (!wafer.IsWaferEmpty)
|
||||
{
|
||||
var dvid = new SerializableDictionary<string, string>()
|
||||
{
|
||||
|
@ -507,7 +507,7 @@ namespace Aitex.Core.RT.Device.Unit
|
|||
//if (_doM1.Value == false) _doM1.SetValue(true, out _);
|
||||
_loopTimer.Start(_scLoopInterval.IntValue * 1000);
|
||||
var wafer = WaferManager.Instance.GetWafer(ModuleName.TurnOverStation,0);
|
||||
if (!wafer.IsEmpty)
|
||||
if (!wafer.IsWaferEmpty)
|
||||
{
|
||||
var dvid = new SerializableDictionary<string, string>()
|
||||
{
|
||||
|
|
|
@ -136,7 +136,7 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
Dictionary<string, object> data = QueryDataClient.Instance.Service.PollData(new List<string> { chamber.ToString() + ".ModuleWaferList" });
|
||||
WaferInfoRt[] _waferInfo = data[chamber.ToString() + ".ModuleWaferList"] as WaferInfoRt[];
|
||||
int slot = _waferInfo[CurrentSlot.SlotID].Slot; //(位置获取Tray的ID)
|
||||
string guid = _waferInfo[CurrentSlot.SlotID].InnerId.ToString(); //(位置获取Tray的ID)
|
||||
string guid = _waferInfo[CurrentSlot.SlotID].WaferInnerID.ToString(); //(位置获取Tray的ID)
|
||||
|
||||
//var wins = Application.Current.Windows.OfType<WinTrayThicknessDataView>().ToArray();
|
||||
//if (wins.Any())
|
||||
|
@ -153,7 +153,7 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
//{
|
||||
var wm = new WindowManager();
|
||||
UiViewModelBase model;
|
||||
if (chamber.ToString().Contains("PM") && _waferInfo[CurrentSlot.SlotID].InnerId == Guid.Empty)
|
||||
if (chamber.ToString().Contains("PM") && _waferInfo[CurrentSlot.SlotID].WaferInnerID == Guid.Empty)
|
||||
model = new WinPMThicknessDataViewModel(chamber.ToString());
|
||||
else
|
||||
model = new WinTrayThicknessDataViewModel(guid, chamber, slot);
|
||||
|
|
|
@ -88,7 +88,7 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
var convertedWafer = WaferInfoConverter(wafers[index], info.WaferModuleID, index);
|
||||
info.WaferManager.Wafers[i].WaferStatus = convertedWafer.WaferStatus;
|
||||
info.WaferManager.Wafers[i].WaferID = convertedWafer.WaferID;
|
||||
if (wafers[index].IsEmpty)
|
||||
if (wafers[index].IsWaferEmpty)
|
||||
{
|
||||
info.WaferManager.Wafers[i].SourceName =((ModuleName)wafers[index].TrayOriginStation).ToString()+"."+ (wafers[index].TrayOriginSlot + 1).ToString().PadLeft(2,'0');
|
||||
}
|
||||
|
@ -119,12 +119,12 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
{
|
||||
info.WaferManager.Wafers[i].ToolTip = new ToolTip()
|
||||
{
|
||||
Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}"
|
||||
Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].WaferStatus).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}"
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
info.WaferManager.Wafers[i].ToolTip.Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}";
|
||||
info.WaferManager.Wafers[i].ToolTip.Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].WaferStatus).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -179,22 +179,22 @@ namespace MECF.Framework.UI.Client.ClientBase
|
|||
//8:partial processed
|
||||
private int WaferStatusConverter(RTDefine.WaferInfoRt awafer)
|
||||
{
|
||||
if (awafer.Status == RTDefine.WaferStatus.Empty)
|
||||
if (awafer.WaferStatus == RTDefine.WaferStatus.Empty)
|
||||
return 0;
|
||||
|
||||
if (awafer.Status == RTDefine.WaferStatus.Normal)
|
||||
if (awafer.WaferStatus == RTDefine.WaferStatus.Normal)
|
||||
{
|
||||
switch (awafer.ProcessState)
|
||||
{
|
||||
case RTDefine.EnumWaferProcessStatus.InProcess: return 3;
|
||||
case RTDefine.EnumWaferProcessStatus.Completed: return awafer.HasWarning ? 7 : 4;
|
||||
case RTDefine.EnumWaferProcessStatus.Failed: return 5;
|
||||
case RTDefine.EnumWaferProcessStatus.Wait: return 3;
|
||||
case RTDefine.EnumWaferProcessStatus.Idle: return awafer.ProcessJob == null ? 1 : 2;
|
||||
case RTDefine.WaferProcessStatus.InProcess: return 3;
|
||||
case RTDefine.WaferProcessStatus.Completed: return awafer.HasWarning ? 7 : 4;
|
||||
case RTDefine.WaferProcessStatus.Failed: return 5;
|
||||
case RTDefine.WaferProcessStatus.Wait: return 3;
|
||||
case RTDefine.WaferProcessStatus.Idle: return awafer.ProcessJob == null ? 1 : 2;
|
||||
}
|
||||
}
|
||||
|
||||
if (awafer.Status == RTDefine.WaferStatus.Dummy)
|
||||
if (awafer.WaferStatus == RTDefine.WaferStatus.Dummy)
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue