Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19001586 ModBus Read GENERIC

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

    #91
    Zitat von Lukas 1989 Beitrag anzeigen
    Ich würde gerne meinen Wechselrichter auslesen und ein User hier hat genau meinen Typ
    Wechselrichter (Sungrow SH10RT) mit deinem Baustein ausgelesen.
    Hi Lukas 1989 ,

    mein WR ist nun auch angeschlossen; ich nutze evcc im Docker, welches auch als Modbus Proxy agiert. Sprich die Werte werden von evcc gelesen und ich greife sie von dort ab, um die parallelen Anfragen gering zu halten. Aber auch eine direkte Abfrage am WR funktioniert.

    Edit: Details zur Abfrage in den Sungrow Thread verschoben.

    Hoffe das hilft Dir.

    Viele Grüße,
    Patrick
    Zuletzt geändert von Stoxn; 02.11.2023, 08:19. Grund: Sungrow Details verschoben

    Kommentar


      #92
      Hallo Sungrow Benutzer,
      meine Anlage läuft seit gestern. Habe gerade den ersten Modbus Request erfolgreich durchgeführt. Ich habe auch die Wallbox von Sungrow und würde auch hier gerne die Ladeinfos abgreifen. Hat jemand hierfür die Register?
      Achja: Ich habe zwei Wechselrichter, muss ich beide mit dem Netz verbinden oder werden die Informationen summiert ausgegeben? Wer kann mir das evtl. erklären? (Aktuell kommt ja oft garnichts rein, deshalb ist trial&error schwierig)

      Viele Grüße
      Winni
      Zuletzt geändert von Winni; 27.10.2023, 22:02.

      Kommentar


        #93
        Nein du musst beide mit dem Netzwerk verbinden. Manche Werte müssen von beiden WR ausgelesen und summiert werden, andere Werte muss man direkt vom Master-Wechselrichter nehmen. Siehe https://knx-user-forum.de/forum/proj...row-modbus-api

        Kommentar


          #94
          Hallo zusammen,

          ich versuche jetzt seit einer Woche Daten aus meinem Wechselrichter zu ziehen.
          Leider sind alle Versuche gescheitert. Irgendwie bekomme ich anscheinend das mit dem modbus nicht hin:
          Der Wechselrichter ist von SolarEdge ein SE10K:
          Ich war schon per WLan auf dem Ding und konnte sehen, dass Modbus auf Port 502 eingeschaltet ist.

          Hätte den jemand mit einem SolarEdge WR, eine Beispiel für mich, damit ich einen Wert abfragen kann. Was wäre egal?
          Die Testabfrage antwortet so wie oben angegeben.:
          2023-12-17 11_38_47-root@EDOMI__usr_local_edomi_main_include_php.png

          Anbei noch mal die Konfig vom LBS:

          2023-12-17 11_34_00-EDOMI · Administration.png

          Vielen Dank für eine Unterstützung!
          Gruß Marcus

          Kommentar


            #95
            Immer erst mal prüfen, ob man mit dem Windows-Tool "qModMaster" auf das Endgerät (hier: WR) zugreifen kann, BEVOR man mit dem LBS beginnt. Dann weiß man, das ModBus an sich funktioniert und Werte ausgelesen werden können und SlaveID stimmt, etc.

            Dann mit einem erfolgreichen getesteten Register mit dem LBS beginnen und sich Stück für Stück vortasten.

            Modbus ist am Anfang etwas frickelig/zu testen. Aber wenn es mal läuft, dann läuft es prima.

            Kommentar


              #96
              Danke für den Hinweis.
              Das werde ich probieren, sobald es bei mir wieder geht.

              Mein nagelneuer SolarEdge SE10K Wechselrichter hat nach ganzen 10 Tagen im Betrieb den Abgang gemacht!
              Laut meines PV-Installateurs, muss auf Grund des Fehlercodes der Wechselrichter ausgetauscht werden.
              Das wird dann vermutlich erst Mitte/Ende Januar erfolgen. Dann werde ich wieder testen.

              Wünsche euch schöne Feiertage!



              Zuletzt geändert von MarcusW; 26.12.2023, 13:11.

              Kommentar


                #97
                Moin in die Runde

                hat jemand ein Beispiel, wie man einen String oder ein U16 von einem KOSTAL Wechselrichter mit diesem LBS hier 19001586 abfragen kann.
                Die Installation habe ich durch einige Adressen kann ich auch auslesen.
                Versuche dies mit dem test.php herauszufinden, ehe ich mich mit dem LBS in dem Logikeditor befasse.
                Bin für Ideen/Vorschläge Dankbar. Oder auch hinweise, was ich überlesen haben sollte

                Übrigens, bei der Abfrage von Adressen mit "String" habe ich es auch zusätzlich mit einer Angabe von "endian" als weiteren Parameter in dem JSON String probiert, hat aber nix geholfen.

                Das geht:
                PHP-Code:
                <?php

                use ModbusTcpClient\Composer\Read\ReadRegistersBuilder ;
                use 
                ModbusTcpClient\Network\NonBlockingClient;
                use 
                ModbusTcpClient\Utils\Endian;

                require 
                __DIR__ '/vendor/autoload.php';

                // IP + Port + ID pflegen <<<<<<<<<<<<<<<<<<<<<<<<<<
                $ip '192.168.178.219';
                $port '1502';
                $slaveID '71';


                // Bei Bedarf ENDIAN ändern <<<<<<<<<<<<<<<<<<<<<<<<
                Endian::$defaultEndian Endian::BIG_ENDIAN_LOW_WORD_FIRST;


                // Register-JSON pflegen <<<<<<<<<<<<<<<<<<<<<<<<<<<
                // Achtung: Bei letzter Zeile darf hinter } kein , mehr folgen!
                $json '[
                {"address":"152","type":"float","name":"Grid Frequency"},
                {"address":"120","type":"float","name":"Isolation Resistence"}
                ]'
                ;

                // ================================================================
                // hier ist nix mehr zu machen...
                $registers json_decode($jsontrue);
                $uri $ip.':'.$port;
                foreach(
                $registers as $i=>$innerArray) {
                $registers[$i]['uri'] = $uri;
                $registers[$i]['unitId'] = $slaveID;
                }

                print_r($registers);
                try {
                $fc3 ReadRegistersBuilder::newReadHoldingRegisters()
                ->
                allFromArray($registers)
                ->
                build();
                } catch (
                Exception $e) {
                echo (
                'FEHLER: '.$e->getMessage()."\n");
                return;
                }
                print_r('Anzahl Register gesamt: '.count($registers));echo("\n");
                print_r('Anzahl Requests gesamt: '.count($fc3));echo("\n");
                $response = (new NonBlockingClient(['readTimeoutSec' => 2.0'connectTimeoutSec' => 2.0]))->sendRequests($fc3);
                print_r($response);
                ?>

                Ergebnis:
                Code:
                [root@edomi7-prod ~]# php /usr/local/edomi/main/include/php/modbus-tcp-client/test2.php
                
                Array
                (
                    [0] => Array
                        (
                            [address] => 152
                            [type] => float
                            [name] => Grid Frequency
                            [uri] => 192.168.178.219:1502
                            [unitId] => 71
                        )
                
                    [1] => Array
                        (
                            [address] => 120
                            [type] => float
                            [name] => Isolation Resistence
                            [uri] => 192.168.178.219:1502
                            [unitId] => 71
                        )
                
                )
                
                Anzahl Register gesamt: 2
                Anzahl Requests gesamt: 1
                ModbusTcpClient\Network\ResultContainer Object
                (
                    [data:ModbusTcpClient\Network\ResultContainer:private] => Array
                        (
                            [Isolation Resistence] => 65535000
                            [Grid Frequency] => 49.996948242188
                        )
                
                    [errors:ModbusTcpClient\Network\ResultContainer:private] => Array
                        (
                        )
                
                )
                ​

                Das geht nicht:
                PHP-Code:

                <?php

                use ModbusTcpClient\Composer\Read\ReadRegistersBuilder ;
                use 
                ModbusTcpClient\Network\NonBlockingClient;
                use 
                ModbusTcpClient\Utils\Endian;

                require 
                __DIR__ '/vendor/autoload.php';

                // IP + Port + ID pflegen <<<<<<<<<<<<<<<<<<<<<<<<<<
                $ip '192.168.178.219';
                $port '1502';
                $slaveID '71';

                // Bei Bedarf ENDIAN ändern <<<<<<<<<<<<<<<<<<<<<<<<
                Endian::$defaultEndian Endian::BIG_ENDIAN_LOW_WORD_FIRST;

                // Register-JSON pflegen <<<<<<<<<<<<<<<<<<<<<<<<<<<
                // Achtung: Bei letzter Zeile darf hinter } kein , mehr folgen!
                $json '[
                {"address":"14","type":"string","length":"16","name":"Serial Number"},
                {"address":"120","type":"float","name":"Isolation Resistence"}
                ]'
                ;


                // ================================================================
                // hier ist nix mehr zu machen...
                $registers json_decode($jsontrue);
                $uri $ip.':'.$port;
                foreach(
                $registers as $i=>$innerArray) {
                $registers[$i]['uri'] = $uri;
                $registers[$i]['unitId'] = $slaveID;
                }

                print_r($registers);
                try {
                $fc3 ReadRegistersBuilder::newReadHoldingRegisters()
                ->
                allFromArray($registers)
                ->
                build();
                } catch (
                Exception $e) {
                echo (
                'FEHLER: '.$e->getMessage()."\n");
                return;
                }

                print_r('Anzahl Register gesamt: '.count($registers));echo("\n");
                print_r('Anzahl Requests gesamt: '.count($fc3));echo("\n");
                $response = (new NonBlockingClient(['readTimeoutSec' => 2.0'connectTimeoutSec' => 2.0]))->sendRequests($fc3);
                print_r($response);
                ?>
                Ergebnis:
                Code:
                [root@edomi7-prod ~]# php /usr/local/edomi/main/include/php/modbus-tcp-client/test2.php
                Array
                (
                    [0] => Array
                        (
                            [address] => 14
                            [type] => string
                            [length] => 16
                            [name] => Serial Number
                            [uri] => 192.168.178.219:1502
                            [unitId] => 71
                        )
                
                    [1] => Array
                        (
                            [address] => 120
                            [type] => float
                            [name] => Isolation Resistence
                            [uri] => 192.168.178.219:1502
                            [unitId] => 71
                        )
                )
                
                Anzahl Register gesamt: 2
                Anzahl Requests gesamt: 1
                ModbusTcpClient\Network\ResultContainer Object
                (
                    [data:ModbusTcpClient\Network\ResultContainer:private] => Array
                        (
                        )
                
                    [errors:ModbusTcpClient\Network\ResultContainer:private] => Array
                        (
                            [0] => ModbusTcpClient\Packet\ErrorResponse Object
                                (
                                    [header:ModbusTcpClient\Packet\ErrorResponse:private] => ModbusTcpClient\Packet\ModbusApplicationHeader Object
                                        (
                                            [transactionId:ModbusTcpClient\Packet\ModbusApplicationHeader:private] => 17872
                                            [length:ModbusTcpClient\Packet\ModbusApplicationHeader:private] => 4
                                            [unitId:ModbusTcpClient\Packet\ModbusApplicationHeader:private] => 71
                                        )
                                    [functionCode:ModbusTcpClient\Packet\ErrorResponse:private] => 3
                
                                    [errorCode:ModbusTcpClient\Packet\ErrorResponse:private] => 2
                                )
                        )
                )
                ​
                Zuletzt geändert von scott74; 19.06.2024, 15:42.

                Kommentar

                Lädt...
                X