Esempio n. 1
0
        protected override int Step(RobotMode Mode, int StepIndex)
        {
            Thread.Sleep(10);
            int    NextStep    = StepIndex;
            string UserInfo    = "";
            int    _i          = -1;
            bool   _ShowResult = false;

            if (StepIndex == ++_i)
            {
                InitCycle();
                NextStep++;
            }
            else if (StepIndex == ++_i)
            {
                UserInfo = "Teil einlegen und START drücken";
                if (m_BK.Ch().DI_PartInserted&& m_BK.Ch().DI_Start)
                {
                    WTFileCollection.GetWTFile(0).SetProgram(1); //wird als Startflag für Robot2 verwendet
                    WTFileCollection.GetWTFile(0).SetSN(Randomize.Int(10000).ToString());
                    NextStep++;
                }
                else
                {
                    WTFileCollection.GetWTFile(0).SetProgram(0);
                }
            }
            else if (StepIndex == ++_i)
            {
                UserInfo = "Teil einschleusen " + GetParams().m_CustTypeNumber;
                if (m_BK.Ch().DI_SledgeInWP)
                {
                    NextStep++;
                }
            }
            else if (StepIndex == ++_i)
            {
                UserInfo = "Teil prüfen";
                if (m_BK.Ch().DI_SledgeInHP)
                {
                    NextStep++;
                }
            }
            else if (StepIndex == ++_i)
            {
                _ShowResult = true;
                UserInfo    = "Teil entnehmen";
                if (!m_BK.Ch().DI_PartInserted)
                {
                    WTFileCollection.GetWTFile(0).SetProgram(0);
                    NextStep = 0;
                }
            }
            if (!_ShowResult && ((StepIndex != NextStep) || UserInfo.Length > 0))
            {
                UpdateStatDisplay(string.Format("Step {0:d} " + UserInfo, StepIndex));
            }
            if (_ShowResult && ((StepIndex != NextStep) || UserInfo.Length > 0))
            {
                UpdateStatDisplay(WTFileCollection.GetWTFile(0).GetResultDef().GetTotalResult(), UserInfo);
            }
            return(NextStep);
        }
Esempio n. 2
0
 private void MeasureTorque()
 {
     WTFileCollection.GetWTFile(0).GetResultDef().SetResultValue("ButtonOK", Randomize.Int(10) > 4);
 }
