Ich habe ein ähnliches Problem, aber beim schreiben von UINT16. Ich kriege es nicht hin, über 127 in das Register zuschreiben, obwohl es mit dem Modbus-Modul funktioniert.
Ich versuche es so, der Wert kommt als Integer. Irgendwie wird hier ständig ein 8bit Wert gepackt…
// Daten für die Modbus-Kommunikation vorbereiten
$data = [
"DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", // Modbus Gateway GUID
"Function" => 6, // Funktionscode für Schreiben eines Registers
"Address" => $address,
"Quantity" => 1, // Schreibe genau ein Register (16-Bit)
"Data" => pack("n", $value), // 16-Bit unsigned Wert packen
];
// Anfrage an Parent senden
$response = $this->SendDataToParent(json_encode($data));
So funktioniert es