|
@@ -24,7 +24,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
public class OperationOverViewModel : BindableBase
|
|
|
{
|
|
|
#region 私有字段
|
|
|
- private bool m_TabIsChecked=true;
|
|
|
+ private bool m_TabIsChecked = true;
|
|
|
private ModuleInfo m_LP1ModuleInfo;
|
|
|
private ModuleInfo m_LP2ModuleInfo;
|
|
|
private ModuleInfo m_LLAModuleInfo;
|
|
@@ -90,9 +90,9 @@ namespace Venus_MainPages.ViewModels
|
|
|
#region 属性
|
|
|
|
|
|
public bool TabIsChecked
|
|
|
- {
|
|
|
- get { return m_TabIsChecked; }
|
|
|
- set { SetProperty(ref m_TabIsChecked, value); }
|
|
|
+ {
|
|
|
+ get { return m_TabIsChecked; }
|
|
|
+ set { SetProperty(ref m_TabIsChecked, value); }
|
|
|
}
|
|
|
public ModuleInfo LP1ModuleInfo
|
|
|
{
|
|
@@ -152,25 +152,25 @@ namespace Venus_MainPages.ViewModels
|
|
|
set { SetProperty(ref m_Robot2XAction, value); }
|
|
|
}
|
|
|
|
|
|
- public WaferRobotTAction Robot3TAction
|
|
|
+ public WaferRobotTAction Robot3TAction
|
|
|
{
|
|
|
- get{ return m_Robot3TAction;}
|
|
|
- set{SetProperty(ref m_Robot3TAction ,value);}
|
|
|
+ get { return m_Robot3TAction; }
|
|
|
+ set { SetProperty(ref m_Robot3TAction, value); }
|
|
|
}
|
|
|
- public WaferRobotXAction Robot3XAction
|
|
|
+ public WaferRobotXAction Robot3XAction
|
|
|
{
|
|
|
- get{ return m_Robot3XAction;}
|
|
|
- set{SetProperty(ref m_Robot3XAction ,value);}
|
|
|
+ get { return m_Robot3XAction; }
|
|
|
+ set { SetProperty(ref m_Robot3XAction, value); }
|
|
|
}
|
|
|
- public WaferRobotTAction Robot4TAction
|
|
|
+ public WaferRobotTAction Robot4TAction
|
|
|
{
|
|
|
- get{ return m_Robot4TAction;}
|
|
|
- set{SetProperty(ref m_Robot4TAction ,value);}
|
|
|
+ get { return m_Robot4TAction; }
|
|
|
+ set { SetProperty(ref m_Robot4TAction, value); }
|
|
|
}
|
|
|
- public WaferRobotXAction Robot4XAction
|
|
|
+ public WaferRobotXAction Robot4XAction
|
|
|
{
|
|
|
- get{ return m_Robot4XAction;}
|
|
|
- set{SetProperty(ref m_Robot4XAction, value);}
|
|
|
+ get { return m_Robot4XAction; }
|
|
|
+ set { SetProperty(ref m_Robot4XAction, value); }
|
|
|
}
|
|
|
|
|
|
public RobotMoveInfo RobotMoveInfo
|
|
@@ -441,7 +441,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
public DelegateCommand EnableManualCommand =>
|
|
|
_EnableManualCommand ?? (_EnableManualCommand = new DelegateCommand(OnEnableManual));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
public bool SwitchFlag;
|
|
|
|
|
|
#endregion
|
|
@@ -472,7 +472,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
ATMModeIsOn = Convert.ToBoolean(QueryDataClient.Instance.Service.GetConfig("System.IsATMMode")) == true ? "ATM Mode On" : "ATM Mode Off";
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 命令方法
|
|
@@ -488,7 +488,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
LP3WaferAssociation.ModuleData = ModuleManager.ModuleInfos["LP3"];
|
|
|
SwitchFlag = true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void OnLoadWafer(object obj)
|
|
@@ -501,7 +501,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
}
|
|
|
private void OnSelectAll(object obj)
|
|
|
{
|
|
|
- var info=obj as WaferAssociationInfo;
|
|
|
+ var info = obj as WaferAssociationInfo;
|
|
|
|
|
|
info.SlotFrom = 1;
|
|
|
info.SlotTo = 25;
|
|
@@ -516,7 +516,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
}
|
|
|
private void OnStart(object obj)
|
|
|
{
|
|
|
- var info = obj as WaferAssociationInfo;
|
|
|
+ var info = obj as WaferAssociationInfo;
|
|
|
InvokeClient.Instance.Service.DoOperation("System.StartJob", info.LotId);
|
|
|
}
|
|
|
private void OnStop(object obj)
|
|
@@ -551,7 +551,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
WaferDialogView dialog = new WaferDialogView()
|
|
|
{
|
|
|
Owner = Application.Current.MainWindow,
|
|
|
- };
|
|
|
+ };
|
|
|
dialog.Height = 300;
|
|
|
dialog.Width = 400;
|
|
|
double angel = 0;
|
|
@@ -560,7 +560,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
if ((bool)dialog.AlignFlag == true && !string.IsNullOrEmpty(dialog.Angle))
|
|
|
{
|
|
|
- angel = Convert.ToDouble(dialog.Angle);
|
|
|
+ angel = Convert.ToDouble(dialog.Angle);
|
|
|
}
|
|
|
|
|
|
if ((bool)dialog.CoolingFlag == true && !string.IsNullOrEmpty(dialog.CoolingTime))
|
|
@@ -568,14 +568,14 @@ namespace Venus_MainPages.ViewModels
|
|
|
coolingtime = Convert.ToDouble(dialog.CoolingTime);
|
|
|
}
|
|
|
|
|
|
- InvokeClient.Instance.Service.DoOperation("System.ReturnAllWafer", dialog.CoolingFlag,coolingtime, dialog.AlignFlag, angel);
|
|
|
+ InvokeClient.Instance.Service.DoOperation("System.ReturnAllWafer", dialog.CoolingFlag, coolingtime, dialog.AlignFlag, angel);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void OnSetSequence(object obj)
|
|
|
{
|
|
|
- var info = obj as WaferInfo;
|
|
|
+ var info = obj as WaferInfo;
|
|
|
bool flag = info.SequenceName != "" ? false : true;
|
|
|
if (info.ModuleID == "LP1")
|
|
|
{
|
|
@@ -586,7 +586,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
AssociateSequence(LP2WaferAssociation, flag, info.SlotID);
|
|
|
}
|
|
|
else if (info.ModuleID == "LP3")
|
|
|
- {
|
|
|
+ {
|
|
|
AssociateSequence(LP3WaferAssociation, flag, info.SlotID);
|
|
|
}
|
|
|
}
|
|
@@ -626,7 +626,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
#region 私有方法
|
|
|
private void Timer_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
LP1ModuleInfo = ModuleManager.ModuleInfos["LP1"];
|
|
|
LP2ModuleInfo = ModuleManager.ModuleInfos["LP2"];
|
|
|
LP3ModuleInfo = ModuleManager.ModuleInfos["LP3"];
|
|
@@ -640,7 +640,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
if (LLAIsInstalled == true)
|
|
|
{
|
|
|
LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
|
|
|
- LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
|
|
|
+ LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
|
|
|
}
|
|
|
if (LLBIsInstalled == true)
|
|
|
{
|
|
@@ -680,12 +680,12 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
EFEMBladeAWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
|
|
|
EFEMBladeBWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
|
|
|
- Aligner1Wafer = ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
|
|
|
+ Aligner1Wafer = ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
|
|
|
}
|
|
|
|
|
|
RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction");
|
|
|
- EfemRobotMoveInfo=(RobotMoveInfo)QueryDataClient.Instance.Service.GetData("EFEM.RobotMoveAction");
|
|
|
- LP1WaferCount = LP1ModuleInfo.WaferManager.Wafers.Where(x=>x.WaferStatus!=0).Count();
|
|
|
+ EfemRobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("EFEM.RobotMoveAction");
|
|
|
+ LP1WaferCount = LP1ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
|
|
|
LP2WaferCount = LP2ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
|
|
|
LP3WaferCount = LP3ModuleInfo.WaferManager.Wafers.Where(x => x.WaferStatus != 0).Count();
|
|
|
|
|
@@ -721,12 +721,11 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region pick 和 place LL
|
|
|
- if (oldValue.Action == RobotAction.None && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
|
|
|
+ else if (oldValue.Action == RobotAction.None && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
|
|
|
{
|
|
|
var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
|
|
|
if (TMRobotMoveActionBladeTarget != null)
|
|
@@ -743,8 +742,19 @@ namespace Venus_MainPages.ViewModels
|
|
|
|
|
|
if (arm == "ArmA")
|
|
|
{
|
|
|
- Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
- await Task.Delay(600);
|
|
|
+ var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ if (waferRobotTAction != Robot1TAction)
|
|
|
+ {
|
|
|
+ Robot1TAction = waferRobotTAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Task.Delay(100);
|
|
|
+ }
|
|
|
+
|
|
|
+ //Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ //await Task.Delay(600);
|
|
|
Robot1XAction = WaferRobotXAction.Extend;
|
|
|
while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
|
|
|
{
|
|
@@ -754,8 +764,19 @@ namespace Venus_MainPages.ViewModels
|
|
|
}
|
|
|
else if (arm == "ArmB")
|
|
|
{
|
|
|
- Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
- await Task.Delay(600);
|
|
|
+ var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ if (waferRobotTAction != Robot2TAction)
|
|
|
+ {
|
|
|
+ Robot2TAction = waferRobotTAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Task.Delay(100);
|
|
|
+ }
|
|
|
+
|
|
|
+ //Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ //await Task.Delay(600);
|
|
|
Robot2XAction = WaferRobotXAction.Extend;
|
|
|
while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
|
|
|
{
|
|
@@ -763,13 +784,12 @@ namespace Venus_MainPages.ViewModels
|
|
|
}
|
|
|
Robot2XAction = WaferRobotXAction.Retract;
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region pick 和 place pm
|
|
|
- if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Extending)
|
|
|
+ else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Extending)
|
|
|
{
|
|
|
var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
|
|
|
if (TMRobotMoveActionBladeTarget != null)
|
|
@@ -785,20 +805,34 @@ namespace Venus_MainPages.ViewModels
|
|
|
var module = values[1];
|
|
|
if (arm == "ArmA")
|
|
|
{
|
|
|
- Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
- await Task.Delay(1500);
|
|
|
+ var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ if (waferRobotTAction != Robot1TAction)
|
|
|
+ {
|
|
|
+ Robot1TAction = waferRobotTAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Task.Delay(100);
|
|
|
+ }
|
|
|
Robot1XAction = WaferRobotXAction.Extend;
|
|
|
}
|
|
|
else if (arm == "ArmB")
|
|
|
{
|
|
|
- Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
- await Task.Delay(1500);
|
|
|
+ var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
+ if (waferRobotTAction != Robot2TAction)
|
|
|
+ {
|
|
|
+ Robot2TAction = waferRobotTAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Task.Delay(100);
|
|
|
+ }
|
|
|
Robot2XAction = WaferRobotXAction.Extend;
|
|
|
}
|
|
|
- return;
|
|
|
-
|
|
|
}
|
|
|
- if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Retracting)
|
|
|
+ else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Retracting)
|
|
|
{
|
|
|
var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
|
|
|
if (TMRobotMoveActionBladeTarget != null)
|
|
@@ -819,7 +853,6 @@ namespace Venus_MainPages.ViewModels
|
|
|
{
|
|
|
Robot2XAction = WaferRobotXAction.Retract;
|
|
|
}
|
|
|
- return;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -853,8 +886,12 @@ namespace Venus_MainPages.ViewModels
|
|
|
var robot3Robot3TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
//await Task.Delay(1000);
|
|
|
await ChangePosition(robot3Robot3TAction);
|
|
|
- Robot3TAction = robot3Robot3TAction;
|
|
|
- await Task.Delay(600);
|
|
|
+ if (Robot3TAction != robot3Robot3TAction)
|
|
|
+ {
|
|
|
+ Robot3TAction = robot3Robot3TAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
Robot3XAction = WaferRobotXAction.Extend;
|
|
|
while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0].WaferStatus == 0))
|
|
@@ -868,8 +905,12 @@ namespace Venus_MainPages.ViewModels
|
|
|
var robot4Robot4TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
|
|
|
//await Task.Delay(1000);
|
|
|
await ChangePosition(robot4Robot4TAction);
|
|
|
- Robot4TAction = robot4Robot4TAction;
|
|
|
- await Task.Delay(600);
|
|
|
+ if (Robot4TAction != robot4Robot4TAction)
|
|
|
+ {
|
|
|
+ Robot4TAction = robot4Robot4TAction;
|
|
|
+ await Task.Delay(600);
|
|
|
+ }
|
|
|
+
|
|
|
//ChangePosition(Robot4TAction);
|
|
|
//await Task.Delay(2000);
|
|
|
Robot4XAction = WaferRobotXAction.Extend;
|
|
@@ -931,7 +972,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
var arm = values[0];
|
|
|
if (arm == "ArmA")
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
Robot3XAction = WaferRobotXAction.Retract;
|
|
|
await Task.Delay(3000);
|
|
|
//ChangePosition(Robot3TAction);
|
|
@@ -1025,7 +1066,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
private void AssociateSequence(WaferAssociationInfo info, bool flag, int slot = -1)
|
|
|
{
|
|
|
List<WaferInfo> wafers = info.ModuleData.WaferManager.Wafers;
|
|
|
-
|
|
|
+
|
|
|
if (slot >= 0) //by wafer
|
|
|
{
|
|
|
int index = wafers.Count - slot - 1;
|
|
@@ -1073,7 +1114,7 @@ namespace Venus_MainPages.ViewModels
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
private async Task ChangePosition(WaferRobotTAction waferRobotTAction)
|
|
|
{
|