Esempio n. 3
0
        protected override int Step(RobotMode Mode, int StepIndex)
        {
            m_StepStart = System.Environment.TickCount;
            Thread.Sleep(10);
            int    NextStep = StepIndex;
            string UserInfo = "";
            int    _i       = -1;

            Thread.Sleep(5);
            ((DemoModuleDispl)this.m_Interface.GetModuleDisplay()).DrawState(GetEAState());
            ((DemoModuleDispl)this.m_Interface.GetModuleDisplay()).SetMessage(GetEAState().ToString() + " ->" + m_NextState.ToString());

            ///////////////////////////////////////////////////////////////////////////////////////
            //Grundstellungsfahrt
            if (Mode == RobotMode.Homing)
            {
                #region Schrittkette Homing
                if (StepIndex == ++_i)
                {
                    InitCycle();
                    m_StepTimer   = 0;
                    m_StepTimeout = 0;
                    NextStep      = StepIndex + 1;
                }
                else if (StepIndex == ++_i)
                {
                    if (GetEAState() == State.Unknown)
                    {
                        UserInfo    = "Bereit für Einschalten";
                        m_NextState = State.PowerOK;
                        SetEAState(m_NextState);
                    }
                    if (IsInState(State.PowerOK))// && m_NextState == State.PowerOK) {
                    {
                        UserInfo      = "Greifer öffnen";
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                        m_NextState   = State.GripperOpen;
                        SetEAState(m_NextState);
                    }
                    if (IsInState(State.GripperOpen))//&& m_NextState == State.GripperOpen) {
                    {
                        UserInfo      = "deindexieren";
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                        m_NextState   = State.IndexHP;
                        SetEAState(m_NextState);
                    }
                    if (IsInState(State.IndexHP))// && m_NextState == State.IndexHP) {
                    {
                        UserInfo      = "Schlitten in HP fahren";
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                        m_NextState   = State.SledgeOut;
                        SetEAState(m_NextState);
                    }
                    if (IsInState(State.SledgeOut))//  && m_NextState == State.SledgeOut) {
                    {
                        m_NextState   = State.HP;
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                        SetEAState(m_NextState);
                    }
                    if (IsInState(State.HP))//  && m_NextState == State.HP) {//out Station
                    {
                        NextStep = StepIndex + 1;
                    }
                    //Wenn wir in keinen stabilen Zustand sind schlägt irgendwann das Timeout an
                    if (m_StepTimeout > 0 && m_StepTimer > m_StepTimeout)
                    {
                        UserInfo = Translator.Tr("Timeout for settling State", "") + " " + m_NextState.ToString();
                        throw new SystemException(UserInfo);
                    }
                }
                else if (StepIndex == ++_i)
                {
                    UserInfo = "Homing ok";
                    NextStep = 0;
                }
                #endregion
            }
            ///////////////////////////////////////////////////////////////////////////////////////
            //Automatik
            if (Mode == RobotMode.Automatic)
            {
                #region Schrittkette Automatic
                if (StepIndex == ++_i)
                {
                    InitCycle();
                    NextStep      = StepIndex + 1;
                    m_StepTimeout = 0;
                }
                else if (StepIndex == ++_i)    //check power and HP
                {
                    m_StepTimeout = 0;
                    if (!IsInState(State.HP))
                    {
                        UserInfo = "Grundstellungsfahr erforderlich";
                    }
                    else
                    {
                        m_NextState = State.HP;
                        NextStep    = StepIndex + 1;
                    }
                }
                else if (StepIndex == ++_i)    //wait for start from Station1
                {
                    if (WTFileCollection.GetWTFile(0).GetProgram() > 0)
                    {
                        NextStep = StepIndex + 1;
                    }
                }
                else if (StepIndex == ++_i)    //into the station
                {
                    if (IsInState(m_NextState) && m_NextState == State.HP)
                    {
                        UserInfo    = "in Grundstellung";
                        m_NextState = State.SledgeIn;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.SledgeIn)
                    {
                        UserInfo    = "Schlitten eingefahren";
                        m_NextState = State.IndexWP;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.IndexWP)     //in Station
                    {
                        UserInfo    = "indexiert";
                        m_NextState = State.GripperClosed;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.GripperClosed)
                    {
                        UserInfo = "Messung vorbereiten";
                        NextStep = StepIndex + 1;
                    }
                }
                else if (StepIndex == ++_i)
                {
                    //check voltage
                    WTFileCollection.GetWTFile(0).GetResultDef().SetResultValue("AD1", ((double)(Randomize.Int(600))) / 100);
                    NextStep = StepIndex + 1;
                }
                else if (StepIndex == ++_i)
                {
                    //check button
                    MeasureTorque();
                    NextStep = StepIndex + 1;
                }
                else if (StepIndex == ++_i)    //out of station
                {
                    if (IsInState(m_NextState) && m_NextState == State.GripperClosed)
                    {
                        UserInfo    = "Messung Ende";
                        m_NextState = State.GripperOpen;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.GripperOpen)
                    {
                        UserInfo    = "Greifer offen";
                        m_NextState = State.IndexHP;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.IndexHP)
                    {
                        UserInfo    = "deindexiert";
                        m_NextState = State.SledgeOut;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.SledgeOut)
                    {
                        UserInfo    = "Schlitten ausgefahren";
                        m_NextState = State.HP;
                        SetEAState(m_NextState);
                        m_StepTimer   = 0;
                        m_StepTimeout = 1000;
                    }
                    else if (IsInState(m_NextState) && m_NextState == State.HP)    //out Station
                    {
                        NextStep = StepIndex + 1;
                    }
                }
                else if (StepIndex == ++_i)
                {
                    m_ReportGenerator.AddTotalResult(WTFileCollection.GetWTFile(0));
                    switch (WTFileCollection.GetWTFile(0).GetResultDef().GetTotalResult())
                    {
                    case ResultDef.TestResultEnum.Pass:
                        UserInfo = Translator.Tr("final result OK", "");
                        m_Counter.Count(true);
                        break;

                    default:
                        UserInfo = Translator.Tr("final result NOK", "");
                        m_Counter.Count(false);
                        break;
                    }
                    UpdateResultDisplay(WTFileCollection.GetWTFile(0));
                    NextStep = 0;
                }
                //Wenn wir in keinen stabilen Zustand sind schlägt irgendwann das Timeout an
                if (m_StepTimeout > 0 && m_StepTimer > m_StepTimeout)
                {
                    UserInfo = Translator.Tr("Timeout for settling State", "") + " " + m_NextState.ToString();
                    throw new SystemException(UserInfo);
                }
                #endregion
            }
            if ((StepIndex != NextStep) || UserInfo.Length > 0)
            {
                UpdateStatDisplay(string.Format("Step {0:d} " + UserInfo, StepIndex));
            }
            m_StepTimer += System.Environment.TickCount - m_StepStart;
            OnStepExit();   //aktuell wird nur vom Simulator ausgewertet
            return(NextStep);
        }