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
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
Kommentar