HJKL Skrevet 30. mai 2019 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?
BigJackW Skrevet 30. mai 2019 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.
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å