private const int nReleaseCarrierTime = 1200; //ms // Constructors ------------------------------------------------------------ public OutputTurnStationController(HSTWorkcell workcell, string processID, string processName) : base(workcell, processID, processName) { this._workcell = workcell; this._ioManifest = (HSTIOManifest)HSTMachine.Workcell.IOManifest; outputTurnSectionIO = new TurnSectionIO(); ///// Input Turn Station///////////// //digital input outputTurnSectionIO.exitClearSensor = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_Turn_Station_Exit_Clear); outputTurnSectionIO.inPosition = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_Turn_Station_In_Position); outputTurnSectionIO.At90DegSensor = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_Turn_Station_At_90_Deg); outputTurnSectionIO.At0DegSensor = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_Turn_Station_At_0_Deg); //digital output outputTurnSectionIO.turnTo90Deg = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Turn_Station_Turn_To_90_Deg); outputTurnSectionIO.turnTo0Deg = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Turn_Station_Turn_To_0_Deg); outputTurnSectionIO.inhibitRelay = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Turn_Station_Inhibit); _doOutputTurnTableTurnTo0Deg = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Turn_Station_Turn_To_0_Deg); _doOutputTurnTableTurnTo90Deg = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Turn_Station_Turn_To_90_Deg); _doOutputStopper = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_Stopper); TurnSection TS = new TurnSection(outputTurnSectionIO); outputTurnSection = TS as Seagate.AAS.Parsel.Device.ITurnSection; outputTurnSection.Simulation = (workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation); outputTurnSection.Name = "OutputTurnSection"; }
// Constructors ------------------------------------------------------------ public OutputClampRotateController(HSTWorkcell workcell, string controllerID, string controllerName) : base(workcell, controllerID, controllerName) { _workcell = workcell; this._ioManifest = (HSTIOManifest)workcell.IOManifest; _doOutputStationClampDeploy = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_CS_Deploy); _doOutputStationClampRotate = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Output_CS_Rotate); _diOutputStationClampForward = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_CS_Deploy); _diOutputStationClampBackward = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_CS_Retract); _diOutputStationClampRotateCwOpen = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_CS_Lock); _diOutputStationClampRotateCcwClose = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_CS_Unlock); _diOutputStationClampOpenDetect = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Output_Carrier_Clamp_Sensor); if (HSTMachine.Workcell.HSTSettings.Install.OperationMode != OperationMode.Simulation) { //3. Clamp LinearActuator ClampActuator = new LinearActuator(_doOutputStationClampDeploy, _diOutputStationClampForward, _diOutputStationClampBackward, DigitalIOState.On); _clamp = ClampActuator as ILinearActuator; _clamp.Name = "Zone 5 clamp actuator"; _clamp.ExtendedDirectionName = "Forward"; _clamp.ExtendedStateName = "Forward"; _clamp.RetractedDirectionName = "Backward"; _clamp.RetractedStateName = "Backward"; //4. ClampRotary LinearActuator ClampRotaryActuator = new LinearActuator(_doOutputStationClampRotate, _diOutputStationClampRotateCcwClose, _diOutputStationClampRotateCwOpen, DigitalIOState.On); _clampRotary = ClampRotaryActuator as ILinearActuator; _clampRotary.Name = "Zone 5 clamp rotary actuator"; _clampRotary.ExtendedDirectionName = "Cw Open"; _clampRotary.ExtendedStateName = "Cw Open"; _clampRotary.RetractedDirectionName = "Ccw Close"; _clampRotary.RetractedStateName = "Ccw Close"; } }
// Constructors ------------------------------------------------------------ public InputStationController(HSTWorkcell workcell, string processID, string processName) : base(workcell, processID, processName) { _workcell = workcell; this._ioManifest = (HSTIOManifest)workcell.IOManifest; _rfidController = new ReadWriteRFIDController(workcell, "RfidInput", "RfidInput", ReadWriteRFIDController.ReaderType.Fola, RFHead.Head1); _rfHead = Seagate.AAS.Parsel.Device.RFID.RFHead.Head1; _seaveyorInputStationZoneIO = new SeaveyorZoneIO(); _seaveyorInputStationZoneIO.inhibit = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.CIS_Inhibit); _seaveyorBufferStationZoneIO = new SeaveyorZoneIO(); _seaveyorBufferStationZoneIO.inhibit = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.BBZ_Inhibit); //Seaveyor SeaveyorZone _seaveyorZone = new SeaveyorZone(_seaveyorInputStationZoneIO); _seaveyorInputStation = _seaveyorZone as ISeaveyorZone; _seaveyorInputStation.Simulation = (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation); _seaveyorInputStation.Name = "Input Station Zone"; SeaveyorZone _seaveyorBufferZone = new SeaveyorZone(_seaveyorBufferStationZoneIO); _seaveyorBufferStation = _seaveyorBufferZone as ISeaveyorZone; _seaveyorBufferStation.Simulation = (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation); _seaveyorBufferStation.Name = "Buffer Station Zone"; //digital input _diInputStationInPosition = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.BIS_Position_On); _diBufferStationInPosition = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.BBZ_Position_On); _diInputStationStopperUp = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_Stopper_Up); _diInputStationStopperDown = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_Stopper_Down); _diInputStationLifterUp = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_Lifter_Up); _diInputStationLifterDown = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_Lifter_Down); _diInputStationClampForward = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_CS_Deploy); _diInputStationClampBackward = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_CS_Retract); _diInputStationClampRotateCwOpen = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_CS_Unlock); _diInputStationClampRotateCcwClose = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_CS_Lock); _diInputCarrierClampOpen = _ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Input_Carrier_Clamp_Sensor); //Digital Output _doInputStationStopperExtendUp = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Input_Stopper); _doInputStationLifterExtendUp = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Input_Lifter_Up); _doInputStationLifterRetractDown = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Input_Lifter_Down); _doInputStationClampDeploy = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Input_CS_Deploy); _doInputStationClampRotate = _ioManifest.GetDigitalOutput((int)HSTIOManifest.DigitalOutputs.Input_CS_Rotate); //1. Stopper LinearActuator StopperActuator = new LinearActuator(_doInputStationStopperExtendUp, _diInputStationStopperUp, _diInputStationStopperDown, DigitalIOState.On); _stopper = StopperActuator as ILinearActuator; _stopper.Name = "Zone 5 stopper actuator"; _stopper.ExtendedDirectionName = "Up"; _stopper.ExtendedStateName = "Up"; _stopper.RetractedDirectionName = "Down"; _stopper.RetractedStateName = "Down"; //2. Lifter LinearActuator lifterActuator = new LinearActuator(_doInputStationLifterExtendUp, _doInputStationLifterRetractDown, _diInputStationLifterUp, _diInputStationLifterDown); _lifter = lifterActuator as ILinearActuator; _lifter.Name = "Zone 5 lifter actuator"; _lifter.ExtendedDirectionName = "Up"; _lifter.ExtendedStateName = "Up"; _lifter.RetractedDirectionName = "Down"; _lifter.RetractedStateName = "Down"; //3. Clamp LinearActuator ClampActuator = new LinearActuator(_doInputStationClampDeploy, _diInputStationClampForward, _diInputStationClampBackward, DigitalIOState.On); _clamp = ClampActuator as ILinearActuator; _clamp.Name = "Zone 5 clamp actuator"; _clamp.ExtendedDirectionName = "Forward"; _clamp.ExtendedStateName = "Forward"; _clamp.RetractedDirectionName = "Backward"; _clamp.RetractedStateName = "Backward"; //4. ClampRotary LinearActuator ClampRotaryActuator = new LinearActuator(_doInputStationClampRotate, _diInputStationClampRotateCwOpen, _diInputStationClampRotateCcwClose, DigitalIOState.On); _clampRotary = ClampRotaryActuator as ILinearActuator; _clampRotary.Name = "Zone 5 clamp rotary actuator"; _clampRotary.ExtendedDirectionName = "Cw Open"; _clampRotary.ExtendedStateName = "Cw Open"; _clampRotary.RetractedDirectionName = "Ccw Close"; _clampRotary.RetractedStateName = "Ccw Close"; }
// Internal Methods ------------------------------------------------------------- protected override void InitializeStateMachine() { base.InitializeStateMachine(); TransitionTo(stateMonitoring); #region Error messages. ButtonList lst = new ButtonList(ErrorButton.NoButton, ErrorButton.OK, ErrorButton.NoButton); string src = "HST.Monitor"; mainDoorIsNotLocked = new MonitorErrorMessage(_workcell, true, src, lst); mainDoorIsNotLocked.Format(HSTErrors.DoorNotLockError.ToString()); mainDoorIsNotLocked.Priority = 1; mainDoorIsNotLocked.TriggerError = false; mainDoorIsNotLocked.IsAutoClearError = true; mainDoorIsNotLocked.Source = ((int)HSTErrors.DoorNotLockError).ToString("000000"); mainDoorIsNotLocked.SetWorkInstruction("Work instruction for door not lock Error is TBD"); groundMasterError = new MonitorErrorMessage(_workcell, true, src, lst); groundMasterError.Format(HSTErrors.GroundMasterError.ToString()); groundMasterError.Priority = 14; groundMasterError.DigitalInput = ioManifest.GetDigitalInput((int)HSTIOManifest.DigitalInputs.Ground_Master); groundMasterError.WorkingState = DigitalIOState.Off; groundMasterError.IsAutoClearError = false; groundMasterError.Source = ((int)HSTErrors.GroundMasterError).ToString("000000"); groundMasterError.SetWorkInstruction("Work instruction for ground Master Error is TBD"); emoTriggered = new MonitorErrorMessage(_workcell, true, src, lst); emoTriggered.Format(HSTErrors.EMOTriggeredError.ToString()); emoTriggered.Priority = 8; emoTriggered.TriggerError = false; emoTriggered.IsAutoClearError = false; emoTriggered.Source = ((int)HSTErrors.EMOTriggeredError).ToString("000000"); emoTriggered.SetWorkInstruction("Work instruction for EMO tiggered error is TBD"); safetyControllerPresentError = new MonitorErrorMessage(_workcell, true, src, lst); safetyControllerPresentError.Format(HSTErrors.SafetyControllerPresentError.ToString()); safetyControllerPresentError.Priority = 15; safetyControllerPresentError.TriggerError = false; safetyControllerPresentError.IsAutoClearError = false; safetyControllerPresentError.Source = ((int)HSTErrors.SafetyControllerPresentError).ToString("000000"); safetyControllerPresentError.SetWorkInstruction("Work instruction for Safety Controller Present Error is TBD"); ticTriggeringError = new MonitorErrorMessage(_workcell, true, src, lst); ticTriggeringError.Format(HSTErrors.TICTriggeringError.ToString()); ticTriggeringError.Priority = 15; ticTriggeringError.TriggerError = false; ticTriggeringError.IsAutoClearError = false; ticTriggeringError.Source = ((int)HSTErrors.TICTriggeringError).ToString("000000"); performanceTriggeringError = new MonitorErrorMessage(_workcell, true, src, lst); performanceTriggeringError.Format(HSTErrors.PerformanceTriggeringError.ToString()); performanceTriggeringError.Priority = 1; performanceTriggeringError.TriggerError = false; performanceTriggeringError.IsAutoClearError = false; performanceTriggeringError.Source = ((int)HSTErrors.PerformanceTriggeringError).ToString("000000"); performanceTriggeringError.SetWorkInstruction("Please call technician to check tesing performance because running result hit triggering limitation percentage."); probeFunctionalTestTriggeringError = new MonitorErrorMessage(_workcell, true, src, lst); probeFunctionalTestTriggeringError.Format(HSTErrors.ProbeFunctionalTestTriggeringError.ToString()); probeFunctionalTestTriggeringError.Priority = 1; probeFunctionalTestTriggeringError.TriggerError = false; probeFunctionalTestTriggeringError.IsAutoClearError = false; probeFunctionalTestTriggeringError.Source = ((int)HSTErrors.ProbeFunctionalTestTriggeringError).ToString("000000"); probeFunctionalTestTriggeringError.SetWorkInstruction("Please call technician to check resistance measurement board because known resistance reading was failed."); samplingOverLimitTriggeringError = new MonitorErrorMessage(_workcell, true, src, lst); samplingOverLimitTriggeringError.Format(HSTErrors.ErrorCodeTriggeringError.ToString()); samplingOverLimitTriggeringError.Priority = 1; samplingOverLimitTriggeringError.TriggerError = false; samplingOverLimitTriggeringError.IsAutoClearError = false; samplingOverLimitTriggeringError.Source = ((int)HSTErrors.SamplingTriggeringError).ToString("000000"); samplingOverLimitTriggeringError.SetWorkInstruction("Part status {A} for on disk sampling over target, Please call technician to verify!"); cccMachineTriggeringError = new MonitorErrorMessage(_workcell, true, src, lst); cccMachineTriggeringError.Format(HSTErrors.ANCTriggeringError.ToString()); cccMachineTriggeringError.Priority = 1; cccMachineTriggeringError.TriggerError = false; cccMachineTriggeringError.IsAutoClearError = false; cccMachineTriggeringError.Source = ((int)HSTErrors.ANCTriggeringError).ToString("000000"); cccMachineTriggeringError.SetWorkInstruction("ANC Triggering"); motionError = new MonitorErrorMessage(_workcell, true, src, lst); motionError.Format(HSTErrors.MotionAxitError.ToString()); motionError.Priority = 1; motionError.TriggerError = false; motionError.IsAutoClearError = false; motionError.Source = ((int)HSTErrors.MotionAxitError).ToString("000000"); motionError.SetWorkInstruction("Aerotech motion error"); #endregion // WARNING MEESSAGE #region Warnning messages mainDoorIsNotLocked.TriggerError = false; mainDoorIsNotLocked.IsAutoClearError = false; mainDoorIsNotLocked.Source = ((int)HSTErrors.DoorNotLockError).ToString("000000"); mainDoorIsNotLocked.SetWorkInstruction("Work instruction for door not lock Error is TBD"); conveyorCongestion = new MonitorErrorMessage(_workcell, false, src, lst); conveyorCongestion.Format(HSTErrors.OutputConveyorCongestionError.ToString()); conveyorCongestion.Priority = 2; conveyorCongestion.TriggerError = false; conveyorCongestion.IsAutoClearError = false; conveyorCongestion.SetWorkInstruction("Work instruction for Conveyor Congestion is TBD"); #endregion }