FB_AxisExtrapolateValues
Dieser Funktionsbaustein dient der Extrapolation kinematischer Achsgrößen. Die Sollposition (und wahlweise -geschwindigkeit) werden auf Basis der Sollgeschwindigkeit (und -beschleunigung) um die angegebene Korrekturzeit extrapoliert.
Defaultmäßig ist die Verwendung der Sollbeschleunigung zur Extrapolation der Geschwindigkeit und Position _aktiviert_. Entsprechend muss sichergestellt sein, dass hinreichend glatte, d.h. unverrauschte und Spikefreie Beschleunigungswerte (z.B. analytische Werte aus PTP-Achsen) in der AxisIn-Struktur vorhanden sind. Encoder-Achsen erfüllen diese Anforderungen an die Beschleunigung durch Abtastung und doppelte Differentiation der Position nicht. Die Verwendung der Beschleunigung muss hier durch Setzen des Parameters stAxisExtrapolateParameters.bUseAccForExtrapolation=FALSE deaktiviert werden.
Beschreibung
Die in der Einführung beschriebenen Schwebungseffekte führen zum Verlust oder doppelten Lesen von gesendeten Informationen. Handelt es sich bei den Informationen um Sollwerte von Achsen, so ergeben sich Sprünge in den kinematischen Größen Sollposition und -geschwindigkeit. Mit diesen Größen direkt betriebene Achsen zeigen periodisch auftretende Störungen des Betriebs. Abhilfe schafft die Korrektur der Sollwerte mit Termen der höheren Ableitungen (Sollgeschwindigkeit bzw. -beschleunigung) und einer Korrekturzeit. Letztere ist so beschaffen (siehe FB_TimeSync), dass Schwebungen und Fluktuation der Sollwerte durch die Extrapolation ausgeglichen werden können.
Abbildung 1 zeigt die empfangene (durchgehend) und die korrigierte (gestrichelt) Position, wobei die Achse mit dem Positionsinterface der unkorrigierten Werte angetrieben wurde. Die daraus resultierenden Auswirkungen auf die punktiert dargestellte Istgeschwindigkeit sind als größer werdende Fluktuationen zu erkennen. Abbildung 2 zeigt die Situation im Überblick.
Extrapolation der Sollwerte
Für die Extrapolation der Sollwerte stehen zwei unterschiedlich detaillierte Verfahren zur Verfügung. Im ersten Fall wird nur die Sollgeschwindigkeit verwendet, um die Sollposition zu extrapolieren:
AxisOut.fPosSoll:=AxisIn.fPosSoll + AxisIn.fVeloSoll * fTimeCorrection;
AxisOut.fVeloSoll:=AxisIn.fVeloSoll;
Darüber hinaus besteht die Möglichkeit, auch die Sollbeschleunigung zur Extrapolation von Sollposition und Sollgeschwindigkeit zu verwenden:
AxisOut.fPosSoll:=AxisIn.fPosSoll + AxisIn.fVeloSoll*fTimeCorrection+ 0.5 * AxisIn.fAccSoll *fTimeCorrection^2;
AxisOut.fVeloSoll:=AxisIn.fVeloSoll + AxisIn.fAccSoll *fTimeCorrection;
Anforderungen:
Abhängig davon, in welcher Hauptbetriebsart die Achse betrieben werden soll, sind gewisse Voraussetzungen zu erfüllen und der entsprechende Modus zu aktivieren. Die entsprechenden Kombinationen sind in Tabelle 1 dargestellt.
Hauptbetriebsart | benötigte Größen | Parameter | Kommentar |
---|---|---|---|
Positionsinterface | Sollposition Sollgeschwindigkeit (Sollbeschleunigung) | stAxisExtrapolateParameters .bUseAccForExtrapolation=FALSE
(=TRUE) |
Die Verwendung der Beschleunigung kann wahlweise hinzugeschaltet werden. (Anforderungen an die Beschleunigung (s.o.) sind zu beachten.) |
Geschwindigkeitsinterface | Sollposition Sollgeschwindigkeit Sollbeschleunigung | stAxisExtrapolateParameters .bUseAccForExtrapolation=TRUE | analytisches Verhalten der Beschleunigung notwendig, d.h. z.B. keine Encoder-Achsen |
Betriebsarten:
Neben der Extrapolation der Sollwerte existieren weitere Betriebsmodi. Zwei davon, der Bypass- und der PT1-Modus, kommen vor allem dann zum Einsatz, wenn keine Korrekturzeit für die Extrapolation zu Verfügung steht. Bei Verwendung des Funktionsbausteins FB_TimeSync ist dies der Fall während der Initialisierungsphase oder wenn aus anderen Gründen die Synchronisierung fehlschlägt. Ebenfalls für Verwendung mit diesem Baustein existiert die Wahlmöglichkeit des Time-Modus, um auch bei der Initialisierung ohne Kenntnis der Schwebungsfrequenz eine Korrekturzeit zur Vermeidung von Fluktuationen zu bestimmen.
Die Betriebsarten sind im Einzelnen:
Modus | Beschreibung |
---|---|
E_Sync_ExtrapolateMode_Bypass | 1:1-Kopie aller empfangenen Sollwerte auf den Ausgang, d.h. ohne Veränderung der kinematischen Größen und damit auch ohne Verminderung von Schwebungseffekten. |
E_Sync_ExtrapolateMode_PT1 | Im PT1-Filtermodus wird die Eingangsposition durch einen konfigurierbaren (siehe stAxisExtrapolateParameters) PT1-Filter auf den Ausgang geleitet. Die Auswirkungen der Schwebung können hierdurch vermindert werden. |
E_Sync_ExtrapolateMode_Sync | Der Sync-Modus entspricht dem Standardmodus des Bausteins und extrapoliert, wie oben beschrieben, die kinematischen Sollwerte entsprechend der Korrekturzeit. |
E_Sync_ExtrapolateMode_Time | Bei doppeltem Lesen/Verpassen von Daten wird die Korrekturzeit so berechnet, dass die Auswirkungen auf die Sollwerte minimiert werden. Im Gegensatz zum Sync-Modus wird nicht über den gesamten Bereich zwischen den Schwebungen eine Korrektur der Sollwerte ausgeführt. |
Sicherheitsmaßnahmen:
Um im Falle einer fehlerhaften Berechnung der Korrekturzeit nicht beliebig große Differenzen zwischen den Original-Sollwerten und den berechneten Größen zu erhalten, kann dieser Abstand begrenzt werden. Festgelegt wird die maximale Differenz durch die Positions- bzw. Geschwindigkeitsänderung, die mit der aktuellen Sollgeschwindigkeit bzw. -beschleunigung in stAxisExtrapolateParameters.fMaxPositionDiffFactor
Zyklen erreicht werden kann. Überschreitet die Differenz diesen Wert, wird der konfigurierbare Fallback-Modus aktiviert. Hierfür stehen der Bypass- und der PT1-Modus zur Verfügung (siehe obige Beschreibung).
VAR_INPUT
VAR_INPUT
fCorrectionTime : LREAL;
fTaskCycleTime : LREAL;
eMode : E_Sync_ExtrapolateMode;
eFallBackMode : E_Sync_FallBackMode;
stAxisExtrapolateParameters : ST_AxisExtrapolateParameters;
END_VAR
fCorrectionTime : Korrekturzeit zur Extrapolation [s]
fTaskCycleTime : Zykluszeit des Empfängers [s].
eMode : Vorgewählter Betriebsmodus, kann durch Sicherheitsmaßnahmen (Fallback) automatisch geändert werden. Der tatsächlich verwendete Modus wird als Ausgang eState angezeigt.
eFallBackMode : Modus, falls die Abweichung der berechneten Sollwerte von den Original-Sollwerten den durch den Parameter stAxisExtrapolateParameters.fMaxPositionDiffFactor
beschriebenen Wert überschreitet.
stAxisExtrapolateParameters: Struktur mit Konfigurationsparametern
VAR_OUTPUT
VAR_OUTPUT
bError : BOOL;
iErrorId : DINT;
eState : E_Sync_ExtrapolateState;
stAxisExtrapolateDiagnostic: ST_AxisExtrapolateDiagnostic;
END_VAR
bError : TRUE im Falle eines Fehlers
iErrorId : Fehlercode (E_Sync_ErrorCodes)
eState : verwendeter Modus (E_Sync_ExtrapolateState)
stAxisExtrapolateDiagnostic: Struktur mit erweiterten Diagnosausgaben
VAR_IN_OUT
VAR_IN_OUT
AxisIn : NCTOPLC_AXLESTRUCT;
AxisOut : NCTOPLC_AXLESTRUCT;
END_VAR
AxisIn : empfangene Original-Achsstruktur
AxisOut : Achsstruktur, zur Vermeidung von Schwebungseffekten mit modifizierten Sollwerten