Dieser FB enthält die Funktionen "Reibungsidentifizierung" und "Reibungskompensation".
|
|
|
|
L_TB1P_FrictionCompensation |
|
|
|
|
|---|---|---|---|---|---|---|---|
|
BOOL |
- |
|
xIdent |
xBusy |
|
- |
BOOL |
|
BOOL |
- |
|
xFollowerActive |
xDone |
|
- |
BOOL |
|
LREAL |
- |
|
lrActReelSpeedIn |
xError |
|
- |
BOOL |
|
LREAL |
- |
|
lrActTorqueIn |
eErrorID |
|
- |
L_IE1P_Error |
|
DWORD |
- |
|
dwSelectCurve |
xStop |
|
- |
BOOL |
|
BOOL |
- |
|
xEnableFrictionCurve |
xEnableFollower |
|
- |
BOOL |
|
LREAL |
- |
|
lrSetReelSpeed |
lrSetReelSpeedOut |
|
- |
LREAL |
|
LREAL |
- |
|
lrFrictionAdapt |
lrSetFrictionTorqueOut |
|
- |
LREAL |
|
BOOL |
- |
|
xInvertOutput |
|
|
|
|
|
LREAL |
- |
|
lrMaxSpeedIdent |
|
|
|
|
|
LREAL |
- |
|
lrAccDecIdent |
|
|
|
|
|
LREAL |
- |
|
lrFilterTimeSpeed |
|
|
|
|
|
LREAL |
- |
|
lrFilterTimeTorque |
|
|
|
|
|
LREAL |
- |
|
lrFilterTimeReelSpeed |
|
|
|
|
|
LREAL |
- |
|
lrLinearCompStart |
|
|
|
|
|
LREAL |
- |
|
lrLinearCompEnd |
|
|
|
|
|
ARRAY [1...66] OF LREAL |
- |
|
alrFrictionCurve1 |
|
|
|
|
|
ARRAY [1...66] OF LREAL |
- |
|
alrFrictionCurve2 |
|
|
|
|
|
ARRAY [1...66] OF LREAL |
- |
|
alrFrictionCurve3 |
|
|
|
|
|
ARRAY [1...66] OF LREAL |
- |
|
alrFrictionCurve4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Name Datentyp |
Info/Einstellmöglichkeiten |
|
|---|---|---|
|
alrFrictionCurve[1...4] ARRAY [1...66] OF LREAL |
Reibungskennlinien 1 ... 4 |
|
|
Name Datentyp |
Info/Einstellmöglichkeiten |
|
|---|---|---|
|
xIdent BOOL |
TRUE |
Reibungsidentifizierung: Identifizierung der Reibungskennlinie starten. |
|
xFollowerActive BOOL |
Schnittstelle zur Rückmeldung, dass die Sollwert-Generierung freigegeben ist (z. B. SMC_FollowVelocity.bBusy) |
|
|
lrActReelSpeedIn LREAL |
Aktuelle Drehzahl der Motorwelle (Drehzahl-Istwert)
|
|
|
lrActTorqueIn LREAL |
Aktuelles Drehmoment (Drehmoment-Istwert)
|
|
|
dwSelectCurve DWORD |
Reibungsidentifizierung ( xIdent = True) Auswahl des Speicherbereichs, in dem die identifizierten Reibungswerte gespeichert werden.
|
|
|
Reibungskompensation ( xEnableFrictionCurve = TRUE, xIdent = FALSE) Auswahl der Kennlinie für die Reibungskompensation.
|
||
|
xEnableFrictionCurve BOOL |
Reibungskompensation aktivieren. |
|
|
TRUE |
Die Reibungskompensation ist aktiviert. |
|
|
FALSE |
Das Reibungsmoment wird auf '0' zurückgesetzt. |
|
|
lrSetReelSpeed LREAL |
Drehzahl-Sollwert für die Reibungskennlinie
|
|
|
lrFrictionAdapt LREAL |
Wert zur proportionalen Bewertung der Reibungskennlinie
|
|
|
xInvertOutput BOOL |
TRUE |
Das Ausgangssignal lrSetFrictionTorqueOut wird invertiert ausgegeben. |
|
lrMaxSpeedIdent LREAL |
Maximale Drehzahl zur Reibungsidentifizierung
|
|
|
lrAccDecIdent LREAL |
Beschleunigung zur Reibungsidentifizierung
|
|
|
lrFilterTimeSpeed LREAL |
Filterzeitkonstante für den Drehzahl-Istwert zur Reibungsidentifizierung
|
|
|
lrFilterTimeTorque LREAL |
Filterzeitkonstante für den Drehmoment-Istwert zur Reibungsidentifizierung
|
|
|
lrFilterTimeReelSpeed LREAL |
Filterzeitkonstante für den Drehzahl-Sollwert zur Reibungskompensation
|
|
|
lrLinearCompStart LREAL |
Anfangsreibungsmoment für die Reibungskompensation |
|
|
lrLinearCompEnd LREAL |
Endreibungsmoment für die Reibungskompensation |
|
|
lrLinearCompEndReelSpeed LREAL |
Drehzahl bei Endreibungsmoment für die Reibungskompensation |
|
|
Name Datentyp |
Wert/Bedeutung |
|
|---|---|---|
|
xBusy BOOL |
TRUE |
Die Funktion "Reibungsidentifizierung" oder "Reibungskompensation" ist aktiv. |
|
xDone BOOL |
TRUE |
Die Funktion "Reibungsidentifizierung" oder "Reibungskompensation" wurde erfolgreich beendet. |
|
xError BOOL |
TRUE |
Es ist ein Fehler aufgetreten. Details siehe eErrorID . |
|
eErrorID |
Wenn xError = TRUE: Fehlernummer zum aufgetretenen Fehler.
|
|
|
xStop BOOL |
xStop wird im Falle eines Abbruchs der Reibungsidentifizierung auf TRUE gesetzt, und kann zur Ansteuerung einer externen Stopp-Funktion genutzt werden. |
|
|
xEnableFollower BOOL |
xEnableFollower wird zur Aktivierung einer Sollwert-Schnittstelle (z. B. SMC_FollowVelocity) auf TRUE gesetzt. |
|
|
lrSetReelSpeedOut LREAL |
Drehzahl-Sollwert für die Reibungsidentifizierung
|
|
|
lrSetFrictionTorqueOut LREAL |
Aktuelles Reibungsmoment
|
|
So gehen Sie vor:
Speicherplatz für die Kennlinie auswählen.
Über den Eingang dwSelectCurve den Speicherplatz (1 ... 4) festlegen, auf dem die Kennlinie nach erfolgreicher Identifizierung gespeichert werden soll.
Identifizierung starten.
Den Eingang xIdent auf TRUE setzen.
Die Identifizierung erfolgt gemäß folgender Zustandsmaschine:
|
Zustandsmaschine für die Reibungsidentifizierung
Wird der Eingang xIdent auf FALSE zurückgesetzt, so wird die aktive Identifizierung sofort abgebrochen. Auch das Rücksetzen des Eingangs xFollowerActive auf FALSE führt ebenfalls zu einem sofortigen Abbruch.
Bei Verwendung von Inkrementalgebern kann es erforderlich sein, das Drehzahl-Istwertsignal zu filtern.
Die Zeitkonstante für den Filter ist über den Eingng lrFilterTimeSpeed einstellbar. Hier ist die Einstellung '10 ms' meist ausreichend.
Für die Glättung der Reibungskennlinie kann ebenfalls das Filtern des Drehmoment-Istwertsignals hilfreich sein, die Zeitkonstante für diesen Filter ist über den Eingng lrFilterTimeTorque einstellbar.
Die Reibungskompensation ist aktiv, wenn der Eingang xIdent auf FALSE und der Eingang xEnableFrictionCurve auf TRUE gesetzt ist.
Die aktuelle Drehzahl geben Sie über den Eingang lrSetReelSpeed vor.
Geht der Drehzahl-Istwert über den in der Kennlinie definierten Maximalwert hinaus, wird die Kennlinie linear extrapoliert.
Ist der Eingang dwSelectCurve = 0 oder unbelegt, wird für die Reibungskompensation eine lineare Kennlinie verwendet.
Die lineare Kennlinie geben Sie über die Parameter lrLinearCompStart , lrLinearCompEnd und lrLinearCompEndReelSpeed vor:
Ist der Eingang dwSelectCurve = 1 ... 4, wird statt der linearen Kennlinie, die auf dem entsprechenden Speicherplatz gespeicherte Reibungskennlinie verwendet.
Über den Eingang lrFrictionAdapt können Sie eine prozentuale Verstärkung für die Kennlinie vorgeben, um z. B. Änderungen des Reibungsmomentes aufgrund von Temperaturveränderungen zu kompensieren.
Für die Glättung des Drehzahl-Sollwertes lrSetReelSpeedOut kann über den Eingang lrFilterTimeReelSpeed eine Filterzeitkonstante vorgegeben werden.
Das erzeugte Vorsteuersignal steht am Ausgang lrSetFrictionTorqueOut zur Verfügung. Durch Setzen des Eingangs xInvertOutput auf TRUE kann das Signal invertiert ausgeben werden (Drehrichtungswechsel).