MC_AxUtiSlewRateLimitter_BkPlcMc (ab V3.0)

MC_AxUtiSlewRateLimitter_BkPlcMc (ab V3.0) 1:

Der Funktionsbaustein erzeugt eine anstiegsbegrenzte Rampe.

MC_AxUtiSlewRateLimitter_BkPlcMc (ab V3.0) 2: Eingänge

VAR_INPUT
    fInput:       LREAL:=0.0;
    fCycletime:   DINT:=0;
    fMaxRate:     DINT:=0;
END_VAR

Name

Typ

Beschreibung

fInput

LREAL

Der Roh-Wert der zu filternden Größe.

fCycletime

DINT

[s] Die Zykluszeit der aufrufenden PLC Task in Sekunden.

fMaxRate

DINT

Der Betrag der am Ausgang maximal zulässigen Änderungsrate als Änderung pro Sekunde.

MC_AxUtiSlewRateLimitter_BkPlcMc (ab V3.0) 3: Ausgänge

VAR_OUTPUT
    fOutput:      LREAL:=0.0;
    bError:       BOOL:=FALSE;
    nErrorId:     UDINT:=0;
END_VAR

Name

Typ

Beschreibung

fOutput

LREAL

[1/s] Der gefilterte Wert.

bError

BOOL

Dieser Ausgang signalisiert Probleme mit den übergebenen Parametern.

nErrorId

UDINT

Im Fehlerfall wird hier eine codierte Fehlerinformation ausgegeben.

Verhalten des Bausteins

Bei jedem Aufruf überprüft der Baustein die übergebenen Werte für fCycletime und fMaxRate. Sind die Werte nicht korrekt wird mit bError und einer codierten Information in nErrorId reagiert. Andernfalls wird bei jedem Aufruf die Differenz zwischen Input und Output ermittelt. Ist der Betrag dieser Differenz kleiner oder gleich fMaxRate * fCycletime wird der Wert von Input unmittelbar als fOutput übernommen. Andernfalls wird fOutput um fMaxRate * fCycletime geändert. Dabei wird das Vorzeichen automatisch gewählt.

MC_AxUtiSlewRateLimitter_BkPlcMc (ab V3.0) 4:

Der Wert für fCycletime muss ≥ 0.001 sein. Für fMaxRate sind negative Werte nicht zulässig.

In der Regel wird es sich bei Input um einen Wert handeln, der im Takt der Achsbausteine ermittelt und gefiltert wird. Hier kann für fCycletimeAxis_Ref_BkPlcMc.ST_TcHydAxParam.fCycletime verwendet werden.