namespace SHARP_CLAS_UI
|
{
|
public class VacuumStageCh1
|
{
|
#region Enum
|
private enum ProcessSteps
|
{
|
Wait,
|
|
BeforeBlowSolOn,
|
BeforeBlowSolOnCheck,
|
BeforeBlowSolOff,
|
BeforeBlowSolOffCheck,
|
VacuumSolOn,
|
VacuumSolOnCheck,
|
IsVacuumSensorCheck,
|
|
VacuumSolOff,
|
VacuumSolOffCheck,
|
AfterBlowSolOn,
|
AfterBlowSolOnCheck,
|
AfterBlowSolOff,
|
AfterBlowSolOffCheck,
|
IsVacuumOffCheck,
|
}
|
#endregion
|
|
#region Property
|
public bool VacuumSolOn
|
{
|
get
|
{
|
return _equipment.Board_Control.IO_manager.Get_Output(_vacuumSolOn);
|
}
|
|
set
|
{
|
_equipment.Board_Control.IO_manager.Set_Output(_vacuumSolOn, value);
|
}
|
}
|
|
public bool BlowSolOn
|
{
|
get
|
{
|
return _equipment.Board_Control.IO_manager.Get_Output(_blowSolOn);
|
}
|
|
set
|
{
|
_equipment.Board_Control.IO_manager.Set_Output(_blowSolOn, value);
|
}
|
}
|
|
public bool IsVacuumSensor
|
{
|
get
|
{
|
return _equipment.Board_Control.IO_manager.Get_Input(_isVacuumOn);
|
}
|
}
|
|
public bool IsExist
|
{
|
get
|
{
|
return VacuumSolOn && IsVacuumSensor;
|
}
|
}
|
|
public bool IsWorkEnd
|
{
|
get
|
{
|
if (_step == ProcessSteps.Wait)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
#endregion
|
|
#region Field
|
private Equipment _equipment;
|
|
private Panel_Info_Names _panelInfoName;
|
private OutputData _vacuumSolOn;
|
private OutputData _blowSolOn;
|
private InputData _isVacuumOn;
|
|
private En_Alarm_List _vacuumSensorAlarm;
|
|
private ProcessSteps _step;
|
private SequenceTimer _sequenceTimer;
|
|
private readonly int _retryLimitCount = 3;
|
private int _retryCount;
|
#endregion
|
|
#region Construct
|
public VacuumStageCh1(Equipment equipment)
|
{
|
_equipment = equipment;
|
_sequenceTimer = new SequenceTimer();
|
|
_retryCount = 0;
|
_step = ProcessSteps.Wait;
|
}
|
#endregion
|
|
#region Function
|
public void Initialize(OutputData vacuumSolOn, OutputData blowSolOn, InputData isVacuumOn, En_Alarm_List vacuumSensorAlarm)
|
{
|
_vacuumSolOn = vacuumSolOn;
|
_blowSolOn = blowSolOn;
|
_isVacuumOn = isVacuumOn;
|
_vacuumSensorAlarm = vacuumSensorAlarm;
|
}
|
|
public void ExecuteProcess()
|
{
|
switch (_step)
|
{
|
case ProcessSteps.Wait:
|
{
|
break;
|
}
|
case ProcessSteps.BeforeBlowSolOn:
|
{
|
BlowSolOn = true;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.BeforeBlowSolOnCheck;
|
break;
|
}
|
case ProcessSteps.BeforeBlowSolOnCheck:
|
{
|
if (BlowSolOn == true)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.BeforeBlowSolOff;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.BeforeBlowSolOn;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_blowSolOn} on fail.", $"{_blowSolOn} on is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.BeforeBlowSolOff:
|
{
|
BlowSolOn = false;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.BeforeBlowSolOffCheck;
|
break;
|
}
|
case ProcessSteps.BeforeBlowSolOffCheck:
|
{
|
if (BlowSolOn == false)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.VacuumSolOn;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.BeforeBlowSolOff;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_blowSolOn} off fail.", $"{_blowSolOn} off is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.VacuumSolOn:
|
{
|
VacuumSolOn = true;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.VacuumSolOnCheck;
|
break;
|
}
|
case ProcessSteps.VacuumSolOnCheck:
|
{
|
if (VacuumSolOn == true)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.IsVacuumSensorCheck;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.VacuumSolOn;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_vacuumSolOn} on fail.", $"{_vacuumSolOn} on is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.IsVacuumSensorCheck:
|
{
|
if (IsVacuumSensor == true)
|
{
|
_sequenceTimer.Reset();
|
_step = ProcessSteps.Wait;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > _equipment.Setting.Vacuum_Timeout)
|
{
|
Alarm_Manager.Instance.Occurred(_vacuumSensorAlarm);
|
_step = ProcessSteps.Wait;
|
}
|
}
|
break;
|
}
|
case ProcessSteps.VacuumSolOff:
|
{
|
VacuumSolOn = false;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.VacuumSolOffCheck;
|
break;
|
}
|
case ProcessSteps.VacuumSolOffCheck:
|
{
|
if (VacuumSolOn == false)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.AfterBlowSolOn;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.VacuumSolOff;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_vacuumSolOn} off fail.", $"{_vacuumSolOn} off is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.AfterBlowSolOn:
|
{
|
BlowSolOn = true;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.AfterBlowSolOnCheck;
|
break;
|
}
|
case ProcessSteps.AfterBlowSolOnCheck:
|
{
|
if (BlowSolOn == true)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.AfterBlowSolOff;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.AfterBlowSolOn;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_blowSolOn} on fail.", $"{_blowSolOn} on is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.AfterBlowSolOff:
|
{
|
BlowSolOn = false;
|
_sequenceTimer.Restart();
|
_step = ProcessSteps.AfterBlowSolOffCheck;
|
break;
|
}
|
case ProcessSteps.AfterBlowSolOffCheck:
|
{
|
if (BlowSolOn == false)
|
{
|
_retryCount = 0;
|
_sequenceTimer.Reset();
|
_step = ProcessSteps.IsVacuumOffCheck;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > 3)
|
{
|
if (_retryCount < _retryLimitCount)
|
{
|
_retryCount++;
|
_step = ProcessSteps.AfterBlowSolOff;
|
}
|
else
|
{
|
_retryCount = 0;
|
Interlock_Manager.Add_Interlock_Msg($"{_blowSolOn} off fail.", $"{_blowSolOn} off is fail (retry 3).");
|
_step = ProcessSteps.Wait;
|
_retryCount = 0;
|
}
|
}
|
}
|
break;
|
}
|
case ProcessSteps.IsVacuumOffCheck:
|
{
|
if (IsVacuumSensor == false)
|
{
|
_sequenceTimer.Reset();
|
_step = ProcessSteps.Wait;
|
}
|
else
|
{
|
if (_sequenceTimer.Seconds > _equipment.Setting.Vacuum_Timeout)
|
{
|
Alarm_Manager.Instance.Occurred(_vacuumSensorAlarm);
|
_step = ProcessSteps.Wait;
|
}
|
}
|
break;
|
}
|
}
|
}
|
|
public bool VacuumOn()
|
{
|
if (IsWorkEnd)
|
{
|
if (VacuumSolOn && IsVacuumSensor)
|
{
|
return true;
|
}
|
else
|
{
|
_step = ProcessSteps.BeforeBlowSolOn;
|
return true;
|
}
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public bool VacuumOff()
|
{
|
if (IsWorkEnd)
|
{
|
if (VacuumSolOn == false && IsVacuumSensor == false)
|
{
|
return true;
|
}
|
else
|
{
|
_step = ProcessSteps.VacuumSolOff;
|
return true;
|
}
|
}
|
else
|
{
|
return false;
|
}
|
}
|
#endregion
|
}
|
}
|