PID Controller in MatLAb

Gast #4880416
Lesenswert?
• ▲
▼
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 #4880822
Lesenswert?
• ▲
▼
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 #4880888
Lesenswert?
• ▲
▼
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 #4880934
Lesenswert?
• ▲
▼
> 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.
#4883017
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.