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 !  

> Okay hier der code... bestehend aus 3 Modulen, zunächste das mainmodule: > byte min, tim; > int button; > > > thread eins > { > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 10 > { > halt zeitschaltuhr.relaiseins; > stports.togRel(1); > min= system.hour(); > wait min == system.hour()+1; > resume zeitschaltuhr.relaiseins; > } > } > thread zwei > { > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 11 > { > halt zeitschaltuhr.relaiszwei; > stports.togRel(2); > tim= system.minute(); > wait tim == system.minute()+10; > resume zeitschaltuhr.relaiszwei; > } > } > > > thread drei > { > min=system.second(); > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 12 > { > stports.togLCDlight(); > sleep 300; > } > } > > > thread main > > { > stports.LCDlight(1); > byte knopf, temp; > int a, b, c; > long timeset; > lcdext.init(); > lcdext.clear(); > > lcdext.print("ZEIT EINSTELLUNG"); > lcdext.line(2); > lcdext.print("BITTE EINGEBEN"); > sleep 2000; > lcdext.clear(); > lcdext.print(" STUNDE "); > sleep 2000; > lcdext.clear(); > timeset=stkeyb.input (2, 2, 5000); > a=timeset; > lcdext.clear(); > lcdext.print(" MINUTEN "); > sleep 2000; > lcdext.clear(); > timeset=stkeyb.input (2, 2, 5000); > b=timeset; > c=00; > system.settime(a, b, c); > lcdext.clear(); > lcdext.print("DATE EINSTELLUNG"); > lcdext.line(2); > lcdext.print("BITTE EINGEBEN"); > sleep 2000; > lcdext.clear(); > lcdext.print(" JAHR "); > sleep 2000; > lcdext.clear(); > timeset=stkeyb.input (4, 4, 5000); > a=timeset; > lcdext.clear(); > lcdext.print(" MONAT NUMMER "); > sleep 2000; > lcdext.clear(); > timeset=stkeyb.input (2, 2, 5000); > b=timeset; > lcdext.clear(); > lcdext.print(" TAG "); > sleep 2000; > lcdext.clear(); > timeset=stkeyb.input (2, 2, 5000); > c=timeset; > lcdext.clear(); > system.setdate(a, b, c); > lcdext.clear(); > sleep 2000; > lcdext.print("DATE AND TIME"); > lcdext.line(2); > lcdext.print("ERFOLGREICH"); > sleep 2000; > lcdext.clear(); > > run zeit_anzeige.Zeit; > run zeitschaltuhr.Zeitschaltuhr; > run zeitschaltuhr.relaiseins; > run zeitschaltuhr.relaiszwei; > run eins; > run zwei; > run drei; > halt; > } > > > dann zweites das Zeit anzeige Modul: > thread Zeit > {byte second; > stports.init(); > lcdext.init(); > > lcdext.print(" AQUARIUM "); > lcdext.line(2); > lcdext.print(" STEUERUNG "); > sleep 1000; > lcdext.clear(); > > loop > { > second=system.second(); > lcdext.line(1); > lcdext.time(1); > lcdext.line(2); > lcdext.date(1); > sleep 500; > lcdext.goto(1,2); > lcdext.put(' '); > lcdext.goto(1,5); > lcdext.put(' '); > wait second!=system.second();//Auf Sekundenwechsel warten > } > } > > und zu guterletzt, das Zeitschaltuhr Modul: > > byte ZSU[1], ZSSU[1], flag; // Anzahl der Zeitschaltuhren beginnend mit '0' !!! > thread Zeitschaltuhr > { > byte min, day, Nr, No; > int time; > > min = system.minute(); > wait system.minute() != min; > time=system.hour()*100 + system.minute(); > day=system.dow(); > > capture flag; > > //-------------------- Zeitschaltuhr (ZSU) 0 -------------------- > > Nr = 0; // Zeitschaltuhr (ZSU) Nr. > > // Es wird jeden Tag geschaltet > > if time >= 700 and time < 1200 > or time >= 1500 and time < 2145 // zwischen 6:00 und 22:00 > //or time>= 1328 and time < 1329 > > > ZSU[Nr] = 1; // EIN > else > ZSU[Nr] = 0; // AUS > > //-------------------- Zeitschaltuhr (ZSU) 0 Ende -------------------- > > > > //-------------------- Zeitschaltuhr (ZSU) 1 -------------------- > > No = 0; // Zeitschaltuhr (ZSU) Nr. > > // Es wird jeden Tag geschaltet > > if time >= 700 and time < 745 > or time>= 830 and time < 1000 // zwischen 6:00 und 22:00 > or time>= 1200 and time < 1330 > or time>= 1430 and time < 1530 > or time>= 1830 and time < 1945 > or time>= 2030 and time < 2130 > > > ZSSU[No] = 1; // EIN > else > ZSSU[No] = 0; // AUS > release; > } > //-------------------- Zeitschaltuhr (ZSU) 1 Ende -------------------- > > thread relaiseins > { > capture flag; > if ZSU[0] == 1 // WENN Zeitschaltuhr '0' EIN > { > stports.setRel (1,1); //anschalten Relais 0 > } > else > { > stports.setRel (1,0); //auschschalten Relais 0 > } > release; > } > thread relaiszwei > { > capture flag; > if ZSSU[0] == 1 // WENN Zeitschaltuhr '1' EIN > { > stports.setRel (2,1); //anschalten Relais 1 > } > else > { > stports.setRel (2,0); //auschschalten Relais 1 > } > release; > } > > > > Bei dem hats auch schon zu problemen geführt, wenn ich mit einem Array > arbeite und (beispielsweise ZSU[1]) damit schalten will, dann geht das > irgendwie nicht... > > Hoffe der Code hilft euch... > BTW: die Funktionen zur manuellen Bedienung funktionieren, > aber danach spinnt das ganze System und die Steuerung macht irgenwie was > sie will... > > Liebe Grüße > > Karl > > > > > > > > > > > Hallo Karl, > > einen Stackoverflow hatte ich noch nicht, aber wie schaut denn dein Programm aus? > > Vieleicht stellst du es einfach mal hir ein... > > > > nitraM > > > > > > > > > > > Hallo an alle, > > > > > > wollte mal fragen ob auch andere schon mit dem Stack overflow zu kämpfen hatten. Habe bei meinen > > > Programmen wenn ich sie testweise ausführe schon öfters einen Stackoverflow bekommen. > > > Je öfter ich dann das Programm simulieren will desto höher ist die ebene die angezeigt wird, > > > also z.B. Stack overflow (ebene 1). > > > Habe das gefühl, dass das sehr zufällig und sporadisch auftaucht. Finde nämlich nicht, dass mein > > > Programm da jetzt zu groß ist. Schalte im Prinzip nur relais zeitgesteuert, dann habe ich display > > > ansteuerung vom licht und eine manuelle schaltmöglichkeit(die aber noch nicht so wirklich > > > klappt). > > > Hatte das hier schonmal jemand? > > > > > > Grüße > > > > > > Karl
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB