PV Inverter Sunspec Protokoll lesen - hier ein einigermaßen universeller Ansatz

Hallo zusammen,
mit der Symcon Modbus Unterstützung kann man sich ja einzelne Daten aus PV Invertern einfach ziehen, inkl. eventuell angeschlossener Meßgeräte. Ich wollte aber unbedingt alle Daten haben - und dafür Feld für Feld eine Definition anzulegen, war mir zu viel Arbeit. Das sind über 200 Felder.

Deswegen habe ich mir einmal ein recht universelles Script gebaut, um mit Hilfe des sog. Sunspec Protokolls die Inverter und Meßgerätedaten auszulesen. Viele PV Solar Inverter unterstützen das. Mein Inverter ist von Solaredge, aber das schöne an diesem Skript ist, es sollte sich leicht auf andere Inverter (Fronius, SMA, etc.), welche dieses Protokoll unterstützen, umbauen lassen. Das Script legt auch gleich die Variablen an. Eine Stunde Arbeit zur Anpassung müsst ihr sicher einkalkulieren.

Vorgehensweise:

[ol]
[li]Die zu Eurem Inverter gehörige Sunspec Dokumentation laden - in der Regel ein PDF file, in dem alle Sunspec Felder zu den Inverter-Registern aufgelistet sind. Google z.b „Solaredge Sunspec“. Wie wir daraus die Struktur isolieren, siehe weiter unten.
[/li][li]Von phpmodbus/Phpmodbus at master · adduc/phpmodbus · GitHub die 5 Dateien „PhpModbusMaster … usw“ in das symcon Skripte Verzeichnis laden
[/li][li]Aus dem beigefügten ZIP file die Datei Sunspec_load.ips.php in ein beliebiges Script laden (Copy-Paste). Das ist das Hauptprogramm.
[/li][li]Einen Kategorie-Einstiegsbaum anlegen - bei mir eine Kategorie Sunspec, und darunter 3 Kategorien „Common Model“, „Inverter Model“ und „Meter 1 Model“. Ggfs. weitere, falls euer Inverter mehr unterstützt.
[/li][li]Nun brauchen wir die Sunspec Definitionen. Mein Ansatz war, aus dem PDF file aus Punkt 1 die Definitionen zu isolieren. Das ging ganz einfach - PDF nach Word importieren, die entsprechenden Sektionen nach Excel kopieren und von dort ein csv file erzeugen. Siehe als Beispiel das beigefügte CSV file. Das laden wir nun in ein Script (copy-paste), und mißbrauchen dieses Script als Eingabe für das Hauptprogramm, um die notwendigen Variablen alle zu erzeugen. Ggfs. müsst ihr eure csv Ausgabe an die Einlese-Funktion anpassen oder umgekehrt.
[/li][li]Zuguterletzt durch die Anfangssektion im Programm gehen, und eure Kategorie-ID’s eintragen, die Start-/Stop Addressen für die Sektionen anpassen (z.B. Start des Meter 1 Models ab Addresse 40121, usw). Diese aus der Sunspec Doku eures Inverters entnehmen.
[/li][/ol]

Dann das Hauptprogramm alle z.b. 30sek laufen lassen. Das erzeugt die Sunspec Struktur (beim ersten Mal) sowie lädt alle Daten. Im Programm selbst sind viele print_r’s und echo’s eingestreut, um das zu debuggen. Das Ergebnis sind dann so ähnlich aus wie im angefügten Bild. Weiteres Post-Processing ist nötig - da z.B. einzelne Variablen mit Skale-Faktors belegt sind - d.h. man muß nochmal durch 100 oder 10 teilen, um auf die Watt Zahl o.ä. zu kommen. Sicherlich alles noch nicht perfekt.

In der Hoffnung, daß dies mal wer brauchen kann - viel Spass.

Grüsse

Sunspec_Symcon.zip (8.37 KB)

Danke für die Skripte!
Ich hänge mich hier mal mit meinen gesammelten Infos dran. Das ist eher die „zu Fuß“ Methode. Das Auslesen mit den Skripten aus dem ersten Beitrag ist natürlich eleganter :slight_smile:
Hier sind z.B. auch die Infos für einen LG Chem Resu 10H Speicher enthalten:

Meine Anlagenkonfiguration:
Wechselrichter: Solaredge SE5000H
Speicher: LG Chem Resu 10H
6,5 kWp

