PID Regulator

Hej

Jeg tror jeg skal til at lave sådan noget, og jeg har sku ikke meget forstand på det endnu..

Det skal puttes i en uC.... Jeg har de basic principper på plads og kan finde lidt source kode...

Nogle der har nogle fif etc. PT er jeg modtagelig over for alt...

Problemet ligger også lidt i jeg ikke er så hardcore til det integral regning :(

Kasper

Reply to
Kasper
Loading thread data ...

Det er også mange år siden jeg gik i skole, men så er det jo godt vi har det her inderweb:

formatting link

Lad os sige du skal til at regulere i din kode, noget som du gør 1 gang i sekundet, gør noget i stil med at beregne:

0.0) Set-punktet, s: Den værdi du gerne vil ramme. 0.1) Feedback, f: Den værdi du lige har målt.

1.0) Fejlen, e = f-s

1.1) Summen af fejlen over tid, ei += e 1.2) Ændingen i fejl siden sidste gang, ed = e-eo

2) P = Kp * e Kp kunne f.eks. være 0.1, så med en fejl på 10 giver det en regulering af outputet på 1

3) I = Ki * ei Ki er typisk meget, meget lille, noget i stil med 0.0001

4) D = Kd * eo

5) Output o += P + I + D

6) Husk e som eo til næste iteration.

PID står for proportional, Integral, Differential.

P delen betyder bare at justeringen er lig en eller anden del af fejlen, så hvis der er en stor fejl så skal der reguleres meget for at komme nærmere setpunktet.

I delen er til for at give fejlen det sidste lille nøk så feedback rammer setpunktet, det er nødvendigt fordi P bliver meget tæt på nul og dermed kunne man jo risikere at man slet ikke rammer.

D delen er til for at man kan reagere hurtigt på ændringer.

Tricket består i at fedte med Kp, Ki og Kd ind til skidtet virker (i den rækkefølge).

Reply to
Flemming Frandsen

Hej

Tak, Tror sku jeg fattede største delen af det du skrev :)

Reply to
Kasper

Kasper skrev:

Hvad skal du regulere? Hvad er kravene?

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
Jokeren i "Mænds ruin"
Reply to
Mikkel Lund

I første omgang er det en Danfoss ventil med 6-18V input der styrer noget hydralik, hvor der sidder et potmeter til FB.

Men regulatoren skal gerne kunne fungere lidt generalt til flere typer signaler, men til ca samme applikationer...

Så det er noget med en sampletid hurtigere en 100ms

Kasper

Reply to
Kasper

Kasper skrev:

Det var ikke helt det jeg fiskede efter. For at bestemme hvilken regulator af PID typen der skal til, skal skal man have viden om systemet der skal reguleres. Man kan ikke bare sætte en hvilken som helst regulator på, systemet kan gå hen og blive ustabil.

Skal du positions eller hastigheds regulere? Og hvilke krav er der til det? Hvilke sensorer har systemet? Hvis der ikke er nogen særlige krav ("den skal bare kører op og ned") hvad skal du så bruge en regulator til?

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
Jokeren i "Mænds ruin"
Reply to
Mikkel Lund

Posistions regulere en hydralisk arm.

Og hvilke krav er der til

Den må abselut ikke hunte, og gerne være rimelig hurtig på plads.

Hvilke sensorer har systemet? Som regel potmeter fb, i form af et stang potmeter der følger den hydraliske arn

Den skal køre til en bestemt possition,

Kasper

Reply to
Kasper

Punkt 1.1, skal den aldrig resetes ? når man når punktet ?

Kasper

Reply to
Kasper

Kasper skrev:

Hmm, det er ikke så videnskabeligt... Byg en PI regulator den har ikke steady state fejl, så hydraulikken vil ramme det du sigter efter. Tilføj så D hvis det skal gå hurigere og med mindre overshot. Jeg gad nok ikke lave en regulator hvis det bare skulle gå rimeligt hurtigt :-)

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
Jokeren i "Mænds ruin"
Reply to
Mikkel Lund

