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 F355_PID_DUT 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
PID-Parameter
Stellgröße (MV), zusätzliche Regelungsparameter, Auto-Tuning- und Arbeitsbereich
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 .
Istwert (-30000–30000)
Ausgang
Pulsweitenmoduliertes Ausgangssignal (optional anstelle von Stellgröße MV)
Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_PID
Zur Beschreibung des PID-Regelungsprozesses verwendete Abkürzungen
Abkürzung |
Bedeutung |
Deutsche Bezeichnungen |
---|---|---|
PV |
Istwert | Istwert, Messwert |
SP |
Sollwert | Sollwert, Einstellwert |
MV |
Stellgröße MV | Ausgangswert, Stellgröße MV |
Ts |
Regelzykluszeit | Zykluszeit |
Ti |
Integralzeit | - |
Td |
Differenzialzeit | - |
Kp |
Proportionalbeiwert | - |
AT |
Auto-Tuning | - |
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.
Wenn die Ausführungsbedingung am Eingang Run gesetzt ist, werden die Daten im Argument ParametersNonHold initialisiert. Wenn Sie möchten, dass ein Wert im SDT andere als die Standardwerte verwendet, schreiben Sie die Werte in den SDT, beispielsweise unter Verwendung eines Befehls MOVE, der kontinuierlich durch eine TRUE-Bedingung ausgelöst werden muss.
F356_PID_PWM darf nur einmal pro SPS-Zyklus ausgeführt werden. Verwenden Sie den Befehl F356_PID_PWM daher nicht in Interrupt-Programmen oder Schleifen.
Setzen Sie die Ausführungsbedingung am Eingang Run während der PID-Regelung nicht auf FALSE. Sonst wird die PID-Regelung abgebrochen.
Wenn Sie z.B. zur Regelung mehrerer Regelkreise ein paralleles Takten des PWM-Ausgangs verhindern möchten, setzen Sie z.B. Zeitgeber ein, um den Regelungsbeginn entsprechend zu verzögern.
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%.
wenn ein Parameter von F356_Parameters_NonHold_DUT ungültig ist
wenn ein Parameter von F356_Parameters_NonHold_DUT ungültig ist
wenn der mit UpperLimit oder LowerLimit definierte Bereich ungültig ist
Steuerungseinstellungen: F356_Parameters_Hold_DUT
Sollwert SP und Regelungsparameter: F356_Parameters_Hold_DUT
Hinweise zum Auto-Tuning:
Die Elemente AT_Progress in F356_Parameters_Hold_DUT und b1_AT_Complete in F356_Control_DUT werden an der steigenden Flanke des Auto-Tuning-Signals gelöscht.
Wenn das Auto-Tuning erfolgreich beendet ist, wird das Element b1_AT_Complete von F356_Control_DUT gesetzt und der Status im Element AT_Progress von F356_Parameters_NonHold_DUT gespeichert.
Wird das Auto-Tuning abgebrochen, bleiben die Parameter Kp, Ti und Td unverändert.
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
VAR
bStartAutoTuning: BOOL:=FALSE;
bRunPidControl: BOOL:=FALSE;
ControlData: F356_Control_DUT;
ParametersHold: F356_Parameters_Hold_DUT;
ParametersNonHold: F356_Parameters_NonHold_DUT;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,bStartAutoTuning,5,1,7,3,R);
B(B_COIL,,ControlData.b0_AT_Request,22,1,24,3,);
L(1,2,5,2);
L(7,2,22,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,F356_PID_PWM!,Instance,11,0,22,7,,?DRun?DControl?DParametersHold?DParametersNonHold?DProcessValue?APWM_Output);
B(B_VARIN,,ControlData,9,2,11,4,);
B(B_VARIN,,ParametersHold,9,3,11,5,);
B(B_VARIN,,ParametersNonHold,9,4,11,6,);
B(B_VARIN,,x_iTemperatureInput,9,5,11,7,);
B(B_VAROUT,,y_bPwmOutput,22,1,24,3,);
B(B_CONTACT,,bRunPidControl,4,1,6,3,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Auto Tuning: *)
if DF(bStartAutoTuning) then
ControlData.b0_AT_Request:=TRUE;
end_if;
y_bPwmOutput:=F356_PID_PWM( Run := bRunPidControl,
Control := ControlData,
ParametersHold := ParametersHold,
ParametersNonHold := ParametersNonHold,
ProcessValue := x_iTemperatureInput);