UINT16 Problem mit Datenfluss an ModBus-GW

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

Bin mir gerade unsicher ob Data hier Rohwerte sind… wenn ja, dann fehlt da ein utf8_encode

"Data"     => utf8_encode(pack("n", $value)),

Michael

1 „Gefällt mir“

Genau das wars, vielen Dank.

1 „Gefällt mir“