Så sig frem :)

Jeg skal bare have et system der aldrig pendler, som står stille når det har ramt possitionen Kasper

Reply to
Kasper

Kasper skriver:

Det skal vel modvirke drift i hydreulikken ?

Jeg har været med til at regulere på "mellemstore" hydrulikstempler (med

200 bars tryk), de kunne godt finde på at drive lidt, under belastning.

Klaus

--
  Modelbane Europas hjemmeside: http://www.modelbaneeuropa.hadsten.dk
  Modeltog, internet, gratis spambekæmpelse, elektronik og andet:
                 http://home6.inet.tele.dk/moppe
Reply to
Klaus D. Mikkelsen

Det er vel sandt ja.

Kasper

Reply to
Kasper

Kasper skrev:

Nå så der var krav alligevel :-) Så ville jeg bruge PI, der er over dæmpet. Husk P ledet ti gange større end I ledet.

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
Jokeren i "Mænds ruin"
Reply to
Mikkel Lund

Nej, ikke så vidt jeg husker, men jeg kan ikke lige se noget galt i at gøre det.

Ki er meget, meget lille og der er relativt få loops til at akkumulere fejl på inden man rammer setpunktet, så I betyder ikke ret meget.

Reply to
Flemming Frandsen

Hej

Yderligere spørgsmål:

Hvordan håndtere man dødbånd ?

Hvis der er et område omkring 0 action punktet der heller ikke sker noget, så den kommer pænt på plads ?

Kasper

Reply to
Kasper

Det gør man måske slet ikke...

PID skulle jo netop bruges til at ramme nøjagtigt det man gerne vil, uden nogen bang-bang regulering eller hysterese.

Med mindre det er for at spare el så pumpen bliver stoppet helt når du har ramt så er det ikke noget jeg ville tænke videre over.

Reply to
Flemming Frandsen

Hej..

Det er nu mere det dødbånd der er på den ventil jeg regulere på, der er ca

1V på hver side af no action punktet hvor den ikke åbner ? men måsje bare PID parameterne styrer det ?

Jeg har et andet problem med I værdien jeg regner ud...

Når jeg vil kører den ene vej, så kører den faktisk for langt pga af den, da jo bliver meget høj når der er en stor fejl, og når fejlen bliver mindre er den meget længere tid om at blive lille, og dermed udligner den P værdien så den stopper et forkert sted ??

Kasper

Reply to
Kasper

Kasper skrev:

Der må du lave et hack. Hvis outputtet er positivt plus en, hvis negativ minus en eller nul intet.

Det er det der hedder overshoot, dvs for stort I-gain.

Har du lavet en fejl. Du skal gange p med fejlen og så integrere den. Husk p mindst 10 gang størrer end i-gain.

--
Hilsen Mikkel Lund
"Sund fornuft, har aldrig stoppet en tosse"
Jokeren i "Mænds ruin"
Reply to
Mikkel Lund

Aaah, right, det er vel bare et spørgsmål om at eliminere den døde zone i ventilen så den makker ret, noget i stil med:

outputVold = output > 0 ? output + deadbandPos : output - deadbandNeg;

output er den værdi du gerne vil have ventilen styret efter. outputVold er den værdi som ventilen får.

deadbandPos og deadbandNeg skal så kalibreres så du undgår crossover forvrængning i ventilen.

Du husker på at Ki skal være meget, meget mindre end Kp, ikke?

En anden ting at huske på er at det ikke er et normalt problem at fejlen starter med at være meget stor, så I når ikke at blive stor før fejlen er forsvundet.

Reply to
Flemming Frandsen

"Den" er her fejlen over tid.

Du kan selvfølgelig også integrere P, det eneste der sker ved det er at Ki skal være Kp større end hvis det er fejlen der bliver integreret.

Reply to
Flemming Frandsen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.