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

Re: Zeituhr für Heizung Kategorie: Programmierung (von Guido, http://ferienwohnung-wiekert.de - 8.07.2003 22:12)
Als Antwort auf Re: Zeituhr für Heizung von André H. - 8.07.2003 22:02

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:
>
> 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;
>

> Es gibt aber noch X weitere Lösungsansätze.
> Aber jetzt alle aufzulisten, würde zu lange dauern.
>
> MfG André H.

Meine Seite: http://ferienwohnung-wiekert.de


    Antwort schreiben


Antworten:

Re: Zeituhr für Heizung korrekt ? (von Milf. - 12.07.2003 23:06)
    Re: Zeituhr für Heizung korrekt ? (von André H. - 13.07.2003 9:17)