PID-Regler programmieren - Hilfe

Toddy80

Level-1
Beiträge
160
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich muss einen PID-Regler programmieren. Wie der Quelltext dazu aussieht weiß ich, allerdings weiß ich nicht, wie ich die Parameter bestimmen kann.

ks,Tg,Ta,Tu sollen eingebbar sein. Benötige ja aber denn noch T1,kd,Tv,kr. Wie kann ich die berechnen?

Gruß

Thorsten
 
Schaut euch das mal an. Das ist doch kein PI-Regler oder? Auf das Beispiel wollte ich gerne aufbauen. Verstehe aber nicht ganz wie die wilden Formeln für Tn und Tv zu stande kommen.

(* PI- Regler nach Y.Takahashi
Var_Input
Tu Verzugszeit in s
Ta Abtastzeit in s ca. 1/20 der Ausgleichszeit
Tg Ausgleichzeit in s
Tn:= 2 * (Tu+Ta/2)*(1-(0,75*Ta/(Tu+Ta)))
Tv:= 0,42 * (Tu+Ta) * (1-(0,25*Ta/(Tu+Ta/2)))

Ks x/y z.B. 100% leistung /32000 (Analogausgang) -> Verstärkung
Kpr:= 1,2/Ks * Tg / (Tu+Ta) * (1-(0,25*Ta/(Tu+Ta/2)))
Berechnung der Stellgroesse nach der Trapezregel PI
y = y_n-1 + Kpr(1+Ta/(2Tn)+Tv/Ta) * e_n - Kpr(1-Ta/(2Tn) + 2Tv/Ta) * e_n-1 + Kpr(Tv/Ta) * e_n-2
en = Regeldifferenz w - x

Kurzform :

y = y_n-1 + c0 * en + c1 * e_n-1 + c2 * e_n-2
c0 = + Kpr ( 1+ Ta/(2Tn) + Tv/Ta )
c1 = - Kpr ( 1- Ta/(2Tn) + 2Tv/Ta )
c2 = + Kpr ( Tv/Ta )
*)

tick(IN:= NOT tick.Q, PT:= REAL_TO_TIME(Ta*1000));
IF NOT tick.Q THEN
Tn:= 2 * (Tu+Ta/2)*(1-(0.75*Ta/(Tu+Ta)));
Tv:= 0.42 * (Tu+Ta) * (1-(0.25*Ta/(Tu+Ta/2)));
Kpr:= 1.2/(Ks) * Tg / (Tu+Ta) * (1-(0.25*Ta/(Tu+Ta/2)));
y:= y + (Kpr*(1+Ta/(2*Tn)+Tv/Ta) *(w-x) - Kpr*(1-Ta/(2*Tn) + 2*Tv/Ta) * (w-e1) + Kpr*(Tv/Ta) * (w-e2))/5;
(* Begrenzung der Stellgroesse *)
IF y > 100 THEN
y:=100;
END_IF;
IF y<0 THEN
y:=0;
END_IF;
(* e_n-2 *)
e2:=e1;
(* e_n-1 *)
e1:=x;
END_IF;
 
schau mal bei der Firma Berthel vorbei. Da gibt es meines Wissens Regler mit Beschreibung zum runterladen für S7 und deren eigene Steuerungen.
Muß heute abend in der Firma mal schauen, da hab ich noch ein Script zu Reglern rumliegen, wo alles (auch für mich) verständlich erklärt war.
TH
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schaut euch das mal an. Das ist doch kein PI-Regler oder? Auf das Beispiel wollte ich gerne aufbauen. Verstehe aber nicht ganz wie die wilden Formeln für Tn und Tv zu stande kommen.

