SPS und BRAKE

  • Hallo Allerseits!


    Ich hab wohl ein immenses Brett vorm Kopf, hoffe jemand sieht meinen Fehler.
    In der SPS mache ich einige Berechnungen, wenn Limits überschritten werden setze ich $FLAG[15] auf TRUE. im Declarations-Teil der SPS habe ich
    INTERRUPT DECL 1 WHEN $FLAG[15]==TRUE DO emergencystop
    stehen.
    die Routine emergencystop enthält genau 2 Befehle:
    BRAKE F
    HALT
    Mein Problem ist, das ich bei überschreiten meiner Schwelle (also flag[15]==TRUE) immer ein "Anweisung unzulässig" angezeigt bekomme und die SPS aufhört zu arbeiten.
    Laut DOKU darf BRAKE F nur in ner INTERRUPT-routine stehen, was bei mir ja der Fall ist. Wo liegt das Problem?????
    Danke schon mal.


    Kai

    If you and DEAD people can read Hex, how many people can read Hex?

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,
    ich weiss zwar nicht ob es funktioniert aber ich wuerde, es mal versuchen die Interrupt-routine als Globales SRC-file zu speichern und als EXT zu declarieren, bzw. versteh ich nicht wieso Du den Interrupt ueberhaupt in einem SUB-file declarierst, soll der Interrupt auch aktiv sein wenn im Interrpreter 1 kein Programm angewaehlt ist ??
    mfg elias

    IF ROBOTER_STEHT AND SPS_VORHANDEN THEN<br />&nbsp; WHILE NOT ROBOTER_LAEUFT<br />&nbsp; &nbsp; &nbsp; $LOOP_MSG[]=&quot;SPS IST SCHULD!&quot;<br />&nbsp; ENDWHILE<br />&nbsp; $LOOP_MSG[]=&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<br />ENDIF<br /><br />Geld ohne Arbeit! Keine Arbeit ohne Geld!

  • Ja, die SPS soll halt nen paar Kräfte überwachen, durchaus auch, wenn von Hand verfahren wird. Also so ne Art software NOT-AUS.

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallole,


    - Brake unterbricht nur programmierte Bewegungen (keine Handbewegungen).
    - Bewegungen dürfen im SPS.SUB nicht programmiert werden.
    -> Also ist Brake auch im SPS.SUB nicht erlaubt (erscheint mir jedenfalls logisch).
    und zwar unabhängig davon, ob in einem externen Programm oder direkt im
    SPS.SUB.


    Auf diese Art kann man das nicht lösen. Evtl. gibt es eine Variable, die den
    Hand-Override setzt, diesen dann auf 0 setzen. Kenne die Variable aber
    gerade nicht auswendig, bzw. weiss nicht, ob es die überhaupt gibt.


    Tschau, Hermann

  • Das wieder frei fahren ginge ja, da so ein Interrupt nur an der Signalflanke gesetzt wird. Also sollte man die Geschwindigkeit problemlos wieder hoch setzen können.
    Dann bleibt noch das Problem mit dem Abbrechen von programmierten Bewegungen...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Oh, so ist das mit dem Wald und den Bäumen, :wallbash: war völlig fixiert auf BRAKE F, aber Du hast recht, $OV_PRO=0 sollte doch auch reichen, danke! :danke:

    If you and DEAD people can read Hex, how many people can read Hex?

  • Dummerweise bekomme ich die Meldung $ov_jog Variable schreibgeschützt.
    Aber $ov_pro geht, muss nur noch testen, wie schnell der abbremst...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallole nochmal,
    da kommt mir gerade wieder mal eine komische Idee:


    Man könnte einen dig. Eingang direkt mit einem dig. Ausgang verbinden.
    Den Eingang in der Automatik-Extern Schnittstelle auf Move_enable
    legen (der wirkt in allen Betriebsarten).
    Dann im SPS.SUB den Ausgang bei Fehlerfall deaktivieren .
    Freifahren durch Setzen des Ausgangs per Hand.


    Und tschüss, Hermann

  • Über etwas dieser Art hatte ich auch schon nach gedacht, allerdings soll das Gerät irgend wann mal abgenommen werden, ich bin mir da unsicher in wie fern das von nem Sicherheitstechniker akzeptiert würde.

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallole,


    also unsicherer als die Sache mit Interrupt und Brake (wenn es denn
    funktionieren würde), oder $ov_jog=0 ist das mit dem enable_eingang
    auch nicht.


    Wenn das eine akzeptiert wird, dann sollte das andere genauso akzeptiert
    werden.


    Tschau,
    Hermann

  • Hallo


    Ein Halt macht hier schon Sinn, Brake oder Brake F hält nur die aktuelle Bewegung an der Interpreter läuft aber weiter. Wenn mann dann ins aufrufende Programm zurückspringt, wird die Bewegung fortgesetzt.
    Man kann aber auch auf $Conf_mess warten.


    Gruss Stefan

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