# PID-Regler programmieren - Hilfe



## Toddy80 (1 Oktober 2007)

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


----------



## mr.binford (1 Oktober 2007)

....folge diesem link:

http://www.energietechnik.fh-dortmu...ler_infos/TIA_Module/B03_Regelungstechnik.pdf


----------



## gravieren (1 Oktober 2007)

Hi

Du wilsst den PID Regelalgorytmus programmieren ?


Also eine Regler selbst schreiben ?


Fall ja, schau dir den von OSCAT an.

Sourcecode für CoDeSys und Step 7


----------



## Toddy80 (2 Oktober 2007)

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;


----------



## thomass5 (2 Oktober 2007)

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


----------



## PeterEF (2 Oktober 2007)

Toddy80 schrieb:


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


 
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.


----------



## Toddy80 (2 Oktober 2007)

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.


----------



## PeterEF (2 Oktober 2007)

Toddy80 schrieb:


> 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 

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?


----------



## Toddy80 (2 Oktober 2007)

PeterEF schrieb:


> 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


----------



## PeterEF (3 Oktober 2007)

Toddy80 schrieb:


> Aber diese Faktoren kann ich nirgendwo im Internet finden.


 
z.B. dies: http://user.cs.tu-berlin.de/~calle/unterlagen/reg.pdf



> Keine Abschlussarbeit, bin seit 4 Wochen mit Studium fertig und nun am arbeiten


 
Viel Spaß dabei!


----------

