Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> So ich habs hinbekommen, die läuft nun Sekundengenau und > macht das was sie soll. ;) > > <code> > //////////////////////////////////////////////////////////////////////// > ////////////////////////Zeitschaltuhr Regen///////////////////////////// > //////////////////////////////////////////////////////////////////////// > > thread regen > { > string s; > byte led; > byte outport; > byte port; > byte hour, min, sec; > int time; > stports.init(); > lcdext.init(); > > /*******************************************/ > /******** ANSTEUERUNG LCD *************/ > /*******************************************/ > lcdext.print(" C-CONTROL II"); > lcdext.line(2); > lcdext.print(" STATION"); > sleep 2000; > lcdext.clear(); > > /*******************************************/ > /******** ANSTEUERUNG RELAYS *************/ > /*******************************************/ > lcdext.print(" TERRA: REGEN"); > sleep 5000; > lcdext.clear(); > > /*******************************************/ > /*********** Zeitschaltuhr Regen ***********/ > /********Es wird jeden Tag geschaltet*******/ > /*******************************************/ > > loop > > { > min = system.minute(); > wait system.second() != sec; > time=system.hour()*100 + system.minute()*100 + system.second(); > > /************************************************************/ > /********Zeitdefinition Stunden Minuten Sekunden*************/ > /***Ein 07:30:00 und 17:00:00 Aus 07:30:45 und 17:00:45******/ > /************************************************************/ > > if time >= 073000 and time <= 073045 or time >= 170000 and time <= 170045 > > > stports.setRel(2,1); > else > stports.setRel(2,0); > }; > }; > </code> > > Gruß Rene > > > > > > > Hallo Leute, > > > > > > > > > > > > ist es mit folgendem code möglich eine Zeitschaltuhr zu | > > > > > > Programmieren, oder mache ich hier etwas grundsätzlich falsch? > > > > > > > > > > > > Wenn ja wäre es nett wenn mir jemand hilft. > > > > > > > > > > > > Viele Dank > > > > > > Gruß Rene > > > > > > > > > > > > <code> byte ZSUR; > > > > > > > > > > > > thread schaltuhr1 > > > > > > { > > > > > > byte sek, min, day, Nr; > > > > > > int time; > > > > > > > > > > > > min = system.minute(); > > > > > > wait system.minute() != min; > > > > > > time=system.hour()*100 + system.minute(); > > > > > > day=system.dow(); > > > > > > > > > > > > if time >= 8000000 and time < 8000030 > > > > > > // zwischen 08:00:00 und 08:00:30 > > > > > > // nicht über Tageswechssel schalten > > > > > > > > > > > > ZSUR = 1; // EIN > > > > > > else > > > > > > ZSUR = 0; // AUS > > > > > > } </code> > > > > > > > > > > > > Ich habe diese Schaltuhr im net gefunden, sie ist | > > > > > > ursprünglich von Malte Alpers und ich versuche sie | > > > > > > für mich umzuschreiben oder anzupassen. > > > > > > > > > > > > > > > > > > > > Sekunden genaues Schalten Nein. > > > > > > > > > > Dein Thread wird blos einmal die Minute abgearbeitet. Theoretisch zumindest, praktisch müsstet > > > > > Du noch bei jeden Durchgang die Vari min wieder gleichsetzen, aber bei genauer Betrachtung wird > > > > > die Vari min sowieso immer neu gestartet. Da fehlt noch ein Loop. > > > > > > > > > > Also so kann es nicht funktionieren, brauchst Du jetzt eine Zeitschaltuhr für Schaltvorgänge > > > > > im Minuten oder Sekundenbereich? > > > > > > > > > > Rene > > > > > > > > Danke schon mal für Deine Antwort, > > > > > > > > ich benötige eine im Sekundenbereich, diese soll für 30 | > > > > Sekunden Laufen und dann wieder Abschalten, das ganze 2 | > > > > mal am Tag zu einer vorher definierten Zeit. > > > > > > > > Ist für eine Beregnungsanlage im Terrariumbereich. > > > > > > > > Gruß Rene > > > > > > > > > Hallo Rene, > > > > > > ich habe in meiner Rolladensteuerung auch eine Timerroutine von Malte Alpers verwendet > > > ( von mir auf 16 Timer erweitert), damit kannst Du genaue Schaltvorgänge steuern: > > > > > > <code> > > > /* Geändert : 25. Juni 2005 Malte Alpers (malte.alpers@gmx.de) */ > > > /* Geändert : 16 Timer, 5.Mai 2008 Jörg Hansen(joerg@hansen-leinesser.de) */ > > > /* Getestet : ja */ > > > /* Benötigt : math.c2; constant.c2 */ > > > /* Bemerkungen: Function verwaltet 16 Timer (Nummer 0...15) */ > > > /* Kann für allgemeine Verzögerungesaufgaben verwendet werden */ > > > /****************************************************************************/ > > > /* Universaltimer auf Basis des Systemtimers im Millisekundentakt */ > > > /* */ > > > /* Rückgabewert=timerstatus */ > > > /* */ > > > /* Parameter: */ > > > /* num.......timernummer */ > > > /* start.....wenn gesetzt, wird startzeit gespeichert */ > > > /* res.......setzt status auf 0 */ > > > /* time......Laufzeit in Millisekunden */ > > > /****************************************************************************/ > > > > > > long t[15]; //speicher für startzeit > > > int state[15]; //speicher für status > > > > > > function t_v(int num,int start,int res,long time) returns int > > > { > > > long t1,t2; > > > t1=system.timer(); //aktuelle zeit speichern > > > if start > > > { //wenn start gesetzt, zeit speichern > > > t[num]=t1; //und status setzen > > > state[num]=constant.ON; > > > } > > > t2=math.labs(t1-t[num]); //absolutdifferenzbildung > > > if t2 > time state[num]=constant.OFF; //zeitüberprüfung > > > > > > if res state[num]=constant.OFF; //reset wenn res > > > return state[num]; > > > } > > > </code> > > > > > > > > > Hier noch die Aufrufe beim Starten (z.B. mittels Tastendruck): > > > > > > <code> > > > > > > if (tastenvorzustand[i] == 0) and(tastenzustand[i] == 1) and (relaiszustand[i]== 0) // Taste rauf betätigt > > > { > > > rollladenrelais(i,1); //Rollladenrelais rauf einschalten > > > timer.t_v(i,-1,0,Laufzeitrauf[i]); // Timer starten > > > relaiszustand[i] =1; // merken das das Relais angesteuert ist > > > tastenvorzustand[i] = 1; // Tastenzustand in Vorzustand übernehmen > > > break; > > > } > > > > > > </code> > > > > > > ... sowie ein Codeausschnitt der Schleife zur Abfrage des Timerablaufs: > > > (geht natürlich auch als eigener Thread, den man stoppen kann solange kein Timer gestartet ist) > > > <code> > > > loop > > > { > > > //prüfen ob ein Timer abgelaufen ist > > > for i = 0...maxRollladen > > > { > > > if (relaiszustand[i]== 1) > > > { if !(timer.t_v(i,0,0,Laufzeitrauf[i])) > > > { timer.t_v(i,0,-1,0); //timer stoppen > > > relaiszustand[i] = 0; // Relaiszustand AUS merken > > > rollladenrelais(i,0); //Rolladenrelais ausschalten > > > }; > > > }; > > > }; > > > }; > > > </code> > > > > > > > > > Laufzeitrauf[] ist ein globales Konstantenarray z.B. 20000 für 20 Sekunden : > > > <code> > > > const Laufzeitrauf[] = 20000, 20000, 20000, 20000, 27000, 27000; // Laufzeitdefinition je Rolladen > > > const Laufzeitrunter[] = 18500, 18000, 19000, 18000, 23500, 17000; // Laufzeitdefinition je Rolladen > > > </code> > > > > > > > > > Ich hoffe damit kommst Du weiter > > > > > > Viele Grüße Jörg > > > > Hallo Jörg, > > > > Danke Dir, das hilft mir sicher weiter, darauf kann ich > > aufbauen. > > Ich bin eh eben am Testen und brauche dazu sicher noch > > ein Weilchen. > > Als Laie gehts halt nur Stück für Stück ;) > > > > Gruß Rene
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB