Moin zusammen,
eher zufällig habe ich gerade rausgefunden dass meine per knxd gesendeten Werte auf den Bus "ungenau" gesendet werden. Vermutlich ist es aber ein Thema in der Umrechnung vorher. Mein Mathe reicht leider nicht aus dafür, kann jemand erkennen wo das "Problem" ist?
LG
Tobias
Ergebnis: 36 1A (und im Gruppenmonitor in der ETS5 "so ungefähr" 1000, nämlich genau 999,68).
eher zufällig habe ich gerade rausgefunden dass meine per knxd gesendeten Werte auf den Bus "ungenau" gesendet werden. Vermutlich ist es aber ein Thema in der Umrechnung vorher. Mein Mathe reicht leider nicht aus dafür, kann jemand erkennen wo das "Problem" ist?
LG
Tobias
PHP-Code:
$x = DECtoDPT9(1000);
echo ($x);
// ergebnis: 36 1A (und auf dem Bus dann: 999,68)
Ergebnis: 36 1A (und im Gruppenmonitor in der ETS5 "so ungefähr" 1000, nämlich genau 999,68).
PHP-Code:
function DECtoDPT9($DEC)
{
$DEC *= 100;
$dpt9 = 0;
$exponent = 0;
if ($DEC < 0)
{
$dpt9 = 0x08000;
$DEC = -$DEC;
}
while ($DEC > 0x07ff)
{
$DEC >>= 1;
$exponent++;
}
if ($dpt9 != 0) $DEC = -$DEC;
$dpt9 |= $DEC & 0x7ff;
$dpt9 |= ($exponent << 11) & 0x07800;
return strtoupper(chunk_split(str_pad(dechex($dpt9 & 0x0ffff),4,'0',STR_PAD_LEFT),2,' '));
}
Kommentar