Hier die Adressen die ich verwende mit ein paar Zusatzinfos zum Umrechnen. Die Skripte sind wohl etwas stümperhaft… funktionieren aber.

Zum Ablauf der Umrechnung:
Zu fast jedem Wert gibt es einen Skalierungsfaktor der ebenfalls über Modbus ausgelesen wird. Mit diesem Skalierungsfaktor muss der eigentliche Wert umgerechnet werden. Hierzu habe ich unter jedem Modbus Device eine neue Float Variable erstellt und mit entsprechendem Profil versehen. Dann noch ein Script für das jeweilige Modbus Device erstellt das mit einem Ereignis aufgerufen wird. (Immer wenn der Skalierungsfaktor aktualisiert wird -> Script ausführen) Wichtig ist das nur die Modbus Devices für den Skalierungsfaktor zyklisch abgerufen werden. Also z. B. alle 30 Sekunden. Die Modbus Devices mit den eigentlichen Werten werden nur beim ausführen des Skripts ausgelesen. Werden beide zyklisch gelesen kommt es teilweise zu falschen Ergebnissen weil dann der Skalierungsfaktor z.B. nicht zum Wert passt. Man erhält dann z.B. nicht 450 Watt sondern 4500 Watt…

Die unten aufgeführten Adressen sind nicht komplett sondern enthalten nur die Werte die für mich relevant sind. Wenn was fehlt müsst ihr euch die Werte aus der Sunspec Dokumentation ziehen!

Falls hier jetzt jemand, angesichts meiner Skripte, die Hände über dem Kopf zusammenschlägt bin ich natürlich für elegantere Lösungen offen :slight_smile:

Die IDs in den Skripten müssen natürlich entsprechend angepasst werden!

Solaredge Modbus Adressen:

Name: AC - Netzfrequenz (Herz)

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 85[/li][li]Factor: Dividiere durch 1000[/li][/ul]

[HR][/HR]

Name: AC - Gesamte Produktion (kWh)

