HJKL Skrevet 30. mai 2019 Del Skrevet 30. mai 2019 Hei! Jeg skal realisere en PI-regulator i CoDeSys. Det skal benyttes strukturert tekst og den skal realiseres kun ved hjelp av aritmetikk og timere. Jeg skjønner forsåvidt Proporsjonaldelen, men sliter litt med å lage Integraldelen. Er det noen som har noen tips? Lenke til kommentar
BigJackW Skrevet 30. mai 2019 Del Skrevet 30. mai 2019 Integraldelen er bare en summasjon for hver iterasjon. FUNCTION_BLOCK discPI VAR_INPUT rSp : REAL; // Settpunkt rY : REAL; // Målt verdi END_VAR VAR_OUTPUT rU : REAL; // Regulatorpådrag END_VAR VAR error : REAL; Kp : REAL := 1; Ti : REAL := 30; Ts : REAL := 0.1; // Samplingstid i sekunder sampler : TON; P : REAL; I : REAL; prev_I : REAL; END_VAR sampler.IN := NOT sampler.Q; sampler.PT := REAL_TO_TIME(Ts*1000); sampler(); IF sampler.Q THEN error := rSp - rY; // Beregn avvik P := Kp * error; // Proporsjonaldel I := prev_I + Kp * Ts / Ti * error; // Integrator prev_I := I; rU := P + I; END_IF Husk at du også må stoppe integratoren (summeringen) etter hvert for å unngå integrator-windup. Bumpless transfer må du også ta hensyn til når du går fra auto til manuell og motsatt. 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å