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";
        }
Ejemplo n.º 2
0
        // 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";
            }
        }
Ejemplo n.º 3
0
        // 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";
        }
Ejemplo n.º 4
0
        // 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
        }