protected override QState StateRunInit(IQEvent qEvent) { LogMessage("StateRunInit", qEvent); if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog && !qEvent.QSignal.ToString().Equals("Empty") && !qEvent.QSignal.ToString().Equals("Init") && !qEvent.QSignal.ToString().Equals("SigTimeout")) { Log.Info(this, "{0}, ProcessName:{1}, StateName:StateRunInit, QEvent:{2}, QSignal:{3}, Message: Initialization completed.", LoggerCategory.StateTransition, _processName, qEvent.ToString(), qEvent.QSignal.ToString()); } LogMessage("StateRunInit", qEvent); if (qEvent.IsSignal(QSignals.Entry)) { _isStateInitialized = false; ClearDeferredSignals(); } // Initialization completed. Signal to stop state. if (qEvent.IsSignal(QSignals.Exit)) { if (!_workcell.Process.IsErrorState && !this._isErrorstate) { this.stateHistory = this.targetState; ClearDeferredSignals(); _isStateInitialized = true; } } return(stateProcess); }
private QState StateWaitForInputCarrierComplete(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { if (RecallDeferredSignal(HSTWorkcell.SigInputRFIDReadComplete)) { UpdateSignalRecipient(HSTWorkcell.SigInputRFIDReadComplete); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigInputRFIDReadComplete)) { var inputDataCarrier = (Carrier)(qEvent as QEvent).EventObject; if (inputDataCarrier != null) { _currentRunCarrier = inputDataCarrier; } TransitionTo(stateCheckGetputServerConnection); return(null); } return(stateRun); }
private QState StateWaitPrecisorTurnOnAllVacuums(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { if (RecallDeferredSignal(HSTWorkcell.SigPrecisorVacuumOn)) { UpdateSignalRecipient(HSTWorkcell.SigPrecisorVacuumOn); return(null); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigPrecisorVacuumOn)) { if (HSTMachine.Workcell.HSTSettings.Install.EnableFlattenerAsPrecisor) { _controller.RetractInputEEFlattener(); } TransitionTo(statePlaceHgaZUpToParkPosition); return(null); } return(stateRun); }
private QState StateRunCheckHGAReadyForPick(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { Controller.StartWorkingOnPlacingToPrecisor = false; if (RecallDeferredSignal(HSTWorkcell.SigHGAsReadyToPickAtInputLifter)) { UpdateSignalRecipient(HSTWorkcell.SigHGAsReadyToPickAtInputLifter); } if (RecallDeferredSignal(HSTWorkcell.SigInputEEStartDycemCleaning)) { UpdateSignalRecipient(HSTWorkcell.SigInputEEStartDycemCleaning); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigInputEEStartDycemCleaning)) { TransitionTo(statePerformCleaningWithDycem); return(null); } if (qEvent.IsSignal(HSTWorkcell.SigHGAsReadyToPickAtInputLifter)) { InputEEMovesDownToInputStationPickPositionProcessCycleTimeStopWatch.Start(); TransitionTo(statePickHgaZDown); return(null); } return(stateRun); }
private QState StateCheckNextZoneReady(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob) || qEvent.IsSignal(_sigTimeout)) { try { if (_controller.NextZoneReady()) { TransitionTo(stateOutputTurnSectionReleaseCarrier); } else { //lai: reduce from 200 march12-2016 _qTimer.FireIn(new TimeSpan(0, 0, 0, 0, 150), new QEvent(_sigTimeout)); } } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.Stop, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } return(null); } return(stateRun); }
private QState StateWaitForOutputCarrierComplete(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { _retryCountSaveTDF = 0; _retryCountSendSeatrack = 0; if (RecallDeferredSignal(HSTWorkcell.SigOutputProcessDataComplete)) { UpdateSignalRecipient(HSTWorkcell.SigOutputProcessDataComplete); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigOutputProcessDataComplete)) { var outputData = (object[])(qEvent as QEvent).EventObject; if (outputData != null) { _currentFolaTagInfo = (FolaTagData)outputData[0]; _currentOutputRunCarrier = (Carrier)outputData[1]; } TransitionTo(stateSentSeatrackData); return(null); } return(stateRun); }
protected QState Monitoring(IQEvent qEvent) { if (qEvent.IsSignal(SigStateJob)) { if (RecallDeferredSignal(HSTWorkcell.SigRunTestScript)) { UpdateSignalRecipient(HSTWorkcell.SigRunTestScript); return(null); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigRunTestScript)) { ResetAllVariables(); _commandLines = System.IO.File.ReadAllLines(HSTMachine.Workcell.HSTSettings.Install.TestScript); CommandQueue = new Queue <string>(); for (int i = 0; i < _commandLines.Length; i++) { CommandQueue.Enqueue(_commandLines[i]); } ProcessNextCommand(); return(null); } return(base.TopState); }
private QState StateSaveTDFDataFile(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob) || qEvent.IsSignal(_sigTimeout)) { try { if (_workcell.HSTSettings.Install.EnabledTDFFileSystem || _workcell.HSTSettings.Install.EnabledSaveTDFFileOnly) { _controller.SaveTDFDataToLocalFile(_currentFolaTagInfo, _currentOutputRunCarrier); } TransitionTo(stateWaitForOutputCarrierComplete); } catch (Exception ex) { if (_retryCountSaveTDF < 2) { Thread.Sleep(200); Log.Error(this, "Failed to get ISI data. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCountSendSeatrack, ex.Message, this.CurrentStateName); TransitionTo(stateSaveTDFDataFile); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCountSaveTDF++; } return(null); } return(stateRun); }
private QState StatePlaceHGAZDown(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob) || qEvent.IsSignal(_sigTimeout)) { try { if (_controller.IsSafeToMoveDown(true)) { OutputEEDownToLifterPositionTravellingTimeStopWatch.Start(); _controller.PlaceHGAMoveDown(); OutputEEDownToLifterPositionTravellingTimeStopWatch.Stop(); if (HSTMachine.Workcell != null) { if (HSTMachine.Workcell.getPanelOperation() != null) { if (HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel() != null) { UIUtility.Invoke(HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel(), () => { HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel().labelOutputDownToLifterPositionTravellingTime.Text = OutputEEDownToLifterPositionTravellingTimeStopWatch.ElapsedTime.ToString(); }); } } } if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { if (CommonFunctions.Instance.CollisionAvoidanceBetweenPrecisorNestAndOutputEEMovingDownToOutputCarrierProcessCycleTimeStopWatch.Count > 0) { ProcessStopWatch PSW = CommonFunctions.Instance.CollisionAvoidanceBetweenPrecisorNestAndOutputEEMovingDownToOutputCarrierProcessCycleTimeStopWatch.First(); PSW.Stop(); CommonFunctions.Instance.LogProcessCycleTime("Collision Avoidance Between Precisor Nest And Output EE Moving Down To Output Carrier Process Cycle Time.csv", PSW.GetElapsedTime(), PSW.CarrierID, PSW.GetStartTime(), PSW.GetStopTime()); CommonFunctions.Instance.CollisionAvoidanceBetweenPrecisorNestAndOutputEEMovingDownToOutputCarrierProcessCycleTimeStopWatch.Dequeue(); } } OutputEEPlacesDownHGAOntoOutputCarrierProcessCycleTimeStopWatch.Start(); TransitionTo(statePlaceHGAVacuumOff); } else { _qTimer.FireIn(new TimeSpan(0, 0, 0, 0, 200), new QEvent(_sigTimeout)); return(null); } } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.OK, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } return(null); } return(stateRun); }
private QState StateWaitForSigOutputCarrierReadyForPlace(IQEvent qEvent) { WaitOutputCarrierReadyForPlaceTimeStopWatch.Start(); LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { if (RecallDeferredSignal(HSTWorkcell.SigOutputCarrierReadyForPlace)) { UpdateSignalRecipient(HSTWorkcell.SigOutputCarrierReadyForPlace); } if (RecallDeferredSignal(HSTWorkcell.SigOutputEEAxisSafeToPlacePrecisorNestAtParkedPosition)) { UpdateSignalRecipient(HSTWorkcell.SigOutputEEAxisSafeToPlacePrecisorNestAtParkedPosition); } return(null); } if (qEvent.IsSignal(HSTWorkcell.SigOutputCarrierReadyForPlace)) { OutputCarrierReadyForPlaceSignalReceived = true; } if (qEvent.IsSignal(HSTWorkcell.SigOutputEEAxisSafeToPlacePrecisorNestAtParkedPosition)) { PrecisorNestIsAtParkPositionSignalReceived = true; } if (OutputCarrierReadyForPlaceSignalReceived && PrecisorNestIsAtParkPositionSignalReceived) { if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { Log.Info(this, "{0}, ProcessName:{1}, StateName:StateWaitForSigOutputCarrierReadyForPlace, Received QSignal:{2} and transition to new State:StatePlaceHGAZDown because OutputCarrierReadyForPlaceSignalReceived is true && PrecisorNestIsAtParkPositionSignalReceived is true", LoggerCategory.StateTransition, _processName, qEvent.QSignal.ToString()); } OutputCarrierReadyForPlaceSignalReceived = false; PrecisorNestIsAtParkPositionSignalReceived = false; TransitionTo(statePlaceHGAZDown); WaitOutputCarrierReadyForPlaceTimeStopWatch.Stop(); if (HSTMachine.Workcell != null) { if (HSTMachine.Workcell.getPanelOperation() != null) { if (HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel() != null) { UIUtility.Invoke(HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel(), () => { HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel().labelWaitCarrierReadyForPlaceTime.Text = WaitOutputCarrierReadyForPlaceTimeStopWatch.ElapsedTime.ToString(); }); } } } return(null); } return(stateRun); }
private QState StatePublishSigProbeDone(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigRecover)) { if (errorMessage != null) { ErrorButton response = (ErrorButton)(((QEvent)qEvent).EventObject); switch (response) { case ErrorButton.Continue: { PublishSignal(new QEvent(HSTWorkcell.SigProbeDone)); TransitionTo(stateCheckProbeFunctionalTest); } break; default: errorMessage = null; System.Windows.Forms.MessageBox.Show(string.Format("Unhandled Button: {0}", response.ToString()), response.ToString()); return(null); } return(null); } } if (qEvent.IsSignal(SigStateJob)) { try { TestProbeHandlerMovesUpAfterMeasurementCompleteProcessCycleTimeStopWatch.Stop(); if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { CommonFunctions.Instance.LogProcessCycleTime("Test Probe Handler Moves Up After Measurement Complete Process Cycle Time.csv", TestProbeHandlerMovesUpAfterMeasurementCompleteProcessCycleTimeStopWatch.ElapsedTime); } if (_workcell.IsAllMeasurementFailed) { throw new Exception("All measurement results failed, Please verify the communications with test electronics work properly"); } else { PublishSignal(new QEvent(HSTWorkcell.SigProbeDone)); TransitionTo(stateCheckProbeFunctionalTest); } } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.Continue, ErrorButton.NoButton, ErrorButton.Stop); TransitionToErrorState(btnlst, ex); } } return(stateRun); }
private QState StateISIDataProcess(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob) || qEvent.IsSignal(_sigTimeout)) { try { if (CommonFunctions.Instance.MeasurementTestRecipe.DeltaISI_Enable) { //_controller.GetSLDRData(_currentRunCarrier); _controller.GetSLDRData_New(_currentRunCarrier); _controller.CheckSLDRDataCorrect(_currentRunCarrier); } Carrier IncomingOutputCarrier = _currentRunCarrier.DeepCopy(); IncomingOutputCarrier.RFIDData = _currentRunCarrier.RFIDData; lock (CommonFunctions.Instance.InputCarriersLock) { foreach (Carrier carrier in CommonFunctions.Instance.InputCarriers.ToArray()) { if (carrier.CarrierID == IncomingOutputCarrier.CarrierID) { carrier.CarrierCurrentLocation = CarrierLocation.BufferStation; break; } } } _workcell.Process.InputEEProcess.Controller.IncomingCarrier = _currentRunCarrier.DeepCopy(); //Public to get ISI data QF.Instance.Publish(new QEvent(HSTWorkcell.SigInputGetISIDataComplete)); TransitionTo(stateWaitForInputCarrierComplete); } catch (Exception ex) { if (_retryCount < 2) { Thread.Sleep(200); Log.Error(this, "Failed to get ISI data. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(stateISIDataProcess); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRun); }
private QState StateRunInitCompleteMoveToParkPosition(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigRecover)) { if (errorMessage != null) { ErrorButton response = (ErrorButton)(((QEvent)qEvent).EventObject); switch (response) { case ErrorButton.Stop: { _retryCount = 0; } break; default: errorMessage = null; System.Windows.Forms.MessageBox.Show(string.Format("Unhandled Button: {0}", response.ToString()), response.ToString()); return(null); } return(null); } } if (qEvent.IsSignal(SigStateJob)) { try { if (!_workcell.IsIgnoreHomeAxisForByPass) { _controller.GoToParkPosition(false); } if (HSTWorkcell.disableBoundaryCheck) { PublishSignal(new QEvent(HSTWorkcell.SigTestProbeBoundaryCheckComplete)); } TransitionTo(stateCheckProbeFunctionalTest); } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.OK, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } return(null); } return(stateRunInit); }
private QState StateReportGetputError(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigRecover)) { if (errorMessage != null) { ErrorButton response = (ErrorButton)(((QEvent)qEvent).EventObject); switch (response) { case ErrorButton.OK: // Reject, treat as bad carrier { PublishSignal(new QEvent(HSTWorkcell.SigEndRunProcess)); } break; default: errorMessage = null; System.Windows.Forms.MessageBox.Show(string.Format("Unhandled Button: {0}", response.ToString()), response.ToString()); return(null); } return(null); } } if (qEvent.IsSignal(SigStateJob)) { try { CommonFunctions.Instance.ActivePopupGetputErrorMessage = true; if (FISManager.Instance.IsFISConnected) { HSTException.Throw(HSTErrors.TestElectronecsGetputErrorDetection2, new Exception(CommonFunctions.Instance.GetputErrorMessage)); } else { HSTException.Throw(HSTErrors.TestElectronecsGetputErrorDetection, new Exception(CommonFunctions.Instance.GetputErrorMessage)); } } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.OK, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); return(null); } } return(stateRun); }
private QState StateCheckVaccuum(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { _controller.CheckPnpPartPresent(false); TransitionTo(stateRunInitCompleteMoveToParkPosition); _retryCount = 0; } catch (Exception ex) { if (_retryCount < 1) { Log.Error(this, "Failed to perform Input EE Vacuum check. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRunInit); }
private QState StateRunInitCompleteMoveToParkPosition(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { if (!_workcell.IsIgnoreHomeAxisForByPass) { _controller.DoJobMoveZToPark(false, false); } if (HSTWorkcell.disableBoundaryCheck) { PublishSignal(new QEvent(HSTWorkcell.SigOutputEEBoundaryCheckComplete)); } TransitionTo(stateWaitForPrecisorReadyForPick); } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.OK, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } return(null); } return(stateRunInit); }
protected override QState StateStartup(IQEvent qEvent) { if (qEvent.IsSignal(SigInitialized)) { } return(base.StateStartup(qEvent)); }
private QState StatePickHgaVacuumOn(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { _controller.DoJobVacuum(true); TransitionTo(statePickHgaZUpToParkPosition); } catch (Exception ex) { // Pick fail also Z Up First. // Check again at Up Height if (_retryCount < 1) { Log.Error(this, "Failed to turn on vacuum channel on Input EE during pick HGAs. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRun); }
private QState StatePickHgaPublishPickDone(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { InputEEPicksUpHGAsFromInputStationProcessCycleTimeStopWatch.Stop(); if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { CommonFunctions.Instance.LogProcessCycleTime("Input EE Picks Up HGAs From Input Station Process Cycle Time.csv", InputEEPicksUpHGAsFromInputStationProcessCycleTimeStopWatch.ElapsedTime); } _currentInputCarrier = _controller.IncomingCarrier.DeepCopy(); if (_currentInputCarrier == null) { throw new Exception("input carrier object is null"); } _workcell.Process.PrecisorStationProcess.Controller.IncomingCarrier = _currentInputCarrier.DeepCopy(); QF.Instance.Publish(new QEvent(HSTWorkcell.SigHGAsPickDoneAtInputLifter)); QF.Instance.Publish(new QEvent(HSTWorkcell.SigHGAsInputEECompletePick)); InputEEPlacesDownHGAOntoPrecisorNestProcessCycleTimeStopWatch.Start(); TransitionTo(stateRunCheckHGAReadyForPlace); return(null); } return(stateRun); }
private QState StatePublishSigCarrierInInputStation(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { _workcell.Process.InputStationProcess.Controller.IncomingCarrier = _currentInputCarrier.DeepCopy(); _workcell.Process.InputStationProcess.Controller.IncomingCarrierSettings = _currentInputCarrierSettings; //lai if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { Log.Info(this, "{0}, ProcessName:{1}, In InputTurnStationProcess' StatePublishSigCarrierInInputStation', _currentInputCarrier: Carrier ID:{2}, " + "HGA1:{3}, HGA2:{4}, HGA3:{5}, HGA4:{6}, HGA5:{7}, " + "HGA6:{8}, HGA7:{9}, HGA8:{10}, HGA9:{11}, HGA10:{12}", LoggerCategory.StateTransition, _processName, _currentInputCarrier.CarrierID, _currentInputCarrier.Hga1.Hga_Status, _currentInputCarrier.Hga2.Hga_Status, _currentInputCarrier.Hga3.Hga_Status, _currentInputCarrier.Hga4.Hga_Status, _currentInputCarrier.Hga5.Hga_Status, _currentInputCarrier.Hga6.Hga_Status, _currentInputCarrier.Hga7.Hga_Status, _currentInputCarrier.Hga8.Hga_Status, _currentInputCarrier.Hga9.Hga_Status, _currentInputCarrier.Hga10.Hga_Status); } QF.Instance.Publish(new QEvent(HSTWorkcell.SigCarrierPresentInInputStation)); TransitionTo(stateInputTurnSectionTurnBackward); } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.Stop, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); return(null); } return(null); } return(stateRun); }
protected bool IsSigStateJob(IQEvent qEvent, string state) { if (qEvent.IsSignal(SigStateJob)) { EventParam evtParam = ((QEvent)qEvent).EventObject as EventParam; if (evtParam == null) { return(false); } if (evtParam.Consumer == null) { return(false); } if (evtParam.Consumer == state) { return(true); } else { if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog && !qEvent.QSignal.ToString().Equals("Empty") && !qEvent.QSignal.ToString().Equals("Init") && !qEvent.QSignal.ToString().Equals("SigTimeout")) { Log.Info(this, "{0}, ProcessName:{1}, StateName:In IsSigStateJob, Unable to consume signal {2}. Handler:{3}, Consumer:{4}", LoggerCategory.StateTransition, _processName, qEvent.QSignal.ToString(), state, evtParam.Consumer); } return(false); } } else { return(false); } }
private QState StatePlaceHgaZUpToParkPosition(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { InputEELeavesPrecisorNestAfterHGAPlaceProcessCycleTimeStopWatch.Start(); InputEEUpFromPrecisorNestPositionTravellingTimeStopWatch.Start(); _controller.DoJobMoveZToPark(false); InputEEUpFromPrecisorNestPositionTravellingTimeStopWatch.Stop(); if (HSTMachine.Workcell != null) { if (HSTMachine.Workcell.getPanelOperation() != null) { if (HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel() != null) { UIUtility.Invoke(HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel(), () => { HSTMachine.Workcell.getPanelOperation().getOperationStatusPanel().labelInputUpFromPrecisorNestPositionTravellingTime.Text = InputEEUpFromPrecisorNestPositionTravellingTimeStopWatch.ElapsedTime.ToString(); }); } } } InputEELeavesPrecisorNestAfterHGAPlaceProcessCycleTimeStopWatch.Stop(); if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { CommonFunctions.Instance.LogProcessCycleTime("Input EE Leaves Precisor Nest After HGA Place Process Cycle Time.csv", InputEELeavesPrecisorNestAfterHGAPlaceProcessCycleTimeStopWatch.ElapsedTime); } ProcessStopWatch PSW1 = new ProcessStopWatch(_controller.IncomingCarrier.CarrierID, new Stopwatch()); if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog) { CommonFunctions.Instance.CollisionAvoidanceBetweenInputEEAndPrecisorNestLeavingInputStationProcessCycleTimeStopWatch.Enqueue(PSW1); } TransitionTo(statePlaceHgaPublishPlaceDone); } catch (Exception ex) { if (_retryCount < 1) { Log.Error(this, "Failed to home Input EE. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.OK, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRun); }
private QState StateStandbyInputTurnSection(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { _controller.InputTurnSectionTurnTo0Deg(out _timeUsed); _controller.InhibitInputConveyor(true); _controller.InhibitInputTurnStation(false); Thread.Sleep(1000); _controller.InhibitInputTurnStation(true); _lastSeaveyorIDInposStatus = _controller.IsInputLineReady(); TransitionTo(stateRunStart); _retryCount = 0; } catch (Exception ex) { if (_retryCount < 3) { Log.Error(this, "Failed to standby Input Turn Station. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.Stop, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRunInit); }
protected override QState StateRunInit(IQEvent qEvent) { TestProbeMovesDownToPrecisorNestProbePositionProcessCycleTimeStopWatch = new Stopwatch(); HGAMeasurementTestAtTestProbeProcessCycleTimeStopWatch = new Stopwatch(); TestProbeHandlerMovesUpAfterMeasurementCompleteProcessCycleTimeStopWatch = new Stopwatch(); TestProbeStabilityProcessCycleTimeStopWatch = new Stopwatch(); //Time Monitoring TestProbeDownToTestPositionTravellingTimeStopWatch = new Stopwatch(); TestTimeStopWatch = new Stopwatch(); TestProbeUpFromTestPositionTravellingTimeStopWatch = new Stopwatch(); LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { if (HSTWorkcell.disableBoundaryCheck) { TransitionTo(stateRunInitCompleteMoveToParkPosition); } else { TransitionTo(stateMoveToHomePosition); } return(null); } return(base.StateRunInit(qEvent)); }
private QState StateInputTurnSectionTurnBackward(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { Thread.Sleep(2000); _controller.InputTurnSectionTurnTo0Deg(out _timeUsed); TransitionTo(stateCheckForNextCarrier); } catch (Exception ex) { if (_retryCount < 3) { Log.Error(this, "Failed to turn Input Turn Station to 90 degrees. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.Stop, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; return(null); } return(null); } return(stateRun); }
private QState StateBoundaryCheck(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { if (!_workcell.IsIgnoreHomeAxisForByPass) { _controller.BoundaryCheck(); } TransitionTo(statePublishInputEEBoundaryCheckComplete); _retryCount = 0; } catch (Exception ex) { if (_retryCount < 1) { Log.Error(this, "Failed to perform boundary check on Input EE. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName); TransitionTo(this.targetState); } else { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.NoButton); TransitionToErrorState(btnlst, ex); } _retryCount++; } return(null); } return(stateRunInit); }
private QState StatePublishSigOutputCarrierPlaceDone(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { if (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Bypass && HSTMachine.Workcell.HSTSettings.Install.BypassMeasurementTestAtTestProbe == true) { // Do nothing } else { _workcell.Process.OutputStationProcess.Controller.IncomingTestedCarrier = CommonFunctions.Instance.TestedCarrierQueue.First(); } if (CheckDeferredSignal(HSTWorkcell.SigOutputCarrierReadyForPlace)) { RemoveDeferredSignal(HSTWorkcell.SigOutputCarrierReadyForPlace); } _controller.PlaceHGAMoveUp(); PublishSignal(new QEvent(HSTWorkcell.SigOutputCarrierPlaceDone)); TransitionTo(stateWaitForPrecisorReadyForPick); } return(stateRun); }
private QState StateCheckGetputServerConnection(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); if (qEvent.IsSignal(SigStateJob)) { try { if (FISManager.Instance.IsFISConnected) { TransitionTo(stateISIDataProcess); } else { throw new Exception("Can't connect to data server, please check GetputServer program or check network connection!!"); } } catch (Exception ex) { ButtonList btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.NoButton, ErrorButton.Abort); TransitionToErrorState(btnlst, ex); } return(null); } return(stateRun); }
protected QState StartRunning(IQEvent qEvent) { LogMessage("Getput Monitoring", qEvent); if (qEvent.IsSignal(SigStateJob)) { if (HSTWorkcell.terminatingHSTApps) { return(null); } try { if (HSTMachine.Workcell.IsMainFormloaded) { if (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Auto) { //FISManager.Instance.Launch(); //FISManager.Instance.StartGetPutServer(); FISManager.Instance.TestConnection(); } } } catch (Exception ex) { Log.Error(this, "GetputserverMonitoringProcess failed: Exception: {0}, StateName: {1}", ex.Message, this.CurrentStateName); } _loopTimeOut = new TimeSpan(0, 0, 0, 0, 500); _stateTimer.FireIn(_loopTimeOut, new QEvent(SigStateJob)); return(null); } return(base.TopState); }
private QState StateRunStart(IQEvent qEvent) { LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent); machineStop = false; if (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation || HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.DryRun) { SimulatedInputCarriersSettingsQueue = new Queue <CarrierSettings>(); foreach (CarrierSettings carrier in HSTMachine.Workcell.HSTSettings.SimulatedPart.Carriers) { SimulatedInputCarriersSettingsQueue.Enqueue(carrier); } } if (qEvent.IsSignal(SigStateJob)) { if (_workcell.IsMachineHomed) { TransitionTo(stateDoAutoClearCarrier); } return(null); } return(stateRun); }