using System;
|
|
namespace SHARP_CLAS_UI
|
{
|
#region Enum
|
public enum En_AGV_Load
|
{
|
S0000_WAIT,
|
|
S0100_EQP_LOAD_ENABLE_ON,
|
S0110_EQP_LOAD_ENABLE_ON_CHECK,
|
S0200_AGV_LOAD_STATUS_ON_CHECK,
|
S0300_EQP_LOAD_STATUS_ON,
|
S0310_EQP_LOAD_STATUS_ON_CHECK,
|
S0400_AGV_LOAD_ENABLE_ON_STOP_REQUEST_OFF_CHECK,
|
S0500_EQP_CONVEYOR_RUN_ON,
|
S0510_EQP_CONVEYOR_RUN_ON_CHECK,
|
S0600_EQP_LOAD_ENABLE_OFF,
|
S0610_EQP_LOAD_ENABLE_OFF_CHECK,
|
S0700_AGV_CONVEYOR_RUN_ON_CHECK,
|
S0800_CONVEYOR_RUN,
|
S0900_CONVEYOR_COMPLETE_SENSOR_ON_CHECK,
|
S0910_CONVEYOR_STOP,
|
S0920_CONVEYOR_STOP_CHECK,
|
S1000_EQP_CONVEYOR_RUN_OFF,
|
S1000_EQP_CONVEYOR_RUN_OFF_CHECK,
|
S1100_EQP_LOAD_STATUS_OFF,
|
S1110_EQP_LOAD_STATUS_OFF_CHECK,
|
S1200_AGV_CONVEYOR_OFF_LOAD_STATUS_OFF_LOAD_ENABLE_OFF_CEHCK,
|
S1999_AGV_LOAD_END,
|
|
/*
|
//*==== AGV 일시 정지 시 동작 ====
|
S1000_AGV_STOP_REQUEST_ON_CHECK,
|
S1000_AGV_AUTO_MANUAL_OFF_CHECK <- 에러 Stop 인지 확인.
|
S1000_AGV_LOAD_ENABLE_OFF_CONVEYOR_RUN_OFF_CHECK,
|
|
EQP_LOAD_ENABLE_ON,
|
EQP_LOAD_ENABLE_ON_CHECK,
|
EQP_CONVEYOR_RUN_OFF,
|
EQP_CONVEYOR_RUN_OFF_CHECK,
|
|
-> S400 으로
|
//==============================
|
|
//==== 장치 일시 정지 시 동작 ====
|
EQP_STOP_REQUEST_ON,
|
EQP_STOP_REQUEST_ON_CHECK,
|
|
EQP_AUTO_MANUAL_OFF, <- 에러 Stop 일 때 동작.
|
EQP_AUTO_MANUAL_OFF_CHECK, <- 에러 Stop 일 때 동작.
|
|
EQP_CONVEYOR_RUN_OFF,
|
EQP_CONVEYOR_RUN_OFF_CHECK,
|
|
AGV_LOAD_ENABLE_OFF_CONVEYOR_RUN_OFF_CHECK,
|
|
//장비 정상화 확인.
|
EQP_STOP_REQUEST_OFF,
|
EQP_STOP_REQUEST_OFF_CHECK,
|
EQP_LOAD_ENABLE_ON,
|
EQP_LOAD_ENABLE_ON_CHECK,
|
|
EQP_AUTO_MANUAL_ON, <- 에러 Stop 일 때 동작.
|
EQP_AUTO_MANUAL_ON_CHECK, <- 에러 Stop 일 때 동작.
|
|
-> S400으로
|
//==============================
|
*/
|
}
|
|
public enum En_AGV_Unload
|
{
|
S0000_WAIT,
|
|
S2000_AGV_UNLOADING_START,
|
S2100_EQP_UNLOAD_ENABLE_ON,
|
S2110_EQP_UNLOAD_ENABLE_ON_CHECK,
|
S2120_AGV_UNLOAD_STATUS_ON_CHECK,
|
S2130_EQP_UNLOAD_STATUS_ON,
|
S2140_EQP_UNLOAD_STATUS_ON_CHECK,
|
S2150_AGV_UNLOAD_ENABLE_CONVEYOR_RUN_ON_CHECK,
|
S2200_EQP_CONVEYOR_RUN_ON,
|
S2210_EQP_CONVEYOR_RUN_ON_CHECK,
|
S2220_EQP_UNLOAD_ENABLE_OFF,
|
S2230_EQP_UNLOAD_ENABLE_OFF_CHECK,
|
S2240_CONVEYOR_RUN,
|
S2300_AGV_CONVEYOR_RUN_UNLOAD_STATUS_UNLOAD_ENABLE_OFF_CHECK,
|
S2310_CONVEYOR_STOP_CHECK,
|
S2320_EQP_CONVEYOR_RUN_OFF,
|
S2330_EQP_CONVEYOR_RUN_OFF_CHECK,
|
S2340_EQP_UNLOAD_STATUS_OFF,
|
S2350_EQP_UNLOAD_STATUS_OFF_CHECK,
|
S2999_AGV_UNLOADING_END,
|
}
|
|
public enum ConveyorInSteps
|
{
|
S0000_WAIT,
|
|
//Tray Agv Loading.
|
S0100_AGV_LOADING_START,
|
S0110_EQP_LOAD_ENABLE_ON,
|
S0120_EQP_LOAD_ENABLE_ON_CHECK,
|
S0130_AGV_LOAD_STATUS_ON_CHECK,
|
S0140_EQP_LOAD_STATUS_ON,
|
S0150_EQP_LOAD_STATUS_ON_CHECK,
|
S0160_AGV_LOAD_ENABLE_ON_STOP_REQUEST_OFF_CHECK,
|
S0200_EQP_CONVEYOR_RUN_ON,
|
S0210_EQP_CONVEYOR_RUN_ON_CHECK,
|
S0220_EQP_LOAD_ENABLE_OFF,
|
S0230_EQP_LOAD_ENABLE_OFF_CHECK,
|
S0240_AGV_CONVEYOR_RUN_ON_CHECK,
|
S0250_CONVEYOR_RUN,
|
S0300_CONVEYOR_COMPLETE_SENSOR_ON_CHECK,
|
S0310_CONVEYOR_STOP,
|
S0320_CONVEYOR_STOP_CHECK,
|
S0330_EQP_CONVEYOR_RUN_OFF,
|
S0340_EQP_CONVEYOR_RUN_OFF_CHECK,
|
S0350_EQP_LOAD_STATUS_OFF,
|
S0360_EQP_LOAD_STATUS_OFF_CHECK,
|
S0370_AGV_CONVEYOR_OFF_LOAD_STATUS_OFF_LOAD_ENABLE_OFF_CEHCK,
|
S0999_AGV_LOADING_END,
|
|
//Tray Loading
|
S1000_TRAY_LOADING_START,
|
S1100_LIFT_POSITION_STAY_CHECK,
|
S1110_CONVEYOR_IN_SENSOR_CHECK,
|
S1120_LIFT_IN_SENSOR_CHECK,
|
S1130_ALIGN_X_BWD,
|
S1140_ALIGN_Y_FWD,
|
S1200_CONVEYOR_MOVE_IN,
|
S1210_LIFT_IN_SENSOR_CHECK,
|
S1220_LIFT_COMPLETE_SENSOR_CHECK,
|
S1230_CONVEYOR_STOP,
|
S1300_ALIGN_X_FWD,
|
S1320_ALIGN_Y_BWD,
|
S1340_WAIT_TIME,
|
S1400_ALIGN_Y_FWD,
|
S1420_ALIGN_X_BWD,
|
S1999_TRAY_LOADING_END,
|
|
//Tray Unloading
|
S2000_TRAY_UNLOADING_START,
|
S2100_LIFT_POSITION_STAY_CHECK,
|
S2110_LIFT_SENSOR_CHECK,
|
S2120_CONVEYOR_SENSOR_CHECK,
|
S2200_ALIGN_X_FWD,
|
S2220_ALIGN_Y_BWD,
|
S2240_WAIT_TIME,
|
S2250_ALIGN_Y_FWD,
|
S2270_ALIGN_X_BWD,
|
S2300_CONVEYOR_MOVE_OUT,
|
S2310_CONVEYOR_IN_COMPLETE_SENSOR_CHECK,
|
S2320_CONVEYOR_IN_SENSOR_CHECK,
|
S2330_CONVEYOR_STOP,
|
S2340_CONVEYOR_STOP_CHECK,
|
S2999_TRAY_UNLOADING_END,
|
}
|
|
public enum ConveyorOutSteps
|
{
|
S0000_WAIT,
|
|
S1000_TRAY_UNLOADING_START,
|
S1100_LIFT_POSITION_STAY_CHECK,
|
S1110_CONVEYOR_SENSOR_CHECK,
|
S1120_LIFT_SENSOR_CHECK,
|
S1200_ALIGN_X_FWD,
|
S1220_ALIGN_Y_BWD,
|
S1240_WAIT_TIME,
|
S1250_ALIGN_Y_FWD,
|
S1270_ALIGN_X_BWD,
|
S1300_CONVEYOR_MOVE_OUT,
|
S1310_CONVEYOR_COMPLETE_SENSOR_CHECK,
|
S1320_CONVEYOR_IN_SENSOR_CHECK,
|
S1400_CONVEYOR_STOP,
|
S1410_CONVEYOR_STOP_CHECK,
|
S1999_TRAY_UNLOADING_END,
|
|
//Tray Agv Unloading.
|
S2000_AGV_UNLOADING_START,
|
S2100_EQP_UNLOAD_ENABLE_ON,
|
S2110_EQP_UNLOAD_ENABLE_ON_CHECK,
|
S2120_AGV_UNLOAD_STATUS_ON_CHECK,
|
S2130_EQP_UNLOAD_STATUS_ON,
|
S2140_EQP_UNLOAD_STATUS_ON_CHECK,
|
S2150_AGV_UNLOAD_ENABLE_CONVEYOR_RUN_ON_CHECK,
|
S2200_EQP_CONVEYOR_RUN_ON,
|
S2210_EQP_CONVEYOR_RUN_ON_CHECK,
|
S2220_EQP_UNLOAD_ENABLE_OFF,
|
S2230_EQP_UNLOAD_ENABLE_OFF_CHECK,
|
S2240_CONVEYOR_RUN,
|
S2300_AGV_CONVEYOR_RUN_UNLOAD_STATUS_UNLOAD_ENABLE_OFF_CHECK,
|
S2310_CONVEYOR_STOP_CHECK,
|
S2320_EQP_CONVEYOR_RUN_OFF,
|
S2330_EQP_CONVEYOR_RUN_OFF_CHECK,
|
S2340_EQP_UNLOAD_STATUS_OFF,
|
S2350_EQP_UNLOAD_STATUS_OFF_CHECK,
|
S2999_AGV_UNLOADING_END,
|
}
|
|
public enum ConveyorHomeStep
|
{
|
S0000_WAIT,
|
S1000_STATUS_CHECK,
|
S1100_CONVEYOR_SENSOR_CHECK,
|
S1200_LIFT_SENSOR_CHECK,
|
S2000_POSITION_CLEAR,
|
S9999_END,
|
}
|
#endregion
|
|
public abstract class Conveyor : Unit
|
{
|
#region Property
|
public bool IsConveyorInSensor
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_isConveyorInSensor);
|
}
|
}
|
|
public bool IsConveyorInCompleteSensor
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_isConveyorInCompleteSensor);
|
}
|
}
|
|
public bool IsLiftInSensor
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_isLiftInSensor);
|
}
|
}
|
|
public bool IsLiftInCompleteSensor
|
{
|
get
|
{
|
return equipment.Board_Control.IO_manager.Get_Input(_isLiftInCompleteSensor);
|
}
|
}
|
|
public Axis MotorX
|
{
|
get
|
{
|
return _motorX;
|
}
|
|
set
|
{
|
_motorX = value;
|
}
|
}
|
|
public Aligner AlignerX
|
{
|
get
|
{
|
return _alignerX;
|
}
|
|
set
|
{
|
_alignerX = value;
|
}
|
}
|
|
public AlignerY AlignerY
|
{
|
get
|
{
|
return _alignerY;
|
}
|
|
set
|
{
|
_alignerY = value;
|
}
|
}
|
|
public override bool IsHomeComplete
|
{
|
get
|
{
|
return MotorX.PowerOn && MotorX.ErrorStop == false && isHomeComplete;
|
}
|
}
|
|
public override bool IsExist
|
{
|
get
|
{
|
return IsConveyorInSensor || IsConveyorInCompleteSensor || IsLiftInSensor || IsLiftInCompleteSensor;
|
}
|
}
|
#endregion
|
|
#region Field
|
private Axis _motorX;
|
private Aligner _alignerX;
|
private AlignerY _alignerY;
|
|
private InputData _isConveyorInSensor;
|
private InputData _isConveyorInCompleteSensor;
|
|
private InputData _isLiftInSensor;
|
private InputData _isLiftInCompleteSensor;
|
#endregion
|
|
#region Construct
|
public Conveyor(Equipment equipment, MotorAxis motorX, string unitName) : base(equipment, unitName)
|
{
|
_motorX = equipment.Board_Control.Motors[motorX];
|
AlignerX = new Aligner(equipment);
|
AlignerY = new AlignerY(equipment);
|
}
|
#endregion
|
|
#region Function
|
public void Initialize(InputData isConveyorInSensor, InputData isConveyorInCompleteSensor, InputData isLiftInSensor, InputData isLiftInCompleteSensor)
|
{
|
_isConveyorInSensor = isConveyorInSensor;
|
_isConveyorInCompleteSensor = isConveyorInCompleteSensor;
|
|
_isLiftInSensor = isLiftInSensor;
|
_isLiftInCompleteSensor = isLiftInCompleteSensor;
|
}
|
|
public bool JogPositive()
|
{
|
return MotorX.Positive_Zog(equipment.Setting.Conveyor_Speed);
|
}
|
|
public bool JogNegative()
|
{
|
return MotorX.Negative_Zog(equipment.Setting.Conveyor_Speed);
|
}
|
|
public bool Stop()
|
{
|
return MotorX.Move_Stop(equipment.Setting.Conveyor_Speed);
|
}
|
#endregion
|
}
|
}
|