ich kann über Deine Scripte aus Beitrag 1 keine Abfragen über meinem Wechselrichter SUN2000 8KLT-M1 ausführen.
Mit den Programmen RMMS.exe (Radzio_Modbus-Master-Simulator, Windows) und "Modbus TCP CLient" (Android) klappt das Auslesen tadellos.
Mit meinem Testscript leider nicht.
In den folgenden Beispielen verwende ich die Adresse 32016 zum Auslesen von Spannung und Strom der beiden PV-Strings.
Hier mein Testscript, das ich unter "Programme und Verknüpfungen / Script testen" ausführe.
Code: Alles auswählen
! **************** Lesen mit system.Exec ****************
string lGetOut;
string lGetErr;
!Syntax:
!Lesen : modbus_interface.tcl IP-Adresse Port DeviceNummer Funktion Register Länge
!Schreiben : modbus_interface.tcl IP-Adresse Port DeviceNummer Funktion Register Wert
! Lesen des Wertes
! system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.178.142 502 255 03 71 1",&lGetOut,&lGetErr);
! Powermeter
system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.101.107 502 1 03 32016 2",&lGetOut,&lGetErr);
! Schreiben in Systemvariable formatiert (lGetOut ist ein Sting, die Ausgabe dann ein Zahlenwert)
! dom.GetObject('E3DC_Haus').State(0 + lGetOut);
! Ausgabe
WriteLine("PV-Sting Voltage: " + (0 + lGetOut));
WriteLine("Fehler: " + (lGetErr));
Ändere ich die Kontaktdaten (IP-Adresse, Device-ID etc. ) bekomme ich eine Fehlermeldung, d.h. dein Script wird korrekt ausgerufen.
Frage: Gibt es eine Möglichkeit, das Script zu debuggen, z.B. die Reply (RX) in einer Debug-Variable zurückzugeben?
P.S. Oder habe ich das Modbus-Script falsch aufgerufen ???
Hier ein paar Screenshots mit der Android App "Modbus TCP CLient".
1) Konfiguration der Verbindung 2) Ergebnisanzeige der Abfrage, die ersten 4 Elemente zeigen Spannung (z.B. 335,6 Volt) und Strom (z.B. 7,85 A) 3) Protokoll der Abfrage-Nachrichten mit Request (TX) und Antwort (RX). Der letzte Vorgang enthält die Daten für die oben gezeigte Ergebnisanzeige) Die Adresse steht in [125,16] etc. das sieht vernünftig aus.