Ich würde gerne den Counter von Port41-43 auslesen.
Für die Abfrage eines Ports nehme ich
modbus_send($RegisterVariable_ID, CounterRead41);
und habe die Ports vorher so definiert
define('CounterRead41','C1 41 00 00 00 06 01 03 00 6F 00 01');
define('CounterRead42','C1 42 00 00 00 06 01 03 00 71 00 01');
define('CounterRead43','C1 43 00 00 00 06 01 03 00 73 00 01');
Klappt leider nicht. Counter wird mir immer mit 0 angezeigt
und folgende Fehlermeldung kommt siehe Bild.
Die betreffende Code Zeilen
if($arr_modbus_receive[0] == "C1") { // C1 Modbus answer for counter read
$hex = $arr_modbus_receive[11].$arr_modbus_receive[12].$arr_modbus_receive[9].$arr_modbus_receive[10];
$dec = hexdec($hex);
$max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2)));
$_dec = $max - $dec;
if($dec > $_dec) {
$value = -$_dec;
} else {
$value = $dec;
}
switch ($arr_modbus_receive[1]) {
case "41":
echo "Counter Read Pin41 = ".$value."
";
break;
case "42":
echo "Counter Read Pin42 = ".$value."
";
break;
case "43":
echo "Counter Read Pin43 = ".$value."
";
break;
}
}
Jemand eine Idee