default retry for modbus communication#3390
Conversation
…odbus-retries' into feature-venus_c_e-modbus-retries Merge
LKuemmel
left a comment
There was a problem hiding this comment.
Ich finde es sinnvoll, wenn das allgemein für alle Aufrufe in
core/packages/modules/common/modbus.py
Line 308 in ea19c87
Funktioniert das auch für ModbusSerial?
|
Ich habe die Argumente als Defaults nach common/modbus.py verschoben. |
There was a problem hiding this comment.
Pull request overview
Diese PR ergänzt Retry-Logik für Modbus-TCP-Kommunikation (laut Beschreibung zur Stabilisierung der Marstek Venus C/E Kommunikation) und aktualisiert dafür die pymodbus-Abhängigkeit auf eine Bugfix-Version.
Changes:
- Upgrade von
pymodbusvon2.5.2auf2.5.3. - Setzen von Retry-/Timeout-Defaults beim Aufbau von
ModbusTcpClient_(TCP).
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
requirements.txt |
Bump von pymodbus auf 2.5.3 als Voraussetzung für Retry-Verhalten. |
packages/modules/common/modbus.py |
Ergänzt Default-Retry-/Timeout-Parameter beim Erzeugen des TCP-Modbus-Clients. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| kwargs.setdefault('retry_on_empty', True) | ||
| kwargs.setdefault('retry_on_invalid', True) | ||
| kwargs.setdefault('retries', 2) | ||
| kwargs.setdefault('timeout', 2) |
| kwargs.setdefault('retry_on_invalid', True) | ||
| kwargs.setdefault('retries', 2) | ||
| kwargs.setdefault('timeout', 2) | ||
| super().__init__(ModbusTcpClient(host, port, framer, **kwargs), address, port, sleep_after_connect) |
Wegen häufiger (mehr als einer pro Stunde) Fehler bei der TCP-Modbus-Kommunikation wurde Retry ergänzt. Zusätzlich muss das Pymodbus-Modul von 2.5.2 auf 2.5.3 upgegradet werden. Die 2.5.3 ist eine Bugfix-Version der 2.5.2. Ohne dieses Upgrade schlägt der Retry mit einer internen Fehlermeldung im Pymodbus-Modul fehl.