using SA_LTT.Info.WaferInfo;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace SA_LTT.Module
|
{
|
public class Chamber
|
{
|
private Equipment _equipment;
|
|
public bool IsGateOpen
|
{
|
get
|
{
|
return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_OPEN];
|
}
|
}
|
|
public bool IsGateClose
|
{
|
get
|
{
|
return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_CLOSE];
|
}
|
}
|
public bool IsGateOpenValve
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE];
|
}
|
}
|
|
public bool IsGateCloseValve
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE];
|
}
|
}
|
|
public bool IsLiftPinUp
|
{
|
get
|
{
|
return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_UP_CYLINDER];
|
}
|
}
|
|
public bool IsLiftPinDown
|
{
|
get
|
{
|
return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_DOWN_CYLINDER];
|
}
|
}
|
|
public bool IsChuckVacuumOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.VAC_CHUCK_ON];
|
}
|
}
|
|
public bool IsChuckVacuumSensorOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_VACUUM_PRESSURE];
|
}
|
}
|
|
public bool IsN2ChamberValveOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL];
|
}
|
}
|
|
public bool IsInposition
|
{
|
get
|
{
|
bool isInposition = true;
|
|
isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis, AxisStatus.InPos);
|
isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.X_Axis, AxisStatus.InPos);
|
isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.T_Axis, AxisStatus.InPos);
|
|
return isInposition;
|
}
|
}
|
|
public bool IsN2MFCValveOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL];
|
}
|
}
|
|
public bool IsByPassValveOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_BYPASS_ON_SOL];
|
}
|
}
|
|
public bool IsAirBlowOn
|
{
|
get
|
{
|
return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.AIR_BLOW_ON];
|
}
|
}
|
|
public double MFCFlow
|
{
|
get
|
{
|
return _equipment.crevis.AnalogInputs[Crevis.AnalogInput.MFC_FLOW_OUT];
|
}
|
}
|
|
public double MFCSetPoint
|
{
|
get
|
{
|
return _equipment.crevis.AnalogOutputs[Crevis.AnalogOutput.MFC_SET_POINT];
|
}
|
}
|
|
public float MainCDAPressure
|
{
|
get
|
{
|
return _equipment.gr200.MainCDAPressure;
|
}
|
}
|
|
public float MainVacuumPressure
|
{
|
get
|
{
|
return _equipment.gr200.MainVacuumPressure;
|
}
|
}
|
|
public float N2PTPressure
|
{
|
get
|
{
|
return _equipment.gr200.N2PTPressure;
|
}
|
}
|
|
public float MainCDAFlow
|
{
|
get
|
{
|
return _equipment.gr200.MainCDAFlow;
|
}
|
}
|
|
public float ChamberVacuumPressure
|
{
|
get
|
{
|
return _equipment.gr200.ChamberVacuumPressure;
|
}
|
}
|
|
public bool IsLoadPosition
|
{
|
get
|
{
|
return _equipment.powerPmac.IsLoadPosition();
|
}
|
}
|
|
public bool IsCenterPosition
|
{
|
get
|
{
|
return _equipment.powerPmac.IsCenterPosition();
|
}
|
}
|
|
public bool IsPowerMeterPosition
|
{
|
get
|
{
|
return _equipment.powerPmac.IsPowerMeterPosition();
|
}
|
}
|
|
public bool IsAlignPosition
|
{
|
get
|
{
|
return _equipment.powerPmac.IsAlignPosition();
|
}
|
}
|
public bool IsBeamProfilePosition
|
{
|
get
|
{
|
return _equipment.powerPmac.IsBeamProfilePosition();
|
}
|
}
|
|
public WaferInfo WaferInfo
|
{
|
get
|
{
|
return _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.Chamber);
|
}
|
}
|
|
public Chamber(Equipment equipment)
|
{
|
_equipment = equipment;
|
}
|
|
public void GateOpen()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, false);
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, true);
|
}
|
|
public void GateClose()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, false);
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, true);
|
}
|
|
public void LiftPinUp()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, false);
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, true);
|
}
|
|
public void LiftPinDown()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, false);
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, true);
|
}
|
|
public void ChuckVacuumOn()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, true);
|
}
|
|
public void ChuckVacuumOff()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, false);
|
}
|
|
public void SetMFCFlow(double flow)
|
{
|
_equipment.crevis.WriteAnalog(Crevis.AnalogOutput.MFC_SET_POINT, flow);
|
}
|
|
public void N2ChamberValveOn()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, true);
|
}
|
|
public void N2ChamberValveOff()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, false);
|
}
|
|
public void N2MFCValveOn()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, true);
|
}
|
|
public void N2MFCValveOff()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, false);
|
}
|
|
public void ByPassValveOn()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, true);
|
}
|
|
public void ByPassValveOff()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, false);
|
}
|
|
public void AirBlowOn()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, true);
|
}
|
|
public void AirBlowOff()
|
{
|
_equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, false);
|
}
|
|
public bool MoveLoadPosition()
|
{
|
double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Position;
|
double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Position;
|
double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Position;
|
|
double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Speed;
|
double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Speed;
|
double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Speed;
|
|
double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Accel;
|
double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Accel;
|
double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Accel;
|
|
bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT);
|
|
return result;
|
}
|
|
public bool MoveCenterPosition()
|
{
|
double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Position;
|
double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Position;
|
double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Position;
|
|
double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Speed;
|
double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Speed;
|
double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Speed;
|
|
double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Accel;
|
double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Accel;
|
double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Accel;
|
|
bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT);
|
|
return result;
|
}
|
|
public bool MovePowerMeterPosition()
|
{
|
double powerMeterPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Position;
|
double powerMeterPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Position;
|
double powerMeterPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Position;
|
|
double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Speed;
|
double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Speed;
|
double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Speed;
|
|
double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Accel;
|
double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Accel;
|
double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Accel;
|
|
bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, powerMeterPositionX, speedX, accX);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, powerMeterPositionY, speedY, accY);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, powerMeterPositionT, speedT, accT);
|
|
return result;
|
}
|
|
|
public bool MoveAlignPosition()
|
{
|
double AlignPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position;
|
double AlignPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position;
|
double AlignPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position;
|
|
double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Speed;
|
double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Speed;
|
double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Speed;
|
|
double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Accel;
|
double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Accel;
|
double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Accel;
|
|
bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, AlignPositionX, speedX, accX);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, AlignPositionY, speedY, accY);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, AlignPositionT, speedT, accT);
|
|
return result;
|
}
|
|
public bool MoveBeamProfilePosition()
|
{
|
double beamProfilePositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Position;
|
double beamProfilePositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Position;
|
double beamProfilePositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Position;
|
|
double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Speed;
|
double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Speed;
|
double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Speed;
|
|
double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Accel;
|
double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Accel;
|
double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Accel;
|
|
bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, beamProfilePositionX, speedX, accX);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, beamProfilePositionY, speedY, accY);
|
result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, beamProfilePositionT, speedT, accT);
|
|
return result;
|
}
|
|
public bool AllStop()
|
{
|
bool result = _equipment.powerPmac.MoveStop(PmacAxis.X_Axis);
|
result &= _equipment.powerPmac.MoveStop(PmacAxis.Y_Axis);
|
result &= _equipment.powerPmac.MoveStop(PmacAxis.T_Axis);
|
|
return result;
|
}
|
}
|
}
|