ModBus TCP Interface
Moderator: Co-Administratoren
-
- Beiträge: 54
- Registriert: 25.07.2019, 11:36
- Danksagung erhalten: 4 Mal
Re: ModBus TCP Interface
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?
-
- Beiträge: 54
- Registriert: 25.07.2019, 11:36
- Danksagung erhalten: 4 Mal
Re: ModBus TCP Interface
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.
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
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 ...
bekomme ich folgendes Ergebnis:
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
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:
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
Zuletzt geändert von alchy am 23.12.2023, 17:37, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
-
- Beiträge: 50
- Registriert: 14.03.2016, 08:11
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 1 Mal
Re: ModBus TCP Interface
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ß
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
ok, ich wieder...
ich lese nun sechs Register in folgender Art:
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.
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
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?
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());
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
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);
Hat wer dazu eine Idee oder am Ende sogar ein Beispiel?
-
- Beiträge: 50
- Registriert: 14.03.2016, 08:11
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 1 Mal
Re: ModBus TCP Interface
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...
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...
-
- Beiträge: 715
- Registriert: 24.10.2016, 17:18
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 151 Mal
- Danksagung erhalten: 22 Mal
Re: ModBus TCP Interface
Welchen genau hast Du gekauft? Hab schon genug Geld für Versuche ausgegeben…
Viele Grüße
Martin
RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus
Martin
RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus
-
- Beiträge: 5538
- Registriert: 30.05.2019, 11:37
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Chemnitz
- Hat sich bedankt: 120 Mal
- Danksagung erhalten: 759 Mal
Re: ModBus TCP Interface
Ich verwende auch ELFIN11, klappt wunderbar. Zudem gibt es eine extrem umfangreiche Doku dazu - auf der Herstellerseite.
-
- Beiträge: 50
- Registriert: 14.03.2016, 08:11
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 1 Mal
Re: ModBus TCP Interface
hardware: HF Elfin-EE11A Serial Server IP Function RS485 Serial Port to Network Modbus TPC
https://www.ebay.de/itm/255316342613?var=555295722357
https://www.ebay.de/itm/255316342613?var=555295722357