globaler Interrupt

  • Hallo Forengemeinde,


    ich habe folgende Frage zum Thema Interrupt:


    Gibt es eine Möglichkeit einen Interrupt "global" anzulegen?


    Folgendes Szenario:


    Der Interrupt wird im MainModule initialisiert



    Der Aufruf IWatch erfolgt jedoch in einem anderen MODUL!


    Dann erhalte ich folgende Fehlermeldung:


    Zitat

    Meldung 40243


    Unbekannte Interrupt-Nummer


    Prüfen, ob die angegebene Interrupt-Variable durch CONNECT initialisiert und durch ISignalDI oder eine andere Interrupt Definition festgelegt wurde



    Initialisiere ich den Interrupt im Modul, in dem er unter anderem verwendet werden soll, führt er IWatch problemlos aus.


    Gibt es hier andere Möglichkeiten, da ich diesen in verschiedenen Modulen verwende möchte, ohne ihn immer initialisieren zu müssen? :huh::denk:

  • ANZEIGE
  • Wenn du im Handbetrieb eine Routine aufrufst in der "IWatch" oder "ISleep" steht bekommst du diese Meldung wenn die Routine in der der Interrupt deklariert ist nicht durchlaufen wurde.

    Gruß Roland


    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.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Du könntest den Interupt für jeden Start neu initialisieren.
    Hierzu eine Routine erstellen, in der dein Interupt initialisiert wird:


    Code
    PROC Init_START()
        !***************************************!
        !***  Befehle fuer Start             ***!
        !***************************************!
        !***  Interruptverbindungen Medienversorgung
        IDelete MainAir;
        CONNECT MainAir WITH Int_Pause;
        ISignalDI Luft_iO,0,MainAir;
        IWatch MainAir;


    Danach in der SYS.cfg das passende event mit der Routine verbinden, z.B.


    Code
    CAB_EXEC_HOOKS:
    
    
          -Routine "Init_START" -Shelf "START" -Task "T_ROB1"


    Damit stellst du sicher, dass bei jedem anstarten der Interupt VOR dem Programmstart neu aufgebaut wird.
    Im Handbuch Technisches Referenzhandbuch - Systemparameter 3HAC17076-3_revR_de stehen noch andere Init-möglichkeiten.


    Ich hoffe dass ist das, was du suchst?


    Den Interupt aufwecken bzw. schlafen legen kannst du dann im Programmablauf wie üblich.

    Einmal editiert, zuletzt von ABB-Nutzer ()

  • Hallo,


    vielen Dank für eure Antworten. :merci:


    Ich hatte heute wieder Zeit damit "herumzuspielen".


    Der Interrupt wird nun ausgeführt aber er funktioniert noch nicht so, wie ich mir das vorstelle :wallbash:


    Der Interrupt sieht folgendermaßen aus:



    In der aufrufenden Routine sieht das folgendermaßen aus:



    Wird der Interrupt nun ausgeführt, bleibt der PZ auf der MoveL Bewegung stehen und das Programm wird nicht mehr ausgeführt, obwohl es läuft.


    Ziel soll es sein, die MoveL Bewegung abzubrechen und mit der nachfolgenden Instruktion fortzufahren.


    Ich habe es auch schon mit RAISE in der Fehlerbehandlung probiert und an die aufrufende Routine weitergegeben, aber dann bekam ich einen Abarbeitungsfehler.



    Kann mir bitte jemand helfen? :hilfe:

  • Hi,


    aus einem Interrupt kannst Du über die Fehlerbehandlung nur mit Hilfe eines Long-Jumps zurück in die Fehlerbehandlung einer normalen Routine springen.


    In Deinem Fall hast Du mit Clearpath die Bahn gelösch, so dass der Roboter anschließend keine Bewegung mehr ausführt.


    Schau Dir mal den folgende Beitrag an, in diesem wurde Dein Problem bereits behandelt.


    http://www.roboterforum.de/rob…n/12270/msg59350#msg59350


    Mfg
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Guten Morgen,


    eine Frage hätte ich noch:


    Reicht es den Interrupt einmalig mit einer Event Routine bei POWER_ON zu initialisieren? Läuft dieser dann stabil, auch bei PZ->Main, PZ->Routine, etc.?


    Oder sollte ich die Event Routine noch mit START verknüpfen? Wie sind hier eure Erfahrungen?



    IDelete wird von mir weder im Ablauf, noch im ERROR-Handling verwendet, sondern einmalig in der Event Routine.

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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