FP_PID

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.

Parameter

Eingang

Run (BOOL)

Startbedingung

s1_Control (PID_Control_DUT)

Betriebsart

s2_ProcessValue (INT)

Istwert (-30000–30000)

s3_Parameters (PID_PARAMETERS_DUT)

PID-Parameter

Ein-/Ausgang

s4_WorkArea (PID_WORK_AREA_DUT)

Datentabelle mit PID-Parameter

Anmerkung

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

PWM (BOOL)

Pulsweitenmoduliertes Ausgangssignal (optional, kann anstelle von Stellgröße MV verwendet werden)

Anmerkungen

  • 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.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • 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

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • 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

Beispiel

POE-Kopf

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

KOP-Rumpf

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

ST-Rumpf

bPWMOutput := FP_PID(Run := Automatic, 
                     s1_Control := dutControl,
                     s2_ProcessValue := PV,
                     s3_Parameters := ParametersHold,
                     s4_WorkArea := ParametersNonHold);

Letzte Änderung am: 2022-04-19Feedback zu dieser SeitePanasonic Hotline