PID-Regelung mit optionaler PWM-Ausgabe
Die PID-Regelung dient dazu, einen Istwert (PV = process value) dem festgelegten Sollwert (SP = set point) anzunähern und zu halten. Im Gegensatz zu FP_PID_BASIC aktiviert dieser Befehl einen PWM-Ausgang. Hierbei handelt es sich um einen pulsweitenmodulierten schaltenden Ausgang. Die PID-Regelungsparameter Kp, Ti und Td können automatisch mit der Auto-Tuning-Funktion ermittelt werden.
Eingang
Startbedingung
Betriebsart
Istwert (-30000–30000)
PID-Parameter
Ein-/Ausgang
Datentabelle mit PID-Parameter
Wenn Sie die Anweisung das erste Mal ausführen, d. h. wenn die in Run spezifizierte Bedingung auf TRUE, gesetzt wird, werden die Standardwerte in DUT-Elemente 1 bis 9 von DUT geschrieben .
Vor der zweiten Ausführung von FP_PID müssen Sie die SDT-Elemente 1 bis 9 des SDTs auf die gewünschten Werte ändern.
Ausgang
Pulsweitenmoduliertes Ausgangssignal (optional, kann anstelle von Stellgröße MV verwendet werden)
Die Frequenzperiode des PWM-Ausgangs entspricht der Regelzykluszeit Ts (Frequenz des PWM-Ausgangs = 1/Ts). Das Puls-Pausenverhältnis entspricht der Stellgröße MV x 0,01%, z.B.: MV = 10000 entspricht einem Puls-Pausenverhältnis von 100%.
Dieser Befehl muss zweimal ausgeführt werden. Bei der ersten Ausführung werden die Werte in PID_WORK_AREA_DUT zurückgesetzt, dann müssen die richtigen Werte für die SDT-Elemente 1 bis 9 in PID_WORK_AREA_DUT eingestellt werden, sodass bei der zweiten Ausführung dieses Befehls die richtigen Werte verwendet werden.
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn ein für einen Parameter angegebener Wert von PID_Parameters_DUT außerhalb des zulässigen Bereichs liegt
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn ein für einen Parameter angegebener Wert von PID_Parameters_DUT außerhalb des zulässigen Bereichs liegt
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
Automatic: BOOL:=TRUE;
dutControl: PID_Control_DUT;
PV: INT:=0;
ParametersHold: PID_Parameters_DUT;
ParametersNonHold: PID_Work_Area_DUT;
bPWMOutput: BOOL:=FALSE;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_VARIN,,dutControl,15,2,17,4,);
B(B_VARIN,,ParametersHold,15,4,17,6,);
B(B_CONTACT,,Automatic,6,1,8,3,);
B(B_VARIN,,ParametersNonHold,15,5,17,7,);
B(B_F,FP_PID!,,17,0,30,7,,?DRun?Ds1_Control?Ds2_ProcessValue?Ds3_Parameters?Ds4_WorkArea?As4_WorkArea?APWM);
B(B_VARIN,,PV,15,3,17,5,);
B(B_VAROUT,,bPWMOutput,30,1,32,3,);
L(1,2,6,2);
L(8,2,17,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bPWMOutput := FP_PID(Run := Automatic,
s1_Control := dutControl,
s2_ProcessValue := PV,
s3_Parameters := ParametersHold,
s4_WorkArea := ParametersNonHold);