Trond15 Skrevet 28. februar Del Skrevet 28. februar Hei Jeg skal lage en funksjonsblokk med PID regulator i strukturert tekst. Det jeg lurer på er om noen kan fortelle meg hvordan formellen for I - leddet blir ? Lenke til kommentar
Nedward Skrevet 1. mars Del Skrevet 1. mars (endret) Integralet er egentlig bare området under en kurve hvor tiden er X-aksen og reguleringsavviket er Y-aksen. Dermed blir omtrent slik: integral := integral + error; Integraltiden er invers av integral-forsterkningen: Ti := 1/ki Men du må ta i betraktning at integralet nå oppdateres hvert scan / hver syklus. Du kommer til å få overflow veldig fort. Det jeg har gjort tidligere er følgende: VAR error : REAL; //Reguleringsavvik derivative : REAL; //D integral : REAL; //Integral ki : REAL; //I-gain END_VAR VAR_INPUT clk : BOOL; //Denne brukes for å ikke kjøre PID-instruksjonen kontinuerlig. Kan eventuelt bruke positiv flanke på CP til EN. PV : REAL; SP : REAL; kp : REAL; //P-gain kd : REAL; //D-gain Ti : REAL; //I-tid END_VAR VAR_OUTPUT out : REAL; END_VAR //Integral-gain er invers av I-tid. ki := 1.0/Ti //Sjekk om det er stigende flanke på clk-input IF clk AND (clk <> clk_last) THEN error := SP - PV; derivative := error - error_last; integral := integral + error; out := ((kp*error)+(ki*integral)+(kd*derivative)); END_IF; clk_last := clk error_last := error; Det er 3-4 år siden jeg drev på med dette sist, så det kan hende at syntaksen er litt ute å sykler. Men prinsippet er at man ikke oppdaterer PID-regulatoren hvert scan. Ting har en tendens til å gå veggimellom hvis dette oppdateres like fort som programmet utføres. Merk også at jeg bruker integral-forsterkning for å finne pådraget. Integralforsterkningen er det motsatte av integraltid, så jeg har egentlig bare invertert integraltiden for å finne integralforsterkningen. Det er enklere slik, syns jeg. Jeg har også kalt det D-gain, men det er det samme som D-tid. Kd = Td, så det spilller ingen rolle sånn sett. Alle tidsenheter er i sekund. Så må du vurdere om du skal ha begrensinger på størrelser i regulatoren og filter på D-leddet. Det kommer til å gå bananas med det samme du starter reguleringen siden endring fra ~0 til en annen størrelse er ganske stor. Erfaringsmessig så fungerer dem ganske bra når man har investert litt tid på finpuss på filter og begrensninger. Endret 2. mars av Nedward Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå