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 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);
        }
Exemplo n.º 3
0
        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);
        }