Ein INI zwei Funktionen, Suchfahrt und zu tiefes Fahren abfangen

  • Hallo zusammen,


    ich habe hier ein KRC2 Kollegen mit der Softwareversion 5.6.12.


    Ich habe einen Ini am Greifer den ich als Eingang bekomme. Ich möchte gern zwei Funktionen damit abdecken:

    zum einen möchte ich eine Suchfahrt in -Z Richtung erstellen, was soweit kein Problem darstellt. Desweiteren muss der Ini mir auch sagen, dass der Greifer "zu tief fährt".

    Soll heißen wenn der Ini auislöst muss die Suchfahrt beendet werden und wenn der Ini auslöst minus Wert X soll ein anderer Interrupt auslösen.


    Meine Idee war folgende; ich habe eine Funktion die TRUE/FALSE ausgibt um einen Interrupt "ZuTief" auszulösen (dieser Funktioniert auch wie er soll).

    In dieser Funktion schreibe ich nach dem auslösen des Ini's die $POS_ACT.Z in eine REAL, um dann TRUE auszugeben wenn REAL - Wert <= $POS_ACT.Z.

    Das ganze scheitert schon vor dem Testen. Ich frage die Funktion dauerhaft im sps.sub ab und, da hier mit Positionen gearbeitet wird, fehlt die angabe des Tools. Garnichtmal so doof wie ich mich fühlte schreibe, ich "einfach" $TOOL=TOOL_DATA[1] mit in die Funktion (ich habe nur ein Tool somit passt das immer). Hierbei meckert die KRL aber an, dass $TOOL schreibgeschützt ist.


    Hat da jmd Ideen? Danke im voraus!

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Atok09,


    wieso möchtest du dies denn im SPS.sub auswerten?

    Reicht es nicht, wenn du die Suchfahrt beendet hast, dann den Wert auswerten?


    Ansonsten kannst abfragen, ob das Tool initialisiert ist:


    IF (VARSTATE("$TOOL")==#INITIALIZED) THEN

    ...

    ENDIF


    Viele Grüße

  • Hallo Sliwka...

    möglicherweise habe ich mich unklar ausgedrückt, die Suchfahrt möchte ich natürlich NICHT im .sub auswerten.

    Ich möchte nur die Situation "zu tief" im .sub abfangen.

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Um im Programminterpreter dann wieder mit einem Interrupt drauf zu reagieren? Das dauert...

    Warum machst Du nicht zwei Interrupts auf dasselbe Signal und schaltest sie bedarfsweise scharf?

    Eventuell kriegst Du Deine Positionsbedingung sogar über einen Workspace eingebunden, das dann mit dem Ini in einem $CYCFLAG verknüpft und den "zu tief"-Interrupt mit höherer Prio (kleinere Zahl) deklariert, dann funktioniert das eine sogar innerhalb des anderen.

    Bei wechselweisem Einschalten sollte sich die "zu Tief"-Bedingung aber auch problemlos im Suchfahrt-Interrupt auswerten lassen, so dass man während der Suchfahrt auch die Überwachung hat. Reagiert wird ja sowieso auf den Signalwechsel.

  • Ich glaube das ist gut. Entweder suche ich oder ich fahre zu tief. In beiden fällen bleibt der Robi stehen. Hätte ich auch selbst drauf kommen können.

    Beide Funktionen zur selben Zeit ist unnötig! Danke!

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

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