XFC_TouchProbe

XFC_TouchProbe 1:

Der Baustein XFC_TouchProbe erfasst eine Achsposition zum Zeitpunkt der Flanke eines digitalen Eingangssignals (Messtasterfunktion).

Das digitale Eingangssignal wird mit einer XFC-Eingangsklemme (z. B. EL1252) mit Zeitstempeln für die fallende und steigende Signalflanke erfasst. Der Funktionsbaustein ermittelt die Achsposition, bei der der Flankenwechsel stattgefunden hat und gibt sie als RecordedPosition aus.

Im Gegensatz zur klassischen TouchProbe-Funktion MC_TouchProbe ist der digitale Eingang nicht direkt an die Antriebshardware gebunden. Über den Zeitstempel des Eingangs kann die Position jeder EtherCAT- oder Sercos-Achse im System aufgezeichnet werden, die mittels Totzeitkompensation exakt synchronisiert ist.

Der Funktionsbaustein kann freilaufend oder im Single-Shot-Betrieb verwendet werden. Im freilaufenden Modus wird jede Flanke des Eingangssignals erfasst (maximal eine Flanke pro SPS-Zyklus). Im Single-Shot-Betrieb wird nur einmalig die nächste Flanke erfasst bis der Funktionsbaustein neu getriggert wird.

Über die optionale Fensterfunktion können Signalflanken außerhalb des definierten Positionsfilters ignoriert werden.

Signalverlauf

XFC_TouchProbe 2:

Eingänge

VAR_INPUT
    Execute       : BOOL;
    WindowOnly    : BOOL;
    FirstPosition : LREAL;
    LastPosition  : LREAL;
    Options       : ST_XfcTouchProbeOptions;
END_VAR

Execute

Wenn Execute aktiv ist, wird die Achsposition an der definierten Signalflanke des Eingangssignals erfasst. Eine fallende Flanke an Execute beendet den Vorgang sofort.
Abhängig von der Konfiguration in TriggerInput.FreeRun wird einmalig die nächste Signalflanke erfasst und ausgewertet. Wenn FreeRun TRUE ist, wird fortlaufend mit jeder definierten Flanke des Eingangssignals ein neuer Positionswert erfasst, während Execute TRUE bleibt.

WindowOnly

Wenn diese Option aktiv ist, wird nur eine Position innerhalb des Fensters zwischen FirstPosition und LastPosition erfasst. Positionen außerhalb des Fensters werden verworfen. Erst wenn die erfasste Position innerhalb des Fensters liegt, wird Done TRUE.
Das Erfassungsfenster kann absolut oder modulo interpretiert werden. Dazu ist das Flag ModuloPositions in der Struktur TriggerInput entsprechend zu setzen. Bei absoluten Positionen gibt es exakt ein Fenster. Bei Modulo-Positionen wiederholt sich das Fenster innerhalb des in den Achsparametern festgelegten Modulozyklus (z. B. 0 bis 360 Grad).

FirstPosition

Anfangsposition des Erfassungsfensters, wenn WindowOnly TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu ist in der Struktur TriggerInput (siehe unten) das Flag ModuloPositions entsprechend zu setzen.

LastPosition

Endposition des Erfassungsfensters, wenn WindowOnly TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu ist in der Struktur TriggerInput (siehe unten) das Flag ModuloPositions entsprechend zu setzen.

Options

Optionale Parameter

Options.

UseAcceleration

UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.

Ausgänge

VAR_OUTPUT
    Done             : BOOL;
    Busy             : BOOL;
    Error            : BOOL;
    ErrorID          : UDINT;
    RecordedPosition : LREAL;
END_VAR

Done

Der Wert RecordedPosition ist gültig.
Falls TriggerInput.FreeRun TRUE ist, bleibt Done nur für einen SPS-Zyklus TRUE und wird selbstständig zurückgesetzt, da TouchProbe automatisch neu aktiviert wird.

Busy

Wird TRUE sobald der Baustein aktiv ist und wird FALSE nachdem er sich wieder im Grundzustand befindet.
Falls TriggerInput.FreeRun TRUE ist, bleibt Busy permanent TRUE, auch wenn Done oder Error TRUE werden, da TouchProbe automatisch neu aktiviert wird.

Error

Wird TRUE, sobald ein Fehler

ErrorID

Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

RecordedPosition

Erfasste Achsposition zum Zeitpunkt des Trigger-Signals.
Wenn TriggerInput.FreeRun TRUE ist, läuft der Funktionsbaustein freilaufend, so dass jede gültige Änderung des Eingangssignals zu einer neuen RecordedPosition führt. Die Position kann jeweils ausgewertet werden, wenn Done TRUE wird.

Ein/Ausgänge

VAR_IN_OUT
    Axis         : AXIS_REF; 
    TriggerInput : XFC_TRIGGER_REF;
END_VAR

Axis

Achsdatenstruktur

TriggerInput

TriggerInput ist eine Datenstruktur zur Beschreibung der Trigger-Quelle und zur Einspeisung von Zustand und Zeitstempel eines digitalen Eingangssignals. Diese Datenstruktur wird vom Anwender gefüllt.

Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.