Seite 8 von 10

Re: ModBus TCP Interface

Verfasst: 23.10.2023, 12:04
von Omen
Alle funktioniert Perfekt 1000 Dank an drose28357

Re: ModBus TCP Interface

Verfasst: 08.11.2023, 17:57
von Commander1971
Hallo zusammen, hat den jetzt schon jemand den EM24 in die Homematic Welt eingebunden, für mich wäre die bezogene Leistung nur interessant und wäre so nett, mir das zu erklären?

Re: ModBus TCP Interface

Verfasst: 09.12.2023, 09:25
von Commander1971
Für alle die auch auf eine Lösung gehofft haben für den EM24, hab es mit Unterstützung gelöst, leider ist das Ergebnis nur bis zu einen bestimmten Leistungswert aktuell, nach ca. 3000Watt Bezug, ändert sich der Wert ins negative und wird kleiner, vielleicht hat jemand eine Idee voran das liegt.
Hier mein Skript dazu.

Code: Alles auswählen

var tst1;
tst1 = tst1/10.0;
! Lesen des Wertes 
dom.GetObject("CUxD.CUX2801001:16.CMD_SETS").State("tclsh /usr/local/addons/modbus/modbus_interface.tcl xxx.xxx.xxx.xxx 502 1 04 40 1");
dom.GetObject("CUxD.CUX2801001:16.CMD_QUERY_RET").State(1);
! Zuweisen in Variable
tst1 = dom.GetObject("CUxD.CUX2801001:16.CMD_RETS").State();
tst1 = (tst1.ToFloat())/10.0;
! Schreiben in Systemvariable formatiert (Zählerstand)
dom.GetObject('E3DC_Haus').State(tst1);
! Ausgabe
WriteLine(dom.GetObject("E3DC_Haus").Value());

Re: ModBus TCP Interface

Verfasst: 23.12.2023, 17:19
von Pit Sunny
Hallo zusammen,

ich habe heute die CUX Version des "tclsh /usr/local/addons/modbus/modbus_interface.tcl" installiert.
Die tlc files liegen im beschriebenen Ordner.
Wenn ich folgendes Script starte ...

Code: Alles auswählen

WriteLine("Hallo Welt");
var tst1;
! Lesen des Wertes 
dom.GetObject("CUxD.CUX2801006:16.CMD_SETS").State("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.179.54 502 302 01 1 1");
WriteLine("...1");
dom.GetObject("CUxD.CUX2801006:16.CMD_QUERY_RET").State(1);
WriteLine("...2");
! Zuweisen in Variable
tst1 = dom.GetObject("CUxD.CUX2801006:16.CMD_RETS").State();
WriteLine("...3" + tst1);
! Schreiben in Systemvariable formatiert (lGetOut ist ein Sting)
dom.GetObject('E3DC_Haus').State(tst1);
WriteLine("...4");
! Ausgabe
WriteLine("E3DC_Haus:  " + tst1);

bekomme ich folgendes Ergebnis:

Code: Alles auswählen

Hallo Welt!
...1
...2
...3
...4
E3DC_Haus: 
Das heisst es werden alle Befehle ausgeführt. Aber leider steht in der var tst1 nur ein Leerstring :(

Ich vrmute folgende 2 Ursachen:
a) Mein vorhandener CUxD.CUX2801006 ist ein einfacher Switch - muß ich hier ein anderes Gerät anlegen ? Wenn ja welches ?
b) Ich habe bei den tcl parametern noch einen Fehler (192.168.179.54 502 302 01 1 1
302 ist die Startadresse vn meinem Modbus Device
01 ist die Anzahl der Register
1 ist die Länge (aber welche ??)
1 ist der Wert (aber welcher ??)

Mit dem QModMaster bekomme ich bei den Einstellungen 302 1 Dec Dec einen valide Rückgabewert.

Hat jemand eine Idee ob meine Fehlerquelle a) und oder b) oder noch etwas anders ist ?

Würde mich über eine Tip sehr freuen !

Pit Sunny

Re: ModBus TCP Interface

Verfasst: 24.12.2023, 08:02
von Balisto
Anstatt die 302 musst du erst mal sagen was du willst.
Auslesen oder etwas schreiben.
Nehme anstatt die 302 erstmal 04 read input registers.
Danach die Adresse des Parameters und dann die länge.
Schau dir mal den Aufbau der Abfrage auf Seite 1 an.
Du hast die Werte vertauscht.
Gruß