[ul]
[li]Einheit: DWord (32Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 93[/li][li]Factor: keinen[/li][/ul]

Name: AC - Gesamte Produktion (kWh) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 95[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(11487); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(30961);
$scalefactor = GetValueInteger(49750);
$data = $original * 1 ** $scalefactor;
$data2 = $data / 1000;
SetValueFloat(42127, $data2);
?>

[HR][/HR]

Name: AC - Leistung (Watt)

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 83[/li][li]Factor: keinen[/li][/ul]

Name: AC - Leistung (Watt) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 84[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(21222); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(53191);
$scalefactor = GetValueInteger(52040);
$data = $original * 10 ** $scalefactor;
SetValueFloat(27462, $data);
?>

[HR][/HR]

Name: AC - Strom (Ampere)

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 71[/li][li]Factor: keinen[/li][/ul]

Name: AC - Strom (Ampere) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 75[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(27901); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(32725);
$scalefactor = GetValueInteger(24015);
$data = $original * 10 ** $scalefactor;
SetValueFloat(51954, $data);
?>

[HR][/HR]

Name: DC - Leistung (Watt) die vom Wechselrichter in AC umgewandelt wird

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 100[/li][li]Factor: keinen[/li][/ul]

Name: DC - Leistung (Watt) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 101[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(43139); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(22196);
$scalefactor = GetValueInteger(48284);
$data = $original * 10 ** $scalefactor;
SetValueFloat(21176, $data);
?>

[HR][/HR]

Name: DC - Spannung (Volt)

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 98[/li][li]Factor: keinen[/li][/ul]

Name: DC - Spannung (Volt) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 99[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(53508); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(10607);
$scalefactor = GetValueInteger(20091);
$data = $original * 10 ** $scalefactor;
SetValueFloat(11695, $data);
?>

[HR][/HR]

Name: DC - Strom (Ampere)

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 96[/li][li]Factor: keinen[/li][/ul]

Name: DC - Strom (Ampere) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 97[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(55900); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(46616);
$scalefactor = GetValueInteger(38686);
$data = $original * 10 ** $scalefactor;
SetValueFloat(44619, $data);
?>

[HR][/HR]

Name: Eingespeiste kWh

[ul]
[li]Einheit: DWord (32Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 226[/li][li]Factor: keinen[/li][/ul]

Name: Eingespeiste kWh SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 242[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(41873); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(22211);
$scalefactor = GetValueInteger(43041);
$data = $original * 10 ** $scalefactor;
$data2 = $data / 1000;
SetValueFloat(58001, $data2);
?>

[HR][/HR]

Name: Bezogene kWh

[ul]
[li]Einheit: DWord (32Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 234[/li][li]Factor: keinen[/li][/ul]

Name: Bezogene kWh SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 242[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(36015); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(39392);
$scalefactor = GetValueInteger(12867);
$data = $original * 10 ** $scalefactor;
$data2 = $data / 1000;
SetValueFloat(52819, $data2);
?>

[HR][/HR]

Name: Status Wechselrichter

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 107[/li][li]Factor: keinen[/li][/ul]

Variablenprofil:
1 = Off
2 = Sleeping
3 = Grid Monitoring
4 = On
5 = Produktion
6 = Shutting Down
7 = Fault
8 = Setup

[HR][/HR]

Name: Einspeisung/Bezug (kW)
Minuswerte = Strombezug aus dem Netz, Pluswerte = Einspeisung in das Netz)

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 206[/li][li]Factor: keinen[/li][/ul]

Name: Einspeisung/Bezug (kW) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 210[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(12237); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(44899);
$scalefactor = GetValueInteger(54001);
$data = $original * 10 ** $scalefactor;
$data2 = $data / 1000;
SetValueFloat(29957, $data2);
?>

[HR][/HR]

Name: Temperatur Wechselrichter (°C)

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 103[/li][li]Factor: keinen[/li][/ul]

Name: Temperatur Wechselrichter (°C) SKALIERUNGSFAKTOR

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 106[/li][li]Factor: keinen[/li][/ul]

<?
ModBus_RequestRead(58998); //ID des Modbus Device welches ausgelesen werden soll
$original = GetValueInteger(10287);
$scalefactor = GetValueInteger(32574);
$data = $original * 10 ** $scalefactor;
SetValueFloat(23899, $data);
?>

[HR][/HR]

Name: Wechselrichter Typ

[ul]
[li]Einheit: Word (16Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 69[/li][li]Factor: keinen[/li][/ul]

Variablenprofil:
101 = single phase
102 = split phase
103 = three phase

[HR][/HR]

Speicher (LG Chem Resu 10H)

Name: Ladezustand in Prozent

[ul]
[li]Einheit: DWord (32Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 62852[/li][li]Factor: keinen[/li][/ul]

<?
$ips_data = GetValueInteger(40344); 
$ips_data_WordSwapped = (($ips_data>>16)&0xFFFF) | (($ips_data&0xFFFF)<<16); 
$float_value = u32ToFloat($ips_data_WordSwapped); 
SetValueFloat(54116, $float_value); 

function u32ToFloat($u32) 
{ 
  $sign = ($u32&0x80000000)? -1:1; 
  $exponent = (($u32&0x7F800000)>>23) - 127; 
  $base = (float)(($u32 & 0x007FFFFF)|0x00800000)/0x00800000 ; 
  return ((float) $sign * pow(2, $exponent) * $base); 
} 

?>

[HR][/HR]

Name: Speicherleistung in Watt (Negative Werte = Speicher Entladen, Positiv = Speicher laden…)

[ul]
[li]Einheit: DWord (32Bit - vorzeichenlos)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 62836[/li][li]Factor: keinen[/li][/ul]

<?
$ips_data = GetValueInteger(52988); 
$ips_data_WordSwapped = (($ips_data>>16)&0xFFFF) | (($ips_data&0xFFFF)<<16); 
$float_value = u32ToFloat($ips_data_WordSwapped); 
SetValueFloat(16893, $float_value); 

function u32ToFloat($u32) 
{ 
  $sign = ($u32&0x80000000)? -1:1; 
  $exponent = (($u32&0x7F800000)>>23) - 127; 
  $base = (float)(($u32 & 0x007FFFFF)|0x00800000)/0x00800000 ; 
  return ((float) $sign * pow(2, $exponent) * $base); 
} 

?>

[HR][/HR]

Name: Speicherstatus

[ul]
[li]Einheit: Short (16Bit - vorzeichenbehaftet)[/li][li]Funktion (Lesen): Holding Register auslesen (03)[/li][li]Modbus Adresse: 62854[/li][li]Factor: keinen[/li][/ul]

Variablenprofil:
1 = Aus
3 = Laden
4 = Entladen
6 = Erhaltungsladung

Und so sieht die Struktur bei mir aus:

Sonnige Grüße
Stephan

Hallo

Ich versuche, eine Verbindung zu Modbus TCP meines SolarEdge 5000 HD Wave mit einem LG 10H-Akku herzustellen. Alles gemäß https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf funktioniert, aber die Batterieadressen fehlen.

Kennt Ihr zufällig die richtigen Adressen?

Vielen Dank im Voraus.

[edit durch DrNiels: Einladung ein unbekanntes Tool auszuführen und die Ausgabe zu posten entfernt]

Probiere es seit zwei Tagn, ich komme aber nicht weiter, irgendwie krankt es an dem modbus master, wenn ich mir das script sunspec_load.ips anschaue wird aber auch in den Zeile ab 50 create modbus nichts erzeugt, kann hier der Fehler liegen ??








  
    
  
  
  
  
  
  
  



  
  
    
    
    
    
    


  
  
  phpmodbus/ModbusMasterTcp.php at master · adduc/phpmodbus · GitHub
    
    
  
  

    
    

  
  
  

  



  

  

  

    
  
  






    






  

      
    

      


    

  
  

      

  

  


    


  

  

  
  




  

  

  
    

  
    Skip to content
    
      
    

    
    



        
  
    
        
          
        

          
            
              
    adduc
    /
    phpmodbus


          

        
            <a href="/join?source=header-repo"
              class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5"
              data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/adduc/phpmodbus/blob/master/Phpmodbus/ModbusMasterTcp.php","user_id":null}}" data-hydro-click-hmac="ba223b43688a2acdb0847f4e2d30ca81a1b14e4e4cda2cdf3e47a490c12e91b7"
              data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
              Sign up
            

          
            
          
        
    

    
      
        
          
        
      

        
          
              
                
                  
                    Why GitHub?
                    
                      
                    
                  
                  
                    Features →
                    
                      Code review
                      Project management
                      Integrations
                      Actions
                          Packages
                      Security
                      Team management
                      Hosting
                    

                    
                      Customer stories →
                      Security →
                    
                  
                
              
              
                Enterprise
              

              
                
                  
                    Explore
                    
                      
                    
                  

                  
                    
                      Explore GitHub →
                    

                    Learn & contribute
                    
                      Topics
                        Collections
                      Trending
                      Learning Lab
                      Open source guides
                    

                    Connect with others
                    
                      Events
                      Community forum
                      GitHub Education
                    
                  
                
              

              
                Marketplace
              

              
                
                  
                    Pricing
                    
                       
                    
                  

                  
                    Plans →

                    
                      Compare plans
                      Contact Sales
                    

                    
                      Nonprofit →
                      Education →
                    
                  
                
              
          
        

      
          
            <div class="header-search flex-self-stretch flex-lg-self-auto mr-0 mr-lg-3 mb-3 mb-lg-0 scoped-search site-scoped-search js-site-search position-relative js-jump-to"
  role="combobox"
  aria-owns="jump-to-results"
  aria-label="Search or jump to"
  aria-haspopup="listbox"
  aria-expanded="false"
>
  
     -->
      
        <input type="text"
          class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
          data-hotkey="s,/"
          name="q"
          value=""
          placeholder="Search"
          data-unscoped-placeholder="Search GitHub"
          data-scoped-placeholder="Search"
          autocapitalize="off"
          aria-autocomplete="list"
          aria-controls="jump-to-results"
          aria-label="Search"
          data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
          spellcheck="false"
          autocomplete="off"
          >
          
          
            

            
              

  


  
    
      
      
      
    

    

    
    

    
      
        In this repository
      
      
        All GitHub
      
      ↵
    

    
      Jump to
      ↵
    
  





  
    No suggested jump to results
  



  


  
    
      
      
      
    

    

    
    

    
      
        In this repository
      
      
        All GitHub
      
      ↵
    

    
      Jump to
      ↵
    
  


  


  
    
      
      
      
    

    

    
    

    
      
        In this repository
      
      
        All GitHub
      
      ↵
    

    
      Jump to
      ↵
    
  





            
      
  


          

        <a href="/login?return_to=%2Fadduc%2Fphpmodbus%2Fblob%2Fmaster%2FPhpmodbus%2FModbusMasterTcp.php"
          class="HeaderMenu-link no-underline mr-3"
          data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/adduc/phpmodbus/blob/master/Phpmodbus/ModbusMasterTcp.php","user_id":null}}" data-hydro-click-hmac="95992cb419d9ef87846da65744b2b773bf6e509212bd8a6d216ed8140315c736"
          data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
          Sign in
        
          <a href="/join?source=header-repo&source_repo=adduc%2Fphpmodbus"
            class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1"
            data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/adduc/phpmodbus/blob/master/Phpmodbus/ModbusMasterTcp.php","user_id":null}}" data-hydro-click-hmac="95992cb419d9ef87846da65744b2b773bf6e509212bd8a6d216ed8140315c736"
            data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
            Sign up
          
      
    
  


  

  


    




      

  




  
        
    
      

  











  

    

      
        
    
  
    adduc
  
  /
  
    phpmodbus
  
  



      

      




  
    
  
    
    Watch
    <a class="social-count" href="/adduc/phpmodbus/watchers"
       aria-label="14 users are watching this repository">
      14
    

  

  
    
  

  
      
        
        Fork

    <a href="/adduc/phpmodbus/network/members" class="social-count"
       aria-label="42 users forked this repository">
      42
    
  


    
      
<nav class="hx_reponav reponav js-repo-nav js-sidenav-container-pjax clearfix container-lg p-responsive d-none d-lg-block"
     itemscope
     itemtype="http://schema.org/BreadcrumbList"
    aria-label="Repository"
     data-pjax="#js-repo-pjax-container">

  
    
      
      Code
      
  

    
      
        
        Issues
        1
        
    

  
    
      
      Pull requests
      1
      
  


    
      
        
        Actions

    

    
      
      Projects
      0


    
      
      Security

    
      
      Insights




  
  <nav class="reponav js-reponav text-center no-wrap"
       itemscope
       itemtype="http://schema.org/BreadcrumbList">

    
      
        Code
        
    

      
        
          Issues
          1
          
      

    
      
        Pull requests
        1
        
    


      
        
          Projects
          0
          
      

      
        
          Actions
          
      


      
        Security
        

      
        Pulse


  



  

  

  



  

    
    


  


    Permalink

    
      
    
      
        
          Dismiss
        
        Join GitHub today
        GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
        Sign up
      
    
  


    
      
        

  <summary class="btn btn-sm css-truncate"
           data-hotkey="w"
           title="Switch branches or tags">
    Branch:
    master
    
  

  
    
      
        
      
    
  


        
          <a href="/adduc/phpmodbus/find/master"
                class="js-pjax-capture-input btn btn-sm BtnGroup-item"
                data-pjax
                data-hotkey="t">
            Find file
          
          
            Copy path
          
        
      
      
          phpmodbus/Phpmodbus/ModbusMasterTcp.php /

  
      
    Jump to
    
  
  
    
      
        Code definitions
        
          
        
      
      
          
            
              No definitions found in this file.
            
          
        
          
        
      
      
        
          Unable to determine state of code navigation
          
        
      
    
  


      

      
        <a href="/adduc/phpmodbus/find/master"
              class="js-pjax-capture-input btn btn-sm BtnGroup-item"
              data-pjax
              data-hotkey="t">
          Find file
        
        
          Copy path
        
      
    



    
      
        Fetching contributors…
      

      
        
        Cannot retrieve contributors at this time
      






    <div class="Box mt-3 position-relative
      ">
      

  

      49 lines (47 sloc)
      
    1.25 KB
  

  

    
      Raw
        Blame
      History
    


    
          <a class="btn-octicon tooltipped tooltipped-nw js-remove-unless-platform"
             data-platforms="windows,mac"
             href="https://desktop.github.com"
             aria-label="Open this file in GitHub Desktop"
             data-ga-click="Repository, open with desktop">
              
          

          <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
            aria-label="You must be signed in to make or propose changes">
            
          
          <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
            aria-label="You must be signed in to make or propose changes">
            
          
    
  




      

  
      

      
        
        <?php
      
      
        
        /**
      
      
        
         * Phpmodbus Copyright (c) 2004, 2012 Jan Krakora
      
      
        
         *  
      
      
        
         * This source file is subject to the "PhpModbus license" that is bundled
      
      
        
         * with this package in the file license.txt.
      
      
        
         *   
      
      
        
         *
      
      
        
         * @copyright  Copyright (c) 2004, 2012 Jan Krakora
      
      
        
         * @license PhpModbus license 
      
      
        
         * @category Phpmodbus
      
      
        
         * @tutorial Phpmodbus.pkg 
      
      
        
         * @package Phpmodbus 
      
      
        
         * @version $id$
      
      
        
         *  
      
      
        
         */
      
      
        
        

      
      
        
        require_once dirname(__FILE__) . '/ModbusMaster.php'; 
      
      
        
        

      
      
        
        /**
      
      
        
         * ModbusMasterTcp
      
      
        
         *
      
      
        
         * This class deals with the MODBUS master using TCP. Extends ModbusMaster class.
      
      
        
         *  
      
      
        
         * Implemented MODBUS functions:
      
      
        
         *   - FC  1: read coils
      
      
        
         *   - FC  3: read multiple registers
      
      
        
         *   - FC 15: write multiple coils 
      
      
        
         *   - FC 16: write multiple registers
      
      
        
         *   - FC 23: read write registers
      
      
        
         *   
      
      
        
         * @author Jan Krakora
      
      
        
         * @copyright  Copyright (c) 2004, 2012 Jan Krakora
      
      
        
         * @package Phpmodbus  
      
      
        
         *
      
      
        
         */
      
      
        
        class ModbusMasterTcp extends ModbusMaster {
      
      
        
          /**
      
      
        
           * ModbusMasterTcp
      
      
        
           *
      
      
        
           * This is the constructor that defines {@link $host} IP address of the object. 
      
      
        
           *     
      
      
        
           * @param String $host An IP address of a Modbus TCP device. E.g. "192.168.1.1".
      
      
        
           */         
      
      
        
          function ModbusMasterTcp($host){
      
      
        
            $this->host = $host;
      
      
        
            $this->socket_protocol = "TCP";
      
      
        
          }
      
      
        
        }
      


  
    
      
    
    
      
        
          
            Copy lines
          
        
        
          
            Copy permalink
          
        
        View git blame
          Reference in new issue
      
    
  

  

    

  

  
    
    
       -->
        
        Go
    
  



  


    
  
  

  

        

  
    
      © 2020 GitHub, Inc.
        Terms
        Privacy
        Security
        Status
        Help

    

    
      

   
        Contact GitHub
        Pricing
      API
      Training
        Blog
        About
    
  
  
    
  




  
    
    
      
    
    You can’t perform that action at this time.
  


    
    
    
    
    
    
    
    
    
  <div class="js-stale-session-flash flash flash-warn flash-banner" hidden
    >
    
    You signed in with another tab or window. Reload to refresh your session.
    You signed out in another tab or window. Reload to refresh your session.
  
  
  
    
    
      
        
      
      
    
  


  
  
  


  

  



Fatal error:  Uncaught Error: Class 'ModbusMasterTcp' not found in /mnt/data/symcon/scripts/52230.ips.php:171
Stack trace:
#0 /mnt/data/symcon/scripts/52230.ips.php(62): ReadCommonModel()
#1 {main}
  thrown in /mnt/data/symcon/scripts/52230.ips.php on line 171

Hallo,
Gibt es inzwischen ein brauchbares Skript für Solaredge Wechselrichter mit Modbus anbindung?
Wo einfach die wichtigsten Werte drin sind etc.
So mit Scalefaktor etc.
Komme da einfach nicht weiter.

Danke.

Moin MOin,

erstmal besten dank an @axelroro .
Hab dein „Modul“ soweit einbinden können.
Gab zwar ein paar Hürden die konnte ich aber meistern.
Nun habe ich ein Problem beim auslesen meines Energiemessgerätes.
Derzeit bearbeite ich nur „ReadInverterModul()“ alle anderen habe ich auskommentiert.
Wenn ich „ReadMeter1Modul()“ hinzunehmen bekommen ich einen Fehler Verbindungsaufbau abgelehnt „Modbusmaster.php:109“
Wenn ich „ReadMeter1Modul()“ alleine ausführe bekomme ich eine andere Meldung „…ist not establihed …ModbusMaster.php:167“

Könnte mir da einer Helfen?

stehe irgendwie ein wenig auf dem Schlauch.

Grüße