23. Juli 2019, 09:00:02
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Interrupts, Flankenwechsel, Multitasking


normal_post Autor Thema:  Interrupts, Flankenwechsel, Multitasking  (Gelesen 3618 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

15. Februar 2006, 17:41:17
Gelesen 3618 mal

Markus Schroepfer

Gast
Ich habe das Problem, dass die Interrupts nur auf den Flankenwechsel des beobachteten Signals reagieren und es somit nicht mitbekommen wenn das Programm gestoppt wurde.
Wenn zum Beispiel das Signal "Fahrfreigabe" über einen Interrupt überwacht wird und ich stoppe das Programm, bekommet der Roboter den Flankenwechsel nicht mit und fährt weiter wenn ich das Programm wieder starte. Die Beschreibung der Multitaskingfunktion in meiner Dokumentation hilft mir leider nicht richtig weiter. Was muss ich tun damit der Roboter den Flankenwechsel auch bei gestopptem Programm mitbekommt.
  • gefällt mir    Danke

Heute um 09:00:02
Antwort #1

Werbung

Gast

15. Februar 2006, 19:25:03
Antwort #1
Offline

burlibua


Bei diversen Problemen ist es immer wicht den Robotertyp und die Version M97A oder M98....
mitzuschreiben.

Normalerweise wird "Fahrfreigebe" über die Systemsignale realisiert "Programmstop" wenn du jedoch die Signale wirklich bei stehendem Programm mitbekommen möchtest wirst du Multitasking benötigen..... Dies kann unter Umständen nicht am Rob installiert sein

Überprüfung --- Andere Fenster -- Service -- Task wechseln

Wenn der Menüpunkt "Task wechseln" nicht vorhanden ist dann mußt du einen zusätzlichen Key ordern.

mfG Burlibua
  • gefällt mir    Danke

16. Februar 2006, 06:56:10
Antwort #2
Offline

Sven Weyer

Global Moderator
Hallo Leute,
da Multitasking leider eine zusätzliche Option ist haben wir dies auch ab und zu nicht zur Verfügung.
Wir benutzen daher die Ereignisroutinen um einen geänderten Zustand zu bemerken. Ereignis wäre Programm Start. Somit hätten wir vor der eigentlichen Programmausführung die Möglichkeit in Abhängigkeit des Anlagenzustandes die Fehlerbehandlung anzusprechen bzw. "StopMove" auszuführen.

Somit kommt man eigentlich auch ohne Multitask aus was die Freigabesignale betrifft.  :biggrins:

robotic74
  • gefällt mir    Danke
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

16. Februar 2006, 10:53:56
Antwort #3
Offline

rmac


(Fast) Mahlzeit,

also wenn ich das richtig verstehe, ist dafür eine Kombination aus System-Signal und System-Ereignis notwendig, da ja die Freigabe über einen dig. Eingang/Flanke komplett asynchron zum (ggfls. stehenden) Roboter-Programm erfolgen soll. Eine Ereignis-Routine alleine kann ja nicht auf die Flanke reagieren (oder ?)

1. System-Signal definieren
Unter "Systemparameter | Typen | System Eingänge" dem gewünschten Flankensignal die Aktion "Interrupt" zuordnen und als Argument den Namen einer Routine angeben, die einen internen Merker setzt. Ich habs zwar nicht probiert, aber sollte eigentlich so funzen, auch asynchron ohne Multitasking...

2. System-Ereignis definieren
Für das System-Ereignis "RESTART" (und ggfls "START") eine Routine einsetzen, die den internen Merker (s.o.) abfragt und das (Wieder-)Anfahren abbricht falls der Merker nicht gesetzt wurde, d.h. die Freigabe nicht zwischenzeitlich/asynchron erteilt wurde.

WICHTIG: den Merker nach erfolgreicher Anfahrt sofort wieder rücksetzen oder den Merker spätestens in einer Ereignis-Routine für "STOP/QSTOP" rücksetzen (hängt von den Erfordernissen ab), damit das nächste Anfahren erst wieder nach erneuter Freigabe möglich ist.

Ist erstmal nur "graue Theorie", hab ich noch nie so probiert,   :waffen100:
könnte aber funzen (?)

Bis dahin
Rainer
  • gefällt mir    Danke

16. Februar 2006, 11:02:10
Antwort #4
Offline

Sven Weyer

Global Moderator
Hallöchen,
bei uns funktioniert dies mit Ereignisroutinen recht gut.
Beim betreten eines Arbeitsbereiches setzen wir ein Merker auf "TRUE". Sollte dann bei einem erneuten Start des Programmes dieser Merker auf "TRUE" sein und das Ausserhalbsignal des Roboters auf "low" und das Freigabesignal für den Arbeitsbereich auf "low" dann wird "StopMove" ausgeführt und eine Fehlermeldung ausgegeben.

So machen wir das eigentlich und es geht recht gut als Absicherung.

robotic74
  • gefällt mir    Danke
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Heute um 09:00:02
Antwort #5

Werbung

Gast

16. Februar 2006, 11:15:04
Antwort #5
Offline

rmac


Hi robotic74,

das ist mit Sicherheit die bessere/einfachere Variante wenn die Freigabe statisch auf "high/low" ist während der Rob anläuft, aber wenn ich Markus richtig verstehe, will er detektieren ob eine Freigabe-Flanke/Pulse zwischenzeitlich gekommen ist (während der Roboter stand), d.h. das Signal war mal irgendwann "high", ist möglicherweise aber schon wieder "low" wenn der Rob startet. (So hab ich das zumindest verstanden)
Halte ich zwar für ein bedenkliches Verfahren, aber wer's braucht....  :pfeif:

Gruß
Rainer
  • gefällt mir    Danke

16. Februar 2006, 11:20:42
Antwort #6
Offline

Sven Weyer

Global Moderator
Hi rmac,
muss Dir da zustimmen.  :kopfkratz: Habe an soetwas verwegenes garnich gedacht. Bin davon einfach mal ausgegangen das er dies benötigt um nicht einen Crash zu fahren. So ging es uns jedenfalls.  :uglyhammer_2:

robotic74
  • gefällt mir    Danke
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

16. Februar 2006, 12:36:19
Antwort #7

Markus Schroepfer

Gast
Hallo zusammen,

ich danke euch allen recht herzlich, für die guten und prompten Ratschläge. Die Sache mit den Ereignisroutinen sollte eigentlich funktonieren.
Jetzt ist es aber so das der Roboter Multitaskingfähig ist, und ich würde das auch gerne mal nutzten. Weiss irdend wer wie das funktioniert?

Vielen Dank schon mal!

Markus
  • gefällt mir    Danke

16. Februar 2006, 12:41:51
Antwort #8
Offline

Sven Weyer

Global Moderator
Hallo Markus,
die Hintergrundmodule werden mit der gleichen Sprache programmiert nur solltest Du es vermeiden Warteanweisungen zu verwenden. Probiere dies änlich zu programmieren wie bei einer SPS.
Ansonsten sollte alles in der Doku stehen wie Du dies einrichtest.

robotic74
  • gefällt mir    Danke
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

Heute um 09:00:02
Antwort #9

Werbung

Gast

17. Februar 2006, 13:37:38
Antwort #9
Offline

burlibua


Multitasking bauen:
Mach mal erst ein Backup

Systemparameter --- Task --- Neu
Namen eingeben und auf Kontinuierlich und Systemsignale --- keine Reaktion
stellen

Improgramm keine Schleifen programmieren und als letzte Anweisung Waittime 0.1s
Denn wenn der Task zu wenig zu tun hat gibts Probleme.

Service --- Neustart --0258 drucken dann kommt neben dem OK ein P-Start Symbol

P-Start drücken  und hochlaufen lassen

Wenn Rob wieder ok dann  Service Task wechseln --- auswählen -- Programmfenster
Neu und Programm

Im Task darf kein Referenzfehler sein sonst schmeißt er das Prog immer wieder raus.

Wenn Progamm im Kasten dann Prgramm mit gehaltener Zusimmtaste start

Bei Änderungen nur auf Programmstop und editieren.


das wärs

Ich hoffe du bekommst das mit der Dok hin

Tschü  Burlibua
  • gefällt mir    Danke

20. Februar 2006, 08:37:18
Antwort #10
Offline

Robiman

Global Moderator
Kleine Anmerkung zum P-Start

Vorher Backup nicht vergessen.
Nach dem P Start sind erst mal alle Programm module weg.
  • gefällt mir    Danke

21. Februar 2006, 10:43:06
Antwort #11
Offline

burlibua


Backup machen steht darum ganz oben --- ist ja sowieso nicht schlecht mal wieder up to date zu sein

mfG Burlibua
  • 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