Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
18. Mai 2012, 11:33:32
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Interrupt wird nur einmal ausgeführt!?!? 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Interrupt wird nur einmal ausgeführt!?!?  (Gelesen 948 mal)
trappi10
Neuling
*
Offline Offline

Beiträge: 3


« am: 29. Mai 2008, 10:36:18 »

Hallo zusammen,
ich will einen Interrupt einbinden welcher den Roboter umgehend zurück in die Startposition bewegt und in die Ausgangslage zurückbringt. (kein speichern nichts, sondern eigentlich ein RESET).
Der Interrupt erfolgt auf den digitalen Eingang "diSPSError".

Das ganze funktioniert auch, jedoch nur beim ersten mal.
Setze ich den Interrupt ein zweites mal, springt er nicht mehr an. Ich muss dann das Programm neu starten, dass es wieder funktioniert...

Sieht zufällig jemand auf die Schnelle was ich vergessen oder falsch gemacht habe??
Vielen Dank für Eure Hilfe. Gruss, trappi




        VAR intnum irStoerung;

   PROC main()

         CONNECT irStoerung WITH rError;
         ISignalDI diSPSError,1,irStoerung;
         WHILE TRUE DO                 
      rInit;   
      MoveJ pGrundpos, v300, z20, tool0;
                                WaitDI diRobProgStart, 1;
      MoveJ pVorGrund1, v200, z5, tool0;
                                rRobBatch;
     ENDWHILE
        RETURN;
   ENDPROC
   TRAP rError
      !StorePath;
      MoveJ pVorGrund1, v300, z20, tool0;
      MoveJ pGrundpos, v300, z20, tool0;
      rBrennerStop;
      IDelete irStoerung;
      main;
   ENDTRAP
Gespeichert
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #1 am: 29. Mai 2008, 11:06:58 »

Hi,

also dazu gäbe es mehrere Dinge zu sagen:

1. während der Ausführung der Trap-Routine ist der entsprechende Interrupt gesperrt (disabled)
(Zitat: "Note that interrupts are always disabled (see 8.2) during the evaluation of a trap routine.")
Da innerhalb des Traps Main aufgerufen wird, welches wiederum eine Endlosschleife enthält,
wird der Trap (bzw. Main innerhalb des Traps) nie verlassen und weil der interrupt die ganze
Zeit gesperrt bleibt, läuft das alles nur ein mal...

Damit kämen wir direkt zu Punkt 2:
Main innerhalb des Traps aufzurufen ist keine gute Idee, schon garnicht wenn Main eine Endlosschleife enthält  Laughing
Ich würde das immer so programmieren, dass Main immer nur vom Betriebssystem aufgerufen wird, nie
von mir selbst. So ist das, glaube ich, auch gedacht....
Du mußt das also so ändern, dass der Interrupt die Endlosschleife in Main unterbricht bzw. zu einer äußeren Schleife
zurückkehrt und neu beginnt.
Main muß aus dem Trap auf jeden Fall raus....

gruß
rmac

Gespeichert
trappi10
Neuling
*
Offline Offline

Beiträge: 3


« Antworten #2 am: 29. Mai 2008, 11:51:02 »

Hallo rmac,
vielen Dank für Deine rasche Antwort.
das macht absolut Sinn.
Muss mir jetzt nur überlegen wie ich es am besten löse, dass nach dem Interrupt das Ganze wieder neu gestartet werden kann....
Vielen Dank nochmals, Gruss trappi

Jetzt habe ich grad noch ein ExitCycle anstelle des main; im Trap eingesetzt.
Hiermit komme ich aus der Schleife, muss dann halt das Roboterprogramm von Hand neu starten.
Gespeichert
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #3 am: 29. Mai 2008, 12:03:01 »

Hiermit komme ich aus der Schleife, muss dann halt das Roboterprogramm von Hand neu starten.
Wenn das Programm im kontinuierlichen Modus ausgeführt wird, sollte nach ExitCycle der nächste Zyklus
automatisch ausgeführt werden, also ohne manuelle Start....

Gruß
rmac
Gespeichert
trappi10
Neuling
*
Offline Offline

Beiträge: 3


« Antworten #4 am: 29. Mai 2008, 12:47:41 »

yep, klaro.
so passts wie ichs etwa haben will, danke!!!
Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Interrupt wird nur einmal ausgeführt!?!? « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS