FB_TpDistanceControl - Allgemeine Informationen
Typ |
Funktionsbaustein |
Verfügbar ab |
V1.0.3.0 |
Übernommen aus |
- |
Implementiert |
- |
Erfassung und Speicherung von Produktabständen
Der Funktionsbaustein kann in Anwendungen wie „Fliegende Säge“ oder „Eintaktung“ verwendet werden. Der Funktionsbaustein dient der Implementierung einer absoluten Korrektur.
Die Produkte werden über einen Messeingang (Touchprobe-Funktion) erfasst. Es wird der Abstand der Produkte (Vorderkante zu Vorderkante) gemessen und in einem FIFO-Puffer gespeichert.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_xEnable |
BOOL |
Wertebereich: TRUE / FALSE Eine steigende Flanke FALSE -> TRUE aktiviert die POU, eine fallende Flanke TRUE -> FALSE deaktiviert sie. Wenn die POU abgeschaltet ist, führt sie keine Aktionen aus. |
i_ifDrive |
IF_Drive |
Wertebereich: Antriebsobjekt Eingang für die Achse, die mit LE am iq_lencEncoder verbunden werden soll. |
i_ifTouchProbe |
IF_TouchProbe |
Wertebereich: Touchprobe-Objekt Messeingang, über den die Produkte erfasst werden. Der Eingang misst die steigende Flanke des Touchprobes. |
i_xReset |
BOOL |
Wertebereich: TRUE / FALSE Löscht den FIFO-Puffer. Beim nächsten gültigen Touchprobe-Signal wird der Ausgang q_xFirstTp gesetzt. Im Gegensatz zum Aktivieren über i_xEnable wird die Touchprobe-Funktion nicht zurückgesetzt. Somit geht keine Flanke verloren. |
i_lrDefaultDistance |
LREAL |
Wertebereich: >= 0 Normalabstand der zu messenden Teile in Einheiten, Wertebereich >= 0. Wenn i_lrDefaultDistance > 0 ist, dann wird nach Ablauf der Strecke i_lrDefaultDistance + i_lrMinDistance ein Produkt simuliert. Das bedeutet, es wird die i_ lrDefaultDistance in den FIFO-Puffer geschrieben und der Ausgang q_diNumberOfMissingTps um 1 erhöht. Beim nächsten gültigen Touchprobe-Signal wird q_diNumberOfMissingTps auf null gesetzt. Wenn i_lrDefaultDistance = 0 wird stets auf das Touchprobe-Signal gewartet. |
i_lrMinDistance |
LREAL |
Wertebereich: >= 0 Dient als Fenster für die Touchprobe-Signalerfassung. Innerhalb dieser Strecke wird kein neues Touchprobe-Signal akzeptiert. Werte in Einheiten, Wertebereich >= 0. Wenn i_lrDefaultDistance = 0, muss i_lrMinDistance > 0 sein. Beachten Sie, dass Produkte/Teile simuliert werden, wenn innerhalb von i_lrDefaultDistance + i_lrMinDistance kein Touchprobe-Signal auftritt. Das kann zu Konflikten mit aufgetretenen Touchprobe-Signalen führen. |
i_lrMaxWaitDistance |
LREAL |
Wertebereich: >= 0 Maximaler Abstand für die Suche des ersten Touchprobe-Signals in Einheiten, Wertebereich >= 0. Bei 0 wird keine Überprüfung auf einen Maximalwert duchgeführt. |
i_lrMaxCorrection |
LREAL |
Wertebereich: > 0 Mit diesem Wert kann der Abstand, der über die Methode GetValue() aus dem FiFo ausgelesen wird, begrenzt werden. Der Rest der Messung wird beim nächsten Lesen mit berücksichtigt. Dieser Parameter wird nur berücksichtigt, wenn i_lrDefaultDistance > 0 und q_diNoOfElementsInFiFo > 0 ist. Wertebereich > 0. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xActive |
BOOL |
TRUE: Die POU ist eingeschaltet und muss weiter ausgeführt werden. FALSE: Die POU ist abgeschaltet. |
q_xReady |
BOOL |
TRUE: Die POU ist messbereit. FALSE: Die POU ist nicht bereit. |
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
POU-spezifischer, diagnosebezogener Ausgang. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
|
q_sMsg |
STRING[80] |
Ereignisabhängige Meldung mit detaillierten Informationen zum Diagnosezustand. |
q_xFirstTp |
BOOL |
Gibt an, dass das erste Produkt von der Touchprobe-Funktion erkannt wurde. Dieses Signal dient der Synchronisierung der Anwendung mit dem Funktionsbaustein. |
q_diNumberOfMissingTps |
DINT |
Zeigt an, dass innerhalb der Strecke i_lrDefaultDistance + i_lrMinDistance kein Produkt gesehen wurde. Dieses Signal wird nur ausgelöst, wenn i_lrDefaultDistance > 0. Der Ausgang wird auf 0 gesetzt, sobald ein neues gültiges Touchprobe-Signal erkannt wird. |
q_diNoOfElementsInFiFo |
DINT |
Gibt an, wie viele Werte im FIFO-Puffer gespeichert wurden. Der FIFO-Puffer ist für maximale Gc_diMaxNumberOfElementsInFiFo Werte ausgelegt. Wenn Gc_diMaxNumberOfElementsInFiFo Werte überschritten werden, wird ein Fehler ausgegeben. Mit der Methode GetValue() können Werte aus dem FiFo ausgelesen werden. |
q_lrTpCaptureDiff |
LREAL |
Unterschied zwischen der Position des iq_lencEncoder zur Abtastperiode, mit der das Signal q_xFirstTP gesetzt wird, und der Messung beim Touchprobe-Signal. Dieser Wert kann in der Anwendung beim ersten Synchronisieren benutzt werden, um die Genauigkeit zu erhöhen. Siehe Druckmarkenregeleung mit absoluter Korrektur. |
q_lrTpCaptureValue |
LREAL |
Position beim Auftreten des letzten TouchProbe-Signals. |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_lencEncoder |
L_ENC |
Logischer Geber zur Abstandsmessung. Der logische Geber muss mit der Masterachse verbunden sein. Für jede Instanz des Funktionsbausteins muss ein eigener logischer Geber angelegt werden. |
Folgende Beispiele erläutern detailliert die Erfassung und Speicherung von Produktabständen über FB_TpDistanceControl:
oGetaktete Anwendung mit absoluter Korrektur
oSynchrone Anwendung mit absoluter Korrektur
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
9 |
Die POU ist deaktiviert. |
|
OK |
4 |
Die POU wird initialisiert. |
|
OK |
168 |
Warten auf erstes Touchprobe-Signal. |
|
OK |
169 |
Warten auf nächstes Touchprobe-Signal. |
|
ExecutionAborted |
103 |
Der FiFo ist voll. |
|
InputParameterInvalid |
3 |
Verbundener Antrieb ist ungültig. |
|
InputParameterInvalid |
162 |
Der verbundene logische Geber ist ungültig. |
|
InputParameterInvalid |
163 |
Verbundener Touchprobe ist ungültig. |
|
InputParameterInvalid |
166 |
Touchprobe ist nicht aktiv. |
|
InputParameterInvalid |
165 |
Der angeschlossene Touchprobe ist virtuell. |
|
LimitReached |
170 |
MaxWaitDistance wurde erreicht. |
|
SercosConditionInvalid |
19 |
Der Sercos-Bus befindet sich nicht in Phase 4. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
Enumerationsname: |
Disabled |
Enumerationswert: |
9 |
Beschreibung: |
Die POU ist deaktiviert. |
Der Funktionsbaustein ist deaktiviert und führt keinerlei Aktionen aus. i_xEnable und q_xActive werden auf FALSE gesetzt.
Enumerationsname: |
DriveInvalid |
Enumerationswert: |
3 |
Beschreibung: |
Verbundener Antrieb ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
An den Eingang i_ifDrive wurde kein Antrieb angelegt. |
Dem Eingang i_ifDrive muss ein gültiger Antrieb übergeben werden. |
- |
Der angeschlossene Antrieb unterstützt nicht alle nötigen Funktionen. |
Entnehmen Sie dem Ausgang q_sMsg, welche Funktionen der Antrieb nicht unterstützt. Verwenden Sie einen Antrieb, der alle nötigen Funktionen unterstützt. |
Enumerationsname: |
FiFoFull |
Enumerationswert: |
103 |
Beschreibung: |
Der FiFo ist voll. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es wurden zu viele Werte in den FiFo eingetragen. |
Es muss dafür gesorgt werden, dass nicht mehr als Gc_diMaxNumberOfElementsInFiFo Werte in den FiFo eingetragen werden. |
Enumerationsname: |
Initializing |
Enumerationswert: |
4 |
Beschreibung: |
Die POU wird initialisiert. |
Der Funktionsbaustein wird initialisiert und ist noch nicht bereit, Befehle an seinen Eingängen entgegenzunehmen.
Der Funktionsbaustein meldet seine Betriebsbereitschaft mit dem Signal q_xReady = TRUE.
Enumerationsname: |
LencInvalid |
Enumerationswert: |
162 |
Beschreibung: |
Der verbundene logische Geber ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang iq_lencEncoder wurde kein Geber angelegt. |
Dem Eingang iq_lencEncoder muss ein eigener logischer Geber übergeben werden. |
Enumerationsname: |
MaxWaitDistanceReached |
Enumerationswert: |
170 |
Beschreibung: |
MaxWaitDistance wurde erreicht. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der Geber hat eine Strecke von mehr als i_lrMaxWaitDistance zurückgelegt, ohne ein Touchprobe-Signal zu bekommen. |
Prüfen Sie den Touchprobe-Sensor. Vergewissern Sie sich, dass der richtige Touchprobe mit dem Anschluss i_ifTouchProbe verbunden ist. Deaktivieren Sie die Überwachung durch Setzen des Eingangs i_lrMaxWaitDistance auf 0. |
Enumerationsname: |
SercosNotInPhaseFour |
Enumerationswert: |
19 |
Beschreibung: |
Der Sercos-Bus befindet sich nicht in Phase 4. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der Parameter State des SERCOS-Busses ist nicht 4. |
Setzen Sie den SERCOS-Busparameter PhaseSet auf 4. Überprüfen Sie den SERCOS-Bus auf Fehler. |
Enumerationsname: |
TouchProbeInvalid |
Enumerationswert: |
163 |
Beschreibung: |
Verbundener Touchprobe ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der Eingang i_ifTouchProbe ist nicht mit einem gültigen Touchprobe verbunden. |
Vergewissern Sie sich, dass am Eingang i_ifTouchProbe ein Touchprobe-Objekt übergeben wurde. |
Enumerationsname: |
TouchProbeNotActive |
Enumerationswert: |
166 |
Beschreibung: |
Touchprobe ist nicht aktiv. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Touchprobe-Funktionalität des Eingangs an einem Lexium 62 ist nicht aktiviert. |
Stellen Sie sicher, dass der Parameter IOx_Mode der Eingangsgruppe (LXM62IO_InOutTP) auf Touchprobe / 1 gesetzt ist. |
Enumerationsname: |
TouchProbeVirtual |
Enumerationswert: |
165 |
Beschreibung: |
Der angeschlossene Touchprobe ist virtuell. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der verwendete Touchprobe ist nicht real. |
Stellen Sie sicher, dass der Touchprobe nicht zu einem virtuellen Gerät gehört. (z. B. virtueller Lexium62) |
Enumerationsname: |
UnexpectedFeedback |
Enumerationswert: |
1 |
Beschreibung: |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es ist ein Fehler in der internen Abarbeitung aufgetreten. |
Bitte informieren Sie das Supportteam über diesen Fehler. |
Enumerationsname: |
WaitForFirstTouchProbeSignal |
Enumerationswert: |
168 |
Beschreibung: |
Warten auf erstes Touchprobe-Signal. |
Der Funktionsbaustein wartet auf das erste Touchprobe-Signal.
Enumerationsname: |
WaitForNextTouchProbeSignal |
Enumerationswert: |
169 |
Beschreibung: |
Warten auf nächstes Touchprobe-Signal. |
Die Touchprobe-Signale werden gesucht und ausgewertet.
Bezeichnung |
Beschreibung |
---|---|
Auslesen eines Werts aus dem FiFo. |