MC_TouchProbe
Mit dem Funktionsbaustein MC_TouchProbe wird eine Achsposition zum Zeitpunkt eines digitalen Signals (Messtasterfunktion) erfasst. Die Position wird üblicherweise nicht direkt in der SPS-Umgebung, sondern über ein externes Hardware-Latch erfasst und ist damit hochgenau und von der Zykluszeit unabhängig. Der Baustein steuert diesen Mechanismus und ermittelt die extern erfasste Position.
![]() | Der Funktionsbaustein wurde gegenüber TwinCAT 2 erweitert und entspricht der Funktion des bisherigen Bausteins MC_TouchProbe_V2. |
Voraussetzungen
Voraussetzung für die Positionserfassung ist eine geeignete Encoder-Hardware, die in der Lage ist, die erfasste Position zu latchen. Unterstützt werden:
- SERCOS Antriebe
Der Antrieb muss abweichend von MC_TouchProbe mit einer erweiterten Schnittstelle konfiguriert werden, bei der die Parameter S-0-0405 bzw. S-0-0406 im Prozessabbild enthalten sind. - EtherCAT SoE Antriebe (z. B. AX5000)
Der Antrieb muss abweichend von MC_TouchProbe mit einer erweiterten Schnittstelle konfiguriert werden, bei der die Parameter S-0-0405 bzw. S-0-0406 im Prozessabbild enthalten sind. - EtherCAT CoE Antriebe
Der Antrieb muss mit dem Parameter 0x60B9 (Touch Probe Status) im Prozessabbild konfiguriert werden. - EL5101, KL5101
Latchen der C-Spur und des digitalen Eingangs ist möglich. Mit dieser Hardware kann zeitgleich nur ein Signal bzw. eine Flanke erfasst werden. Der Continuous-Mode wird nicht unterstützt.
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. Beckhoff-EtherCAT-Antriebe können mit dem System Manager konfiguriert werden. Hierbei muss beachtet werden, dass die Probe-Unit mit dem erweiterten Interface „Extended NC Probe Unit“ konfiguriert werden muss.
![]() | Nachdem ein Messtasterzyklus durch eine steigende Flanke am Eingang „Execute“ gestartet wurde, wird dieser erst beendet, wenn die Ausgänge „Done“, „Error“ oder „CommandAborted“ TRUE werden. Soll der Vorgang zwischenzeitlich abgebrochen werden, muss der Funktionsbaustein 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
Name | Typ | Beschreibung |
---|---|---|
Execute | BOOL | Mit einer steigenden Flanke wird das Kommando ausgeführt. |
WindowOnly | BOOL | Wenn WindowOnly = TRUE 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. Das Erfassungsfenster kann absolut oder modulo interpretiert werden. Dazu muss das Flag „ModuloPositions“ in der TriggerInput-Datenstruktur entsprechend gesetzt werden. Bei absoluten Positionen gibt es exakt ein Fenster. Bei Modulo-Positionen wiederholt sich das Fenster innerhalb des in den Achsparametern festgelegten Modulo-Zyklus (z. B. 0 bis 360 Grad). |
FirstPosition | LREAL | Anfangsposition des Erfassungsfensters, wenn „WindowOnly“ TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu muss in der TriggerInput-Datenstruktur das Flag „ModuloPositions“ entsprechend gesetzt werden. |
LastPosition | LREAL | Endposition des Erfassungsfensters, wenn „WindowOnly“ TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu muss das Flag „ModuloPositions“ in der TriggerInput-Datenstruktur entsprechend gesetzt werden. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.0.0 | PC oder CX (x86 oder x64) | Tc2_MC2 |
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
CommandAborted : BOOL;
Error : BOOL;
ErrorId : UDINT;
RecordedPosition : LREAL;
RecordedData : MC_TouchProbeRecordedData;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Done | BOOL | TRUE, wenn eine Achsposition erfolgreich erfasst wurde. Die Position wird am Ausgang „RecordedPosition“ ausgegeben. |
Busy | BOOL | TRUE, sobald der Baustein aktiv ist. FALSE, wenn er sich im Grundzustand befindet. |
CommandAborted | BOOL | TRUE, wenn der Vorgang von außen, z. B. durch den Aufruf von MC_AbortTrigger, abgebrochen wurde. |
Error | BOOL | TRUE, wenn ein Fehler auftritt. |
ErrorID | UDINT | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer. |
RecordedPosition | LREAL | Erfasste Achsposition zum Zeitpunkt des Trigger-Signals |
RecordedData | Datenstruktur mit ergänzenden Informationen zur erfassten Achsposition zum Zeitpunkt des Trigger-Signals |
Ein-/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
TriggerInput : TRIGGER_REF;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Axis | Achsdatenstruktur | |
TriggerInput | Datenstruktur zur Beschreibung der Trigger-Quelle. Diese Datenstruktur muss vor dem ersten Aufruf des Funktionsbausteins parametriert werden. |