Neue Versionen und Support zum Modbus-Modul

Begonnen von StefanStrobel, 20 August 2017, 12:11:08

Vorheriges Thema - Nächstes Thema

laserrichi

#420
also ich weis ja nicht wie dein Netzwerk aussieht, gehst du z.b. über eine Wlan Verbindung dahin ?
Ich hab bei meinem Modbus Device gemerkt das bei zu vielen Abfragen sich das auch gerne mal beleidigt fühlt.
Daher erst mal der Ansatz die Zeiten zu erhöhen.

Brauchst du wirklich alle 30sekunden die Informationen ?

Setz das ruhig mal auf 5min. Ich frage mein Solar z.b. nur alle 10min ab, sicher gehen mir dann schon mal Peaks verloren in der Statistik.

Wenn du z.b. 10 requests hast und jeder bringt einen timeout von z.b. 3sek plus die eigentliche request zeit, dann bist du schon über 30sekunden ;-)

Weniger abfragen ist meist mehr.
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

bertl

Sämtliche Verbindungen sind verkabelt, also über LAN verbunden.

5min sind definitiv zu lange, da z.B. die Zusatzheizung meistens nur für etwa 1,5 Minuten anspringt und dann würde ich diverse Events verpassen.

Ich habe das Abfrageintervall vor 2 Stunden auf 1Min erhöht und hatte innerhalb dieser Zeit schon 2 Timeouts.

Gibt es sonst noch Lösungsvorschläge (Baudrate zwischen Modbus-Modul und Ethernet-Converter von 9600 auf ?? erhöhen, ...)?

pejonp

@bertl,

wenn die Modbusschnittstellen 115200 Baud hergeben würde ich das auch einstellen. laut Doku sollte es die Pumpe und das TCP/IP Modul können.
Versuch macht klug ;-) .

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Wzut

Zitat von: bertl am 23 März 2020, 20:23:02
Gibt es sonst noch Lösungsvorschläge
Wieviele Register liest du denn jedesmal ? Ich hatte bei meinem SMA WR auch ab und an die Meldungen im Log und habe dann die Anzahl der Lese Register auf das wirklich notwendige beschränkt. Seit dieser Zeit ist Ruhe im Log.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

StefanStrobel

Zitat von: w125t am 23 Januar 2020, 11:57:08
Ich hatte schon seit einiger zeit einen EPEVER TRACER Laderegler mit USB-RS485 Adapter mit CM340 und Modbussattr am laufen , seit voriger Woche erhalte ich jedoch keine Readings mehr.
Am WINDOWS rechner funktioniert der Adapter problemlos.

Ich habe schon einige tests mit den timern gemacht , aber leider immer kein Ergebnis.

Könnt Ihr helfen ?

LOG ist als Anlage dran.
Danke

Hallo w125t,

ich habe Deine Frage leider erst jetzt bemerkt. Bei einem Blick ins Log fallen mir direkt Konfigurations-Fehler auf:
Zitat
request: id 1, fCode 4, type h, adr 12544
Du versuchst Holding-Register mit function code 4 zu lesen. Damit liest Du aber ein Input-Register. Entsprechend wird beim Verarbeiten der Antwort nach einer Parse-Anweisung für i12544 gesucht. Die gibt es aber nicht.

Poste doch mal die komplette Konfiguration, dann lässt sich das Problem sicher lösen, sofern es noch aktuell ist.

Gruss
   Stefan

bertl

Ich glaube das Problem für meine Log-Einträge (Timeouts mit "read buffer empty") gefunden zu haben.

Aufgrund des Vorschlages von pejonp habe ich die Baudrate auf 115200 eingestellt.
Zitat von: pejonp am 24 März 2020, 00:46:28wenn die Modbusschnittstellen 115200 Baud hergeben würde ich das auch einstellen. laut Doku sollte es die Pumpe und das TCP/IP Modul können.
Versuch macht klug ;-) .

Dabei ist mir ein Eintrag im Log aufgefallen, den ich bis jetzt nicht beachtet habe, da ja das Lesen und Schreiben der Modbus-Werte prinzipiell funktioniert hat.
2020.03.24 09:55:19 3: mdbsWaermepumpe: DoRequest tries to use function code 6 to write more than one register. This will not work

Nach genauerer Recherche ist mir aufgefallen, dass beim Mitsubishi Modbus-Adapter sämtliche Werte in einem separaten Register stehen (keine Werte wo 2 Register wie z.B. bei Float benötigt werden).
Bei meinen Device-Definitionen "dev-([cdih]-)*defLen" wurden die Holding- und Input-Register aber auf 2 gesetzt.

