21. Mai 2019, 21:21:07
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Interrupt programmieren


normal_post Autor Thema: [gelöst] Interrupt programmieren  (Gelesen 436 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

17. Oktober 2018, 11:41:15
Gelesen 436 mal
Offline

mannaz


Hallo,
ich bin gerade dabei einen Prüfablauf mittels eines Roboters zu realisieren.
Der Roboter soll bei der LIN Bewegung durch einen Interrupt stoppen und durch ein Freigabesignal wieder in seine HOME Position fahren und das Programm von vorne abarbeiten. Leider funktioniert mein Programm nicht so wie ich es mir vorstelle. Nachdem ich hier schon jedes Thema über den Interrupt gelesen und auch die Doku von Kuka gelesen habe was über den Interrupt drinsteht, habe ich mich entschlossen mal direkt hier nachzufragen.


DEF  check_1 ( )

INTERRUPT DECL 1 WHEN $IN[36] == TRUE DO ERROR( )
inter()
END

________________________________________________________________________

DEF inter()

PTP XHOME

LOOP
   WAIT FOR $IN[33] == TRUE
   PTP Xvorpos

   WAIT FOR $IN[34] == TRUE
   PTP XPOS_2

   WAIT FOR NOT $IN[36]
   INTERRUPT ON 1
   WAIT FOR $IN[35] == TRUE
   LIN XPRUEFEN

   WAIT FOR $IN[37] == TRUE
   PTP XHOME
   INTERRUPT OFF 1

ENDLOOP
END
________________________________________________________________________

DEF ERROR()

INTERRUPT OFF 1
BRAKE
WAIT FOR $IN[37] == TRUE
RESUME
END


Durch den RESUME Befehl steht nach dem ERROR Programm der Programmzeiger an dem END im check_1 und gibt eine Fehlermeldung aus "Fortsetzstart nicht möglich" (Ist klar, da er die Programme abbricht). Ich brauche aber den RESUME Befehl, sonst fängt er nach dem ERROR Porgramm an, die LIN Bewegung bis zum Ende zu fahren.

Wenn ich anstatt dem RESUME Befehl hier mein inter() eintrage, macht er das was ich will, er springt wieder in das Programm inter oben rein und arbeitet es wieder ab, nur wird beim zweiten Durchlauf, der Interrupt nicht erkannt.

Über Hilfe würde ich mich freuen.

Grüße
« Letzte Änderung: 17. Oktober 2018, 13:49:41 von mannaz »
  • gefällt mir    Danke

Heute um 21:21:07
Antwort #1

Werbung

Gast

17. Oktober 2018, 12:03:01
Antwort #1
Offline

IrrerPolterer

Administrator
Im Programm check_1 den Aufruf von inter in eine Schleife packen.
LOOP
inter()
;hier ggf. noch Abbruchbedinguung der Schleife einfuegen
ENDLOOP

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.

17. Oktober 2018, 13:49:25
Antwort #2
Offline

mannaz


Danke für die Schnelle Antwort,
habe es gerade getestet und es funktioniert so wie ich es brauch.

Vielen Dank
  • gefällt mir    Danke


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