Position speichern wenn der Bedienerschutz unterbrochen wird

  • Hallo Leute,


    ich habe das Problem, bzw. das Vorhaben, die aktuelle Position des Roboters zu speichern, und das genau in dem Moment wenn der Bedienerschutz unterbrochen wird. (7,8,25,26 am X11).
    Welche Möglichkeiten habe ich dazu?
    Ich habe schon etwas mit Interrupts rumprobiert, jedoch wird mit dem Bedienerschutz sofort auch das Programm angehalten in dem der Interrupt definiert ist... alles net so einfach...


    Ich bin immer für jeden Tipp dankbar..


    Grüße Skyflyer

  • Schritt für Schritt zum Roboterprofi!
  • Du könntest die negative Flanke der Systemvariablen für Bedienerschutz im Submit-Interpreter auswerten.
    So beispielweise:


    IF $Flag[1] AND (NOT $User_Saf) THEN
    PosMerker = $PosAct
    $FLAG[1] = FALSE
    ENDIF


    IF (NOT $Flag[1]) AND $User_Saf THEN
    $FLAG[1] = TRUE
    ENDIF


    Gruß Stefan

  • Hey,


    danke schon mal für die schneller Antwort, jedoch glaube ich das im Submit $pos_act nicht geht, ich hatte da schon mal eine Fehlermeldung "1419 Absender sps.sub XYZABC Tool nicht programmiert". Liegt wahrscheinlich daran das im submit nicht bekannt ist welches Tool und auch base aktiv ist.

  • $PRO_ACT geht auch im Submit, wenn vorher ein Programm angewählt und die INI-Zeile durchlaufen wurde. Deshalb erweitere ich mal den Vorschlag von zsteve.


    $Flag[2] wird nach der INI-Zeile und SAK auf True gesetzt, um die Überwachung zu starten.


    Müsste eigentlich so gehen:



    Aber $AXIS_ACT ist einfacher, wenn's reicht.

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Hey,


    ich werde die Tipps ausprobieren und berichten was funktioniert hat oder auch nicht.


    Falls ich $axis_act nehme (oder nehmen muss) muss ich irgendwie noch eine Transformation machen, weil ich die Position kartesisch brauche... gibt es das schon was fertiges? oder wird das derbe Mathematik?


    Grüße


    Skyflyer


  • Fehlermeldung "1419 Absender sps.sub XYZABC Tool nicht programmiert". Liegt wahrscheinlich daran das im submit nicht bekannt ist welches Tool und auch base aktiv ist.


    Macht Sinn


    Für die Übersetzung von AXIS in kartesisch gäb's die Funktion Forward ()


    Gruß Stefan

  • Forward() ... das ist das unkomplizierte was es gibt.
    Du aktivierst ein Tool, eine Base, übergibst eine Koordinate in Axis oder E6AXIS und bekommst eine E6POS zurück...

  • ich würde das Ganze im Submit lösen. Es kommt noch ein wenig darauf an, was du genau mit der gespeicherten Position machen willst. Aber ich würde das in etwa so programmieren:


    savePos.dat

    Code
    DEFDAT savePos PUBLIC
      DECL GLOBAL E6POS POS_Brake = {X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0, S 0, T 0, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}
      DECL GLOBAL E6AXIS AXIS_Brake = {A1 0.0, A2 0.0, A3 0.0, A4 0.0, A5 0.0, A6 0.0, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}
    
      GLOBAL ENUM ValidPos_T NONE AXIS CARTESIAN
      DECL GLOBAL ValidPos_T PosType
      DECL BOOL bLastState
      DECL GLOBAL INT iTool, iBase
    ENDDAT


    savePos.sub


    lg drudge


  • Sofern ich mich errinnere, bremsen die Varstate-Funktion den Submit fürchtlerlich aus. irgendwo hatten wir diese Diskussion hier auch schon mal.
    Ausserdem weiß der Submit manchmal niocht wirklich was im Interpreter so läuft. Gerade Varstate arbeitet dort nicht immer zuverlässig.
    IMO wird im o.g. Code mit Kanonen auf Spatzen geschossen.

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Ja das ist so, Varstate bremst den Submit aus. Doch wird das Varstate hier nur einmal kurz durchgeführt, wenn der Bedienerschutz geöffnet oder geschlossen wird. Das ist nach meiner Erfahrung unproblematisch :roll:


  • :roll:


    Warum?


    Bleibt immer noch das Problem, dass VARSTATE im Submit nicht immer reibungslos funktioniert. Wobei sich das bei neueren Softwareständen evtl. verbessert hat.
    Schön ist natürlich, dass man bei dem Code anschließend alles zur Verfügung hat.
    Die richtige Methode bestimmt die Aufgabe und die geht nicht so ganz aus der Beschreibing des TS vor.


    Jetzt mal ganz blöd gefragt: Wenn ich das ganze im Programm per Interrupt abzufragen, welcher ausgelöst wird, wenn $USER_SAF false wird, kann die Routine nicht abgeschlossen werden, weil das Programm vorher beendet wurde. Würde der Interrupt nach erneutem Programmstart dann ausgelöst werden? :denk: Irgendsowas komisches hatte ich nämlich schon mal...

    Greetings, Irrer Polterer!

    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.


    Life is a beta version. Full of bugs and no Manual.


  • $Flag[2] wird nach der INI-Zeile und SAK auf True gesetzt, um die Überwachung zu starten.


    ich würde es auch so programmieren da es unkomplizierter ist als die anderen Beispiele


    MFG Thomas

    Solange mein Chef so tut als würde er mich richtig bezahlen solange tue ich so als würde ich Arbeiten

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Hi Leute


    ich habe es mit zteve's Tip probiert und es hat funktioniert.
    Ich möchte die Position nutzen um zu berechnen welche strecke der ROboter noch zurücklegt ab dem zeitpunkt wo der bedienerschutz unterbrochen wurde, bis es zum stillstand gekommen ist. Die zeit dazu nehme ich mit dem Oszi auf mit Trigger auf Fehler...

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden