Es können entweder nur Abstände oder Abstände und Längen vermessen werden. Die gelatchten bzw. gespeicherten Messwerte und die Winkelistwerte des Gebers müssen zyklisch gelesen werden. Dazu müssen die entsprechenden Parameter gemappt werden.
Beim b maxx 4000 sind dies abhängig vom verwendeten Encoder:
| Encoder | Parameter | Objekt Nummer | Bemerkung |
|---|---|---|---|
| 1 | Geber 1 Winkel-Istwert 32 Bit | 60fb.0a | 32 Bit Winkel |
| 1 | Messwert Umdrehungen pos. Flanke 32 Bit | 0x4246 (P582) | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel pos. Flanke 32 Bit | 0x4245 (P581) | Verwendung der obere 16 Bit(*) |
| 1 | Messwert Umdrehungen neg. Flanke 32 Bit | 0x4248 | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel neg. Flanke 32 Bit | 0x4247 | Verwendung der obere 16 Bit(*) |
| 2 | Geber 2 Winkel-Istwert | 0x4191 | 32 Bit Winkel |
| 2 | Messwert Umdrehungen pos. Flanke 32 Bit | 0x424a | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel pos. Flanke 32 Bit | 0x4249 | Verwendung der obere 16 Bit(*) |
| 2 | Messwert Umdrehungen neg. Flanke 32 Bit | 0x424c | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel neg. Flanke 32 Bit | 0x424b | Verwendung der obere 16 Bit(*) |
Da d_TP_PosLH und d_TP_PosHL je 16 bit Umdrehung und 16bit Winkel sein müssen, sind die Messwerte noch zu shiften und zu verodern.
(*) Beispiel Zusammenführen der Werte in FUP:
P581 und P582 sind die Parameter des Antriebs, die zyklisch gelesen werden.
Für den b maXX 5000 müssen abhängig von der verwendeten Achse (EA: Parameteroffest 0x2000 / DA: Achse 1 = 0x2000 / Achse 2 = 0x4000), dem verwendtem Encoder (Geber 1/Geber 2) und digitalem Eingang (MT1 / MT2) Prozessdaten gemapped werden.
| Encoder | Parameter | Objekt Nummer | Bemerkung |
|---|---|---|---|
| 1 | Geber 1 Winkel-Istwert 32 Bit | 60fb.0A | 32 Bit Winkel |
| 2 | Geber 2 Winkel-Istwert 32 Bit | 68fb.0A | 32 Bit Winkel |
| Messtaster 1 Eingang: | |||
| 1 | Messwert Umdrehungen pos. Flanke 32 Bit (MT1) | 207c.05 | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel pos. Flanke 32 Bit (MT1) | 207c.06 | Verwendung der obere 16 Bit(*) |
| 1 | Messwert Umdrehungen neg. Flanke 32 Bit (MT1) | 207c.07 | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel neg. Flanke 32 Bit (MT1) | 207c.08 | Verwendung der obere 16 Bit(*) |
| 2 | Messwert Umdrehungen pos. Flanke 32 Bit (MT1) | 207c.11 | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel pos. Flanke 32 Bit (MT1) | 207c.12 | Verwendung der obere 16 Bit(*) |
| 2 | Messwert Umdrehungen neg. Flanke 32 Bit (MT1) | 207c.13 | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel neg. Flanke 32 Bit (MT1) | 207c.14 | Verwendung der obere 16 Bit(*) |
| Messtaster 2 Eingang: | |||
| 1 | Messwert Umdrehungen pos. Flanke 32 Bit (MT2) | 207c.09 | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel pos. Flanke 32 Bit (MT2) | 207c.0A | Verwendung der obere 16 Bit(*) |
| 1 | Messwert Umdrehungen neg. Flanke 32 Bit (MT2) | 207c.0B | Verwendung der unteren 16 Bit(*) |
| 1 | Messwert Winkel neg. Flanke 32 Bit (MT2) | 207c.0C | Verwendung der obere 16 Bit(*) |
| 2 | Messwert Umdrehungen pos. Flanke 32 Bit (MT2) | 207c.15 | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel pos. Flanke 32 Bit (MT2) | 207c.16 | Verwendung der obere 16 Bit(*) |
| 2 | Messwert Umdrehungen neg. Flanke 32 Bit (MT2) | 207c.17 | Verwendung der unteren 16 Bit(*) |
| 2 | Messwert Winkel neg. Flanke 32 Bit (MT2) | 207c.18 | Verwendung der obere 16 Bit(*) |
Alternitv für das manuelle shiften, kann der Hilfsbaustein TF_TPmeasure verwendet werden. (Details s. Hilfe des TF_TPmeasure).
Beispielhafte Beschaltung:
Abstandsmessung:
Mode0: An den Eingang d_TP_PosLH wird die gemessene Position der Kante (im Format 16:16) angeschlossen.
Mode1: An den Eingang d_TP_PosHL wird die gemessene Position der Kante (im Format 16:16) angeschlossen.
Nach Starten des Bausteins wird die erste Kante gesucht. Kann innerhalb von zwei Längen (di_DefDist) keine Kante gefunden werden, bricht der Baustein mit einer Fehlermeldung ab.
Wird im laufenden Betrieb keine Marke im Fenster gefunden, so wird an der Fensteroberkante der letzte gemessene Abstand ausgegeben. Gleichzeitig wird x_TP_Err=TRUE und u_TP_ErrCnt hochgezählt. Es ist vom Anwender zu entscheiden, ob bei fehlender Markenerkennung mit den letzten Werten gearbeitet werden kann oder ob die Maschine angehalten werden muss!
Funktion (Mode 0):
Verhalten des Bausteins:
| Ereignis | Ergebnis | Bemerkung |
|---|---|---|
| Starten des Bausteins | x_1stEdge=FALSE x_Valid=FALSE x_TP_Err=FALSE di_ActDist=-1 |
|
| Erste Kante wird erkannt | x_1stEdge=TRUE x_Valid=FALSE x_TP_Err=FALSE di_ActDist=-1 |
x_1stEdge bleibt TRUE. |
| Nächste gültige Kante wird erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=FALSE di_ActDist=Abstand |
x_Valid bleibt TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). u_TP_ErrCnt wird zurückgesetzt. di_ActDist wird mit x_Ack=TRUE auf -1 gesetzt. |
| Keine Kante im Fenster erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=TRUE di_ActDist=letzter Abstand |
Ausgabe des letzten gemessenen Abstands an der Fensteroberkante. x_Valid und x_TP_Err bleiben TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). u_TP_ErrCnt zählt hoch. di_ActDist wird mit x_Ack=TRUE auf -1 gesetzt. |
Abstand und Länge:
In dieser Betriebsart wird neben dem Abstand der (Vorder-)Kanten auch die Länge (Abstand Vorder- zu Hinterkante) vermessen.
Mode2: Es wird am Eingang d_TP_PosLH die gemessene Position der Vorderkante (im Format 16:16) und am Eingang d_TP_PosHL die gemessene Position der Hinterkante (im Format 16:16) angeschlossen.
Mode3: Es wird am Eingang d_TP_PosHL die gemessene Position der Vorderkante (im Format 16:16) und am Eingang d_TP_PosLH die gemessene Position der Hinterkante (im Format 16:16) angeschlossen.
Funktion (Mode 2):
Verhalten des Bausteins:
| Ereignis | Ergebnis | Bemmerkung |
|---|---|---|
| Starten des Bausteins | x_1stEdge=FALSE x_Valid=FALSE x_TP_Err=FALSE di_ActDist=-1 di_ActSize=-1 |
|
| Erste Vorderkante wird erkannt | x_1stEdge=FALSE x_Valid=FALSE x_TP_Err=FALSE di_ActDist=-1 di_ActSize=-1 |
Es wird eine gültige Hinterkante gesucht. Wird keine gültige Hinterkante gefunden, wird erneut eine Vorderkante gesucht (Störkanten-Erkennung). |
| Erste gültige Hinterkante wird erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=FALSE di_ActDist=-1 di_ActSize=Länge |
x_1stEdge bleibt TRUE. x_Valid bleibt TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). u_TP_ErrCnt wird zurückgesetzt. di_ActSize wird mit x_Ack=TRUE auf -1 gesetzt. |
| Nächste gültige Vorderkante wird erkannt | Keine Reaktion | |
| Nächste gültige Hinterkante wird erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=FALSE di_ActDist=Abstand di_ActSize=Länge |
x_1stEdge bleibt TRUE. x_Valid bleibt TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). u_TP_ErrCnt wird zurückgesetzt. di_ActDist und di_ActSize werden mit x_Ack=TRUE auf -1 gesetzt. |
| Keine gültige Vorderkante erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=TRUE di_ActDist=maxAbst. di_ActSize=minLänge |
Ausgabe einer default Marke mit min. Länge und max. Abstand. x_Valid und x_TP_Err bleiben TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). di_ActDist und di_ActSize werden mit x_Ack=TRUE auf -1 gesetzt. |
| Keine gültige Hinterkante erkannt | x_1stEdge=TRUE x_Valid=TRUE x_TP_Err=TRUE di_ActDist=maxAbst. di_ActSize=minLänge |
Ausgabe einer virtuellen Marke mit min. Breite und max. Abstand. x_Valid und x_TP_Err bleiben TRUE, bis Übernahme quittiert wurde (x_Ack=TRUE). di_ActDist und di_ActSize werden mit x_Ack=TRUE auf -1 gesetzt. |