PID Reglelalgorithmus- Wertebereich von -.+ oder 0.MAX ?

OP #1866863
Lesenswert?

Ich sehe bei dieser einen Sache noch ein Problem:
1
//PID-Algorithmus Berechnung:-------------------------------
2
  esum = esum + differenz;                    //Integration I-Anteil
3
  y = Kp*differenz + Ki*Ta*esum + (Kd*((differenz-ealt)/Ta));    //PID-Regelalgorithmus
4
  ealt = differenz;                        //Differzenteil D-Anteil
5
  //----------------------------------------------------------

ich habe einen Wertebereich von -1020 ... 1020. Diesen Wertebereich habe 
ich linearisiert mithilfe weiterer Hardware und dann per Software die 
Sensorwerte modifiziert damit ich etwas lineares habe. Dh der Übergang 
erfolgt fließend von -1020...+1020 fließend.
Die PWM arbeitet mit 10bit also ist eine Skalierung nicht unbedingt 
notwendig.

Bei dem P-Anteil wird das y negativ oder positiv. Das ist ok. Aber bei I 
und D schaut es so aus, also wenn das nicht so funktionieren würde wie 
wenn ich einen Wertebereich von zB 0...2040 hätte.
Es sind einfach gewisse unsicherheiten, da wir in Regelungstechnik noch 
nicht so weit sind, deshalb die Frage ob da was schief gehen kann.
OP #1868075
Lesenswert?

Simon K. schrieb:
> Ohne "symmetrischem" Eingang funktioniert der Algorithmus doch gar
> nicht.

Ja symmetrisch ist der Wertebereich -10...+10 auch.
Was ich meinte war ob 0...20 besser(richtiger) wäre als -10...10

Simon K. schrieb:
> Der I Regler würde nur noch aufsummieren, bei Werten > 0.

Ok also die Bestätigung, dass negative Werte beim I Anteil nicht 
funktionieren.

lg andy
Gast #1868622
Lesenswert?

Simon K. schrieb:
> Der I Regler würde nur noch aufsummieren, bei Werten > 0.

Soll 0..2048
Ist  0..2048
Fehler (Ist-Soll) -2048..2048

Die Fehler-SUMME kann also sehr wohl 0 werden (und wird das ja 
hoffentlich auch ;-), unabhängig vom Wertebereich der Soll/Ist-Größen.
Persönliche Seite #1869438
Lesenswert?

JW schrieb:
> Simon K. schrieb:
>> Der I Regler würde nur noch aufsummieren, bei Werten > 0.
>
> Soll 0..2048
> Ist  0..2048
> Fehler (Ist-Soll) -2048..2048
Ja stimmt da hast du Recht.

> Die Fehler-SUMME kann also sehr wohl 0 werden (und wird das ja
> hoffentlich auch ;-), unabhängig vom Wertebereich der Soll/Ist-Größen.
Aber die Fehler-Summe muss "in beide Richtungen" funktionieren.
Ich versteh nämlich nicht ganz, was jetzt vorzeichenbehaftet ist und was 
nicht ;-)
Eventuell sollte ein Stück C-Code o.ä. vom Beitragersteller helfen.
Gast #1869684
Lesenswert?

Simon K. schrieb:
> Eventuell sollte ein Stück C-Code o.ä. vom Beitragersteller helfen.

Ok:
1
differenz = (sensorL0 + sensorL1) - (sensorR0 + sensorR1);     //dann berechne die Differnz

.
.
.
1
ISR(TIMER0_OVF_vect)
2
{
3
  //PID-Algorithmus Berechnung:-------------------------------
4
  esum = esum + differenz;                    //Integration I-Anteil
5
  y = Kp*differenz + Ki*Ta*esum + (Kd*((differenz-ealt)/Ta));    //PID-Regelalgorithmus
6
  ealt = differenz;                        //Differzenteil D-Anteil
7
  //----------------------------------------------------------
8
}

differenz (von den Sensoren hergeleitet) hat eine Wertigkeit von 
-1020...+1020.

Dieser Wert wird dann vom PID Algorithmus modifiziert und der 
modifizierte Wert geht dann auf die Motoren.

Also mein Frage war ob der negative Teil meiner Abweichung im I und D 
Anteil Probleme machen oder nicht, weil da wird ja was gespeichert und 
damit weitergerechnet, oder halt prinzipiell.

lg andy

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren