Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: 19001030: Modbus TCP Master Read

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Peterich
    antwortet
    So ich hab zumindestens ein kleines Fixit für mein Problem wenn du das mid der Endianess iwann mal einfügen solltest müsste man dort vllt. noch etwas "basteln"

    Und Zwar liegt das Problem in der PhpType.php ab zeile 235
    PHP-Code:
            if ($endianness == 0)
                
    $value = (($data[3] & 0xFF)<<16) |
                        ((
    $data[2] & 0xFF)<<24) |
                        ((
    $data[1] & 0xFF)) |
                        ((
    $data[0] & 0xFF)<<8);
            else
                
    $value = (($data[3] & 0xFF)<<24) |
                        ((
    $data[2] & 0xFF)<<16) |
                        ((
    $data[1] & 0xFF)<<8) |
                        ((
    $data[0] & 0xFF));

            return 
    $value
    die muss für die Siemens PAC da die daten in Byte Swap oder Float Swap wie man es auch nennen mag sendet ( im io Broker ist es ganz normal unter Float Big Endian) folgendermaßen ändern
    PHP-Code:
            if ($endianness == 0)
                
    $value = (($data[3] & 0xFF)) |
                        ((
    $data[2] & 0xFF)<<8) |
                        ((
    $data[1] & 0xFF))<<16 |
                        ((
    $data[0] & 0xFF)<<24);
            else
                
    $value = (($data[3] & 0xFF)<<24) |
                        ((
    $data[2] & 0xFF)<<16) |
                        ((
    $data[1] & 0xFF)<<8) |
                        ((
    $data[0] & 0xFF));

            return 
    $value
    also eigt. nur das die Bytes in der falschen Reihenfolge ankommen ist jetzt die Frage ob das generell ein Implementirungsfehler in der PHPModbus ist oder ob Siemens da ihr eigenes Süppchen Kocht

    Einen Kommentar schreiben:


  • gulp2k
    antwortet
    Ich denke was du mit Swap Float meinst ist die Endianess, das heißt die Bytereihenfolge.
    Das kann per Parameter angegeben werden hab ich aber im LBS nicht implementiert.

    Versuch mal im xxxxxbytes2xxxxxx($recData, true); das Umzuschalten.

    Einen Kommentar schreiben:


  • Peterich
    antwortet
    Okay die datei war schon sehr Hilfreich damit ich eine Antwort bekomme muss ich doch die 300001 durch 1 ersetzen ...
    beim letzen versuch mit IO.Broker gings nur mit 30001
    Jetzt das nächste Problem ich vermute das wird man nicht so einfach lösen können hab mir grad schon nen ast gegoogelt.
    der wert der ankommt ist 32Bit Swap Float ausgegeben wird
    Code:
    4.7325912078122E-8
    da bei Typ nur Float angegeben werden kann ich hab auch nichts gefunden das es swapfloat irgendwie gibt. vllt. hast du noch ne idee denke du steckst noch tiefer in der materie

    Einen Kommentar schreiben:


  • gulp2k
    antwortet
    Hi,

    ich hab mir mal "kurz" die Anleitung angeschaut und zuerst mal nicht die Addresse 30001 gefunden. Bist du sicher das die richtig ist?
    Du must auch aufpassen das du den Wert mit Funktion 0x3 abrufen kannst weil andere hab ich noch nicht implementiert.

    Dieses Wochenende ist ein bisschen eng aber nächste Woche sollte ich mehr Zeit haben.
    Das mit den includes past so.

    Ich hänge mal eine simple php für die Konsole mit an. Damit kann man am einfachsten Testen.
    Einfach in den gleichen Ordern wie die anderen php files kopieren und mit
    Code:
    php -n modbus.php
    ausführen.
    Du must natürlich die Addressen anpassen und ach eventuell den "require" ab ändern.
    PHP-Code:
        <?php
    //echo dirname(__FILE__) . '/ModbusMaster.php';
        
    require_once dirname(__FILE__) . '/ModbusMaster.php';

        
    // Create Modbus object

        
    $modbus = new ModbusMaster("192.168.1.2""TCP");

        try {
            
    // FC 3
            
    $recData $modbus->readMultipleRegisters(0400821);
        }
        catch (
    Exception $e) {
            
    // Print error information if any
            
    echo $modbus;
            echo 
    $e;
            exit;
        }

        
    // Print status information
        
    echo "</br>Status:</br>" $modbus;

        
    // Print read data
        
    echo "Data:";
        echo 
    PhpType::bytes2signedInt($recData);

        
    //echo "</br>";
        
    ?>
    Gruß
    Michael

    Einen Kommentar schreiben:


  • Peterich
    antwortet
    Morgen,


    Also ich hab den heute morgen mal gtestet mit einem Siemens PAC3200 aber ich komm nicht weiter ich bekomm keine Daten raus.
    Log:
    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]702617[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: START ModbusMaster Daemon[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704135[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: v3:9[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704492[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: inputs:[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704535[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704579[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ["9"][/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704615[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]704973[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: i:0[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]705277[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: input:9[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]705604[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: address:30001[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708374[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Modbus Error:[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708426[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708470[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: {"host":"10.10.10.1","port":"502","client":"","client_port":"502","status":"readMultipleRegisters: START\nConnected\nPacket: 89f600000006010375310002\nSend\nWait data ... \nData received\nPacket: 89f600000003018302\n","timeout_sec":5,"endianness":0,"socket_protocol":"TCP"}[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708512[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708817[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Modbus Error:[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708857[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708893[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: {}[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]708925[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]709240[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Retries:0[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:36[/TD]
     			[TD]709682[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Delay:1000[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:37[/TD]
     			[TD]710331[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: end of delay[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:37[/TD]
     			[TD]710730[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: i:0[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:37[/TD]
     			[TD]711040[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: input:9[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:37[/TD]
     			[TD]711364[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: address:30001[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]714590[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Modbus Error:[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]714677[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]714721[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: {"host":"10.10.10.1","port":"502","client":"","client_port":"502","status":"readMultipleRegisters: START\nConnected\nPacket: f45000000006010375310002\nSend\nWait data ... \nData received\nPacket: f45000000003018302\n","timeout_sec":5,"endianness":0,"socket_protocol":"TCP"}[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]714761[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715064[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Modbus Error:[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715102[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715137[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: {}[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715171[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715528[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Retries:1[/TD]
     		[/TR]
    [TR]
    [TD]2017-03-04 07:50:38[/TD]
     			[TD]715987[/TD]
     			[TD]11802[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.1]: Delay:1000[/TD]
     		[/TR]
    [/TABLE]
    edomimodbus.jpg

    hir ist auch noch die Anleitung von der SiemensPac da gehts so bei seite 42 los mit den Modbus adressen

    es ist bestimmt noch zu früh und hab einfach nur was banales übersehn PS: die php aus der ZIP habe ich alle in den "/usr/local/edomi/main/include/php" ordner gemacht ohne unterordner

    Einen Kommentar schreiben:


  • gulp2k
    hat ein Thema erstellt LBS: 19001030: Modbus TCP Master Read.

    LBS: 19001030: Modbus TCP Master Read

    Hallo zusammen,

    hier mal mein erster LBS um per Modbus System abzufragen.
    Ich nutze es zur Anbindung meiner PV Anlage.

    Würde mich über Feedback freuen

    http://service.knx-user-forum.de/?co...ad&id=19001030


    Ein Problem das ich bei mir habe ist das der LBS spontan manchmal stopped weil er keine Verbindung mit dem Slave mehr bekommt.
    Aber ich denke das ist ein Problem des Slaves und nicht vom LBS...

    Viele Grüße
    Michael
Lädt...
X