Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Wichtig!! Division durch Null killd meinen Mega32 Kategorie: CC-Pro Unit & Appl.Board (von Hannes - 19.08.2006 16:47)
Ich nutze:
C-Control Pro Mega32, eigenes Board
Ich schreibe gerade an ein Reglerprogr. für einen PI-Regler. Das ganze Programm hat
einen Bytecode von ca. 2kB. Das Programm soll die Temp. von "Irgendwas" regeln, die
Regelparameter werden am LCD angezeigt, T_Soll, Kp, Tn können während der Regelung
mit einem Drehimpulsgeber beliebig verändert werden.

Die Funktion "PI_Regler_Heizen" wird alle 500ms aufgerufen und Xd, Xds und Y werden
jedesmal neu berechnet.

Das Programm ist super gelaufen, bis ich Tn auf " 0 " gesetzt habe.
Das LCD hat dann nach ein paar Sekunden nur noch wirre Zeichen angezeigt und dachte jetzt
ist er abgestürtzt. Seitem ist das Modul tot! Es startet das Programm nicht mehr,
und auch der Bootloader Modus beim Einschalten + SW1 kann nicht mehr aktiviert werden.
Das Modul meldet sich nicht mehr.

Ich weis, eine Division durch Null ist nicht definiert, das sollte aber das Modul nicht
killen! Ich denke, dass dieser undefinierte Zustand irgendwas im System überschrieben hat.
Wie reglet das System diesen speziellen Fall????????

Kann ich jetzt das Modul umtauschen? Einen 40EUR Verlust kann ich in diesem Fall nicht
akzeptieren.

Gruss
 


// hier die relevanten Programmdaten:

float T_Ist, T_Soll, Xd, Xds, Kp, Tn, Ta, Y;         // globale Variablen

                                                                     // Startwerte
Ta = 0.5;                                                        // Abtastzeit
Kp = 10;                                                         // Proportionalitätsfaktor
Tn = 1;                                                           // Nachstellzeit
T_Soll = 30;                                                    // Solltemperatur
                                                                      // T_Ist wird von ADC0 eingelesen
 


void PI_Regler_Heizen(void)                             // Aufruf alle 500ms
{
    Xd = T_Soll - T_Ist;                                      // Xd = Regeldifferenz

    Xds = Xds+Xd;                                            // Xds = Summe aller Xd

    Y = Kp*Xd + Kp*(Ta/Tn)*Xds;                      // Y = Stellgrösse


}



    Antwort schreiben


Antworten:

Re: Wichtig!! Division durch Null killd meinen Mega32 (von PeterS - 20.08.2006 10:05)
    Re: Wichtig!! Division durch Null killt meinen Mega32 (von Hannes - 21.08.2006 8:41)
        Re: Wichtig!! Division durch Null killt meinen Mega32 (von PeterS - 21.08.2006 10:05)