Forum: Compiler & IDEs PID Reglelalgorithmus- Wertebereich von -.+ oder 0.MAX ?


von Andy S. (andy11)


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.

von Purzel H. (hacky)


Lesenswert?

Ja. Sicher kann das. Da muss man immer aufpassen. Ich arbeite jeweils in 
Longint und schneide am Schluss ab.

von Andy S. (andy11)


Lesenswert?

Dümmlicher Knilch schrieb:
> Ich arbeite jeweils in
> Longint und schneide am Schluss ab.

Dh du verwendest generll einen positiven Wertebereich?

Aber wieso schneidest du dann ab, wenn du den Wertebereich von -1020 ... 
1020 auf 0...2040 umwandeln kannst?
Verlierst du dann nicht wichtige Informationen oder wie ist das gemeint?

lg andy

von Simon K. (simon) Benutzerseite


Lesenswert?

Ohne "symmetrischem" Eingang funktioniert der Algorithmus doch gar 
nicht. Der I Regler würde nur noch aufsummieren, bei Werten > 0.

von Andy S. (andy11)


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

von JW (Gast)


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.

von Simon K. (simon) Benutzerseite


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.

von Andy S. (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.