Ich habe einen RS485 Modbus zwischen einem Solarwechselrichter und einem Smartmeter. Um die Daten des Smartmeters loggen zu können, habe ich in FHEM ein Modbus Device angelegt, sowie ein ModbusAttr als passiver Listener auf diesem Modbus. Nach erzeugen der Datenobjekte läuft dieses Setup ganz gut, ich kann die gewünschten Daten in meinen Readings sehen. Nach einiger Zeit, mal 30 Minuten, mal 3 Stunden kommt es jedoch vor, das die Readings nicht mehr aktualisiert werden.
- Wenn ich im RS485 Device Verbose auf 5 setzte, sehe ich das noch Daten empfangen werden
- Wenn ich im ModbusAttr Device Verbose auf 5 setzte, sehe ich im Fehlerfall keinerlei Aktivität mehr (vorher war das empfangen und parsen der Objekte zu sehen)
- Manchmal kann durch "rumspielen" (Verbose Level hin und her schalten, ...) das ModbusAttr wieder zur Arbeit bewegt werden, meistens hilft nur ein "shutdown restart"
Ich habe im Moment keine Idee wie ich diesen Fehler beikommen kann.
PS: Auf meinem Modbus ist recht viel los, es werden pro Sekunde 5 - 6 Werte übertragen. Die Daten werden anschließend mit einem event-aggregator komprimiert.
Gruß
Thomas
Hallo Thomas,
danke für den Hinweis.
Offenbar verliert der passive Modus die Synchronisation, da in Deinem Fall ein Master seinen Request mehrfach in schneller Folge wiederholt und das Modul dann den zweiten Request als Response interpretieren möchte. Daraufhin findet es den Einstieg nicht mehr und versucht immer mitten in Frames etwas gültiges zu finden. Den Fall hatte ich so noch nicht, aber das sollte sich verbessern lassen.
Leider ist das nicht ganz trivial, da man einem Frame nicht direkt ansehen kann, ob es ein Request oder ein Response ist. Das Modul müsste also im Zweifel beides ausprobieren.
Ich melde mich mit einer neuen Version sobald ich das umgesetzt und grob getestet hab.
Gruss
Stefan
Hallo Stefan,
danke zunächst mal. Wenn du weitere Informationen, Logs oder sonstiges brauchst melde dich. Interpretierst Du aus meinem Log das der Modbus Master einen 2. Request schickt obwohl der Slave noch nicht geantwortet hat?
Schöne Feiertage.
Gruß
Thomas
Hallo Thomas,
ja, das sieht man an den empfangenen Frames im Log.
Die CRC ist eigentlich ok, nur wird das Frame als Response interpretiert.
Gruss
Stefan
Hallo Thomas,
bitte probier doch mal die neue Version des Moduls aus dem Forum (https://forum.fhem.de/index.php/topic,75638.615.html)
und setz das Attribut skipGarbage für das IO-Device auf 1.
Damit sollte sich das Modul besser wieder synchronisieren.
Zudem erleichtert mir das die Fehlersuche, da sich seit der bisher eingecheckten Version doch sehr viel weiterentwickelt hat.
Gruss
Stefan