Für dieses Forum muß Javascript im Browser aktiviert werden!
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 ! > Haloo André ich danke Dir für deine schelle Antwort und werde Deine Tips befolgen. > > Bin ja noch Anfänger;-) > > Mfg Guido > > > Hallo Guido, > > > > > ach ja welche Module benotige ich nochmal für das Relaisboard I²C??? > > > > Das ist das Modul pcf.c2 . > > > > > function kennl(int Tout, int steigung, int parallel) returns int// ermittlung der Zeit > > > // ermittlung der Vorlauftemp in Abhängigkeit der Zeit > > > { > > > long TSoll; > > > TSoll=getSoll(Tout,steigung,parallel); > > > std=system.hour(); > > > min=system.minute(); > > > if ((std == 22)and(min == 30))or((std == 8)and(min==00)); > > > { > > > a=constant.ON; > > > } > > > if ((std == 6)and(min==00))or((std==15)and(min==30)); > > > { > > > a=constant.OFF; > > > } > > > if a==constant.ON ; > > > { > > > TSoll=TSoll-300; > > > } > > > if a==constant.OFF; > > > { > > > TSoll=TSoll; > > > } > > > return TSoll; > > > } > > > > Also, fangen wir mal an: > > Als erstes sehe ich, daß Du einen Grundlegenden Fehler im Syntax machst. > > Und zwar bei den if-Abfragen ! Diese dürfen nicht mit einen Semikolon enden ! > > Es wird sonst das nachstehende in den geschweiften Klammern immer ausgeführt, > > da dies dann nicht mehr als if-bedingte Anweisung behandelt wird. > > Bsp.: > > > > if Bedingung ; Anweisung; > > ist gleichbedeutend mit > > if Bedingung { } > > Anweisung; > > Hier sieht man, daß die Anweisung nichts mehr mit der If-Abfrage zu tun hat. > > Kurz, entferne die Semikolons hinter den If-Abfragen ! > > Der Korrekte Syntax lautet: > > if Bedingung Anweisung; > > oder > > if Bedingung { Anweisung_1; Anweisung_2; ... ; Anweisung_n} > > Das zum Syntax. > > > > Nun zur Routine selbst: > > Im Prinzip funktioniert es so (, wenn die Semikolons bei den Ifs entfernt werden). > > Jedoch kann der direkte Zeitvergleich zu Problemen führen. > > Um einen Vergleich zu Analogen Schaltuhren zu machen: > > Du hast die Routine so aufgebaut, wie eine Schaltuhr mit steckbaren Reitern. > > Es wird zu einer bestimmten Zeit das flag gesetzt und irgendwann anders wieder > > zurückgesetzt. > > Im Normalbetrieb funzt dies auch, jedoch kann es passieren, daß Schaltzeiten > > einfach übersprungen werden, wenn z.B. selbige geändert werden oder sich die > > Zeit selbst durch ein Einstellen (So/Wi, DCF-Sync etc.) ändert. > > Hier ist es besser, mit einer Abfrage zu prüfen, ob die aktuelle > > Uhrzeit sich im vorgegebenen Zeitraum befindet. > > Dazu ist es sinnvoll, sich ein Time-Serial-Format zu bilden. > > Das einfachste wäre hhmm: > > Bsp.: > > time=hour*100 + minute > > Aus 15:08 wird dann 1508 . > > Eleganter wäre es natürlich, statt mit hunndert, mit 60 zu multiplizieren: > > time=hour*60 + minute > > Aus 15:08 wird dann 908 . > > > > Die komplette Abfrage kann dann so aussehen: > > > > if (time>=SU1ein and time<SU1aus) or (time>=SU2ein and time<SU2aus) > > flag=1; > > else > > flag=0; > > > > Allerdings gibt es hier ein anderes Problem: Der Tageswechsel ! > > Dieses Zeitformat fängt um 0:00 mit 0 an und geht bis 1439 um 23:59 . > > Um dies zu lösen gibt es ettliche Ansätze. > > Das einfachste wäre natürlich dafür zu sorgen, daß es nie dazu kommt, > > daß über den Tageswechsel etwas geschalten wird. > > In Deinem Fall wäre dies sogar recht einfach. Du setzt Dein Flag, wenn > > es zu einer Nachtabsenkung kommen soll. Drehst Du das Ganze um, > > dann funzt die obige Abfrage. Das löst aber das Problem nicht wirklich. > > > > Eine weitere Möglichkeit wäre folgende: > > > > <font face="courier new" size=2>if (SU1aus - SU1ein) >=0 > > term1=not (time<SU1ein and time>=SU1aus); > > else > > term1=time>=SU1ein and time<SU1aus; > > > > if (SU2aus - SU2ein) >=0 > > term2=not (time<SU2ein and time>=SU2aus); > > else > > term2=time>=SU2ein and time<SU2aus; > > > > if term1 or term2 > > flag=1; > > else > > flag=0; > > </font> > > Es gibt aber noch X weitere Lösungsansätze. > > Aber jetzt alle aufzulisten, würde zu lange dauern. > > > > MfG André H.