Hallo gaert Christian,
für ein kommendes Release habe ich einen Vorschlag zur Erweiterung eines Standard-LBS. Der ist wunderbar für Zähler und mich freut's immer, wenn Logiken mit Standard-LBS funktionieren. Allerdings gibt es ja mehrere Fälle bei Zählern, die einen Reset bedingen. Dies außerhalb des LBS zu machen ist unnötig aufwändig (weil der Vorgängerwert fehlt) und daher der Vorschlag einer kleinen Ergänzung - weil damit würde der Differenzzähler wirklich sehr smart sich selber "heilen" könnte.
Hintergrund: Zähler zählen nur theoretisch ewig hoch. Zudem hat man gelegentlich auch nur einen Tageszähler oder gelegentlich reseteten Betriebsstundenzähler zur Hand. Oder es kommt gezwungenermaßen zu einem Zählerwechsel (z.B. vom Versorger weil Eichzeitraum überschritten).
Lösung: An E3 neben 0-4 auch 11-14 erlauben:
Damit würden obige Fälle automatisch zu einem Reset führen und unmittelbar wieder sauberer Differenzwerte liefern.
Hauptlogik (Auszug)
Lieben Dank für Deine wohlwollende Prüfung.
VG,
Carsten
für ein kommendes Release habe ich einen Vorschlag zur Erweiterung eines Standard-LBS. Der ist wunderbar für Zähler und mich freut's immer, wenn Logiken mit Standard-LBS funktionieren. Allerdings gibt es ja mehrere Fälle bei Zählern, die einen Reset bedingen. Dies außerhalb des LBS zu machen ist unnötig aufwändig (weil der Vorgängerwert fehlt) und daher der Vorschlag einer kleinen Ergänzung - weil damit würde der Differenzzähler wirklich sehr smart sich selber "heilen" könnte.
Hintergrund: Zähler zählen nur theoretisch ewig hoch. Zudem hat man gelegentlich auch nur einen Tageszähler oder gelegentlich reseteten Betriebsstundenzähler zur Hand. Oder es kommt gezwungenermaßen zu einem Zählerwechsel (z.B. vom Versorger weil Eichzeitraum überschritten).
Lösung: An E3 neben 0-4 auch 11-14 erlauben:
Code:
<li>11: das Ergebnis muss >0 sein, sonst erfolgt ein Reset</li> <li>12: das Ergebnis muss >=0 sein, sonst erfolgt ein Reset (z.B. wenn Quelle genullt wird: Tageszähler, Zählertausch,...)</li> <li>13: das Ergebnis muss <0 sein, sonst erfolgt ein Reset</li> <li>14: das Ergebnis muss <=0 sein, sonst erfolgt ein Reset</li> [...] E3: 1..4,11..14=Vergleicher aktivieren (s.o.), 0=kein Vergleicher
Hauptlogik (Auszug)
Code:
###[LBS]### <? function LB_LBSID($id) { if (($E=logic_getInputs($id)) && ($V=logic_getVars($id))) { if ($E[2]['refresh']==1 && $E[2]['value']!=0) { $V[1]=null; logic_setVar($id,1,$V[1]); } // MODIFIZIERT... if ($E[1]['refresh']==1 && !isEmpty($E[1]['value']) && is_numeric($E[1]['value']) && !isEmpty($V[1])) { $tmp=$E[1]['value']-$V[1]; if (($E[3]['value']==14 && $tmp>0) || ($E[3]['value']==13 && $tmp>=0) || ($E[3]['value']==12 && $tmp<0) || ($E[3]['value']==11 && $tmp<=0)) { $V[1]=null; logic_setVar($id,1,$V[1]); } } // ...MODIFIZIERT if ($E[1]['refresh']==1 && !isEmpty($E[1]['value']) && is_numeric($E[1]['value'])) { if (!isEmpty($V[1])) { $tmp=$E[1]['value']-$V[1]; if ($E[3]['value']==0 || ($E[3]['value']==1 && $tmp>0) || ($E[3]['value']==2 && $tmp>=0) || ($E[3]['value']==3 && $tmp<0) || ($E[3]['value']==4 && $tmp<=0) || ($E[3]['value']>=11 && $E[3]['value']<=14)) { // MODIFIZIERT logic_setOutput($id,1,$tmp); } } logic_setVar($id,1,$E[1]['value']); } } } ?> ###[/LBS]###
VG,
Carsten