namespace SHARP_CLAS_UI
|
{
|
#region Enum
|
public enum LiftInSteps
|
{
|
S0000_WAIT,
|
|
//Lift Load.
|
S1000_LIFT_LOAD_START,
|
S1100_TRAY_TRANSTER_POSITION_STAY_CHECK,
|
S1200_ALIGN_TOP_BACKWARD,
|
S1210_STACKER_BACKWARD,
|
S1220_UNCLAMP,
|
S1300_LIFT_UP,
|
S1305_LIFT_UP_CHECK,
|
S1310_LIFT_PITCH_DOWN,
|
S1315_LIFT_PITCH_DOWN_CHECK,
|
S1320_LIFT_PITCH_UP,
|
S1325_LIFT_PITCH_UP_CHECK,
|
S1330_LIFT_PITCH_LAST_UP,
|
S1335_LIFT_PITCH_LAST_UP_CHECK,
|
S1340_LIFT_DOWN,
|
S1345_LIFT_DOWN_CHECK,
|
S1350_TRAY_COUNT_SET,
|
S1400_CLAMP,
|
S1410_ALIGN_TOP_FORWARD,
|
S1420_STACKER_FORWARD,
|
S1500_TRAY_ID_READ_WAIT,
|
S1510_TRAY_PANEL_DATA_SET,
|
S1515_TRAY_PANEL_DATA_SET_CHECK,
|
S1520_PORT_STATUS_CIM_SEND,
|
S1525_PORT_STATUS_CIM_SEND_CHECK,
|
S1530_PANEL_IN_DATA_CIM_SEND,
|
S1535_PANEL_IN_DATA_CIM_SEND_CHECK,
|
S1540_CIM_SERVER_RESULT_CHECK,
|
S1999_LIFT_LOAD_END,
|
|
//Lift Up.
|
S2000_LIFT_UP_START,
|
S2100_TRAY_TRANSTER_POSITION_STAY_CHECK,
|
S2200_ALIGN_TOP_BACKWARD,
|
S2210_STACKER_BACKWARD,
|
S2220_UNCLAMP,
|
S2300_LIFT_UP,
|
S2305_LIFT_UP_CHECK,
|
S2310_LIFT_PITCH_DOWN,
|
S2315_LIFT_PITCH_DOWN_CHECK,
|
S2320_LIFT_PITCH_UP,
|
S2325_LIFT_PITCH_UP_CHECK,
|
S2330_LIFT_PITCH_LAST_UP,
|
S2335_LIFT_PITCH_LAST_UP_CHECK,
|
S2340_LIFT_DOWN,
|
S2345_LIFT_DOWN_CHECK,
|
S2350_TRAY_COUNT_SET,
|
S2400_CLAMP,
|
S2410_ALIGN_TOP_FORWARD,
|
S2420_STACKER_FORWARD,
|
S2500_TRAY_ID_READ_WAIT,
|
S2510_TRAY_PANEL_DATA_SET,
|
S2515_TRAY_PANEL_DATA_SET_CHECK,
|
S2520_PORT_STATUS_CIM_SEND,
|
S2525_PORT_STATUS_CIM_SEND_CHECK,
|
S2530_PANEL_IN_DATA_CIM_SEND,
|
S2535_PANEL_IN_DATA_CIM_SEND_CHECK,
|
S2540_CIM_SERVER_RESULT_CHECK,
|
S2999_LIFT_UP_END,
|
|
//Tray Unload
|
S3000_TRAY_UNLOADING_START,
|
S3100_CONVEYOR_LIFT_SENSOR_CHECK,
|
S3200_UNCLAMP,
|
S3210_STACKER_BACKWARD,
|
S3220_ALIGN_TOP_BACKWARD,
|
S3230_ALIGN_Y_FORWARD,
|
S3240_ALIGN_X_BACKWARD,
|
S3300_LIFT_DOWN,
|
S3305_LIFT_DOWN_CHECK,
|
S3400_CONVEYOR_UNLOAD,
|
S3405_CONVEYOR_UNLOAD_CHECK,
|
S3500_PORT_STATUS_CIM_SEND,
|
S3505_PORT_STATUS_CIM_SEND_CHECK,
|
S3999_TRAY_UNLOADING_END,
|
}
|
|
public enum LiftOutSteps
|
{
|
S0000_WAIT,
|
|
//Tray Load
|
S1000_LIFT_MOVE_START,
|
S1100_CONVEYOR_LIFT_SENSOR_CHECK,
|
S1110_TRAY_TRANSTER_POSITION_STAY_CHECK,
|
S1200_ALIGN_TOP_BACKWARD,
|
S1210_STACKER_BACKWARD,
|
S1220_UNCLAMP,
|
S1300_LIFT_MOVE,
|
S1305_LIFT_MOVE_CHECK,
|
S1310_ALIGN_TOP_FORWARD,
|
S1320_CLAMP,
|
S1400_TRAY_TRANSFER_PLACE_WAIT,
|
S1410_LIFT_PITCH_DOWN,
|
S1415_LIFT_PITCH_DOWN_CHECK,
|
S1420_LIFT_PITCH_UP,
|
S1425_LIFT_PITCH_UP_CHECK,
|
S1430_LIFT_PITCH_LAST_UP,
|
S1435_LIFT_PITCH_LAST_UP_CHECK,
|
S1440_TRAY_SCRAP_CHECK,
|
S1500_CLAMP,
|
S1510_ALIGN_TOP_FORWARD,
|
S1520_TRAY_ID_READ_WAIT,
|
S1600_TRAY_PANEL_DATA_SET,
|
S1605_TRAY_PANEL_DATA_SET_CHECK,
|
S1610_PORT_STATUS_CIM_SEND,
|
S1615_PORT_STATUS_CIM_SEND_CHECK,
|
S1620_PANEL_IN_DATA_CIM_SEND,
|
S1625_PANEL_IN_DATA_CIM_SEND_CHECK,
|
S1999_LIFT_MOVE_END,
|
|
//Tray Unload
|
S2000_TRAY_UNLOADING_START,
|
S2100_PANEL_REPORT_CIM_SEND,
|
S2105_PANEL_REPORT_CIM_SEND_WAIT,
|
S2110_PORT_STATUS_CIM_SEND,
|
S2115_PORT_STATUS_CIM_SEND_WAIT,
|
S2200_UNCLAMP,
|
S2210_STACKER_BACKWARD,
|
S2220_ALIGN_TOP_BACKWARD,
|
S2300_CONVEYOR_LIFT_SENSOR_CHECK,
|
S2310_ALIGN_Y_FORWARD,
|
S2320_ALIGN_X_BACKWARD,
|
S2400_LIFT_DOWN,
|
S2405_LIFT_DOWN_CHECK,
|
S2420_CONVEYOR_UNLOAD,
|
S2425_CONVEYOR_UNLOAD_CHECK,
|
S2500_PORT_STATUS_CIM_SEND,
|
S2505_PORT_STATUS_CIM_SEND_CHECK,
|
S2999_TRAY_UNLOADING_END,
|
}
|
|
public enum LiftHomeSteps
|
{
|
S0000_WAIT,
|
|
S1000_STATUS_CHECK,
|
S1100_CONVEYOR_HOME_CHECK,
|
S1110_CONVEYOR_LIFT_SENSOR_CHECK,
|
S1200_MOTOR_Z_HOME,
|
S1205_MOTOR_Z_HOME_CHECK,
|
S1300_MOVE_STAY_POSITION,
|
S1305_POSITION_CHECK,
|
S9999_END,
|
}
|
#endregion
|
|
public abstract class Lift : Unit
|
{
|
#region Property
|
public Axis MotorZ
|
{
|
get
|
{
|
return _motorZ;
|
}
|
|
set
|
{
|
_motorZ = value;
|
}
|
}
|
|
public Aligner AlignerTop
|
{
|
get
|
{
|
return _alignerTop;
|
}
|
|
set
|
{
|
_alignerTop = value;
|
}
|
}
|
|
public Clamper Clamper
|
{
|
get
|
{
|
return _clamper;
|
}
|
|
set
|
{
|
_clamper = value;
|
}
|
}
|
|
public Stacker Stacker
|
{
|
get
|
{
|
return _stacker;
|
}
|
|
set
|
{
|
_stacker = value;
|
}
|
}
|
|
public bool IsLiftLimitSensor1
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_liftLimitSensor1);
|
}
|
}
|
|
public bool IsLiftLimitSensor2
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_liftLimitSensor2);
|
}
|
}
|
|
public bool IsLiftInSensor1
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_liftInSensor1);
|
}
|
}
|
|
public bool IsLiftInSensor2
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_liftInSensor2);
|
}
|
}
|
|
public bool IsBcrReadBit
|
{
|
get
|
{
|
return _isBcrReadBit;
|
}
|
|
set
|
{
|
_isBcrReadBit = value;
|
}
|
}
|
|
public override bool IsHomeComplete
|
{
|
get
|
{
|
return _motorZ.PowerOn && _motorZ.IsHomed && _motorZ.ErrorStop == false && isHomeComplete;
|
}
|
}
|
|
public override bool IsExist
|
{
|
get
|
{
|
return IsLiftInSensor1 || IsLiftInSensor2 || IsLiftLimitSensor1 || IsLiftLimitSensor2;
|
}
|
}
|
|
public abstract bool IsPanelEmpty
|
{
|
get;
|
}
|
|
public abstract bool IsPanelFull
|
{
|
get;
|
}
|
|
protected abstract double UpPosition
|
{
|
get;
|
}
|
|
public abstract double TrayInPosition
|
{
|
get;
|
}
|
|
public abstract double TrayWaitPosition
|
{
|
get;
|
}
|
|
public abstract string TrayID
|
{
|
get;
|
|
set;
|
}
|
|
public bool IsFirstTray
|
{
|
get
|
{
|
return _isFirstTray;
|
}
|
|
set
|
{
|
_isFirstTray = value;
|
}
|
}
|
#endregion
|
|
#region Field
|
private Axis _motorZ;
|
private Aligner _alignerTop;
|
private Clamper _clamper;
|
private Stacker _stacker;
|
|
private InputData _liftLimitSensor1;
|
private InputData _liftLimitSensor2;
|
private InputData _liftInSensor1;
|
private InputData _liftInSensor2;
|
|
private bool _isBcrReadBit;
|
private bool _isFirstTray;
|
|
protected int _trayCount;
|
protected double _pitchPosition;
|
#endregion
|
|
#region Construct
|
public Lift(Equipment equipment, MotorAxis motorZ, string unitName) : base(equipment, unitName)
|
{
|
_motorZ = equipment.Board_Control.Motors[motorZ];
|
_alignerTop = new Aligner(equipment);
|
_clamper = new Clamper(equipment);
|
_stacker = new Stacker(equipment);
|
}
|
|
public void Initialize(InputData liftLimitSensor1, InputData liftLimitSensor2, InputData liftInSensor1, InputData liftInSensor2)
|
{
|
_liftLimitSensor1 = liftLimitSensor1;
|
_liftLimitSensor2 = liftLimitSensor2;
|
_liftInSensor1 = liftInSensor1;
|
_liftInSensor2 = liftInSensor2;
|
}
|
#endregion
|
}
|
}
|