Ankündigung

Einklappen
Keine Ankündigung bisher.

Hysterese Zähler LBS - Hilfe bei der Programmierung notwendig

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hysterese Zähler LBS - Hilfe bei der Programmierung notwendig

    Hallo zusammen,

    ich bräuchte mal eure Unterstützung bei meinem entstehenden LBS. Bin nicht wirklich erfahren beim Programmieren. Der folgende Code wird soweit akzeptiert, bringt aber die CPU-Load auf 100% und produziert jede Menge Fehler im Log...

    LBS-Nr. wird die 19001152

    ###[DEF]###
    [name =Hysterese Zähler V0.1 ]

    [e#1 =aktueller Wert #init=0]
    [e#2 =Delta Wert hoch ]
    [e#3 =Delta Wert runter]

    [e#4 =Grenzwert oben #init=10]
    [e#5 =Grenzwert unten #init=0]

    [a#1 =Ergebnis]
    [a#2 =Hysterese]
    [a#3 =Hysterese negiert]

    ###[/DEF]###


    ###[HELP]###
    Dieser Baustein addiert E2 oder subtrahiert E3 vom Eingangswert E1 bis zu den Grenzwerten an E4 und E5. In dieser Hysterese werden dann an den Grenzwerten die Ausgänge A2 und A3 gesetzt. Diese bleiben solange gesetzt, bis der jeweils andere Grenzwert erreicht wurde.

    A1 muss per remanentem iKO mit E1 verbunden werden.

    A1 >= E4 --> A2 = 1 und A3 = 0 und A1 = E4
    A1 <= E5 --> A2 = 0 und A3 = 1 und A1 = E5
    E5 < A1 < E4 --> E5 < A1 < E4 und A2/A3 abhängig von welchem Grenzwert man kommt.

    Somit kann dieser Baustein z.B. als Hysterese für die Sommer-Winter-Umschaltung der Heizung verwendet werden.


    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
    if ($E=getLogicEingangDataAll($id)) {
    if($E[2]['refresh']) {
    $erg = $E[1]['value'] + $E[2]['value'];
    }
    if($E[3]['refresh']) {
    $erg = $E[1]['value'] - $E[3]['value'];
    }

    if ($erg >= $E[4]['value'] ){
    $erg = $E[4]['value'] ;
    $hyst = 1;
    $hystneg = 0;
    }
    if ($erg <= $E[5]['value'] ){
    $erg = $E[5]['value'] ;
    $hyst = 0;
    $hystneg = 1;
    }

    setLogicLinkAusgang($id,1,($erg));
    setLogicLinkAusgang($id,2,($hyst));
    setLogicLinkAusgang($id,3,($hystneg));

    }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?

    ?>
    ###[/EXEC]###




    Freue mich, wenn ihr mir hier helfen könnt, so dass der Hysterese Zähler funktioniert. Vielen Dank schon mal im Voraus für Eure Unterstützung.


    Grüße
    Thorsten

    #2
    vielleicht kannst Du Dir hier was abschauen: http://service.knx-user-forum.de/?co...ad&id=19000131
    Oder such mal im Download Bereich nach "Sommer" ....

    Kommentar


      #3
      So ganz entspricht das nicht dem, was ich mir vorstelle. Der LBS muss sich ein Zählerwert merken, von dem je nach getriggertem Eingang der Eingangswert addiert oder subtrahiert wird. Werden nun die Grenzwerte über oder unterschritten, dann bleibt der Ausgangswert auf diesem Grenzwert so lange stehen, bis der entsprechende Eingang die Zählrichtung ändert. An den Grenzwerten soll der Hysterese Ausgang entsprechend gesetzt werden und erst beim Erreichen des anderen Grenzwertes zurückgekommen werden. Hoffe Mal, dass das so verständlich war.
      Die erwähnten LBSse habe ich angesehen, kann aber nicht erkennen wo es bei mir hapert...

      Kommentar

      Lädt...
      X