KRC4 Achswerte von Zusatzachse nicht hochgenau in PLC lesen

  • Gude Community,


    ich habe folgenden Fall:

    Ich möchte eine externe Achse (E2) auf drehen oder Stillstand überwachen in meiner PLC...

    Da ich bei Bewegung dieser Achse ein Kühlaggregat ansteuern muss, sollte das Ganze recht gezielt ablaufen.


    Im momentanen Zustand springt mir das Ding sofort an sobald irgendeine Roboterachse im Eingriff ist... Nicht gut!


    Realisiert habe ich das mit folgendem CODE auf der KRC-Seite:


    ; Alle 100 ms alle Achspositionen speichern

    IF $TIMER[2] > 0 THEN

    $TIMER_STOP[2]=TRUE

    $TIMER[2] = -100

    $TIMER_STOP[2]=FALSE

    ENDIFIF $TIMER_STOP[2] == FALSE THEN

    rAltPosE2 = $AXIS_ACT.E2ENDIF
    ;Eine Achse in Bewegung ; Achse E2

    IF $Pro_Move AND (rAltPosE2 <> $AXIS_ACT.E2) THEN

    bE2Moves = TRUE

    ELSE

    bE2Moves = FALSE

    ENDIF

    doE2Stopped = NOT bE2Moves

    ...

    ...Funktioniert soweit erstmal einwandfrei. Das Problem ist, dass die Variable $AXIS_ACT.E2 gefühlte tausend Kommastellen hat.

    Somit tut sich an den letzten Kommastellen immer etwas sobald die restlichen Achsen in Bewegung sind.


    Die Frage ans Forum: Kann ich das Ganze auch deutlich ungenauer auswerten??? Mir würden ein oder zwei Kommastellen völlig ausreichen.

    Oder gibt es bis auf den o.g. Code noch einfachere Wege?


    Haut rein, freue mich auf Antworten.

  • Schritt für Schritt zum Roboterprofi!
  • Mal als schneller Gedanke...

    Das würde jetzt alle 12ms (Takt sps.sub) überprüft.

    Vielleicht macht die Achse in der Zeit gar nicht so viel Weg,

    dann musst Du ggf. wieder auf Deinen Timer oder einen geringeren Weg auswerten.


    Code
    bE2Moves = ABS($AXIS_ACT.E2 - rAltPosE2 ) > 0.01
    rAltPosE2 = $AXIS_ACT.E2
  • Du könntest auch eine Abfrage schreiben die in etwas so aussieht:


    if ($AXIS_ACT.E2 < rAltPosE2 - 1.0) AND ($AXIS_ACT.E2 > rAltPosE2 + 1.0) then


    so kannst Du auch die Genauigkeit recht einfach steuern (z.B. mit Faktor 0,1 oder 10)

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