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); }
private void MeasureTorque() { WTFileCollection.GetWTFile(0).GetResultDef().SetResultValue("ButtonOK", Randomize.Int(10) > 4); }
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); }