(* PI- Regler nach Y.Takahashi
Var_Input
Tu Verzugszeit in s
Ta Abtastzeit in s ca. 1/20 der Ausgleichszeit
Tg Ausgleichzeit in s
Tn:= 2 * (Tu+Ta/2)*(1-(0,75*Ta/(Tu+Ta)))
Tv:= 0,42 * (Tu+Ta) * (1-(0,25*Ta/(Tu+Ta/2)))

...

Meister Takahashi hat hier einen adaptiven PI-Regler beschrieben.
Tu und Tg sind die Parameter der Regelstrecke, die entweder vorher per Hand oder online durch eine geeignete Software ermittelt werden müssen.

Aus diesen Parametern und der Abtastzeit werden dann die richtigen (adaptierten) Werte für Tn und Tv berechnet.

Wenn die Werte der Strecke bekannt sind, gib sie halt mit ein, wenn das nicht benötigt wird greife auf einen PID-Algorithmus nach 0815 zurück.
 
Danke für die Antworten. Was ist denn mit adaptierten Regler gemeint? Die Werte Tu und Tg und ks bekommt der Regler von einem Leitrechner. Streckenparameter sind mir nicht bekannt, ist eine Temperaturregelung für eine Halle.
Ich dachte dass ich einen einfachen PID-Regler (evt. PI) nehme und die Werte, die vom Leitrechner kommen (Tu,Tg,ks) umrechnen kann und damit den PI-Regler betreiben kann. Oder würdet ihr mir raten den vorhandenen Quelltext einfach für die Halle zu übernehmen?

Tn:= 2 * (Tu+Ta/2)*(1-(0,75*Ta/(Tu+Ta)))
Tv:= 0,42 * (Tu+Ta) * (1-(0,25*Ta/(Tu+Ta/2))

In der Berechnung sind so komische Faktoren drin, ist wahrscheinlich etwas schlecht falls man danach mal gefragt wird was das alles ist bzw. wie sie zu stande gekommen sind.
 
Danke für die Antworten. Was ist denn mit adaptierten Regler gemeint? Die Werte Tu und Tg und ks bekommt der Regler von einem Leitrechner. Streckenparameter sind mir nicht bekannt, ist eine Temperaturregelung für eine Halle.

Der Leitrechner liefert Dir die Parameter der Strecke, falls Dir die Begriffe Verzugszeit und Ausgleichszeit nicht geläufig sind, ist nun der geeignete Zeitpunkt gekommen, die Bearbeitung des Projektes für ein wenig Recherche zu unterbrechen...;)

Ich dachte dass ich einen einfachen PID-Regler (evt. PI) nehme und die Werte, die vom Leitrechner kommen (Tu,Tg,ks) umrechnen kann und damit den PI-Regler betreiben kann. Oder würdet ihr mir raten den vorhandenen Quelltext einfach für die Halle zu übernehmen?
Wie lautet denn die Aufgabenstellung, es scheint ja ein funktionierendes System zu geben:confused:

Adaptiv meint, die Parameter des Reglers werden Online an die Parameter der Strecke angepaßt, da diese eben nicht statisch sind.
Du kannst jetzt auf die Adaption verzichten, wenn die Strecke sich nicht ändert oder Du übernimmst das vorhandene.
Oder Du kannst die Parameter des Reglers auch selber online nachführen und dann einem konventionellen PID-Regler übergeben.

In der Berechnung sind so komische Faktoren drin, ist wahrscheinlich etwas schlecht falls man danach mal gefragt wird was das alles ist bzw. wie sie zu stande gekommen sind.

Der Meister (oder eben seine Schüler) haben diese 'komischen Faktoren' in harter Arbeit ermittelt, um damit adaptive PI-Regler für eine bestimmte Klasse von Regelstrecken bauen zu können.
Takahashi ist sowas wie das asiatische Pendant zu Ziegler-Nichols.

Sitzt Du gerade an einer Art Abschlußarbeit?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Meister (oder eben seine Schüler) haben diese 'komischen Faktoren' in harter Arbeit ermittelt, um damit adaptive PI-Regler für eine bestimmte Klasse von Regelstrecken bauen zu können.
Takahashi ist sowas wie das asiatische Pendant zu Ziegler-Nichols.

Aber diese Faktoren kann ich nirgendwo im Internet finden. Es besteht bereits eine Halle mit dieser Regelung. Wollte nun alles besser und übersichtlicher machen und auch wenn möglich neuen Regler programmieren. Die Eingangswerte werden über eine Visualisierung angepasst - es ist eine Gebäudeautomation.

Keine Abschlussarbeit, bin seit 4 Wochen mit Studium fertig und nun am arbeiten :)
 
Zurück
Oben