FB_CTRL_NORMALIZE
Mit diesem Funktionsbaustein kann ein nichtlineares Übertragungsglied mit Hilfe einer inversen Kennlinie linearisiert werden.
In der Tabelle dieses Bausteins wird die Kennlinie des zu linearisierenden Übertragungsglieds hinterlegt. Der Funktionsbaustein berechnet aus dieser die inverse Kennlinie, mit der die Liniearisierung erfolgen kann.
Beispiel
Die folgende Ventilkennlinie wird mit 4 Stützstellen in der Tabelle abgelegt.
Stellgröße | Ventilstellung |
arrTable[1,1] := -6; | arrTable[1,2] := -100; |
arrTable[2,1] := -1; | arrTable[2,2] := -70; |
arrTable[3,1] := 1; | arrTable[3,2] := 70; |
arrTable[4,1] := 6; | arrTable[4,2] := 100; |
Aus dieser Kennlinie wird die inverse Kennlinie berechnet:
Durch die Reihenschaltung dieser beiden Kennlinien ergibt sich im Idealfall ein lineares Übertragungsverhalten.
VAR_INPUT
VAR_INPUT
fIn : FLOAT;
fManValue : FLOAT;
bExtrapolate : BOOL;
eMode : E_CTRL_MODE;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
fIn | FLOAT | Eingangsgröße |
fManValue | FLOAT | Eingangsgröße, dessen Wert im Manual-Mode ausgegeben wird. |
bExtrapolate | BOOL | Wenn dieser Eingang FALSE ist, wird bei Überschreiten der Tabellengrenze der Wert der letzten Stützstelle ausgegeben. Wenn ein TRUE anliegt, wird mit den letzten zwei Stützstellen extrapoliert. |
eMode | E_CTRL_MODE | Eingang, der die Betriebsart des Bausteins festlegt. |
VAR_OUTPUT
VAR_OUTPUT
fOut : FLOAT;
bInIsGreaterThanMaxElement : BOOL;
bInIsLessThanMinElement : BOOL;
eState : E_CTRL_STATE;
eErrorId : E_CTRL_ERRORCODES;
bError : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
fOut | FLOAT | Linear interpolierter Tabellenwert |
bInIsGreaterThanMaxElement | BOOL | Ein TRUE an diesem Ausgang signalisiert, dass die Eingangsgröße größer ist als die größte Stützestelle. |
bInIsLessThanMinElement | BOOL | Ein TRUE an diesem Ausgang signalisiert, dass die Eingangsgröße kleiner ist als die kleinste Stützestelle. |
eState | E_CTRL_ | State des Funktionsbausteins |
eErrorId | E_CTRL_ERRORCODES | Liefert bei einem gesetzten |
bError | BOOL | Wird TRUE, sobald ein Fehler eintritt. |
VAR_IN_OUT
VAR_IN_OUT
stParams : ST_CTRL_NORMALIZE_PARAMS;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stParams | ST_CTRL_NORMALIZE_PARAMS | Parameterstruktur des Funktionsbausteins |
stParams
besteht aus den folgenden Elementen:
TYPE ST_CTRL_NORMALIZE_PARAMS:
STRUCT
tCtrlCycleTime : TIME := T#0ms;
tTaskCycleTime : TIME := T#0ms;
pDataTable_ADR : POINTER TO FLOAT := 0;
nDataTable_SIZEOF : UINT := 0;
nDataTable_NumberOfRows : UINT := 0;
END_STRUCT
END_TYPE
Name | Typ | Beschreibung |
---|---|---|
tCtrlCycleTime | TIME | Zykluszeit, mit der der Regelkreis bearbeitet wird. Diese muss größer oder gleich der TaskCycleTime sein. Der Funktionsbaustein berechnet mit dieser Eingangsgröße intern, ob die Zustands- und Ausgangsgrößen im aktuellen Zyklus aktualisiert werden müssen. |
tTaskCycleTime | TIME | Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird. |
pDataTable_ | POINTER TO FLOAT | Adresse des n x 2 - Arrays, welches linear interpoliert wird. |
nDataTable_ | UINT | Größe des n x 2 - Arrays |
nDataTable_ | UINT | Anzahl der Zeilen des Arrays |