PID-Regler ohne Auto-Tuning
Diese Implementierung erlaubt eine direkte Parametrierung des F355_PID über Argumente:
Eingang
FALSE: Ermöglicht manuelle Einstellung der Stellgröße
TRUE: Stellgröße wird automatisch vorgegeben
FALSE: Gegensinnige Regelung (Heizen)
TRUE: Gleichsinnige Regelung (Kühlen)
FALSE: PI-D-Regelung
TRUE: I-PD-Regelung
Sollwert, Bereich 0-10000
Istwert, Bereich 0-10000
Proportionalbeiwert, Bereich: 1-9999, Einheit: 0,1
Integralzeit, Bereich: 1-30000, Einheit: 0,1s
Differenzialzeit, Bereich: 1-10000, Einheit: 0,1s
Regelzykluszeit, Bereich: 1-6000, Einheit: 0,01s
Untergrenze der Stellgröße, Bereich: 0-10000
Obergrenze der Stellgröße, Bereich: 1-10000
Ein-/Ausgang
Stellgröße MV
Das Auto-Tuning ist mit PID_FB nicht möglich. Verwenden Sie in diesem Fall PID_FB_DUT.
Der Wert von MV kann von extern entweder gleich beim Programmstart bei der Initialisierung vorgegeben werden oder wenn der Wert von Automatic FALSE ist.
Um maximale Auflösung und minimale Totzeiten jenseits von LowerLimit und UpperLimit zu erzielen, sollten diese Werte möglichst den gesamten Bereich von 0–10000 abdecken.
wenn die Parameterwerte außerhalb ihres erlaubten Bereichs sind.
wenn die Parameterwerte außerhalb ihres erlaubten Bereichs sind.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR_EXTERNAL
Set_Value_SP: INT:=0;
(*A/D CH0*)
Process_Value_PV: INT:=0;
(*A/D CH1*)
Output_Value_MV: INT:=0;
(*D/A*)
END_VAR
VAR
PID_Control: PID_FB;
(*PID Parameters*)
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 15 ;
NETWORK_BODY
B(B_FB,PID_FB!,PID_Control,11,1,19,15,,?BAutomatic?BForward?BI_PD?BSP?BPV?BKp?BTi?BTd?BTs?BLowerLimit?BUpperLimit?BMV?AMV);
B(B_VARIN,,TRUE,9,2,11,4,);
B(B_VARIN,,FALSE,9,3,11,5,);
B(B_VARIN,,FALSE,9,4,11,6,);
B(B_VARIN,,Set_Value_SP,9,5,11,7,);
B(B_VARIN,,Process_Value_PV,9,6,11,8,);
B(B_VARIN,,15,9,7,11,9,);
B(B_VARIN,,200,9,8,11,10,);
B(B_VARIN,,1,9,9,11,11,);
B(B_VARIN,,10,9,10,11,12,);
B(B_VARIN,,0,9,11,11,13,);
B(B_VARIN,,1000,9,12,11,14,);
B(B_VARIN,,Output_Value_MV,9,13,11,15,);
L(1,0,1,15);
END_NETWORK_BODY
END_NET_WORK
END_BODY
PID_Control( Automatic:= TRUE,
Forward:= FALSE,
I_PD:= FALSE,
SP:= Set_Value_SP,
PV:= Process_Value_PV,
Kp:= 15,
Ti:= 200,
Td:= 1,
Ts:= 10,
LowerLimit:= 0,
UpperLimit:= 1000,
MV:= Output_Value_MV);