Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19001383 - Verbrauch => remanente Variablen

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

    LBS 19001383 - Verbrauch => remanente Variablen

    Hallo zusammen,

    in meinem Baustein LBS 19001383 verwende ich remanente Variablen, doch bei einem Neustart werden sie dennoch überschrieben. Habt Ihr eine Idee, woran das liegen könnte:

    PHP-Code:
    ###[DEF]###
    [name =Verbrauch v0.3]

    [e#1 =Leistung ]
    [e#2 =Trigger ]

    [a#1 =Verbrauch ]

    [v#1 remanent= ] Letztes Ereignis (Zeit)
    [v#2 remanent= ] Pmom
    [v#3 remanent= ] Verbrauch
    ###[/DEF]###

    ###[LBS]###
    <?
    function LB_LBSID($id)
    {
    if ($E=logic_getInputs($id))
    {
    $t2=getMicrotime();
    $t1=logic_getVar($id,1);
    $p=logic_getVar($id,2);
    $sum=logic_getVar($id,3);

    if ($E[1]['refresh']==1)
    {
    $a = ($t2-$t1)*$p/(60*60); // Verbrauch berechnen
    $sum = $sum + $a; // Akkumulieren

    logic_setVar($id,1,$t2); // Neuer Zeitstempel
    logic_setVar($id,2,$E[1]['value']); // Neue Momentanleistung
    logic_setVar($id,3,$sum); // Neue Summe
    }
    else if ($E[2]['refresh']==1)
    {
    $a = ($t2-$t1)*$p/(60*60); // Verbrauch berechnen
    $sum = $sum + $a; // Akkumulieren

    logic_setOutput($id,1,$sum); // Verbrauch ausgeben
    logic_setVar($id,3,0); // Verbrauch auf 0 setzen
    }
    logic_setVar($id,1,$t2); // Neuer Zeitstempel

    }
    }

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

    #2
    Du kannst bei der Projektaktivierung auswählen, ob die remanent Daten zurückgesetzt werden. Hast du mal geprüft ob das gesetzt ist?
    Außerdem würde ich mal ein Leerzeichen zwischen remanent und "=" einfügen und ggf. einen Initialwert angeben, also

    Code:
    [v#1 remanent = 0 ] Letztes Ereignis (Zeit)
    [v#2 remanent = 0 ] Pmom
    [v#3 remanent = 0 ] Verbrauch

    Kommentar


      #3
      Bei der Projektaktivierung ist wirklich kein einziger Haken gesetzt, Deinen Tipp habe ich mal umgesetzt aber leider ist noch keine Veränderung eingetreten.

      Kommentar


        #4
        Der LBS wird in der initialisierunsphase getriggert

        PHP-Code:
        if ($E=logic_getInputs($id))

        Dann sind die Eingänge eventuell leer, und das überschreibt die Variablen.

        Kommentar


          #5
          Ahhh! Danke für den Tipp Ich glaube, das war's... Hab jetzt ergänzt um:

          PHP-Code:
          if (!isEmpty($E[1]['value']) && $E[1]['refresh']==1
          Der Eingang darf ja 0 sein, aber nicht "null", dann macht er mit der Formel Blödsinn.

          Kommentar


            #6
            Hi,
            danke für den Baustein, habe nur einen Leistungswert in W den ich in W/h anzeigen möchte, klappt soweit auch ganz gut.
            Um einen Tagesververbrauch zu visualisieren, müsste der Zähler jedoch täglich resettet werden.
            Gibts dazu eine Möglichkeit bzw. eine andere Ansatzweise (Baustein)?
            Danke.

            Kommentar


              #7
              Hi schranzflash,

              für den Tagesverbrauch müsstest Du den Baustein einfach nur täglich triggern, denn nach jedem Trigger-Ereignis wird die Summe wieder auf "0" gesetzt. Wenn Du Stunden und Tagesverbrauch visualisieren möchtest, einfach zwei Bausteine nehmen mit Stunden- und Tagestrigger.

              Nebenbei: Ich visualisiere mit Grafana und habe mir einen Trigger für die 59.Minute jeder Stunde eingerichtet. Das hat den Vorteil, dass der Verbrauch noch in der aktuellen Stunde verbucht wird und nicht erst mit einer Stunde Zeitverzögerung.

              Kommentar


                #8
                Danke dir für die schnelle Rückmeldung.
                Das heißt, ich hätte den Tagesverbrauch aber erst am darauf folgenden Tag zur Verfügung?
                Schön wäre es, den bisherigen Tagesverbrauch anzuzeigen und fortlaufend aufzuaddieren.
                Ich denke, dafür brauche ich ne andere Lösung bzw. Baustein.

                Kommentar

                Lädt...
                X