Temperaturregelung (ja, sry, schon wieder ;o) mit PIC

OP (Firma: ATM GmbH) #1011350
Hallo!

Ich bin ein ziemlicher Neuling auf dem Gebiet der dig. Regelungstechnik, 
habe mich aber trotzdem an einer Temperaturregelung eines sehr langsamen 
Systems versucht.
Folgendes Stück Code ist dabei raugekommen:
1
  #define I_BEGR      30
2
  #define TA      1
3

4
        float Kp = 0.4;
5
        float Ki = 0.85;
6
  float pAnteil = 0;    
7
  static float iAnteil = 0;
8
  float e = 0;    
9
  static float esum = 0;  
10
  char outputPower = 0;       // in %
11
  float Ta = TA;         // In Sek.
12
  
13
  e = (float) (presetTemp - currentTemp);
14

15
  // P-Anteil
16
  pAnteil = (e * Kp);
17

18
  if (pAnteil > 100)  { pAnteil = 100; }
19
  else if (pAnteil < 0)  { pAnteil = 0; }
20
  
21
  if (TIMER_REGLER >= (char) (10*Ta))
22
  {
23
    // I-Anteil
24
    esum = esum + (e * Ta);
25
    if (esum > I_BEGR)  { esum = I_BEGR; }
26
    else if (esum < 0)  { esum = 0; }
27
    
28
    iAnteil = esum * Ki;
29
    
30
    TIMER_REGLER = 0;
31
  }
32
            
33
  outputPower = (int) (pAnteil + iAnteil);

Heraus kommt die geregelte Temp.kurve im Anhang.
Die Einheit der X-Achse ist Minuten.

Meine Frage jetzt: Wie bekomme ich das Schwingen weg?

Vielleicht sind die Parameter jenseits von Gut und Böse dimensioniert. 
Vielleicht ist auch im Code ein grundlegender Fehler...

Vielen Dank schonmal im Voraus!
Angehängte Dateien:
OP (Firma: ATM GmbH)
Hallo!

Ach so, der Timer wird alle 100ms aufgerufen, deshalb muss er bis 10*Ta 
laufen um auf die Einheit Sek. zu kommen.

Das, was ich ansteuere ist eine Heizung. Die Regelung gibt mir eine 
Ausgangsleistung von 0 bis 100% raus, was per PWM an die Heizung gegeben 
wird. Das hat also an dieser Stelle mit der Regelung nichts zu tun.

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.