Reaktion bei gleichzeitigen auftretenden Interrupts

  • Hallo an alle,


    Ich habe folgendes Problem (KRC4, KSS 8.6.x):


    Ich muss bei einigen Bewegungen auf zwei Ereignisse reagieren können: Einmal auf "Bauteil gegriffen" und einmal auf "Kollision". Die Signale können auch gleichzeitig auftreten und werden in separaten Interrupts abgearbeitet.


    Wenn beide Fälle gleichzeitig auftauchen hat die Reaktion auf die Kollision Vorrang (niedrigere Prio Zahl). Die Bauteilaufnahme wird abgebrochen und ein Rückzug ausgelöst.

    Sobald ich jedoch wieder in dasselbe Programm springe und die beiden genannten Interrupts aktiviere, wird das Interrupt Programm "Bauteil gefunden" ausgeführt.


    Da ich in den beiden Interrupts den jeweils anderen mitabschalte (mit Interrupt OFF xx), gehe ich davon aus, dass der Merker mitgelöscht wird. Es steht auch so ähnlich in der Kuka Doku, wenn auch im Kapitel für Enable/Disable:


    "Wenn ein gesperrter Interrupt nicht mehr freigegeben wird, sondern deaktiviert

    wird (d. h., nach INTERRUPT DISABLE kommt INTERRUPT OFF),

    löscht dies den Merker für das Ereignis. Wenn der Interrupt danach wieder

    aktiviert wird, reagiert er erst wieder auf ein neues Ereignis."


    Habt ihr eine Idee woran das liegen kann?

    Die Interrupts mit diesen Prioritäten gibt es aufgrund der Komplexität der Anwendung jeweils über 70 Mal in dem Projekt, sie sind aber natürlich nicht gleichzeitig aktiv.


    Danke :)


  • Schritt für Schritt zum Roboterprofi!
  • Prinzipiell müsste das Verhalten der Interrupts so sein, wie Du es vermutest.

    Mal über Diagnose / Interrupts verfolgt den Status der Interrupts in so einer Situation ?

    Da müsste es ersichtlich sein, welche deklariert / Aktiviert / deaktiviert, etc. ist.

    Würde mal ein Testprog machen und die Situation simulieren.


    Dein "Code-Schnipsel" ist nett. Zeigt aber nicht alles.

    Vor allem Problematik Vorlauf, die oft den Spielverderber spielt, ist so nicht nachzuvollziehen.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Ja ich weiß, aber es ist gut dass du meine Einschätzung teilst :)

    Wir sind gerade am suchen neben der Produktion. Haben auch schon Situationen nachgestellt, das Problem tritt aber nicht immer auf. Wir tracen aktuell auf Roboter- sowie SPS Seite die Variablen die in Frage kommen. Ich melde mich mit einem Ergebnis.

  • Wenn beide Fälle gleichzeitig auftauchen hat die Reaktion auf die Kollision Vorrang (niedrigere Prio Zahl). Die Bauteilaufnahme wird abgebrochen und ein Rückzug ausgelöst.

    Die Sichtweise ist nach meinem Verständnis nicht korrekt. Es gibt kein "gleichzeitig".

    Wenn 30 zuerst auslöst, mag 31 nachträglich löschbar sein, und alles ist gut. Wenn 31 zuerst auslöst, bekommst Du eine Verschachtelung im Aufrufstapel, falls 30 es schafft, vor dem Abschalten auch noch auszulösen.

    Wenn Du jetzt sagst:

    Sobald ich jedoch wieder in dasselbe Programm springe

    legt das nahe, dass der Aufrufstapel nicht gelöscht wurde, sondern nur der Programmzeiger versetzt. Die unterbrochene Interruptroutine würde dann wieder aufgenommen, oder?

  • Mal noch was gefunden dazu.



    .... Auswirkung auf "alle" laufenden Interrupt-Programme ....

    Wenn der Aufrufstapel nicht gelöscht würde, hätten wir ein "Ebenen"-Problem.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

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