PID Controller in MatLAb

Gast #4880416
Hallo,

ich hoffe hier kann mir jemand helfen.
Ich muss in MatLab die Temperatur eines Durchlauferhitzers über einen 
PID-Controller regeln. Nun habe ich leider nicht so viel Erfahrung im 
Programmieren und die Umsetzung fällt mir dementsprechend schwer.

Wenn jemand über meinen Code schauen könnte und mir sagen kann ob der 
logische Aufbau so weit ersteinmal stimmt oder nicht wäre mir schon sehr 
geholfen.

Vielen Dank!



T_HM_soll ist die Führunsgröße

while T_HM < T_HM_soll

    k=k + 1;

        error=T_HM_soll-T_HM;

        %integration
        int_error = int_error + (error * Dt);

        if int_error > 2                       %I-Anteil begrenzen
            int_error = int_error + error;

        end

        % differentiation
        diff_error = (error-prev_error) / Dt;

            % scaling
            p_term = (Kp * error);
            i_term = (Ki * int_error);
            d_term = (Kd * diff_error);

            % Summe
            control = p_term + i_term + d_term;

        % alten Fehler mit aktuellem Fehler überschreiben
        prev_error = error;

        dT_HM = control;

    time = time + Dt;
    T_HM = T_HM_V + dT_HM;

    disp(T_HM)
    Results(k,:)=[ T_HM, time];
    disp(Results)

end
Gast
Also. Schreib den Regler zuerst mal als P-Regler. Den kannst du 
durchsteppen, bis er das tut was er soll. Dann fuegst du einen I-Anteil 
hinzu. Und setzt den P-Anteil auf Null. Wieder durchsteppen, bis es tut 
was es soll. Dann beides kombinieren.

Allenfalls kannst du die Werte auch als Graph in ein Fenster malen.
Gast
PID schrieb:
> while T_HM < T_HM_soll

TROLL Dein Code ist bullshit! Deine 'Regelung' funktioniert nur 
solange T_HM (aktuelle Temperatur?) kleiner als die Führungsgroße ist; 
oberhalb findet keine Regelung statt!!!

Meine TROLL Meinung:

MATLAB besitzt Module die für die Auslegung von Regelungen gedacht sind! 
- Wenn du diese besitzt (muss man extra kaufen) dann benütz sie, 
ansonsten verwende besser Scilab!

Dort heist das irgendwie computer aided control design oder so. - Die 
Parameter der Regelstrecke erst mal bestimmen und dann dafür eine 
passende Regelung entwerfen, die dann ganz hübsch mit besagter Software 
simuliert werden kann.

Wie's scheint würd's nicht schaden, wenn dich ein bisschen über 
Regelungen schlau machen würdest! Wikipedia hat da einiges zu bieten ;) 
- probiers mal mit Regelung, Regelstrecken usw.

lg
Gast
> TROLL Dein Code ist bullshit! Deine 'Regelung' funktioniert nur
solange T_HM (aktuelle Temperatur?) kleiner als die Führungsgroße ist;
oberhalb findet keine Regelung statt!!!


Naja. Wenn die Solltemperatur ueberschritten ist, schaltet das 
Kuehlagregat zu, resp, wird die Dusche eingeschaltet. Das wird hier 
nicht betrachtet.
Vielen Dank für die Antworten.

Wenn es die Nachwelt interessiert, hier ist der Code welcher nun bei mir 
wie gewünscht funktioniert hat.

Viele Grüße

%% Integration Loop
while abs(T_soll-T_ist) > error_max


    %% PID
    error = (T_soll-T_ist);


    error_int= error + error_int;


    error_diff= (pre_error-error)/Dt;

    T_ist=T_ist+(error*Kp + error_int*Ki + error_diff*Kd);


    pre_error=error;




end
Der Integration Loop laeft auch nur bis er aufgeheizt hat, bis

T_soll - T_ist <= error_max

erreicht ist, dann fliegt er raus und beendet. Da ist nichts mit 
Temperatur halten oder so ... eigentlich ist ein Zweipunkt Regler, der 
oben ausschaltet, und ausgeschaltet bleibt, genauso gut.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.