Ich habe das Modbus-Modul "98_ModbusEcodanWP.pm" von Fritz Muster verwendet und bin davon ausgegangen, dass die Device-Definitionen passen, nachdem es sich um den gleichen Modbus-Adapter handelt.
https://forum.fhem.de/index.php/topic,69066.msg605457.html#msg605457

Lieber Fritz, vielleicht kannst du die Device-Definition in deinem Modul "98_ModbusEcodanWP.pm" richtig stellen, falls es jemand anderer auch verwendet.

Nachdem ich die "dev-([cdih]-)*defLen" für die Holding- und Input-Register auf 1 gesetzt habe, sind die Timeouts mit "read buffer empty" weg.

Was ich sonst noch aufgrund den Empfehlungen von laserrichi und pejonp getan habe:
+ Device Abfrageintervall von 30 auf 60 Sekunden erhöht
+ Baudrate von 9600 auf 115200 erhöht

Danke an alle die mir geholfen haben mein Problem zu lösen!  :)

laserrichi

Zum Thema Intervall ist mir etwas aufgefallen als ich mir das Modul soeben nochmal angesehen habe.

Bei den Abfragen sind Poll Delays drin.
z.b. x6  oder auch höhere Werte mit x360
das ist ein multiplikator also 6x 60sekunden. Vieleicht macht es hier Sinn das du Dir das nochmal ansiehst und nach deinen bedürfnissen anpasst.

RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

bertl

Hallo laserrichi,

danke für den Hinweis - dieses Detail ist mir bekannt und die Werte sind darauf abgestimmt!

Gruss bertl

Fritz Muster

Zitat von: bertl am 25 März 2020, 11:20:44
Lieber Fritz, vielleicht kannst du die Device-Definition in deinem Modul "98_ModbusEcodanWP.pm" richtig stellen, falls es jemand anderer auch verwendet.

Erledigt, danke für den Hinweis.

Zitat von: bertl am 25 März 2020, 11:20:44
+ Baudrate von 9600 auf 115200 erhöht

Das funktioniert aber nicht bei Anbindung via Arduino wie ich es in meinem Thread beschreibe!

Grüße Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

bertl

Hallo Fritz,

danke für die Implementierung!

Zitat von: Fritz Muster am 30 März 2020, 13:20:27Das funktioniert aber nicht bei Anbindung via Arduino wie ich es in meinem Thread beschreibe!
Warum sollte das nicht funktionieren?

Meines Wissens kann ein Arduino mehr als nur 9600 Baud?  https://forum.arduino.cc/index.php?topic=207375.0

Gruss bertl

Knallkopp_02

#430
Ich bin durch Zufall auf diesen Thread gestossen, weiß aber nicht, ob ich richtig bin, da ich nicht genau weiß ob die Datenabfrage bei mir über RS485 läu.ft

Ich habe jetzt an meinem Raspberry einen USB To Serial Adapter, an dem dann der Adapter zu RS485 mit der Anlage ist (zumindest gehe ich davon aus). Da diese Konstellation am PC ja mit dem Maservolt eigenen Programm läuft gehe ich davon aus, das dies auch generell am Raspberry funktionieren sollte.

Leider verstehe ich nicht, wie ich nun die Anfrage per Modbus an die Wechselrichter schicke und dann die passende antwort erhalte.

Der Befehl ist so aufgebaut:

ID WR Befehl Checksumme
22 01 ff ff b4 00 00 00 d5

Wenn ich den oben genannte Frage am PC stelle (das habe ich über VBA getestet), bekomme ich folgende Antwort.

Wobei Modell Firmware Datum sein sollte
22 01 ff ff b4 00 00 00 d5 ff ff 22 01 b4 fe 04 57 36 07 4a 03 06 e4 00 12 00 17 08 e5 00 54 00 29 08 e6 01 00 24 07 4f

Generell habe ich folgendes in FHEM definiert:

define ModBusPVA Modbus /dev/ttyUSB1@9600,8,N,1

Würde mich über eure Hilfestellung freuen.

Gruß Knallkopp_02
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

laserrichi

Also RS-485 ist im Prinzip eine Definition für die Physikalische Schnittstelle  und ist eine asynchrone Datenübertragung und symetrisch damit eben keine Störeinflüsse auf die Leitungen kommen.
Das hat jetzt erstmal nichts mit Modbus zu tun :-)
Aber jetzt kommt der Haken... du gehst von USB auf serial... das teil muss dann die gleiche Datenrate aufweisen wie deine Gegenstelle.

