F355_PID_DUT

PID-Regler mit Auto-Tuning

Die PID-Regelung wird verwendet, um mit Hilfe eines gemessenen Istwerts (z.B. Temperatur) und eines vorgegebenen Sollwertes (z.B. 20°C) eine Stelleinrichtung (z.B. Heizung) zu regeln.

Parameter

Eingang

s (PID_DUT_31)

Detaillierte Erläuterungen zu den Parametern finden Sie unter PID_DUT_31.

Anmerkungen

  • Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_PID_BASIC

  • Die Funktion berechnet einen PID-Algorithmus, dessen Parameter als Datentabelle (d.h. in Form eines ARRAY) mit 30 Elementen am Eingang s eingegeben werden.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)

wenn die Parameterwerte außerhalb ihres erlaubten Bereichs sind.

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)

wenn die Parameterwerte außerhalb ihres erlaubten Bereichs sind.

Beispiel:

Globale Variablen

In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.

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_EXTERNAL
		EnableAutoTuning: BOOL:=FALSE;
			(*Switch Auto Tuning On *)
		Set_Value_SP: WORD:=0;
			(*A/D CH0*)
		Process_Value_PV: WORD:=0;
			(*A/D CH1*)
		Output_Value_MV: WORD:=0;
			(*D/A*)
	END_VAR
	VAR 
		PidParameters: PID_DUT_31;
			(*PID Parameters*)
	END_VAR

Bei der Initialisierung der Variablen PidParameters vom Datentyp PID_DUT_31, wird die Obere Grenze der Stellgröße MV auf 4000 gesetzt. Der Proportionalbeiwert Kp ist ursprünglich auf 80 (8) gesetzt, Ti und Td auf 200 (20s) und die Regelzykluszeit Ts auf 100 (1s).

POE-Rumpf

Die Standardfunktion MOVE kopiert den Wert 16#8000 in das Element Control des SDT PidParameters, wenn die Variable EnableAutoTuning von FALSE auf TRUE gesetzt wird (aktiviert die Betriebsart Auto-Tuning in der Funktion F355_PID_DUT).

Die Variablen Set_Value_SP und Process_Value_PV werden den Elementen SP und PV des SDTs PidParameters zugeordnet. Sie erhalten ihre Werte durch die A/D-Wandler Kanäle 0 und 1.

Da der EN-Ausgang des Funktionsbausteins F355_PID_DUT direkt mit der Stromlinie verbunden ist, wird der PID-Regler immer ausgeführt, wenn sich die Steuerung im RUN-Modus befindet. Die berechnete Stellgröße wird im Element MV des SDTs PidParameters gespeichert und der Variablen Output_Value_MV zugeordnet. Ihr Wert wird durch einen D/A-Wandler am Ausgang der Steuerung zurückgegeben.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,E_MOVE,,10,2,17,6,,?DEN?Da_Num?AENO?C);
B(B_VAROUT,,PidParameters.Control,17,4,19,6,);
B(B_VARIN,,16#8000,8,4,10,6,);
B(B_CONTACT,,EnableAutoTuning,5,3,7,5,R);
B(B_COMMENT,,Enable Auto Tuning,2,1,12,2,);
L(1,4,5,4);
L(7,4,10,4);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_VARIN,,Set_Value_SP,9,2,11,4,);
B(B_VAROUT,,PidParameters.SP,11,2,13,4,);
B(B_COMMENT,,Fill the DUT PID_DUT_31 with the corresponding values,2,1,24,2,);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 2 ;
        NETWORK_BODY
B(B_VARIN,,Process_Value_PV,9,0,11,2,);
B(B_VAROUT,,PidParameters.PV,11,0,13,2,);
L(1,0,1,2);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters,8,5,10,7,);
B(B_F,F355_PID_DUT!,Instance,10,3,18,7,,?DEN?D@'s'?AENO);
B(B_COMMENT,,Carry out the PID arithmetic,2,1,21,2,);
L(1,5,10,5);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters.MV,9,2,11,4,);
B(B_VAROUT,,Output_Value_MV,11,2,13,4,);
B(B_COMMENT,,Write manipulated value to the output,2,1,21,2,);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

(* Auto Tuning: *)
if DF(EnableAutoTuning) then
    PidParameters.Control:=16#8000;
end_if;
(* Fill the DUT PidParameters with the corresponding input values: *)
PidParameters.SP:=Set_Value_SP;
PidParameters.PV:=Process_Value_PV;
(* Carry out the PID arithmetic: *)
F355_PID_DUT(PidParameters);
(* Write the manipulated value to the output: *)
Output_Value_MV:=PidParameters.MV;

AWL-Rumpf

Letzte Änderung am: 2021-07-28Feedback zu dieser SeitePanasonic Hotline