|
@@ -63,7 +63,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
private ModuleInfo _srd1ModuleInfo;
|
|
|
private ModuleInfo _srd2ModuleInfo;
|
|
|
private ModuleInfo _puf1ModuleInfo;
|
|
|
- private ModuleInfo _puf2ModuleInfo;
|
|
|
private ModuleInfo _dummy1ModuleInfo;
|
|
|
private ModuleInfo _dummy2ModuleInfo;
|
|
|
|
|
@@ -82,8 +81,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
private WaferInfo m_srd2Wafer;
|
|
|
private WaferInfo m_puf1WaferA;
|
|
|
private WaferInfo m_puf1WaferB;
|
|
|
- private WaferInfo m_puf2WaferA;
|
|
|
- private WaferInfo m_puf2WaferB;
|
|
|
private WaferInfo m_loaderWaferA;
|
|
|
private WaferInfo m_loaderWaferB;
|
|
|
private List<string> m_RtDataKeys = new List<string>();
|
|
@@ -91,7 +88,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
private bool m_EFEMIsInstalled;
|
|
|
private bool m_loaderInstalled;
|
|
|
private bool m_puf1IsInRobotStation;
|
|
|
- private bool m_puf2IsInRobotStation;
|
|
|
//private bool m_IsPUFChange;
|
|
|
private WaferInfo m_EFEMBladeAWafer;
|
|
|
private WaferInfo m_EFEMBladeBWafer;
|
|
@@ -129,26 +125,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
/// </summary>
|
|
|
private double _puf1RotationRatio;
|
|
|
/// <summary>
|
|
|
- /// puf2 Rotation ui 水平比例
|
|
|
- /// </summary>
|
|
|
- private double _puf2RotationRatio;
|
|
|
- ///// <summary>
|
|
|
- ///// puf1 Flip最大角度
|
|
|
- ///// </summary>
|
|
|
- //private double _puf1FlipMax;
|
|
|
- ///// <summary>
|
|
|
- ///// puf1 Flip最小角度
|
|
|
- ///// </summary>
|
|
|
- //private double _puf1FlipMin;
|
|
|
- ///// <summary>
|
|
|
- ///// puf2 Flip最大角度
|
|
|
- ///// </summary>
|
|
|
- //private double _puf2FlipMax;
|
|
|
- ///// <summary>
|
|
|
- ///// puf2 Flip最小角度
|
|
|
- ///// </summary>
|
|
|
- //private double _puf2FlipMin;
|
|
|
- /// <summary>
|
|
|
/// 定时器
|
|
|
/// </summary>
|
|
|
private DispatcherTimer _timer;
|
|
@@ -169,42 +145,22 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
/// </summary>
|
|
|
private double _puf1RotationMotorPosition;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation实际位置数据
|
|
|
- /// </summary>
|
|
|
- private double _puf2RotationMotorPosition;
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip实际位置数据
|
|
|
/// </summary>
|
|
|
private double _puf1FlipMotorPosition;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip实际位置数据
|
|
|
- /// </summary>
|
|
|
- private double _puf2FlipMotorPosition;
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip UI位置
|
|
|
/// </summary>
|
|
|
private double _puf1FlipPosition;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip UI位置
|
|
|
- /// </summary>
|
|
|
- private double _puf2FlipPosition;
|
|
|
- /// <summary>
|
|
|
/// Puf1 Rotation最左侧的位置
|
|
|
/// </summary>
|
|
|
private double _puf1RotationMotorPositionMax;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation最左侧的位置
|
|
|
- /// </summary>
|
|
|
- private double _puf2RotationMotorPositionMin;
|
|
|
- /// <summary>
|
|
|
/// Puf1 Rotation UI对应位置
|
|
|
/// </summary>
|
|
|
private double _puf1RotationPosition;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation UI对应位置
|
|
|
- /// </summary>
|
|
|
- private double _puf2RotationPosition;
|
|
|
- /// <summary>
|
|
|
/// Loader1 Rotation UI对应位置
|
|
|
/// </summary>
|
|
|
private double _loader1RotationPosition;
|
|
@@ -213,18 +169,10 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
/// </summary>
|
|
|
private BeckhoffStationAxis _puf1RotationAxis;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation Axis
|
|
|
- /// </summary>
|
|
|
- private BeckhoffStationAxis _puf2RotationAxis;
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip Axis
|
|
|
/// </summary>
|
|
|
private BeckhoffStationAxis _puf1FlipAxis;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip Axis
|
|
|
- /// </summary>
|
|
|
- private BeckhoffStationAxis _puf2FlipAxis;
|
|
|
- /// <summary>
|
|
|
/// Loader1 Rotation Axis
|
|
|
/// </summary>
|
|
|
private BeckhoffStationAxis _loader1RotationAxis;
|
|
@@ -257,10 +205,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
/// </summary>
|
|
|
private string _puf1FlipCurrentStation;
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip当前station
|
|
|
- /// </summary>
|
|
|
- private string _puf2FlipCurrentStation;
|
|
|
- /// <summary>
|
|
|
/// Loader1 TiltA当前station
|
|
|
/// </summary>
|
|
|
private string _loaderTiltACurrentStation;
|
|
@@ -330,11 +274,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
get { return _puf1ModuleInfo; }
|
|
|
set { SetProperty(ref _puf1ModuleInfo, value); }
|
|
|
}
|
|
|
- public ModuleInfo PUF2ModuleInfo
|
|
|
- {
|
|
|
- get { return _puf2ModuleInfo; }
|
|
|
- set { SetProperty(ref _puf2ModuleInfo, value); }
|
|
|
- }
|
|
|
public ModuleInfo Dummy1ModuleInfo
|
|
|
{
|
|
|
get { return _dummy1ModuleInfo; }
|
|
@@ -455,16 +394,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
get { return m_puf1WaferB; }
|
|
|
set { SetProperty(ref m_puf1WaferB, value); }
|
|
|
}
|
|
|
- public WaferInfo PUF2WaferA
|
|
|
- {
|
|
|
- get { return m_puf2WaferA; }
|
|
|
- set { SetProperty(ref m_puf2WaferA, value); }
|
|
|
- }
|
|
|
- public WaferInfo PUF2WaferB
|
|
|
- {
|
|
|
- get { return m_puf2WaferB; }
|
|
|
- set { SetProperty(ref m_puf2WaferB, value); }
|
|
|
- }
|
|
|
public WaferInfo LoaderWaferA
|
|
|
{
|
|
|
get { return m_loaderWaferA; }
|
|
@@ -583,11 +512,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
get { return m_puf1IsInRobotStation; }
|
|
|
set { SetProperty(ref m_puf1IsInRobotStation, value); }
|
|
|
}
|
|
|
- public bool Puf2IsInRobotStation
|
|
|
- {
|
|
|
- get { return m_puf2IsInRobotStation; }
|
|
|
- set { SetProperty(ref m_puf2IsInRobotStation, value); }
|
|
|
- }
|
|
|
/// <summary>
|
|
|
/// Puf1 Rotation实际位置数据
|
|
|
/// </summary>
|
|
@@ -597,14 +521,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1RotationMotorPosition, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation实际位置数据
|
|
|
- /// </summary>
|
|
|
- public double Puf2RotationMotorPosition
|
|
|
- {
|
|
|
- get { return _puf2RotationMotorPosition; }
|
|
|
- set { SetProperty(ref _puf2RotationMotorPosition, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip实际位置数据
|
|
|
/// </summary>
|
|
|
public double Puf1FlipMotorPosition
|
|
@@ -613,14 +529,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1FlipMotorPosition, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip实际位置数据
|
|
|
- /// </summary>
|
|
|
- public double Puf2FlipMotorPosition
|
|
|
- {
|
|
|
- get { return _puf2FlipMotorPosition; }
|
|
|
- set { SetProperty(ref _puf2FlipMotorPosition, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip UI位置
|
|
|
/// </summary>
|
|
|
public double Puf1FlipPosition
|
|
@@ -629,14 +537,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1FlipPosition, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip UI位置
|
|
|
- /// </summary>
|
|
|
- public double Puf2FlipPosition
|
|
|
- {
|
|
|
- get { return _puf2FlipPosition; }
|
|
|
- set { SetProperty(ref _puf2FlipPosition, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Puf1 Rotation UI对应位置
|
|
|
/// </summary>
|
|
|
public double Puf1RotationPosition
|
|
@@ -645,14 +545,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1RotationPosition, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf2 Rotation UI对应位置
|
|
|
- /// </summary>
|
|
|
- public double Puf2RotationPosition
|
|
|
- {
|
|
|
- get { return _puf2RotationPosition; }
|
|
|
- set { SetProperty(ref _puf2RotationPosition, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Loader1 Rotation UI对应位置
|
|
|
/// </summary>
|
|
|
public double Loader1RotationPosition
|
|
@@ -669,14 +561,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1RotationAxis, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf1 Rotation Axis
|
|
|
- /// </summary>
|
|
|
- public BeckhoffStationAxis Puf2RotationAxis
|
|
|
- {
|
|
|
- get { return _puf2RotationAxis; }
|
|
|
- set { SetProperty(ref _puf2RotationAxis, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Puf1 Flip Axis
|
|
|
/// </summary>
|
|
|
public BeckhoffStationAxis Puf1FlipAxis
|
|
@@ -685,14 +569,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
set { SetProperty(ref _puf1FlipAxis, value); }
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// Puf2 Flip Axis
|
|
|
- /// </summary>
|
|
|
- public BeckhoffStationAxis Puf2FlipAxis
|
|
|
- {
|
|
|
- get { return _puf2FlipAxis; }
|
|
|
- set { SetProperty(ref _puf2FlipAxis, value); }
|
|
|
- }
|
|
|
- /// <summary>
|
|
|
/// Loader1 Rotation Axis
|
|
|
/// </summary>
|
|
|
public BeckhoffStationAxis Loader1RotationAxis
|
|
@@ -895,22 +771,11 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
{
|
|
|
//目标位置数据获取
|
|
|
Puf1RotationAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.PUF1.Rotation");
|
|
|
- Puf2RotationAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.PUF2.Rotation");
|
|
|
- //Puf1FlipAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.PUF1.Flip.{_waferSize}");
|
|
|
- //Puf2FlipAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.PUF2.Flip.{_waferSize}");
|
|
|
- //Loader1RotationAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.Loader1.Rotation.{_waferSize}");
|
|
|
- //Loader1TiltAAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.Loader1.TiltA.{_waferSize}");
|
|
|
- //Loader1TiltBAxis = CommonFunction.GetValue<BeckhoffStationAxis>(RtDataValues, $"Station.Loader1.TiltB.{_waferSize}");
|
|
|
//Puf1Rotation比例尺计算
|
|
|
var resultRotation = Puf1RotationAxis != null ? CalculateMaxMin(Puf1RotationAxis) : (0, 0);
|
|
|
double distance = resultRotation.max - resultRotation.min;
|
|
|
_puf1RotationRatio = distance / _pufLayoutRotationDistance;
|
|
|
_puf1RotationMotorPositionMax = resultRotation.max;
|
|
|
- //Puf2Rotation比例尺计算
|
|
|
- resultRotation = Puf2RotationAxis != null ? CalculateMaxMin(Puf2RotationAxis) : (0, 0);
|
|
|
- distance = resultRotation.max - resultRotation.min;
|
|
|
- _puf2RotationRatio = distance / _pufLayoutRotationDistance;
|
|
|
- _puf2RotationMotorPositionMin = resultRotation.min;
|
|
|
|
|
|
|
|
|
}
|
|
@@ -1047,7 +912,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
SRD1ModuleInfo = ModuleManager.ModuleInfos["SRD1"];
|
|
|
SRD2ModuleInfo = ModuleManager.ModuleInfos["SRD2"];
|
|
|
PUF1ModuleInfo = ModuleManager.ModuleInfos["PUF1"];
|
|
|
- PUF2ModuleInfo = ModuleManager.ModuleInfos["PUF2"];
|
|
|
Dummy1ModuleInfo = ModuleManager.ModuleInfos["Dummy1"];
|
|
|
Dummy2ModuleInfo = ModuleManager.ModuleInfos["Dummy2"];
|
|
|
|
|
@@ -1088,17 +952,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
PUF1WaferB = PUF1ModuleInfo.WaferManager.Wafers[1];
|
|
|
}
|
|
|
}
|
|
|
- if (PUF2ModuleInfo != null)
|
|
|
- {
|
|
|
- if (PUF2ModuleInfo.WaferManager.Wafers.Count != 0)
|
|
|
- {
|
|
|
- PUF2WaferA = PUF2ModuleInfo.WaferManager.Wafers[0];
|
|
|
- }
|
|
|
- if (PUF2ModuleInfo.WaferManager.Wafers.Count != 0)
|
|
|
- {
|
|
|
- PUF2WaferB = PUF2ModuleInfo.WaferManager.Wafers[1];
|
|
|
- }
|
|
|
- }
|
|
|
if(LoaderIsInstalled&&LoaderModuleInfo!=null)
|
|
|
{
|
|
|
if (LoaderModuleInfo.WaferManager.Wafers.Count != 0)
|
|
@@ -1128,7 +981,6 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
if (RtDataValues != null)
|
|
|
{
|
|
|
Puf1IsInRobotStation = CommonFunction.GetValue<bool>(RtDataValues, "PUF1.IsInRobotStation");
|
|
|
- Puf2IsInRobotStation = CommonFunction.GetValue<bool>(RtDataValues, "PUF2.IsInRobotStation");
|
|
|
|
|
|
if (CommonFunction.GetValue<int>(RtDataValues, "EquipmentStatus") == 4)
|
|
|
{
|
|
@@ -1161,20 +1013,16 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
if (RtDataValues != null)
|
|
|
{
|
|
|
Puf1RotationMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"PUF1.Rotation.{MOTOR_POSITION}");
|
|
|
- Puf2RotationMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"PUF2.Rotation.{MOTOR_POSITION}");
|
|
|
Loader1TiltAMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"Loader1.TiltA.{MOTOR_POSITION}");
|
|
|
Loader1TiltBMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"Loader1.TiltB.{MOTOR_POSITION}");
|
|
|
Loader1RotationMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"Loader1.Rotation.{MOTOR_POSITION}");
|
|
|
Puf1FlipMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"PUF1.Flip.{MOTOR_POSITION}");
|
|
|
- Puf2FlipMotorPosition = CommonFunction.GetValue<double>(RtDataValues, $"PUF2.Flip.{MOTOR_POSITION}");
|
|
|
- //计算Puf1和Puf2 Rotation UI位置
|
|
|
+ //计算Puf1 Rotation UI位置
|
|
|
Puf1RotationPosition = _robotLayoutPosition + (_puf1RotationMotorPositionMax - Puf1RotationMotorPosition) / _puf1RotationRatio;
|
|
|
- Puf2RotationPosition = _robotLayoutPosition + (Puf2RotationMotorPosition - _puf2RotationMotorPositionMin) / _puf2RotationRatio;
|
|
|
//计Loader Rotation UI位置
|
|
|
Loader1RotationPosition = -Loader1RotationMotorPosition - LOADER_ROTATION_DIFFER;
|
|
|
- //计算Puf1和Puf2 Flip UI位置
|
|
|
+ //计算Puf1 Flip UI位置
|
|
|
Puf1FlipPosition = Puf1FlipMotorPosition - PUF_FLIP_DIFFER;
|
|
|
- Puf2FlipPosition = Puf2FlipMotorPosition - PUF_FLIP_DIFFER;
|
|
|
//判断Loader1的TiltA水平状态
|
|
|
LoaderTiltACurrentStation = CommonFunction.GetCurrentStationLastContent(CommonFunction.GetValue<string>(RtDataValues, $"Loader1.TiltA.{CURRENT_STATION}"), "Loader1.TiltA");
|
|
|
if (LoaderTiltACurrentStation == "HORI")
|
|
@@ -1564,36 +1412,28 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
m_RtDataKeys.Add("EquipmentStatus");
|
|
|
m_RtDataKeys.Add("Scheduler.PjNameList");
|
|
|
m_RtDataKeys.Add("PUF1.IsInRobotStation");
|
|
|
- m_RtDataKeys.Add("PUF2.IsInRobotStation");
|
|
|
|
|
|
m_RtDataKeys.Add("Scheduler.CjNameList");
|
|
|
}
|
|
|
private void addStationDataKeys()
|
|
|
{
|
|
|
m_RtDataKeys.Add($"Station.PUF1.Rotation");
|
|
|
- m_RtDataKeys.Add($"Station.PUF2.Rotation");
|
|
|
m_RtDataKeys.Add($"Station.PUF1.Flip");
|
|
|
- m_RtDataKeys.Add($"Station.PUF2.Flip");
|
|
|
m_RtDataKeys.Add($"Station.PUF1.Vertical");
|
|
|
- m_RtDataKeys.Add($"Station.PUF2.Vertical");
|
|
|
m_RtDataKeys.Add($"Station.Loader1.Rotation");
|
|
|
m_RtDataKeys.Add($"Station.Loader1.TiltA");
|
|
|
m_RtDataKeys.Add($"Station.Loader1.TiltB");
|
|
|
|
|
|
m_RtDataKeys.Add($"PUF1.Rotation.{MOTOR_POSITION}");
|
|
|
- m_RtDataKeys.Add($"PUF2.Rotation.{MOTOR_POSITION}");
|
|
|
m_RtDataKeys.Add($"PUF1.Flip.{MOTOR_POSITION}");
|
|
|
- m_RtDataKeys.Add($"PUF2.Flip.{MOTOR_POSITION}");
|
|
|
m_RtDataKeys.Add($"Loader1.Rotation.{MOTOR_POSITION}");
|
|
|
m_RtDataKeys.Add($"Loader1.TiltA.{MOTOR_POSITION}");
|
|
|
m_RtDataKeys.Add($"Loader1.TiltB.{MOTOR_POSITION}");
|
|
|
m_RtDataKeys.Add($"PUF1.Flip.{CURRENT_STATION}");
|
|
|
- m_RtDataKeys.Add($"PUF2.Flip.{CURRENT_STATION}");
|
|
|
m_RtDataKeys.Add($"Loader1.TiltA.{CURRENT_STATION}");
|
|
|
m_RtDataKeys.Add($"Loader1.TiltB.{CURRENT_STATION}");
|
|
|
|
|
|
m_RtDataKeys.Add($"PUF1.Rotation.{MOTION_DATA}");
|
|
|
- m_RtDataKeys.Add($"PUF2.Rotation.{MOTION_DATA}");
|
|
|
|
|
|
}
|
|
|
private bool HasWaferOnSlot(List<WaferInfo> wafers, int index)
|
|
@@ -1619,7 +1459,7 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
CurrentRobotPosition = EFEM.RobotPosition.Right_Place;
|
|
|
await Task.Delay(delay);
|
|
|
}
|
|
|
- else if (waferRobotTAction == WaferRobotTAction.LP2 || waferRobotTAction == WaferRobotTAction.PUF2)
|
|
|
+ else if (waferRobotTAction == WaferRobotTAction.LP2 )
|
|
|
{
|
|
|
CurrentRobotPosition = EFEM.RobotPosition.Middle_Place;
|
|
|
await Task.Delay(delay);
|
|
@@ -1655,7 +1495,7 @@ namespace CyberX8_MainPages.ViewModels
|
|
|
CurrentRobotPosition = EFEM.RobotPosition.Right;
|
|
|
await Task.Delay(delay);
|
|
|
}
|
|
|
- else if (waferRobotTAction == WaferRobotTAction.LP2 || waferRobotTAction == WaferRobotTAction.PUF2)
|
|
|
+ else if (waferRobotTAction == WaferRobotTAction.LP2)
|
|
|
{
|
|
|
CurrentRobotPosition = EFEM.RobotPosition.Middle;
|
|
|
await Task.Delay(delay);
|