using System;
|
using System.Collections.Generic;
|
|
namespace SHARP_CLAS_UI
|
{
|
public class LoaderTrayTransfer : TrayTransfer
|
{
|
#region Property
|
public override bool IsWorkEnd
|
{
|
get
|
{
|
if (Step == TrayTransferSteps.S0000_WAIT)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
|
public override bool IsStayPosition
|
{
|
get
|
{
|
object value;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_Empty_Position, out value);
|
var position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(position, equipment.Setting.Inposition_Offset);
|
}
|
}
|
|
public bool IsLiftInPosition
|
{
|
get
|
{
|
object value;
|
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_In_Position, out value);
|
var position = double.Parse($"{value}");
|
|
return MotorX.Is_Inposition(position, equipment.Setting.Inposition_Offset);
|
}
|
}
|
|
public TrayTransferSteps Step
|
{
|
get
|
{
|
return _step;
|
}
|
|
set
|
{
|
_step = value;
|
}
|
}
|
#endregion
|
|
#region Field
|
private TrayTransferSteps _step;
|
private TrayTransferSteps _oldStep;
|
private TrayTransferHomeSteps _homeStep;
|
|
private SequenceTimer _tactTime = new SequenceTimer();
|
|
private string _coverTrayId;
|
#endregion
|
|
#region Construct
|
public LoaderTrayTransfer(Equipment equipment) : base(equipment, MotorAxis.LD_Tray_TR_X, "LoaderTrayTransfer")
|
{
|
Step = TrayTransferSteps.S0000_WAIT;
|
_oldStep = TrayTransferSteps.S0000_WAIT;
|
|
Picker.Initialize(OutputData.LD_Tray_TR_Down, InputData.LD_Tray_Transfer_Up_Sensor, InputData.LD_Tray_Transfer_Down_Sensor, En_Alarm_List.AL_0630_LD_TRAY_TR_UP_SENSOR_CHECK, En_Alarm_List.AL_0631_LD_TRAY_TR_DOWN_SENSOR_CHECK,
|
OutputData.LD_Tray_Transfer_Vaccum_On_Sol_Valve, OutputData.LD_Tray_Transfer_Blow_On_Sol_Valve, InputData.LD_Tray_Transfer_Vaccum_On_Check, En_Alarm_List.AL_0632_LD_TRAY_TR_VACUUM_ON_CHECK);
|
|
MotorX.Check_Jog_Interlock = Jog_Interlock;
|
MotorX.Check_Move_Interlock = Move_Interlock;
|
MotorX.Check_Home_Interlock = Home_Interlock;
|
|
pauseDisableList.Add(TrayTransferSteps.S1205_MOVE_STAY_POSITION_CHECK);
|
pauseDisableList.Add(TrayTransferSteps.S2205_MOVE_PICK_POSITION_CHECK);
|
pauseDisableList.Add(TrayTransferSteps.S3205_MOVE_PLACE_POSITION_CHECK);
|
|
_tactTime.Reset();
|
}
|
#endregion
|
|
#region Function
|
private bool Home_Interlock()
|
{
|
if (Picker.IsDownSensor)
|
{
|
Interlock_Manager.Add_Interlock_Msg("LD Tray Tr", "Picker is Down, Can't Move.");
|
return true;
|
}
|
return false;
|
}
|
|
private bool Move_Interlock()
|
{
|
if (Picker.IsDownSensor)
|
{
|
Interlock_Manager.Add_Interlock_Msg("LD Tray Tr", "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 (Picker.IsDownSensor)
|
{
|
Interlock_Manager.Add_Interlock_Msg("LD Tray Tr", "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 = TrayTransferSteps.S0000_WAIT;
|
_homeStep = TrayTransferHomeSteps.S0000_WAIT;
|
|
_tactTime.Reset();
|
}
|
|
public void ExecuteAuto()
|
{
|
if(Step == TrayTransferSteps.S0000_WAIT)
|
{
|
if (IsStayPosition == false)
|
{
|
Step = TrayTransferSteps.S1000_MOVE_STAY_POSITION_START;
|
}
|
else
|
{
|
if (Picker.IsVacuumSensor)
|
{
|
if (equipment.loader.LiftOut.Step == LiftOutSteps.S1400_TRAY_TRANSFER_PLACE_WAIT)
|
{
|
Step = TrayTransferSteps.S3000_PLACE_TRAY_START;
|
}
|
}
|
else
|
{
|
if (equipment.LoaderInTrayCount > 0)
|
{
|
if(equipment.loader.LiftIn.IsWorkEnd)
|
{
|
if (equipment.loader.LiftIn.MotorZ.Is_Inposition(equipment.loader.LiftIn.TrayInPosition, equipment.Setting.Inposition_Offset + equipment.Setting.Tray_Alarm_Range))
|
{
|
if (equipment.loader.LiftIn.IsFirstTray || equipment.loader.LiftIn.IsPanelEmpty)
|
{
|
Step = TrayTransferSteps.S2000_PICK_TRAY_START;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
public override void MonitoringStatus()
|
{
|
if (UnitMode == En_Equipment_Mode.Auto || UnitMode == En_Equipment_Mode.Manual)
|
{
|
if (IsWorkEnd)
|
{
|
if (Picker.VacuumSolOn)
|
{
|
if (Picker.IsVacuumSensor == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0632_LD_TRAY_TR_VACUUM_ON_CHECK);
|
}
|
}
|
}
|
}
|
|
if (equipment.User.Level != En_User_Level.Master && equipment.Door_Opened)
|
{
|
if (MotorX.MotionComplete == false)
|
{
|
MotorX.Move_Stop();
|
}
|
}
|
}
|
|
public override void ExecuteStep()
|
{
|
if (_oldStep != Step)
|
{
|
sequenceChangedTime.Restart();
|
_oldStep = Step;
|
WriteSequenceLog(Step.ToString());
|
}
|
|
Picker.ExecuteProcess();
|
|
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;
|
}
|
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();
|
}
|
|
MoveStay();
|
PickTray();
|
PlaceTray();
|
}
|
}
|
|
private void ExecuteHome()
|
{
|
switch(_homeStep)
|
{
|
case TrayTransferHomeSteps.S0000_WAIT:
|
{
|
_homeStep = TrayTransferHomeSteps.S1000_STATUS_CHECK;
|
break;
|
}
|
case TrayTransferHomeSteps.S1000_STATUS_CHECK:
|
{
|
if (MotorX.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0141_LD_TRAY_TR_X_ERROR_STOP);
|
}
|
else if (MotorX.PowerOn == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0140_LD_TRAY_TR_X_POWER_OFF);
|
}
|
else if(Picker.IsUp == false)
|
{
|
Interlock_Manager.Add_Interlock_Msg("LD Tray TR Home can't run.", "Picker is Down.");
|
}
|
else
|
{
|
_homeStep = TrayTransferHomeSteps.S1100_LIFT_LIMIT_SENSOR_CHECK;
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S1100_LIFT_LIMIT_SENSOR_CHECK:
|
{
|
if(equipment.loader.LiftIn.IsLiftLimitSensor1 || equipment.loader.LiftIn.IsLiftLimitSensor2 || equipment.loader.LiftOut.IsLiftLimitSensor1 || equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
if (equipment.loader.LiftIn.IsLiftLimitSensor1)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0563_LD_TRAY_IN_LIFT_UP_1_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftIn.IsLiftLimitSensor2)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0564_LD_TRAY_IN_LIFT_UP_1_2_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftOut.IsLiftLimitSensor1)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0603_LD_TRAY_OUT_LIFT_UP_1_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0604_LD_TRAY_OUT_LIFT_UP_1_2_SENSOR_CHECK);
|
}
|
}
|
else
|
{
|
_homeStep = TrayTransferHomeSteps.S2000_X_HOME_START;
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S2000_X_HOME_START:
|
{
|
if(MotorX.Home())
|
{
|
homeCheckedTime.Restart();
|
_homeStep = TrayTransferHomeSteps.S2100_X_HOME_CHECK;
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S2100_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_0141_LD_TRAY_TR_X_ERROR_STOP);
|
_homeStep = TrayTransferHomeSteps.S0000_WAIT;
|
}
|
}
|
else
|
{
|
_homeStep = TrayTransferHomeSteps.S3000_MOVE_STAY_POSITION;
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S3000_MOVE_STAY_POSITION:
|
{
|
if(MoveLiftOutPosition())
|
{
|
homeCheckedTime.Restart();
|
_homeStep = TrayTransferHomeSteps.S3100_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S3100_POSITION_CHECK:
|
{
|
if (homeCheckedTime.Seconds < 1) return;
|
|
if (MotorX.ErrorStop)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0141_LD_TRAY_TR_X_ERROR_STOP);
|
_homeStep = TrayTransferHomeSteps.S0000_WAIT;
|
}
|
else if(MotorX.MotionComplete)
|
{
|
if(IsStayPosition)
|
{
|
_homeStep = TrayTransferHomeSteps.S9999_END;
|
}
|
else
|
{
|
Interlock_Manager.Add_Interlock_Msg("LD Tray TR Home can't run.", "Position is not empty.");
|
_homeStep = TrayTransferHomeSteps.S0000_WAIT;
|
}
|
}
|
break;
|
}
|
case TrayTransferHomeSteps.S9999_END:
|
{
|
isHomeComplete = true;
|
_homeStep = TrayTransferHomeSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void MoveStay()
|
{
|
switch (Step)
|
{
|
case TrayTransferSteps.S1000_MOVE_STAY_POSITION_START:
|
{
|
Step = TrayTransferSteps.S1100_PICKER_UP;
|
break;
|
}
|
case TrayTransferSteps.S1100_PICKER_UP:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsUp)
|
{
|
Step = TrayTransferSteps.S1110_LIFT_LIMIT_SENSOR_CHECK;
|
}
|
else
|
{
|
Picker.Up();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S1110_LIFT_LIMIT_SENSOR_CHECK:
|
{
|
if (equipment.loader.LiftOut.IsLiftLimitSensor1 || equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
if (equipment.loader.LiftOut.IsLiftLimitSensor1)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0603_LD_TRAY_OUT_LIFT_UP_1_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0604_LD_TRAY_OUT_LIFT_UP_1_2_SENSOR_CHECK);
|
}
|
}
|
else
|
{
|
Step = TrayTransferSteps.S1200_MOVE_STAY_POSITION;
|
}
|
break;
|
}
|
case TrayTransferSteps.S1200_MOVE_STAY_POSITION:
|
{
|
if (MoveLiftOutPosition())
|
{
|
Step = TrayTransferSteps.S1205_MOVE_STAY_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S1205_MOVE_STAY_POSITION_CHECK:
|
{
|
if(MotorX.MotionComplete)
|
{
|
if (IsStayPosition)
|
{
|
Step = TrayTransferSteps.S1999_MOVE_STAY_POSITION_END;
|
}
|
else
|
{
|
Step = TrayTransferSteps.S1200_MOVE_STAY_POSITION;
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S1999_MOVE_STAY_POSITION_END:
|
{
|
Step = TrayTransferSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
private void PickTray()
|
{
|
switch(Step)
|
{
|
case TrayTransferSteps.S2000_PICK_TRAY_START:
|
{
|
_tactTime.Restart();
|
Step = TrayTransferSteps.S2100_PICKER_UP;
|
break;
|
}
|
case TrayTransferSteps.S2100_PICKER_UP:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsUp)
|
{
|
Step = TrayTransferSteps.S2110_LIFT_LIMIT_SENSOR_CHECK;
|
}
|
else
|
{
|
Picker.Up();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2110_LIFT_LIMIT_SENSOR_CHECK:
|
{
|
if (equipment.loader.LiftIn.IsLiftLimitSensor1 || equipment.loader.LiftIn.IsLiftLimitSensor2)
|
{
|
if (equipment.loader.LiftIn.IsLiftLimitSensor1)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0563_LD_TRAY_IN_LIFT_UP_1_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftIn.IsLiftLimitSensor2)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0564_LD_TRAY_IN_LIFT_UP_1_2_SENSOR_CHECK);
|
}
|
}
|
else
|
{
|
Step = TrayTransferSteps.S2120_HANDLER_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S2120_HANDLER_POSITION_CHECK:
|
{
|
if (equipment.loader.Handler1.IsMotorXStayPosition && equipment.loader.Handler1.IsMotorYStayPosition)
|
{
|
Step = TrayTransferSteps.S2130_LIFT_IN_SENSOR_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S2130_LIFT_IN_SENSOR_CHECK:
|
{
|
if (equipment.loader.LiftIn.IsLiftInSensor1 && equipment.loader.LiftIn.IsLiftInSensor2)
|
{
|
Step = TrayTransferSteps.S2200_MOVE_PICK_POSITION;
|
}
|
else
|
{
|
if (equipment.loader.LiftIn.IsLiftInSensor1 == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0565_LD_TRAY_IN_LIFT_UP_2_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftIn.IsLiftInSensor2 == false)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0566_LD_TRAY_IN_LIFT_UP_2_2_SENSOR_CHECK);
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2200_MOVE_PICK_POSITION:
|
{
|
if(MoveLiftInPosition())
|
{
|
Step = TrayTransferSteps.S2205_MOVE_PICK_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S2205_MOVE_PICK_POSITION_CHECK:
|
{
|
if(MotorX.MotionComplete)
|
{
|
if (IsLiftInPosition)
|
{
|
Step = TrayTransferSteps.S2300_PICKER_DOWN;
|
}
|
else
|
{
|
Step = TrayTransferSteps.S2200_MOVE_PICK_POSITION;
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2300_PICKER_DOWN:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsDown)
|
{
|
Step = TrayTransferSteps.S2310_VACUUM_ON;
|
}
|
else
|
{
|
Picker.Down();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2310_VACUUM_ON:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsVacuumSensor)
|
{
|
Step = TrayTransferSteps.S2320_ALIGN_TOP_BACKWARD;
|
}
|
else
|
{
|
Picker.VacuumOn();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2320_ALIGN_TOP_BACKWARD:
|
{
|
if (equipment.loader.LiftIn.AlignerTop.IsWorkEnd)
|
{
|
if (equipment.loader.LiftIn.AlignerTop.IsBackward)
|
{
|
Step = TrayTransferSteps.S2330_STACKER_BACKWARD;
|
}
|
else
|
{
|
equipment.loader.LiftIn.AlignerTop.Backward();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2330_STACKER_BACKWARD:
|
{
|
if (equipment.loader.LiftIn.Stacker.IsWorkEnd)
|
{
|
if (equipment.loader.LiftIn.Stacker.IsBackward)
|
{
|
Step = TrayTransferSteps.S2340_UNCLAMP;
|
}
|
else
|
{
|
equipment.loader.LiftIn.Stacker.Backward();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2340_UNCLAMP:
|
{
|
if (equipment.loader.LiftIn.Clamper.IsWorkEnd)
|
{
|
if (equipment.loader.LiftIn.Clamper.IsUnclamp)
|
{
|
Step = TrayTransferSteps.S2350_PICKER_UP;
|
}
|
else
|
{
|
equipment.loader.LiftIn.Clamper.Unclamp();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2350_PICKER_UP:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsUp)
|
{
|
Step = TrayTransferSteps.S2360_VACUUM_CHECK;
|
}
|
else
|
{
|
Picker.Up();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S2360_VACUUM_CHECK:
|
{
|
if(Picker.IsVacuumSensor)
|
{
|
Step = TrayTransferSteps.S2370_TRAY_COUNT_SET;
|
}
|
else
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0632_LD_TRAY_TR_VACUUM_ON_CHECK);
|
}
|
break;
|
}
|
case TrayTransferSteps.S2370_TRAY_COUNT_SET:
|
{
|
if(equipment.loader.LiftIn.IsFirstTray)
|
{
|
equipment.loader.LiftIn.IsFirstTray = false;
|
}
|
|
equipment.LoaderInTrayCount = equipment.LoaderInTrayCount - 1;
|
_coverTrayId = equipment.loader.LiftIn.TrayID;
|
|
Step = TrayTransferSteps.S2999_PICK_TRAY_END;
|
break;
|
}
|
case TrayTransferSteps.S2999_PICK_TRAY_END:
|
{
|
_tactTime.Stop();
|
Step = TrayTransferSteps.S1000_MOVE_STAY_POSITION_START;
|
break;
|
}
|
}
|
}
|
|
private void PlaceTray()
|
{
|
switch (Step)
|
{
|
case TrayTransferSteps.S3000_PLACE_TRAY_START:
|
{
|
_tactTime.Restart();
|
Step = TrayTransferSteps.S3100_PICKER_UP;
|
break;
|
}
|
case TrayTransferSteps.S3100_PICKER_UP:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsUp)
|
{
|
Step = TrayTransferSteps.S3110_LIFT_LIMIT_SENSOR_CHECK;
|
}
|
else
|
{
|
Picker.Up();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S3110_LIFT_LIMIT_SENSOR_CHECK:
|
{
|
if (equipment.loader.LiftOut.IsLiftLimitSensor1 || equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
if (equipment.loader.LiftOut.IsLiftLimitSensor1)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0603_LD_TRAY_OUT_LIFT_UP_1_1_SENSOR_CHECK);
|
}
|
|
if (equipment.loader.LiftOut.IsLiftLimitSensor2)
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0604_LD_TRAY_OUT_LIFT_UP_1_2_SENSOR_CHECK);
|
}
|
}
|
else
|
{
|
Step = TrayTransferSteps.S3120_HANDLER_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S3120_HANDLER_POSITION_CHECK:
|
{
|
//굳이 ..? 220523
|
//double position = equipment.loader.Handler1.Get_Position_Y_Stay();
|
|
//if (position <= equipment.loader.Handler1.MotorY.Position || equipment.loader.Handler1.MotorY.Is_Inposition(position, equipment.Setting.Inposition_Offset))
|
//{
|
// Step = TrayTransferSteps.S3200_MOVE_PLACE_POSITION;
|
//}
|
Step = TrayTransferSteps.S3200_MOVE_PLACE_POSITION;
|
break;
|
}
|
case TrayTransferSteps.S3200_MOVE_PLACE_POSITION:
|
{
|
if (MoveLiftOutPosition())
|
{
|
Step = TrayTransferSteps.S3205_MOVE_PLACE_POSITION_CHECK;
|
}
|
break;
|
}
|
case TrayTransferSteps.S3205_MOVE_PLACE_POSITION_CHECK:
|
{
|
if (MotorX.MotionComplete)
|
{
|
if (IsStayPosition)
|
{
|
Step = TrayTransferSteps.s3300_ALIGN_TOP_BACKWARD;
|
}
|
else
|
{
|
Step = TrayTransferSteps.S3200_MOVE_PLACE_POSITION;
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.s3300_ALIGN_TOP_BACKWARD:
|
{
|
if (equipment.loader.LiftOut.AlignerTop.IsWorkEnd)
|
{
|
if (equipment.loader.LiftOut.AlignerTop.IsBackward)
|
{
|
Step = TrayTransferSteps.s3310_STACKER_BACKWARD;
|
}
|
else
|
{
|
equipment.loader.LiftOut.AlignerTop.Backward();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.s3310_STACKER_BACKWARD:
|
{
|
if (equipment.loader.LiftOut.Stacker.IsWorkEnd)
|
{
|
if (equipment.loader.LiftOut.Stacker.IsBackward)
|
{
|
Step = TrayTransferSteps.s3320_UNCLAMP;
|
}
|
else
|
{
|
equipment.loader.LiftOut.Stacker.Backward();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.s3320_UNCLAMP:
|
{
|
if (equipment.loader.LiftOut.Clamper.IsWorkEnd)
|
{
|
if (equipment.loader.LiftOut.Clamper.IsUnclamp)
|
{
|
Step = TrayTransferSteps.S3330_PICKER_DOWN;
|
}
|
else
|
{
|
equipment.loader.LiftOut.Clamper.Unclamp();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S3330_PICKER_DOWN:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsDown)
|
{
|
Step = TrayTransferSteps.S3340_VACUUM_OFF;
|
}
|
else
|
{
|
Picker.Down();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S3340_VACUUM_OFF:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.VacuumSolOn == false)
|
{
|
Step = TrayTransferSteps.S3350_PICKER_UP;
|
}
|
else
|
{
|
Picker.VacuumOff();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S3350_PICKER_UP:
|
{
|
if (Picker.IsWorkEnd)
|
{
|
if (Picker.IsUp)
|
{
|
Step = TrayTransferSteps.S3360_VACUUM_CHECK;
|
}
|
else
|
{
|
Picker.Up();
|
}
|
}
|
break;
|
}
|
case TrayTransferSteps.S3360_VACUUM_CHECK:
|
{
|
if (Picker.IsVacuumSensor == false)
|
{
|
Step = TrayTransferSteps.S3370_TRAY_COUNT_SET;
|
}
|
else
|
{
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0632_LD_TRAY_TR_VACUUM_ON_CHECK);
|
}
|
break;
|
}
|
case TrayTransferSteps.S3370_TRAY_COUNT_SET:
|
{
|
equipment.LoaderOutTrayCount = equipment.LoaderOutTrayCount + 1;
|
equipment.loader.LiftOut.TrayID = _coverTrayId;
|
Step = TrayTransferSteps.S3999_PLACE_TRAY_END;
|
break;
|
}
|
case TrayTransferSteps.S3999_PLACE_TRAY_END:
|
{
|
_tactTime.Stop();
|
Step = TrayTransferSteps.S0000_WAIT;
|
break;
|
}
|
}
|
}
|
|
public bool MoveLiftInPosition()
|
{
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_In_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_In_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
|
public bool MoveLiftOutPosition()
|
{
|
|
object value;
|
double position;
|
double velocity;
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_Empty_Position, out value);
|
position = double.Parse($"{value}");
|
equipment.sm.Get_Value(Position_Parameter_Address.LD_Tray_Tr_X_Empty_Velocity, out value);
|
velocity = double.Parse($"{value}");
|
|
return MotorX.Move_Absolute_Pos(position, velocity);
|
}
|
#endregion
|
}
|
}
|