XFC_TouchProbe
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
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. | |
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. | |
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. |
Busy | Wird TRUE sobald der Baustein aktiv ist und wird FALSE nachdem er sich wieder im Grundzustand befindet. |
Error | Wird TRUE, sobald ein Fehler |
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer |
RecordedPosition | Erfasste Achsposition zum Zeitpunkt des Trigger-Signals. |
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.