protected override QState StateRunInit(IQEvent qEvent)
 {
     LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent);
     _retryCount                  = 0;
     _currentInputCarrier         = null;
     _currentInputCarrierSettings = null;
     HGADetectionAtInputTurnStationProcessCycleTimeStopWatch            = new Stopwatch();
     InputCameraHGADetectionAtInputTurnStationProcessCycleTimeStopWatch = new Stopwatch();
     BoatLeavesInputTurnStationProcessCycleTimeStopWatch   = new Stopwatch();
     HSTMachine.Workcell.InputTurnStationBoatPositionError = false;
     CommonFunctions.Instance.StopMachineRunDueToTICError  = false;
     if (qEvent.IsSignal(SigStateJob))
     {
         TransitionTo(stateStandbyInputTurnSection);
         return(null);
     }
     return(base.StateRunInit(qEvent));
 }
Exemplo n.º 2
0
        public void Configuration(IAppBuilder app)
        {
            #region read settings

            // JsonHelpersLibrary.SettingsLocator.Locator.DefaultFolderLocation = System.Web.Hosting.HostingEnvironment.MapPath("~");

            var _Settings = new CarrierSettings();


            _Settings.ViewModelLayerSettings.AdminRepositoryFunc = () =>
            {
                return(new Galcon.GSI.Systems.GSI.DAL.DataAccessLayer.Repositories.AdminRepository.T_SQL.TSQLAdminRepository("GSI-Group_AdminDB"));
            };

            //_Settings.ViewModelLayerSettings.AgricultureRepositoryFunc = () =>
            //{

            //    return new Galcon.GSI.Systems.XCIGroup.BL.Bulks.AgricultureData.ES.ESAgricultureRepository(new ElasticSettings());
            //};

            #endregion

            AreaRegistration.RegisterAllAreas();
            //  GlobalConfiguration.Configure(CommonWebApiConfig.Register);
            App_Start.FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            #region DependencyResolver

            var _DependencyResolver = new BaseControllerDependencyResolver(_Settings.ViewModelLayerSettings);
            GlobalConfiguration.Configuration.DependencyResolver = _DependencyResolver;

            #endregion

            #region Authetication providers

            // app.UseGSICommonAuthSettings();

            #endregion
        }
        private QState StateVisionInspectCarrierAfterLoad(IQEvent qEvent)
        {
            bool carrierLoadedInWrongDirection = false;

            LogStateInfo(_processName, System.Reflection.MethodBase.GetCurrentMethod().Name, qEvent);

            InputCameraHGADetectionAtInputTurnStationProcessCycleTimeStopWatch.Start();

            if (qEvent.IsSignal(SigRecover))
            {
                if (errorMessage != null)
                {
                    ErrorButton response = (ErrorButton)(((QEvent)qEvent).EventObject);
                    switch (response)
                    {
                    case ErrorButton.Reject:
                    {
                        BoatLeavesInputTurnStationProcessCycleTimeStopWatch.Start();
                        _currentInputCarrier.IsRejectedCarrier = true;
                        Log.Info(this, "{0}, ProcessName:{1}, StateVisionInspectCarrierAfterLoad, Carrier rejected by user", LoggerCategory.StateTransition, _processName);
                        CommonFunctions.Instance.InputCarriers.Enqueue(_currentInputCarrier);
                        TransitionTo(stateWaitForSigInputStationReady);
                    }
                    break;

                    case ErrorButton.OK:
                    {
                        _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 (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Simulation || HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.DryRun)
                    {
                        CarrierSettings carrierSettings = SimulatedInputCarriersSettingsQueue.Dequeue();
                        Mapper.CreateMap <CarrierSettings, Carrier>();
                        _currentInputCarrier         = Mapper.Map <Carrier>(carrierSettings);
                        _currentInputCarrierSettings = carrierSettings;


                        if (_currentInputCarrier == null)
                        {
                            throw new Exception("Failed to find valid input carrier object to be assigned with the read RFID data.");
                        }
                    }
                    else if (HSTMachine.Workcell.HSTSettings.Install.OperationMode == OperationMode.Bypass && HSTMachine.Workcell.HSTSettings.Install.BypassVisionAtInputTurnStation == true)
                    {
                        _currentInputCarrier = new Carrier();
                        _currentInputCarrier.Hga1.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga2.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga3.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga4.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga5.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga6.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga7.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga8.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga9.Hga_Status  = HGAStatus.HGAPresent;
                        _currentInputCarrier.Hga10.Hga_Status = HGAStatus.HGAPresent;
                    }
                    else
                    {
                        Thread.Sleep(HSTMachine.Workcell.SetupSettings.Delay.InputTurnTableFullyStopDelay);
                        _currentInputCarrier = _workcell.Process.InputEEProcess.Controller.VisionInspect();

                        if (CommonFunctions.Instance.visionError != "NoError")
                        {
                            HSTException.Throw(HSTErrors.InputDetectionCameraError, new Exception("Failed to run tool block: " + CommonFunctions.Instance.visionError));
                        }

                        if (_currentInputCarrier.IsLoadedInWrongDirection)
                        {
                            carrierLoadedInWrongDirection = true;
                            Log.Info(this, "{0}, ProcessName:{1}, StateVisionInspectCarrierAfterLoad, Input HGADetection camera detected carrier loaded in wrong direction. Reject this carrier.");

                            HSTException.Throw(HSTErrors.InputDetectionCameraCarrierLoadedInWrongDirection, new Exception("Input Camera detected current carrier was loaded in wrong direction."));
                        }

                        if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                        {
                            Log.Info(this, "{0}, ProcessName:{1}, StateVisionInspectCarrierAfterLoad, Input HGADetection camera result 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, "Unknown",
                                     _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);
                        }
                    }
                    _currentInputCarrier.CarrierCurrentLocation = CarrierLocation.InputTurnStation;

                    lock (CommonFunctions.Instance.InputCarriersLock)
                    {
                        CommonFunctions.Instance.InputCarriers.Enqueue(_currentInputCarrier);
                    }

                    _currentInputCarrier.IsCarrierEmpty = IsCarrierEmpty.Empty;

                    if (_currentInputCarrier.Hga1.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga2.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga3.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga4.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga5.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga6.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga7.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga8.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga9.Hga_Status >= HGAStatus.HGAPresent ||
                        _currentInputCarrier.Hga10.Hga_Status >= HGAStatus.HGAPresent)
                    {
                        _currentInputCarrier.IsCarrierEmpty = IsCarrierEmpty.NotEmpty;
                    }

                    InputCameraHGADetectionAtInputTurnStationProcessCycleTimeStopWatch.Stop();
                    if (HSTMachine.Workcell.HSTSettings.Install.EnableDebugLog)
                    {
                        CommonFunctions.Instance.LogProcessCycleTime("Input Camera HGA Detection At Input Turn Station Process Cycle Time.csv", InputCameraHGADetectionAtInputTurnStationProcessCycleTimeStopWatch.ElapsedTime);
                    }

                    BoatLeavesInputTurnStationProcessCycleTimeStopWatch.Start();
                    TransitionTo(stateWaitForSigInputStationReady);
                }
                catch (Exception ex)
                {
                    bool skipRetry = carrierLoadedInWrongDirection ? true : false;

                    if (_retryCount < 3 && !skipRetry)
                    {
                        Log.Error(this, "Failed to perform vision inspection. Retry count: {0}, Exception: {1}, StateName: {2}", _retryCount, ex.Message, this.CurrentStateName);
                        TransitionTo(this.targetState);
                    }
                    else
                    {
                        ButtonList btnlst;
                        if (carrierLoadedInWrongDirection)
                        {
                            btnlst = new ButtonList(ErrorButton.Reject, ErrorButton.Stop, ErrorButton.NoButton);
                        }
                        else
                        {
                            btnlst = new ButtonList(ErrorButton.Retry, ErrorButton.Reject, ErrorButton.Stop);
                        }

                        TransitionToErrorState(btnlst, ex);
                    }
                    _retryCount++;
                }
                return(null);
            }
            return(stateRun);
        }