20. März 2019, 19:18:37
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Position nach Einrichtbetrieb


normal_post Autor Thema: [offen] Position nach Einrichtbetrieb  (Gelesen 1079 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

19. Februar 2018, 07:39:42
Gelesen 1079 mal
Offline

RobHF


Hallo,
gibt es eine einfache Möglichkeit erstmal abzufragen ob der Roboter im Einrichtbetrieb bewegt wurde oder am besten die aktuelle Position vorher zu speichern um dise bei Automatik ein wieder vergleichen zu können damit danach wieder sicher in eine Ausgangssposition gefahren werden kann ?
Ich habe leider kein Multitasking oder ähnliches.

Vielen Dank im Voraus!
Gruß Tim
  • gefällt mir    Danke

Heute um 19:18:37
Antwort #1

Werbung

Gast

19. Februar 2018, 07:56:40
Antwort #1
Offline

Konstantin


Hallo RobHF
Ohne Programmieraufwand: Mitarbeiterschulung!
Natürlich kann der Schlüsselschalter abgefragt werden, ohne Multitasking per SPS.
Dadurch Ablaufstopp, Programmzeiger auf Main und der Roboter muß aus einem vorgegebenen Startfenster (Achswerte auslesen) starten.
Dann gibt es noch die Homerun Geschichte, aber einfach ist das alles nicht.

Gruß,
Konstantin
  • gefällt mir    Danke

19. Februar 2018, 08:20:51
Antwort #2
Offline

Programmiersklave


@RobHF: Guck mal im Handbuch (RobotStudio Hilfe-System) bei "Systemparameter | System Output | Path Return Region Error". Das funktioniert allerdings nur sinnvoll, wenn man auch guckt (evtl. in einer Systemroutine auf Start-Ereignis), ob der Programmzeiger bewegt wurde (Befehle "IsStopStateEvent" oder "PPMovedInManMode"). 

Ansonsten habe ich auch immer gerne eine Systemroutine auf die Stop-Ereignisse angesetzt und dort die aktuellen Positionen sowie Tool und WObj gespeichert. Und bei Start dann kurz verglichen.

Grüße,
Michael

08. Januar 2019, 14:37:18
Antwort #3
Offline

Joern_E

ROBTEC Mitarbeiter
Moin,

ich hätte da mal Bedarf an einer zündenden Idee. :mrgreen:

Ich habe das gleiche Problem wie Tim. Ich würde mir gerne die aktuelle Position in AUTO merken und nach Rückkehr aus dem Einrichtbetrieb kontrollieren, ob der Roboter bewegt wurde. Dazu hab ich, wie Michael vorschlug, folgendes gemacht:

  PROC StopRoutine()
    ! Store current position for comparision after (re)start.
    IF (OPMode() = OP_AUTO) THEN
      wLastWobjInAuto := CWObj();
      tLastToolInAuto := CTool();
      rLastPosInAuto  := CRobT();
      TPWrite "Position has been stored!";
    ENDIF
  ENDPROC

  PROC StartRoutine()
    IF (OPMode() = OP_AUTO) AND (RunMode() = RUN_CONT_CYCLE) THEN
      IF wLastWobjInAuto <> CWObj() THEN
        TPWrite "WObj has been changed";
      ENDIF
     
      IF tLastToolInAuto <> CTool() THEN
        TPWrite "Tool has been changed";
      ENDIF
     
      IF rLastPosInAuto <> CRobT(\Tool:=tLastToolInAuto \WObj:=wLastWobjInAuto) THEN
        TPWrite "Robot has been moved!";
      ENDIF
    ENDIF
  ENDPROC


Das funktioniert in fast allen Fällen auch ganz gut. Wenn ich jedoch in Automatik bei laufendem Programm den Schlüsselschalter drehe ohne vorher die Stop-Taste gedrückt zu haben, werden Last...InAuto nicht gespeichert, da der Roboter ja beim Erreichen der StopRoutine nicht mehr in OP_AUTO sondern bereits in OP_MAN_PROG ist. Lasse ich die Bedingung jedoch weg, also ...

  PROC StopRoutine()
    ! Store current position for comparision after (re)start.
    wLastWobjInAuto := CWObj();
    tLastToolInAuto := CTool();
    rLastPosInAuto  := CRobT();
    TPWrite "Position has been stored!";
  ENDPROC

... dann werden Last...InAuto z.B. beim Drücken der Stop-Taste im Einrichtbetrieb überschrieben.

Und an dieser Stelle kommt die zündende Idee ins Spiel. :mrgreen:

Gruß
Jörn
  • gefällt mir    Danke
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

08. Januar 2019, 18:12:39
Antwort #4
Offline

Robiman

Global Moderator
vlt. ja noch ein bool  beim ersten durchlauf in StopRoutine setzen
und dann wenn es TRUE überspringen....oder so in der Art
  • gefällt mir    Danke

Heute um 19:18:37
Antwort #5

Werbung

Gast

08. Januar 2019, 18:42:09
Antwort #5
Offline

Joern_E

ROBTEC Mitarbeiter
Moin,

Du meinst sowas in der Art?!

PROC StartRoutine()
    IF (OPMode() = OP_AUTO) AND (RunMode() = RUN_CONT_CYCLE) THEN
      bInAutoMode := TRUE;
      ...
    ENDIF
ENDPROC

PROC StopRoutine()
    ! Store current position for comparision after (re)start.
    IF bInAutoMode THEN
      bInAutoMode     := FALSE;
      wLastWobjInAuto := CWObj();
      tLastToolInAuto := CTool();
      rLastPosInAuto  := CRobT();
    ENDIF
ENDPROC

Das kam mir auch schon in den Sinn. Ich hatte aber die Hoffnung, daß das System etwas eleganteres hergibt. Arbeiten mit Merkern ist nicht so meins. Das ist ähnlich unbefriedigend wie mit GOTO hin- und herspringen zu müssen oder kein REPEAT ... UNTIL zu haben.  :mrgreen:

Gruß
Jörn
  • gefällt mir    Danke
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

31. Januar 2019, 12:55:02
Antwort #6
Offline

IsSchoGuat


Hi,

ich weis schon zu spät ...

Zitat
Funktionen
 
 
PPMovedInManMode - Überprüfen, ob der Programmzeiger im Einrichtbetrieb verschoben wurde
RobotWare - OS
 
Verwendung PPMovedInManMode gibt TRUE zurück, wenn der Benutzer den Programmzeiger verschoben hat, während sich die Steuerung im Einrichtbetrieb befand, d. h. die Bedienertaste war in der Stellung Einrichtbetrieb bei reduzierter Geschwindigkeit oder Einrichtbetrieb bei voller Geschwindigkeit. Der Status des verschobenen Programmzeigers wird mit der Instruktion ResetPPMoved oder durch Einstellen der Taste von Automatikbetrieb auf Einrichtbetrieb zurückgesetzt.
 
Grundlegende Beispiele Das folgende Beispiel veranschaulicht die Funktion PPMovedInManMode.

Beispiel 1:
IF PPMovedInManMode() THEN

WarnUserOfPPMovement;

DoJob;

ELSE

DoJob;

ENDIF
 
Rückgabewert Datentyp: bool

TRUE, wenn der Programmzeiger vom Benutzer im Einrichtbetrieb verschoben wurde
 
Programmabarbeitung Überprüfen, ob der Programmzeiger für die aktuelle Programmtask im Einrichtbetrieb verschoben wurde.
 
Syntax PPMovedInManMode '(' ')'

Eine Funktion mit einem Rückgabewert des Typs bool.
 
Weitere Informationen Information über
 Siehe
 
Überprüfen, ob Programmzeiger verschoben wurde
 IsStopStateEvent – Prüfen, ob Programmzeiger bewegt wurde
 
Zurücksetzen des Status für den im Einrichtbetrieb verschobenen Programmzeiger
 ResetPPMoved - Zurücksetzen des Status für den im Einrichtbetrieb verschobenen Programmzeiger
 
 
  • gefällt mir    Danke

31. Januar 2019, 14:20:41
Antwort #7
Online

Roland Keller

Administrator
Damit erkennst du zwar ob der Programmzeiger verschoben wurde, aber nicht ob der Roboter bewegt wurde.
  • gefällt mir    Danke
-------------
Gruß
Roland

Wie poste ich falsch?
Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.

Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH