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: zeitverzögerung Kategorie: Programmierung Basic (von Achim - 16.09.2005 9:01)
 Als Antwort auf Re: zeitverzögerung von renate - 16.09.2005 8:44
Achim nutzt:  CC1-Station V1.1
> > > > > habe eine frage : ich habe eine steuerung programmiert, um eine pumpe zu steuern (an/aus), nun
> > > > > möchte ich aber, dass diese pumpe nach unterschreitung einer bestimmten temperatur noch eine minute
> > > > > weiterläuft und nicht sofort ausgeht ! kann mir jemand helfen ??
> > > >
> >
> > Dann musst Du an geeigneten Stellen abprüfen, ob die Minute um ist.
> >
> > if temp >= schwellwert then goto warm
> >   pumpen_timer_laeuft = on
> >   pumpen_timer = timer
> > #warm
> >
 
danke achim es hat mich schon ein stückchen weiter gebracht aber trotzdem bekomm ich es nicht zum laufen ! ich zeig dir einfach mal mein programm und hoffe mal du kannst den fehler finden :)
 
> define temp1 ad[1]
> define temp2 ad[2]
> define pumpe port[1]
> define pumpen_timer_laeuft byte

pumpen_timer muss ein word sein, wie Du weiter unten bereits richtig erkannt hast.

> define pumpen_timer byte
> define y byte
>
> #loop
> y = abs(timer - pumpen_timer)
>
> print "timer =",pumpen_timer
> print "y=" , y
>
> if temp1 < temp2 then goto timer1 else goto pumpe_an
>
>
> #timer1
>    pumpen_timer_laeuft = ON
>    pumpen_timer = timer
> if pumpen_timer_laeuft = ON AND abs(timer - pumpen_timer) > 60 * 50 then gosub pumpe_aus else goto weiter

Du setzt den Pumpen-Timer ja jedesmal neu, solange temp1 < temp2 ist. Kein Wunder, dass die Pumpe ewig läuft (unabhängig von dem Fehler, den Wert in einem byte zu speichern).

Da Du jetzt entgegen Deiner Aussage doch eine Schleife hast, muss in timer1 noch eine if-Abfrage rein, die das Neu-Setzen des Pumpen-Timers verhindert, wenn der Timer bereits läuft. (Lasse ich Dir jetzt mal zur Übung, das zu codieren.) ;-)

> mir ist aufgefallen das der timer bzw die abs funktion ja nie größer als 255 wird und somit auch nie größer als 60*50 = 3000 werden kann ! und somit bleibt die pumpe immer an :(

Das ist aber nur einer der Gründe. S.o.

Bye
 Achim

 Antwort schreiben

Bisherige Antworten:

Re: zeitverzögerung (von renate - 16.09.2005 9:08)
    Re: zeitverzögerung (von renate - 16.09.2005 9:28)
        Re: zeitverzögerung (von Achim - 16.09.2005 10:39)
            Re: zeitverzögerung (von renate - 19.09.2005 9:11)
                Re: zeitverzögerung (von Achim - 19.09.2005 12:02)