using System;
|
|
namespace SHARP_CLAS_UI
|
{
|
public class UnloaderHandler2 : Handler
|
{
|
#region Enum
|
private enum PickerSteps
|
{
|
S0000_WAIT,
|
|
S1000_PICK_ABLATION_STAGE_1_START,
|
S1100_PICKER_DOWN,
|
S1110_VACUUM_ON,
|
S1120_ABLATION_STAGE_1_VACUUM_OFF,
|
S1130_ABLATION_STAGE_1_BLOW_ON,
|
S1140_PICKER_UP,
|
S1150_ABLATION_STAGE_1_BLOW_OFF,
|
S1160_DATA_SET,
|
|
S2000_PICK_ABLATION_STAGE_2_START,
|
S2100_PICKER_DOWN,
|
S2110_VACUUM_ON,
|
S2120_ABLATION_STAGE_2_VACUUM_OFF,
|
S2130_ABLATION_STAGE_2_BLOW_ON,
|
S2140_PICKER_UP,
|
S2150_ABLATION_STAGE_2_BLOW_OFF,
|
S2160_DATA_SET,
|
|
S3000_PLACE_AOI_STAGE_START,
|
S3100_PICKER_DOWN,
|
S3110_AOI_STAGE_VACUUM_ON,
|
S3120_VACUUM_OFF,
|
S1330_DATA_SET,
|
|
S9000_SCRAP_START,
|
S9100_VACUUM_OFF,
|
S9110_DATA_SET,
|
|
S9200_PICKER_UP,
|
S9999_STEP_END,
|
}
|
#endregion
|
|
#region Property
|
public override Panel_Info Panel1
|
{
|
get
|
{
|
return Panel_Info_Manager.Instance.Get_Panel_Info(Panel_Info_Names.ULD_Handler_2_1);
|
}
|
|
set
|
{
|
Panel_Info_Manager.Instance.Set_Panel_Info(Panel_Info_Names.ULD_Handler_2_1, value);
|
}
|
}
|
|
public override Panel_Info Panel2
|
{
|
get
|
{
|
return Panel_Info_Manager.Instance.Get_Panel_Info(Panel_Info_Names.ULD_Handler_2_2);
|
}
|
|
set
|
{
|
Panel_Info_Manager.Instance.Set_Panel_Info(Panel_Info_Names.ULD_Handler_2_2, value);
|
}
|
}
|
|
public override bool IsWorkEnd
|
{
|
get
|
{
|
if(Step == UnloaderHandler2Steps.S0000_WAIT)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
|
public override bool IsStayPosition
|
{
|
get
|
{
|
if (IsMotorXStayPosition && IsMotorYStayPosition)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
|
public bool IsMotorXStayPosition
|
{
|
get
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Stay_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
}
|
|
public bool IsMotorYStayPosition
|
{
|
get
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Stay_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorY.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
}
|
|
public UnloaderHandler2Steps Step
|
{
|
get
|
{
|
return _step;
|
}
|
|
set
|
{
|
_step = value;
|
}
|
}
|
#endregion
|
|
#region Field
|
private UnloaderHandler2Steps _step;
|
private UnloaderHandler2Steps _oldStep;
|
private HandlerHomeSteps _homeStep;
|
|
private PickerSteps _picker1Step;
|
private PickerSteps _picker2Step;
|
|
public Time_Checker Tact_Move = new Time_Checker();
|
#endregion
|
|
#region Construct
|
public UnloaderHandler2(Equipment equipment) : base(equipment, MotorAxis.ULD_Handler_2_X, MotorAxis.ULD_Handler_2_Y, "UnloaderHandler2")
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
_oldStep = UnloaderHandler2Steps.S0000_WAIT;
|
|
Picker1.Initialize(OutputData.ULD_Handler_2_1_Down, InputData.ULD_Handler_Picker_2_1_Up_Sensor, InputData.ULD_Handler_Picker_2_1_Down_Sensor, En_Alarm_List.AL_0832_ULD_HANDLER_2_1_UP_SENSOR_CHECK, En_Alarm_List.AL_0833_ULD_HANDLER_2_1_DOWN_SENSOR_CHECK,
|
OutputData.ULD_Cell_Handler_2_1_Vaccum_On_Sol_Valve, OutputData.ULD_Cell_Handler_2_1_Blow_On_Sol_Valve, InputData.ULD_Cell_Handler_2_1_Vaccum_On_Check, En_Alarm_List.AL_0830_ULD_HANDLER_2_1_VACUUM_ON_CHECK);
|
|
Picker2.Initialize(OutputData.ULD_Handler_2_2_Down, InputData.ULD_Handler_Picker_2_2_Up_Sensor, InputData.ULD_Handler_Picker_2_2_Down_Sensor, En_Alarm_List.AL_0834_ULD_HANDLER_2_2_UP_SENSOR_CHECK, En_Alarm_List.AL_0835_ULD_HANDLER_2_2_DOWN_SENSOR_CHECK,
|
OutputData.ULD_Cell_Handler_2_2_Vaccum_On_Sol_Valve, OutputData.ULD_Cell_Handler_2_2_Blow_On_Sol_Valve, InputData.ULD_Cell_Handler_2_2_Vaccum_On_Check, En_Alarm_List.AL_0831_ULD_HANDLER_2_2_VACUUM_ON_CHECK);
|
|
pauseDisableList.Add(UnloaderHandler2Steps.S1205_POSITION_CHECK);
|
pauseDisableList.Add(UnloaderHandler2Steps.S2215_POSITION_CHECK);
|
pauseDisableList.Add(UnloaderHandler2Steps.S3220_POSITION_CHECK);
|
pauseDisableList.Add(UnloaderHandler2Steps.S4220_POSITION_CHECK);
|
|
MotorX.Check_Jog_Interlock = Jog_Interlock;
|
MotorX.Check_Move_Interlock = Move_Interlock;
|
MotorX.Check_Home_Interlock = Home_Interlock;
|
|
MotorY.Check_Jog_Interlock = Jog_Interlock;
|
MotorY.Check_Move_Interlock = Move_Interlock;
|
MotorY.Check_Home_Interlock = Home_Interlock;
|
}
|
#endregion
|
|
#region Function
|
private bool Home_Interlock()
|
{
|
if (Picker1.IsUp == false || Picker2.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Picker Down", "Picker is Down, Can't Move.");
|
return true;
|
}
|
|
return false;
|
}
|
|
private bool Move_Interlock()
|
{
|
if (Picker1.IsUp == false || Picker2.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Picker Down", "Picker is Down, Can't Move.");
|
return true;
|
}
|
|
if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
|
{
|
return true;
|
}
|
|
return false;
|
}
|
|
private bool Jog_Interlock(bool positive)
|
{
|
if (Picker1.IsUp == false || Picker2.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Picker Down", "Picker is Down, Can't Move.");
|
return true;
|
}
|
|
if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
|
{
|
return true;
|
}
|
|
return false;
|
}
|
|
public void Init_Seq()
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
_homeStep = HandlerHomeSteps.S0000_WAIT;
|
|
Tact_Move.Reset();
|
}
|
|
private void ExecuteAuto()
|
{
|
if(Step == UnloaderHandler2Steps.S0000_WAIT)
|
{
|
if (equipment.process.ablation.Is_Power_Measure) return;
|
|
if(IsExist)
|
{
|
if (equipment.after.AoiStage.IsPlaceEnable && equipment.after.ReverseStage.IsPlaceEnable)
|
{
|
double position = equipment.unloader.Handler1.Get_Position_Y_Stay();
|
|
if (position >= equipment.unloader.Handler1.MotorY.Position || equipment.unloader.Handler1.MotorY.Is_Inposition(position, equipment.Setting.Inposition_Offset))
|
{
|
Step = UnloaderHandler2Steps.S4000_PLACE_AOI_STAGE_START;
|
}
|
else
|
{
|
if (IsStayPosition == false)
|
{
|
Step = UnloaderHandler2Steps.S1000_MOVE_STAY_POSITION_START;
|
}
|
}
|
}
|
else
|
{
|
if (IsStayPosition == false)
|
{
|
Step = UnloaderHandler2Steps.S1000_MOVE_STAY_POSITION_START;
|
}
|
}
|
}
|
else
|
{
|
if (equipment.process.ablation_stage_1.IsPickEnable)
|
{
|
Step = UnloaderHandler2Steps.S2100_ABLATION_STAGE_1_POSITION_CHECK;
|
}
|
else if (equipment.process.ablation_stage_2.IsPickEnable)
|
{
|
Step = UnloaderHandler2Steps.S3100_ABLATION_STAGE_2_POSITION_CHECK;
|
}
|
else
|
{
|
if (IsStayPosition == false)
|
{
|
Step = UnloaderHandler2Steps.S1000_MOVE_STAY_POSITION_START;
|
}
|
}
|
}
|
}
|
}
|
|
public override void MonitoringStatus()
|
{
|
if (UnitMode == En_Equipment_Mode.Auto || UnitMode == En_Equipment_Mode.Manual)
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.VacuumSolOn && Picker1.IsVacuumSensor == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0830_ULD_HANDLER_2_1_VACUUM_ON_CHECK);
|
}
|
}
|
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.VacuumSolOn && Picker2.IsVacuumSensor == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0831_ULD_HANDLER_2_2_VACUUM_ON_CHECK);
|
}
|
}
|
}
|
|
if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
|
{
|
if (MotorX.MotionComplete == false)
|
{
|
MotorX.Move_Stop();
|
}
|
|
if (MotorY.MotionComplete == false)
|
{
|
MotorY.Move_Stop();
|
}
|
}
|
}
|
|
public override void ExecuteStep()
|
{
|
if (_oldStep != Step)
|
{
|
sequenceChangedTime.Restart();
|
_oldStep = Step;
|
WriteSequenceLog(Step.ToString());
|
}
|
|
Picker1.ExecuteProcess();
|
Picker2.ExecuteProcess();
|
|
Seq_Picker1Step();
|
Seq_Picker2Step();
|
|
if (UnitMode == En_Equipment_Mode.Stop)
|
{
|
Init_Seq();
|
isHomeComplete = false;
|
return;
|
}
|
else if (UnitMode == En_Equipment_Mode.Pause)
|
{
|
sequenceChangedTime.Stop();
|
return;
|
}
|
else if (UnitMode == En_Equipment_Mode.Home)
|
{
|
if (IsHomeComplete == false)
|
{
|
ExecuteHome();
|
}
|
|
return;
|
}
|
else if (UnitMode == En_Equipment_Mode.Auto || UnitMode == En_Equipment_Mode.Manual)
|
{
|
sequenceChangedTime.Start();
|
|
if (equipment.equip_mode == En_Equipment_Mode.Pause)
|
{
|
if (pauseDisableList.Contains(Step) == false)
|
{
|
UnitMode = En_Equipment_Mode.Pause;
|
return;
|
}
|
}
|
|
if (UnitMode == En_Equipment_Mode.Auto)
|
ExecuteAuto();
|
|
Seq_MoveStayPosition();
|
Seq_PickAblation1();
|
Seq_PickAblation2();
|
Seq_PlaceAoiStage();
|
}
|
}
|
|
private void ExecuteHome()
|
{
|
switch (_homeStep)
|
{
|
case HandlerHomeSteps.S0000_WAIT:
|
{
|
_homeStep = HandlerHomeSteps.S1000_STATUS_CHECK;
|
break;
|
}
|
case HandlerHomeSteps.S1000_STATUS_CHECK:
|
{
|
if (MotorX.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0421_ULD_HANDLER_2_X_ERROR_STOP);
|
}
|
else if (MotorY.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0441_ULD_HANDLER_2_Y_ERROR_STOP);
|
}
|
else if (!MotorX.PowerOn)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0420_ULD_HANDLER_2_X_POWER_OFF);
|
}
|
else if (!MotorY.PowerOn)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0440_ULD_HANDLER_2_Y_POWER_OFF);
|
}
|
else if (Picker1.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Home can't run.", "ULD Handler Picker 2-1 Up.");
|
}
|
else if (Picker2.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Home can't run.", "ULD Handler Picker 2-2 Up.");
|
}
|
else
|
{
|
_homeStep = HandlerHomeSteps.S1100_TRAY_TRANSFER_HOME_CHECK;
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1100_TRAY_TRANSFER_HOME_CHECK:
|
{
|
_homeStep = HandlerHomeSteps.S1200_TRAY_TRANSFER_POSITION_CHECK;
|
break;
|
}
|
case HandlerHomeSteps.S1200_TRAY_TRANSFER_POSITION_CHECK:
|
{
|
_homeStep = HandlerHomeSteps.S1300_MOTOR_Y_HOME;
|
break;
|
}
|
case HandlerHomeSteps.S1300_MOTOR_Y_HOME:
|
{
|
if (MotorY.Home())
|
{
|
homeCheckedTime.Restart();
|
_homeStep = HandlerHomeSteps.S1305_MOTOR_Y_HOME_CHECK;
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1305_MOTOR_Y_HOME_CHECK:
|
{
|
if (homeCheckedTime.Seconds < 1) return;
|
|
if (!MotorY.IsHomed)
|
{
|
if (MotorY.Homing == false && MotorY.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0441_ULD_HANDLER_2_Y_ERROR_STOP);
|
}
|
}
|
else
|
{
|
_homeStep = HandlerHomeSteps.S1310_MOTOR_X_HOME;
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1310_MOTOR_X_HOME:
|
{
|
if (MotorX.Home())
|
{
|
homeCheckedTime.Restart();
|
_homeStep = HandlerHomeSteps.S1315_MOTOR_X_HOME_CHECK;
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1315_MOTOR_X_HOME_CHECK:
|
{
|
if (homeCheckedTime.Seconds < 1) return;
|
|
if (!MotorX.IsHomed)
|
{
|
if (MotorX.Homing == false && MotorX.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0421_ULD_HANDLER_2_X_ERROR_STOP);
|
}
|
}
|
else
|
{
|
_homeStep = HandlerHomeSteps.S1400_MOVE_STAY_POSITION;
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1400_MOVE_STAY_POSITION:
|
{
|
if (Move_X_Stay_Position())
|
{
|
if (Move_Y_Stay_Position())
|
{
|
homeCheckedTime.Restart();
|
_homeStep = HandlerHomeSteps.S1405_POSITION_CHECK;
|
}
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1405_POSITION_CHECK:
|
{
|
if (homeCheckedTime.Seconds < 1) return;
|
|
if (MotorX.ErrorStop || MotorY.ErrorStop)
|
{
|
if (MotorX.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0421_ULD_HANDLER_2_X_ERROR_STOP);
|
}
|
|
if (MotorY.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0441_ULD_HANDLER_2_Y_ERROR_STOP);
|
}
|
}
|
else if (MotorX.MotionComplete && MotorY.MotionComplete)
|
{
|
if (IsMotorXStayPosition && IsMotorYStayPosition)
|
{
|
_homeStep = HandlerHomeSteps.S1999_END;
|
}
|
else
|
{
|
if (!IsMotorXStayPosition)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Home can't run.", "X Position is not stay.");
|
}
|
|
if (!IsMotorYStayPosition)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD Handler 2 Home can't run.", "Y Position is not stay.");
|
}
|
}
|
}
|
break;
|
}
|
case HandlerHomeSteps.S1999_END:
|
{
|
isHomeComplete = true;
|
_homeStep = HandlerHomeSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_MoveStayPosition()
|
{
|
switch(Step)
|
{
|
case UnloaderHandler2Steps.S1000_MOVE_STAY_POSITION_START:
|
{
|
Step = UnloaderHandler2Steps.S1100_PICKER_UP;
|
break;
|
}
|
case UnloaderHandler2Steps.S1100_PICKER_UP:
|
{
|
if (Picker1.IsWorkEnd && Picker2.IsWorkEnd)
|
{
|
if (Picker1.IsUp && Picker2.IsUp)
|
{
|
Step = UnloaderHandler2Steps.S1200_MOVE_STAY_POSITION;
|
}
|
else
|
{
|
if (Picker1.IsUp == false)
|
{
|
Picker1.Up();
|
}
|
|
if (Picker2.IsUp == false)
|
{
|
Picker2.Up();
|
}
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S1200_MOVE_STAY_POSITION:
|
{
|
if (Move_X_Stay_Position() && Move_Y_Stay_Position())
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Stay Position [Start]");
|
Step = UnloaderHandler2Steps.S1205_POSITION_CHECK;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S1205_POSITION_CHECK:
|
{
|
if (MotorX.MotionComplete && MotorY.MotionComplete)
|
{
|
if (IsMotorXStayPosition && IsMotorYStayPosition)
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Stay Position [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Stay Position [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S1999_MOVE_STAY_POSITION_END;
|
}
|
else
|
{
|
Step = UnloaderHandler2Steps.S1200_MOVE_STAY_POSITION;
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S1999_MOVE_STAY_POSITION_END:
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_PickAblation1()
|
{
|
switch(Step)
|
{
|
case UnloaderHandler2Steps.S2000_PICK_ABLATION_STAGE_1_START:
|
{
|
Step = UnloaderHandler2Steps.S2100_ABLATION_STAGE_1_POSITION_CHECK;
|
break;
|
}
|
case UnloaderHandler2Steps.S2100_ABLATION_STAGE_1_POSITION_CHECK:
|
{
|
if(equipment.process.ablation_stage_1.IsUnloadPosition)
|
{
|
Step = UnloaderHandler2Steps.S2200_PICKER_UP;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S2200_PICKER_UP:
|
{
|
if (Picker1.IsWorkEnd && Picker2.IsWorkEnd)
|
{
|
if (Picker1.IsUp && Picker2.IsUp)
|
{
|
Step = UnloaderHandler2Steps.S2210_MOVE_ABLATION_STAGE_1;
|
}
|
else
|
{
|
if (Picker1.IsUp == false)
|
{
|
Picker1.Up();
|
}
|
|
if (Picker2.IsUp == false)
|
{
|
Picker2.Up();
|
}
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S2210_MOVE_ABLATION_STAGE_1:
|
{
|
if(Move_X_Ablation_Stage_1_Position() && Move_Y_Ablation_Stage_1_Position())
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Position [Start]");
|
Step = UnloaderHandler2Steps.S2215_POSITION_CHECK;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S2215_POSITION_CHECK:
|
{
|
if (MotorX.MotionComplete && MotorY.MotionComplete)
|
{
|
if (Get_Is_Position_X_Ablation_1() && Get_Is_Position_Y_Ablation_1())
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Position [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Position [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S2220_PLACE_START;
|
}
|
else
|
{
|
Step = UnloaderHandler2Steps.S2210_MOVE_ABLATION_STAGE_1;
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S2220_PLACE_START:
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Pick [Start]");
|
|
if (equipment.process.ablation_stage_1.Stage1.IsExist)
|
{
|
_picker1Step = PickerSteps.S1000_PICK_ABLATION_STAGE_1_START;
|
}
|
|
if (equipment.process.ablation_stage_1.Stage2.IsExist)
|
{
|
_picker2Step = PickerSteps.S1000_PICK_ABLATION_STAGE_1_START;
|
}
|
|
Step = UnloaderHandler2Steps.S2225_PLACE_WAIT;
|
|
break;
|
}
|
case UnloaderHandler2Steps.S2225_PLACE_WAIT:
|
{
|
if(_picker1Step == PickerSteps.S0000_WAIT && _picker2Step == PickerSteps.S0000_WAIT)
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Pick [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 1 Pick [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S2999_PICK_ABLATION_STAGE_1_END;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S2999_PICK_ABLATION_STAGE_1_END:
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_PickAblation2()
|
{
|
switch (Step)
|
{
|
case UnloaderHandler2Steps.S3000_PICK_ABLATION_STAGE_2_START:
|
{
|
Step = UnloaderHandler2Steps.S3100_ABLATION_STAGE_2_POSITION_CHECK;
|
break;
|
}
|
case UnloaderHandler2Steps.S3100_ABLATION_STAGE_2_POSITION_CHECK:
|
{
|
if (equipment.process.ablation_stage_2.IsUnloadPosition)
|
{
|
Step = UnloaderHandler2Steps.S3230_PICKER_UP;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S3230_PICKER_UP:
|
{
|
if (Picker1.IsWorkEnd && Picker2.IsWorkEnd)
|
{
|
if (Picker1.IsUp && Picker2.IsUp)
|
{
|
Step = UnloaderHandler2Steps.S3200_MOVE_ABLATION_STAGE_2;
|
}
|
else
|
{
|
if (Picker1.IsUp == false)
|
{
|
Picker1.Up();
|
}
|
|
if (Picker2.IsUp == false)
|
{
|
Picker2.Up();
|
}
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S3200_MOVE_ABLATION_STAGE_2:
|
{
|
if (Move_X_Ablation_Stage_2_Position() && Move_Y_Ablation_Stage_2_Position())
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Position [Start]");
|
Step = UnloaderHandler2Steps.S3220_POSITION_CHECK;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S3220_POSITION_CHECK:
|
{
|
if (MotorX.MotionComplete && MotorY.MotionComplete)
|
{
|
if (Get_Is_Position_X_Ablation_2() && Get_Is_Position_Y_Ablation_2())
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Position [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Position [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S3300_PLACE_START;
|
}
|
else
|
{
|
Step = UnloaderHandler2Steps.S3200_MOVE_ABLATION_STAGE_2;
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S3300_PLACE_START:
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Pick [Start]");
|
|
if (equipment.process.ablation_stage_2.Stage1.IsExist)
|
{
|
_picker1Step = PickerSteps.S2000_PICK_ABLATION_STAGE_2_START;
|
}
|
|
if (equipment.process.ablation_stage_2.Stage2.IsExist)
|
{
|
_picker2Step = PickerSteps.S2000_PICK_ABLATION_STAGE_2_START;
|
}
|
|
Step = UnloaderHandler2Steps.S3310_PLACE_WAIT;
|
|
break;
|
}
|
case UnloaderHandler2Steps.S3310_PLACE_WAIT:
|
{
|
if (_picker1Step == PickerSteps.S0000_WAIT && _picker2Step == PickerSteps.S0000_WAIT)
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Pick [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, Ablation 2 Pick [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S3999_PICK_ABLATION_STAGE_2_END;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S3999_PICK_ABLATION_STAGE_2_END:
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_PlaceAoiStage()
|
{
|
switch(Step)
|
{
|
case UnloaderHandler2Steps.S4000_PLACE_AOI_STAGE_START:
|
{
|
Step = UnloaderHandler2Steps.S4100_ULD_HANDLER_1_POSITION_CHECK;
|
break;
|
}
|
case UnloaderHandler2Steps.S4100_ULD_HANDLER_1_POSITION_CHECK:
|
{
|
double position = equipment.unloader.Handler1.Get_Position_Y_Stay();
|
|
if (position >= equipment.unloader.Handler1.MotorY.Position || equipment.unloader.Handler1.MotorY.Is_Inposition(position, equipment.Setting.Inposition_Offset))
|
{
|
Step = UnloaderHandler2Steps.S4110_ULD_REVERSE_STAGE_POSITION_CHECK;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4110_ULD_REVERSE_STAGE_POSITION_CHECK:
|
{
|
if (equipment.after.ReverseStage.IsStayPosition)
|
{
|
Step = UnloaderHandler2Steps.S4220_PICKER_UP;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4220_PICKER_UP:
|
{
|
if (Picker1.IsWorkEnd && Picker2.IsWorkEnd)
|
{
|
if (Picker1.IsUp && Picker2.IsUp)
|
{
|
Step = UnloaderHandler2Steps.S4200_MOVE_AOI_STAGE;
|
}
|
else
|
{
|
if (Picker1.IsUp == false)
|
{
|
Picker1.Up();
|
}
|
|
if (Picker2.IsUp == false)
|
{
|
Picker2.Up();
|
}
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4200_MOVE_AOI_STAGE:
|
{
|
if (Move_X_AOI_Position() && Move_Y_AOI_Position())
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Position [Start]");
|
Step = UnloaderHandler2Steps.S4220_POSITION_CHECK;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4220_POSITION_CHECK:
|
{
|
if (MotorX.MotionComplete && MotorY.MotionComplete)
|
{
|
if (Get_Is_Position_X_AOI() && Get_Is_Position_Y_AOI())
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Position [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Position [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S4300_PLACE_START;
|
}
|
else
|
{
|
Step = UnloaderHandler2Steps.S4200_MOVE_AOI_STAGE;
|
}
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4300_PLACE_START:
|
{
|
Tact_Move.Start();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Place [Start]");
|
|
if (Picker1.IsExist)
|
{
|
_picker1Step = PickerSteps.S3000_PLACE_AOI_STAGE_START;
|
}
|
|
if (Picker2.IsExist)
|
{
|
_picker2Step = PickerSteps.S3000_PLACE_AOI_STAGE_START;
|
}
|
|
Step = UnloaderHandler2Steps.S4310_PLACE_WAIT;
|
|
break;
|
}
|
case UnloaderHandler2Steps.S4310_PLACE_WAIT:
|
{
|
if (_picker1Step == PickerSteps.S0000_WAIT && _picker2Step == PickerSteps.S0000_WAIT)
|
{
|
Tact_Move.Stop();
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Place [End]");
|
equipment.Write_Tact_Time_Log($"ULD Handler 2, AOI Stage Place [Tact : {Tact_Move.Seconds} (sec)]");
|
|
Step = UnloaderHandler2Steps.S4999_PLACE_AOI_STAGE_END;
|
}
|
break;
|
}
|
case UnloaderHandler2Steps.S4999_PLACE_AOI_STAGE_END:
|
{
|
Step = UnloaderHandler2Steps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_Picker1Step()
|
{
|
switch(_picker1Step)
|
{
|
case PickerSteps.S1000_PICK_ABLATION_STAGE_1_START:
|
{
|
_picker1Step = PickerSteps.S1100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S1100_PICKER_DOWN:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsDown)
|
{
|
_picker1Step = PickerSteps.S1110_VACUUM_ON;
|
}
|
else
|
{
|
Picker1.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1110_VACUUM_ON:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.VacuumSolOn)
|
{
|
_picker1Step = PickerSteps.S1120_ABLATION_STAGE_1_VACUUM_OFF;
|
}
|
else
|
{
|
Picker1.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1120_ABLATION_STAGE_1_VACUUM_OFF:
|
{
|
if (equipment.process.ablation_stage_1.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage1.VacuumSol1On == false && equipment.process.ablation_stage_1.Stage1.VacuumSol2On == false)
|
{
|
_picker1Step = PickerSteps.S1130_ABLATION_STAGE_1_BLOW_ON;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage1.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1130_ABLATION_STAGE_1_BLOW_ON:
|
{
|
if (equipment.process.ablation_stage_1.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage1.BlowSol1On == true && equipment.process.ablation_stage_1.Stage1.BlowSol1On == true)
|
{
|
picker1Timer.Restart();
|
_picker1Step = PickerSteps.S1140_PICKER_UP;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage1.BlowSol1On = true;
|
equipment.process.ablation_stage_1.Stage1.BlowSol2On = true;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1140_PICKER_UP:
|
{
|
if (picker1Timer.Seconds < pickerUpWaitTime)
|
{
|
return;
|
}
|
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsUp)
|
{
|
_picker1Step = PickerSteps.S1150_ABLATION_STAGE_1_BLOW_OFF;
|
}
|
else
|
{
|
Picker1.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1150_ABLATION_STAGE_1_BLOW_OFF:
|
{
|
if (equipment.process.ablation_stage_1.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage1.BlowSol1On == false && equipment.process.ablation_stage_1.Stage1.BlowSol2On == false)
|
{
|
_picker1Step = PickerSteps.S1160_DATA_SET;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage1.BlowSol1On = false;
|
equipment.process.ablation_stage_1.Stage1.BlowSol2On = false;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1160_DATA_SET:
|
{
|
Panel1 = equipment.process.ablation_stage_1.Panel1;
|
equipment.process.ablation_stage_1.Panel1 = new Panel_Info();
|
_picker1Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S2000_PICK_ABLATION_STAGE_2_START:
|
{
|
_picker1Step = PickerSteps.S2100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S2100_PICKER_DOWN:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsDown)
|
{
|
_picker1Step = PickerSteps.S2110_VACUUM_ON;
|
}
|
else
|
{
|
Picker1.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2110_VACUUM_ON:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.VacuumSolOn)
|
{
|
_picker1Step = PickerSteps.S2120_ABLATION_STAGE_2_VACUUM_OFF;
|
}
|
else
|
{
|
Picker1.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2120_ABLATION_STAGE_2_VACUUM_OFF:
|
{
|
if (equipment.process.ablation_stage_2.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage1.IsVacuum1Sensor == false && equipment.process.ablation_stage_2.Stage1.IsVacuum2Sensor == false)
|
{
|
_picker1Step = PickerSteps.S2130_ABLATION_STAGE_2_BLOW_ON;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage1.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2130_ABLATION_STAGE_2_BLOW_ON:
|
{
|
if (equipment.process.ablation_stage_2.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage1.BlowSol1On == true && equipment.process.ablation_stage_2.Stage1.BlowSol2On == true)
|
{
|
picker1Timer.Restart();
|
_picker1Step = PickerSteps.S2140_PICKER_UP;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage1.BlowSol1On = true;
|
equipment.process.ablation_stage_2.Stage1.BlowSol2On = true;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2140_PICKER_UP:
|
{
|
if (picker1Timer.Seconds < pickerUpWaitTime)
|
{
|
return;
|
}
|
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsUp)
|
{
|
_picker1Step = PickerSteps.S2150_ABLATION_STAGE_2_BLOW_OFF;
|
}
|
else
|
{
|
Picker1.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2150_ABLATION_STAGE_2_BLOW_OFF:
|
{
|
if (equipment.process.ablation_stage_2.Stage1.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage1.BlowSol1On == false && equipment.process.ablation_stage_2.Stage1.BlowSol2On == false)
|
{
|
_picker1Step = PickerSteps.S2160_DATA_SET;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage1.BlowSol1On = false;
|
equipment.process.ablation_stage_2.Stage1.BlowSol2On = false;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2160_DATA_SET:
|
{
|
Panel1 = equipment.process.ablation_stage_2.Panel1;
|
equipment.process.ablation_stage_2.Panel1 = new Panel_Info();
|
_picker1Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S3000_PLACE_AOI_STAGE_START:
|
{
|
_picker1Step = PickerSteps.S3100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S3100_PICKER_DOWN:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsDown)
|
{
|
_picker1Step = PickerSteps.S3110_AOI_STAGE_VACUUM_ON;
|
}
|
else
|
{
|
Picker1.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S3110_AOI_STAGE_VACUUM_ON:
|
{
|
if (equipment.after.AoiStage.Stage1.IsWorkEnd)
|
{
|
if (equipment.after.AoiStage.Stage1.VacuumSolOn)
|
{
|
_picker1Step = PickerSteps.S3120_VACUUM_OFF;
|
}
|
else
|
{
|
equipment.after.AoiStage.Stage1.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S3120_VACUUM_OFF:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.VacuumSolOn == false)
|
{
|
_picker1Step = PickerSteps.S1330_DATA_SET;
|
}
|
else
|
{
|
Picker1.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1330_DATA_SET:
|
{
|
equipment.after.AoiStage.Panel1 = Panel1;
|
Panel1 = new Panel_Info();
|
_picker1Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S9000_SCRAP_START:
|
{
|
_picker1Step = PickerSteps.S9100_VACUUM_OFF;
|
break;
|
}
|
case PickerSteps.S9100_VACUUM_OFF:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.VacuumSolOn == false)
|
{
|
_picker1Step = PickerSteps.S9110_DATA_SET;
|
}
|
else
|
{
|
Picker1.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S9110_DATA_SET:
|
{
|
Panel1 = new Panel_Info();
|
_picker1Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S9200_PICKER_UP:
|
{
|
if (Picker1.IsWorkEnd)
|
{
|
if (Picker1.IsUp)
|
{
|
_picker1Step = PickerSteps.S9999_STEP_END;
|
}
|
else
|
{
|
Picker1.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S9999_STEP_END:
|
{
|
_picker1Step = PickerSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void Seq_Picker2Step()
|
{
|
switch (_picker2Step)
|
{
|
case PickerSteps.S1000_PICK_ABLATION_STAGE_1_START:
|
{
|
_picker2Step = PickerSteps.S1100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S1100_PICKER_DOWN:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsDown)
|
{
|
_picker2Step = PickerSteps.S1110_VACUUM_ON;
|
}
|
else
|
{
|
Picker2.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1110_VACUUM_ON:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.VacuumSolOn)
|
{
|
_picker2Step = PickerSteps.S1120_ABLATION_STAGE_1_VACUUM_OFF;
|
}
|
else
|
{
|
Picker2.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1120_ABLATION_STAGE_1_VACUUM_OFF:
|
{
|
if (equipment.process.ablation_stage_1.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage2.VacuumSol1On == false && equipment.process.ablation_stage_1.Stage2.VacuumSol2On == false)
|
{
|
picker2Timer.Restart();
|
_picker2Step = PickerSteps.S1130_ABLATION_STAGE_1_BLOW_ON;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage2.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1130_ABLATION_STAGE_1_BLOW_ON:
|
{
|
if (picker2Timer.Seconds < pickerUpWaitTime)
|
{
|
return;
|
}
|
|
if (equipment.process.ablation_stage_1.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage2.BlowSol1On == true && equipment.process.ablation_stage_1.Stage2.BlowSol2On == true)
|
{
|
picker2Timer.Restart();
|
_picker2Step = PickerSteps.S1140_PICKER_UP;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage2.BlowSol1On = true;
|
equipment.process.ablation_stage_1.Stage2.BlowSol2On = true;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1140_PICKER_UP:
|
{
|
if (picker2Timer.Seconds < pickerUpWaitTime)
|
{
|
return;
|
}
|
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsUp)
|
{
|
_picker2Step = PickerSteps.S1150_ABLATION_STAGE_1_BLOW_OFF;
|
}
|
else
|
{
|
Picker2.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1150_ABLATION_STAGE_1_BLOW_OFF:
|
{
|
if (equipment.process.ablation_stage_1.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_1.Stage2.BlowSol1On == false && equipment.process.ablation_stage_1.Stage2.BlowSol2On == false)
|
{
|
_picker2Step = PickerSteps.S1160_DATA_SET;
|
}
|
else
|
{
|
equipment.process.ablation_stage_1.Stage2.BlowSol1On = false;
|
equipment.process.ablation_stage_1.Stage2.BlowSol2On = false;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1160_DATA_SET:
|
{
|
Panel2 = equipment.process.ablation_stage_1.Panel2;
|
equipment.process.ablation_stage_1.Panel2 = new Panel_Info();
|
_picker2Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S2000_PICK_ABLATION_STAGE_2_START:
|
{
|
_picker2Step = PickerSteps.S2100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S2100_PICKER_DOWN:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsDown)
|
{
|
_picker2Step = PickerSteps.S2110_VACUUM_ON;
|
}
|
else
|
{
|
Picker2.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2110_VACUUM_ON:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.VacuumSolOn)
|
{
|
_picker2Step = PickerSteps.S2120_ABLATION_STAGE_2_VACUUM_OFF;
|
}
|
else
|
{
|
Picker2.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2120_ABLATION_STAGE_2_VACUUM_OFF:
|
{
|
if (equipment.process.ablation_stage_2.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage2.VacuumSol1On == false && equipment.process.ablation_stage_2.Stage2.VacuumSol2On == false)
|
{
|
_picker2Step = PickerSteps.S2130_ABLATION_STAGE_2_BLOW_ON;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage2.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2130_ABLATION_STAGE_2_BLOW_ON:
|
{
|
if (equipment.process.ablation_stage_2.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage2.BlowSol1On == true && equipment.process.ablation_stage_2.Stage2.BlowSol2On == true)
|
{
|
picker2Timer.Restart();
|
_picker2Step = PickerSteps.S2140_PICKER_UP;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage2.BlowSol1On = true;
|
equipment.process.ablation_stage_2.Stage2.BlowSol2On = true;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2140_PICKER_UP:
|
{
|
if (picker2Timer.Seconds < pickerUpWaitTime)
|
{
|
return;
|
}
|
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsUp)
|
{
|
_picker2Step = PickerSteps.S2150_ABLATION_STAGE_2_BLOW_OFF;
|
}
|
else
|
{
|
Picker2.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2150_ABLATION_STAGE_2_BLOW_OFF:
|
{
|
if (equipment.process.ablation_stage_2.Stage2.IsWorkEnd)
|
{
|
if (equipment.process.ablation_stage_2.Stage2.BlowSol1On == false && equipment.process.ablation_stage_2.Stage2.BlowSol2On == false)
|
{
|
_picker2Step = PickerSteps.S2160_DATA_SET;
|
}
|
else
|
{
|
equipment.process.ablation_stage_2.Stage2.BlowSol1On = false;
|
equipment.process.ablation_stage_2.Stage2.BlowSol2On = false;
|
}
|
}
|
break;
|
}
|
case PickerSteps.S2160_DATA_SET:
|
{
|
Panel2 = equipment.process.ablation_stage_2.Panel2;
|
equipment.process.ablation_stage_2.Panel2 = new Panel_Info();
|
_picker2Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S3000_PLACE_AOI_STAGE_START:
|
{
|
_picker2Step = PickerSteps.S3100_PICKER_DOWN;
|
break;
|
}
|
case PickerSteps.S3100_PICKER_DOWN:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsDown)
|
{
|
_picker2Step = PickerSteps.S3110_AOI_STAGE_VACUUM_ON;
|
}
|
else
|
{
|
Picker2.Down();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S3110_AOI_STAGE_VACUUM_ON:
|
{
|
if (equipment.after.AoiStage.Stage2.IsWorkEnd)
|
{
|
if (equipment.after.AoiStage.Stage2.VacuumSolOn)
|
{
|
_picker2Step = PickerSteps.S3120_VACUUM_OFF;
|
}
|
else
|
{
|
equipment.after.AoiStage.Stage2.VacuumOn();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S3120_VACUUM_OFF:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.VacuumSolOn == false)
|
{
|
_picker2Step = PickerSteps.S1330_DATA_SET;
|
}
|
else
|
{
|
Picker2.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S1330_DATA_SET:
|
{
|
equipment.after.AoiStage.Panel2 = Panel2;
|
Panel2 = new Panel_Info();
|
_picker2Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S9000_SCRAP_START:
|
{
|
_picker2Step = PickerSteps.S9100_VACUUM_OFF;
|
break;
|
}
|
case PickerSteps.S9100_VACUUM_OFF:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.VacuumSolOn == false)
|
{
|
_picker2Step = PickerSteps.S9110_DATA_SET;
|
}
|
else
|
{
|
Picker2.VacuumOff();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S9110_DATA_SET:
|
{
|
Panel2 = new Panel_Info();
|
_picker2Step = PickerSteps.S9200_PICKER_UP;
|
break;
|
}
|
case PickerSteps.S9200_PICKER_UP:
|
{
|
if (Picker2.IsWorkEnd)
|
{
|
if (Picker2.IsUp)
|
{
|
_picker2Step = PickerSteps.S9999_STEP_END;
|
}
|
else
|
{
|
Picker2.Up();
|
}
|
}
|
break;
|
}
|
case PickerSteps.S9999_STEP_END:
|
{
|
_picker2Step = PickerSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
public bool Get_Is_Position_X_AOI()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_AOI_Stage_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public bool Get_Is_Position_Y_AOI()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_AOI_Stage_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorY.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public bool Get_Is_Position_X_Ablation_1()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_1_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public bool Get_Is_Position_Y_Ablation_1()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_1_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorY.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public bool Get_Is_Position_X_Ablation_2()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_2_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public bool Get_Is_Position_Y_Ablation_2()
|
{
|
object value;
|
double get_position;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_2_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return MotorY.Is_Inposition(get_position, equipment.Setting.Inposition_Offset);
|
}
|
|
public double Get_Position_Y_Stay()
|
{
|
object value;
|
double get_position;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Stay_Position, out value);
|
get_position = double.Parse($"{value}");
|
|
return get_position;
|
}
|
|
public bool Move_X_Stay_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Stay_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Stay_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_Y_Stay_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Stay_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Stay_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorY.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_X_AOI_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_AOI_Stage_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_AOI_Stage_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_Y_AOI_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_AOI_Stage_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_AOI_Stage_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorY.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_X_Ablation_Stage_1_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_1_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_1_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_Y_Ablation_Stage_1_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_1_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_1_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorY.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_X_Ablation_Stage_2_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_2_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_X_Ablation_Stage_2_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Move_Y_Ablation_Stage_2_Position()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_2_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.ULD_Handler_2_Y_Ablation_Stage_2_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorY.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool Picker_1_Scrap()
|
{
|
if (UnitMode == En_Equipment_Mode.Auto || equipment.Auto_Mode)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD_Handler_2_1 Scrap Can't Start", "Equipment mode is Auto.");
|
return false;
|
}
|
|
_picker1Step = PickerSteps.S9000_SCRAP_START;
|
|
return true;
|
}
|
|
public bool Picker_2_Scrap()
|
{
|
if (UnitMode == En_Equipment_Mode.Auto || equipment.Auto_Mode)
|
{
|
Interlock_Manager.Add_Interlock_Msg("ULD_Handler_2_2 Scrap Can't Start", "Equipment mode is Auto.");
|
return false;
|
}
|
|
_picker2Step = PickerSteps.S9000_SCRAP_START;
|
|
return true;
|
}
|
#endregion
|
}
|
}
|