'Inteligenty' dom ze sterownikiem PLC
Główna => Programowanie => Wątek zaczęty przez: Tom01 w Lutego 21, 2018, 11:40:25 am
-
Zauważyłem, że w nowszych blokach funkcyjnych jest tendencja do rezygnacji z podawania na wejściu osobnych zmiennych a zastępowanie jedną zmienną strukturalną. I tak, dla przykładu, jest taki blok:
FUNCTION_BLOCK FbLimitController
(*************************************************************************************
WAGO Kontakttechnik GmbH & Co. KG Hansastr. 27 32423 Minden(Westf.)
Tel. +49571/887-0
Function: Limit controller (PI-control)
Version: 3.0
Date: 18.06.2013
**************************************************************************************)
VAR_INPUT
xEnable : BOOL := TRUE; (*Enable limit control II Freigabe Begrenzungsregler*)
rReferenceValue : REAL := 22; (*Reference value || Sollwert *)
rActualValue : REAL; (*Actual value II Istwert *)
typConfigLimitController : typConfigLimitController; (*Configuration parameters II Konfigurationsparameter*)
END_VAR
VAR_OUTPUT
rY : REAL; (*Manipulated variable of the controller || Stellwert des Reglers [%]*)
wY : WORD; (*Manipulated variable of the controller [0-32767] II Stellwert des Reglers [0-32767]*)
END_VAR
VAR
PIDController : FbPIDController;
Hysteresis : FbHysteresis;
rPresetValue : REAL;
typConfigPIDController : typConfigPIDController := (xPresetOn:=TRUE,xPresetOff:=TRUE);
END_VAR
I teraz pytanie, może banalne. W jaki sposób podać konfigurację tego bloku jako zmienną typConfigPIDController?
-
Cześć,
Takie łączenie parametrów konfiguracyjnych o tyle ma sens, że potem po programie nie pałętają się zmienne o dziwnych nazwach, które nie wiadomo, co robią.... W przypadku, który opisałeś definiujesz blok funkcyjny i zmienną konfiguracyjną:
VAR
Mixer : FbPIDController;
END_VAR
VAR RETAIN PERSISTENT
mixerConfig : typConfigPIDController;
END_VAR
i w programie definiujesz:
Mixer(
xEnable := _____________,
rReferenceValue := _____________,
rActualValue := _____________,
xManualOperation := _____________,
rManualValue := _____________,
typConfigPIDController := mixerConfig
);
potem w wizualizacji wstawiasz obiekt Visualization wskazując ConfigPIDController i w konfiguracji tego obiektu pod Placeholder podajesz zmienną mixerConfig np: Heating_Control.mixerConfig
W efekcie ustawiasz parametry PIDa przez wizualizację.
Pozdrawiam,
-
Ogarnięte, działa. Dzięki. :)