Re: ModBus TCP Interface

Verfasst: 02.01.2024, 23:00
von WolfHenk
ok, ich wieder...

ich lese nun sechs Register in folgender Art:

Code: Alles auswählen

  system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.7.123 502 255 4 4 1",&lGetOut,&lGetErr);
 ! lGetOut ist ein STRING
   prozent = (lGetOut.ToFloat()/100); ! macht ein FLOAT draus und dividiert /100 damit die Zahl stimmt
   Write(" prozent = "); WriteLine(prozent);
   dom.GetObject('Aussentemperatur').State(prozent);  ! schiebts in die Variable...
   Write("Aussentemperatur.State() = ");WriteLine(dom.GetObject('Aussentemperatur').State());
Da ich die Werte von einem eigenen Gerät und nicht von einem Umrichter oder so lese, kann ich seriell mitlesen und feststellen, dass die Verbindung nicht offen bleibt.

Code: Alles auswählen

22:54:06.184 -> client disconnected
22:54:06.251 -> new client
22:54:06.416 -> client disconnected
22:54:06.483 -> new client
22:54:06.682 -> client disconnected
22:54:06.748 -> new client
22:54:06.947 -> client disconnected
22:54:06.980 -> new client
22:54:07.179 -> client disconnected
22:54:50.687 -> ledprg
22:54:50.720 -> LeseSensoren
22:54:50.720 -> Lueftung IST 0
22:54:50.720 -> Sensor Innen:  Luftfeuchtigkeit: 37.90%  Temperatur: 23.70°C    Taupunkt: 8.51°C  
22:54:50.720 -> Sensor Aussen: Luftfeuchtigkeit: 37.90%  Temperatur: 23.50°C    Taupunkt: 8.33°C  
Die Testsoftware macht die Verbindung auf und liest...alle 500 mSec oder sogar noch mehr... und die Verbindung bleibt offen.
Sie sendet also nicht nach jedem Lesen einen Disconnect, sondern erst, wenn ich diese Verbindung schließe oder der Timeout zuschlägt.

Das TCL-Script baut aber nach jedem Lesen eines Wertes die Client-Verbindung wieder ab.

Ich habe 6 Register und zwei Inputs zu lesen.

Ich möchte eigentlich, dass die Verbindung offen bleibt, solange der Input

Code: Alles auswählen

 system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.7.123 502 255 2 1 1",&lGetOut,&lGetErr);
   Write("LED = ");WriteLine(lGetOut);
ordentlich alle dreissig Sekunden seinen Zustand wechselt. Dafür ist er als WatchdogFeed auch gemacht.
Hat wer dazu eine Idee oder am Ende sogar ein Beispiel?

Re: ModBus TCP Interface

Verfasst: 02.02.2024, 18:01
von Balisto
Bei mir funtioniert es nun auch....juhu...nach langem hin und her.

Für die die evtl. das gleiche Problem haben.....

Anbindung einer Warwasserwärmepumpe Ochsner genius 333 über modbus an die HM.

Ich hatte einen modbus to tcp von waveshare. Hat mit dem PC und auch mit der Handy app funtioniert.
Lesen wie schreiben, aber aus der homematic raus und rein, absolut nichts.

Habe jetzt einen ELFIN11 verbaut und warum auch immer alles läuft auf anhieb.

Evtl. irgendeine Einstellung die ich nicht gefunden habe oder falsch eingestellt habe.
Das einzige was ich anders eingestellt habe ist die ip und der port...

Re: ModBus TCP Interface

Verfasst: 02.02.2024, 19:23
von HMNutzer
Welchen genau hast Du gekauft? Hab schon genug Geld für Versuche ausgegeben…

Re: ModBus TCP Interface

Verfasst: 02.02.2024, 19:32
von Matsch
Ich verwende auch ELFIN11, klappt wunderbar. Zudem gibt es eine extrem umfangreiche Doku dazu - auf der Herstellerseite.

Re: ModBus TCP Interface

Verfasst: 02.02.2024, 20:57
von Balisto
hardware: HF Elfin-EE11A Serial Server IP Function RS485 Serial Port to Network Modbus TPC

https://www.ebay.de/itm/255316342613?var=555295722357