'Inteligenty' dom ze sterownikiem PLC

Główna => Programowanie => Wątek zaczęty przez: Tom01 w Lutego 21, 2018, 11:40:25 am

Tytuł: Tyb zmiennej będący strukturą.
Wiadomość wysłana 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?
Tytuł: Odp: Tyb zmiennej będący strukturą.
Wiadomość wysłana przez: admin w Lutego 21, 2018, 08:15:08 pm
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,
Tytuł: Odp: Tyb zmiennej będący strukturą.
Wiadomość wysłana przez: Tom01 w Lutego 21, 2018, 09:13:32 pm
Ogarnięte, działa. Dzięki. :)