MC_TouchProbe
Der Baustein MC_TouchProbe erfasst eine Achsposition zum Zeitpunkt eines digitalen Signals (Messtasterfunktion). Die Position wird üblicherweise nicht direkt in der SPS-Umgebung, sondern über ein externes Hardware-Latch erfasst und ist damit hochgenau und Zykluszeit-unabhängig. Der Baustein steuert diesen Mechanismus und ermittelt die extern erfasste Position.
Voraussetzungen
Voraussetzung für die Positionserfassung ist eine geeignete Encoder-Hardware, die in der Lage ist, die erfasste Position zu latchen. Unterstützt werden beispielsweise SERCOS-Antriebe, Beckhoff AX2000 mit SERCOS- und Lightbus-Schnittstelle und Beckhoff Encoder-Klemmen KL5101. Das digitale Trigger-Signal wird mit dieser Hardware verdrahtet und führt unabhängig vom SPS-Zyklus zum Aufzeichnen der aktuellen Achsposition.
Teilweise müssen diese Endgeräte konfiguriert werden, damit eine Positionserfassung möglich ist. Lesen Sie dazu Messtasterauswertung mit AX2xxx-B200 (Lightbus), Messtasterauswertung mit AX2xxx-B750 (SERCOS), AX5000 Probe Unit und AX5000 Funktion einer Probe Unit.
Einschränkungen
MC_TouchProbe kann unabhängig von der verwendeten Hardware nur eine Flanke einer Probe Unit gleichzeitig erfassen. Sollen beispielsweise beide Flanken erfasst werden, so muss der Baustein nach der ersten Flanke mit geänderter Parametrierung erneut gestartet werden. Kurz aufeinanderfolgende Flanken können somit nicht erfasst werden. Um dieses Problem zu umgehen, wird auf den erweiterten Baustein MC_TouchProbe_V2 verwiesen.
![]() | Nachdem ein Messtasterzyklus durch eine steigende Flanke am Execute Eingang gestartet wurde, wird dieser erst beendet, wenn die Ausgänge Done, Error oder CommandAborted TRUE werden. Soll der Vorgang zwischenzeitlich abgebrochen werden, so muss der Baustein MC_AbortTrigger mit derselben TriggerInput Datenstruktur aufgerufen werden. Anderenfalls kann kein neuer Zyklus gestartet werden. |
Signalverlauf
Eingänge
VAR_INPUT
Execute : BOOL;
WindowOnly : BOOL;
FirstPosition : LREAL;
LastPosition : LREAL;
END_VAR
Execute |
Mit der steigenden Flanke wird das Kommando ausgeführt und das externe Positionslatch wird aktiviert. |
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 und das externe Positionslatch wird automatisch neu aktiviert. 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. |
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
CommandAborted : BOOL;
Error : BOOL;
ErrorID : UDINT;
RecordedPosition : LREAL;
END_VAR
Done |
Wird TRUE, wenn eine Achsposition erfolgreich erfasst wurde. Die Position wird am Ausgang RecordedPosition ausgegeben. |
Busy |
Wird TRUE sobald der Baustein aktiv ist und wird FALSE nachdem er sich wieder im Grundzustand befindet. |
CommandAborted |
Wird TRUE wenn der Vorgang von außen, z. B. durch den Aufruf von MC_AbortTrigger, abgebrochen wurde. |
Error |
Wird TRUE, sobald ein Fehler auftritt. |
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 : TRIGGER_REF;
END_VAR
Axis | |
TriggerInput |
Datenstruktur TRIGGER._REF zur Beschreibung der Trigger-Quelle |