Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Probleme mit PID Regler in BASIC++ Kategorie: Programmierung Basic (von Daniel - 3.08.2007 13:59)
 Als Antwort auf Re: Probleme mit PID Regler in BASIC++ von ManfredW - 3.08.2007 10:03
Daniel nutzt:  CC1-Station V2.0
Irgendwie bekomm ich das nicht richtig hin...

Also als ich nur den I-Teil hatte, regelte das ganze noch am besten.
Der Versuch erst einen P-Teil einzustellen und dann den I-Teil dazu zunehmen ist nicht gut gegangen. Ein reiner P-Regler hat entweder nie den Sollwert erreicht, oder hat ihn überschritten. Dadurch lief der Lüfter immer stark an -> bremste ganz ab -> lief stark an...

Ich weiß nicht, wie ich das beheben soll. Hier deswegen noch meine Haupt-Routine:


DO  
     'Druckmessung
     Istwert = PCF8591_GET_AD(PCF8591, 00000000b)
     

     'Wenn Daten vom PC kommen
     IF RXD THEN
        EVAL_EVENT()  
     END IF
     
     
     'I-Regler + Senden an den DA-Port
     PCF8591_SET_DA(PCF8591, I_REGULATION(Istwert, Sollwert))

     
     PAUSE Intervall    'Intervall vordefiniert mit 50 => 1 Sekunde
LOOP


und meine I-Regulation:


FUNCTION I_REGULATION(Istwert AS BYTE, Sollwert AS BYTE)

         Luefter_aktl = Luefter_aktl + (Sollwert - Istwert) / 5         'Luefter_aktl ist eine Word-Variable
                 
         IF Luefter_aktl > 255 THEN
            Luefter_aktl = 255
         END IF
         
         IF Luefter_aktl < 0 THEN
            Luefter_aktl = 0
         END IF

         RETURN Luefter_aktl
       
END FUNCTION

 Antwort schreiben

Bisherige Antworten:

Re: Probleme mit PID Regler in BASIC++ (von ManfredW - 3.08.2007 14:31)