Du hast jetzt 9600 baud eingestellt, ist normalerweise aus alten Zeiten und die sichere Datenrate was eigentlich alle können müssten.

Dein USB to serial sollte das ja dann richtig umsetzen. Dann wandelst du das in RS-485 symetrische Spannungspegel.

Sofern die Physik Ok ist. gehts dann an Modbus.

Du nutzt Modbus Modul.. hast du schon mal ModbusAttr  probiert ? Und eben die readings direkt selbst difiniert ?


RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

pejonp

@Knallkopp_02

was für einen WR nutzt du den ? Bezeichung, Datenblatt ?

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Knallkopp_02

#433
Hallo ihr beiden,

Leider ist die Dokumentation der Schnittstelle sehr minimalistisch, um es positiv auszudrücken, vom Hersteller Mastervolt habe ich praktisch nichts an Doku gefunden. Durch Zufall bin ich dann auf einen Beitrag in einem anderen Forum gestoßen wo jemand die Kommunikation mit KNX lösen wollte und da habe ich zumindest diese Daten her.

Insgesamt nutzte ich 3 Wechselrichter die hintereinander an einem RJ45 Kabel an besagtem Adapter hängen ( Mastervolt XS 6500 und 2x XS 3200)

Angeblich soll die Kommunikation ähnlich wie zum Soladin von Mastervolt sein.

Ich habe damals vom Solateur einmal diesen absolut überteuerten Adapter bekommen, und die Info, dass ich die Baudrate auf 9600 stellen soll, und dann das Mastervolt eigene Programm darauf zugreifen kann. Die ist zwar funktional, war aber nur mit Gut Zureden auch unter Win 10 ans laufen zu bekommen.

Wenn ich dich Laserrichi jetzt richtig verstehe muss ich mit modbusattr eine ,,Befehl" so wie oben erstellen, dem gebe ich einen Namen und dann die Zeichenfolge. Daraufhin sollte er mir dann irgendetwas zurück geben?

Ist mein erstes herumspielen mit Modbus und Fhem, daher muss ich erstmal die Zusammenhänge verstehen. Mit dem VBA Script musste erstmal der Port geöffnet werden, dann die Anfrage gestellt und dann die Antwort abgefragt werden. Leider funktioniert das Script under Win 10 64 Bit nicht mehr, dass hatte ich mir vor langer Zeit mal unter 32 Bit zusammen gestückelt.

Gruß Knallkopp_02
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

pejonp

@Knallkopp_02

Ist es dieser Hersteller : https://www.mastervolt.de/produkte/masterbus-interfaces/masterbus-modbus-interface/

Meine Gehversuche mit meinem SolarEdge sahen so aus. Er ist übe einen RS485/IP-Adapter angebunden.
wenn du per USB, dann eher so

define Modbus /dev/device@baudrate,bits,parity,stop
define <name> ModbusAttr <Id> <Interval>

define ModbusUSB Modbus /dev/ttyUSB2@38400,8,E,2
define PWP ModbusAttr 20 0 ASCII

richtige Modbus-ID eingeben und ein Modbus-Register abfragen. Versuche mit h1 ?! Oder es gibt auch jetzt eine Funktion die das automatisch versucht. Schau mal ins Forum oder in die commandref (ModbusAttr).


...
Set-Commands for Fhem as Modbus master operation

    are created based on the attributes defining the data objects.
    Every object for which an attribute like obj-xy-set is set to 1 will create a valid set option.
    Additionally the attribute enableControlSet enables the set options interval, stop, start, reread as well as scanModbusObjects, scanStop and scanModbusIds (for devices connected with RTU / ASCII over a serial line).
    Starting with Version 4 of the Modbus module enableControlSet defaults to 1.
...



Beispielcode
# RS485 SolarEdge Wechselrichter
define PWP ModbusAttr 3 60 192.168.2.7:20108 RTU
attr PWP dev-h-combine 30
attr PWP dev-h-defPoll 1
attr PWP obj-h100-reading I_DC_Leistung_W
attr PWP obj-h101-reading I_DC_Leistung_SF
attr PWP obj-h103-expr $val / 100
attr PWP obj-h103-format %.f
attr PWP obj-h103-reading Temp_Kuehler_C
attr PWP obj-h107-map 1:Aus, 2:Nachtmodus, 4:WR_An
attr PWP obj-h107-reading C_Status
attr PWP room Solar
attr PWP verbose 5


pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect