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).
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"
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"
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 ??
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.
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.