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 

 Zeitgesteuerte Vorgänge ohne "PAUSE"-Blockierung Kategorie: Programmierung Basic (von sl - 6.07.2004 23:00)
 Als Antwort auf Re: Anfänger braucht Hilfe ..... von Thomas - 6.07.2004 21:47
> >
> > > habe mir eine C Controll Station erworben.
> >
> > > Dachte es wäre einfach folgendes zu erreichen :
> > >
> > > Wenn man F1 drückt soll das Relais K1 für eine bestimmte Zeit ( die muss ich noch errechnen denke
> > > so ca. 2 bis 4 Sekunden) schalten (eine Pumpe ansteuern) und nach dieser Zeit auf eine erneutes
> > > drücken der F1 Taste abwarten.
> >
> > > Kann mir da jemand helfen ?
> >
> > Ja. Wo klemmt's denn?
> >
> > Hast Du die Bedienungsanleitung gelesen? Da ist ein sehr ähnliches Beispiel drin,
> > wenn ich mich recht erinnere.
> >
> > Bye
> >  Achim
>
> Hallo Achim,
> stimmt dieses Programm verarbeitet aber keine Zeit .... meine man kann an und aus schalten ....
>
> Gruss
> Thomas


Hallo Thomas
und Hallo alle anderen Programmieranfänger

DIESE Frage von Thomas ist so KONKRET, dass man
sehr gut darauf antworten kann.

Nehmt euch ein Beispiel daran. Je konkreter die Frage desto
schneller kommt eine Antwort.

zu
Fragen wie wer hat Erfahrung mit...
ich will gerne A-Z machen

müßte man als Antwort ein Buch schreiben
darauf hat keiner Bock also möglichst konkrete Teilfragen
Schritt für Schritt

die geilsten Frage-Antwort-Threads sehen so aus

-konkrete Frage1
--Antwort1
---konkrete Frage2
----Antwort2
-----konkrete Frage3
------Antwort3
usw. usw. usw. usf.

globale oder unkonkrete Frage
Pi mal Daumen-Antwort
Ende     AUS     V O R B E I


eine ganz einfache Variante 2-4 Sekunden zu "warten"
ist der Befehl

"pause"

für zwei Sekunden warten
pause 2 * 50 wartet 2 Sekunden
pause 4 * 50 wartet 4 Sekunden

d.h. aber auch der Prozessor macht so lange Urlaub und man kann nichts anderes in der Zwischenzeit machen
bis er aus dem Urlaub zurück kommt

eine elegantere Variante ist folgendes


Define Sekundenspeicher Word           'definiere Variable Namens "SekundenSpeicher als 16 bit RAM-Variable (16 bit = word)"

Define WarteZeitInSekunden 10          'definiere Konstante Namens "WarteZeitInSekunden" mit dem Wert "10"
                                       'Das Programmieren einer Konstanten für die WarteZeit hat den Vorteil,
                                       'daß man nur an einer Stelle (nämlich hier oben) im Programm die Wartezeit ändern muß.
                                       'Das ist letztendlich übersichtlicher.


#ZeitSpeichern
  Sekundenspeicher = Second                                 'Sekundenstand speichern (z.B. a.) SekundenSpeicher = 33,  b.) SekundenSpeicher = 57


#Warteschleife                         'wenn Bedingung erfüllt (z.B. a.) second = 43: 43 - 33 = 10 = WarteZeitInSekunden
                                       'b.) second =  7:  7 - 57 = -50 = -(60 - 10)
                                       'ist, sind WarteZeitInSekunden vergangen und Schaltvorgang wird ausgelöst
  If(second - Sekundenspeicher = Wartezeitinsekunden) Or(second - Sekundenspeicher = -(60 - Wartezeitinsekunden)) Then Goto MachWasZeitgesteuert

Goto Warteschleife


#MachWasZeitgesteuert

Goto ZeitSpeichern


alle Programmvorgänge die schnell und regelmäßig durchlaufen werden sollen

also warten ob eine Taste gedrückt wird
Temperaturwerte kontrollieren usw.

müssen zwischen

"#Warteschleife"

und

"Goto Warteschleife"

eingebaut werden

alle Vorgänge die nur alle 1- 59 Sekunden EINMAL
gemacht werden sollen werden über die obige Konstruktion
aufgerufen

d.h. man kann das ganze für mehrere Sachen mit unterschiedlichen Wartezeiten machen


Define SekundenspeicherLampe Byte          
Define SekundenspeicherPumpe Byte          

Define WarteZeitInSekundenLampe 2        
Define WarteZeitInSekundenPumpe 4        
                                       
                                       
#ZeitSpeichernLampe
  SekundenspeicherLampe = Second            
  Goto Warteschleife      'Kommentar: der Programmteil "#ZeitSpeichernPumpe" muss übersprungen werden
 
 
#ZeitSpeichernPumpe
  SekundenspeicherPumpe = Second            
  Goto Warteschleife


#Warteschleife                        
  If(second - SekundenspeicherLampe = WartezeitinsekundenLampe) Or(second - SekundenspeicherLampe = -(60 - WartezeitinsekundenLampe)) Then Goto MachWasZeitgesteuertLampe
  If(second - SekundenspeicherPumpe = WartezeitinsekundenPumpe) Or(second - SekundenspeicherPumpe = -(60 - WartezeitinsekundenLampe)) Then Goto MachWasZeitgesteuertPumpe

Goto Warteschleife


#MachWasZeitgesteuertLampe
... deine Programmzeilen
Goto ZeitSpeichernLampe


#MachWasZeitgesteuertPumpe
... deine Programmzeilen
Goto ZeitSpeichernPumpe


#Name bezeichnet eine bestimmte Programmstelle
an die das Programm mit dem Befehl Goto Name
hinspringt


sl

 Antwort schreiben

Bisherige Antworten:

Re: Zeitgesteuerte Vorgänge ohne "PAUSE"-Blockierung (von ManfredW - 7.07.2004 0:18)
    Re: Zeitgesteuerte Vorgänge ohne "PAUSE"-Blockierung (von Thomas - 7.07.2004 15:23)