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.

Hinweis

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.

Abbildung 1: Unkorrigierte (schwarz, durchgehend) und korrigierte (rot, gestrichelt) Sollposition, sowie Istgeschwindigkeit (blau, punktiert) der im Positionsinterface mit der _unkorrigierten_ Position angetriebenen Achse.
Abbildung 2: Überblick der in Abbildung 1 vergrößert dargestellten Situation.

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
der Achse

benötigte Größen
in AxisIn

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