Wiren BoardDokumentation
Dokumentation · Deutsch

Bekannte Probleme – WB-MIR v.3

Revision 102436

ERRMODBUS003: Unerwartetes Verhalten beim Schreiben ungültiger Werte in einige Register

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.32.1.

Beschreibung

Wenn Werte im Bereich [256 ... 65535] in bestimmte Register geschrieben werden, werden die oberen 8 Bits verworfen und die Firmware erhält den Wert modulo 256. Beispielsweise wirkt das Schreiben von 257 genauso wie das Schreiben von 1.

Das Geräteadressregister (128) ist eines der betroffenen Register.

Alle Register arbeiten innerhalb ihrer dokumentierten Wertebereiche wie vorgesehen. Das Problem tritt beim Schreiben ungültiger Werte über 255 auf.

Abhilfe

Aktualisieren Sie die Firmware auf 4.32.1.

Behebung

In Firmware 4.32.1 behoben.


ERRMODBUS007: Ereignisverlust bei gleichzeitiger Übertragung zweier Geräte an einem Bus

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.35.1.

Beschreibung

Wenn bei zwei Geräten am selben Bus gleichzeitig Ereignisse anstehen, kann eines ein unvollständiges Ereignispaket senden.

Ursache und Einzelheiten

Bei Fast Modbus fordert der Master Ereignisse an. Alle Geräte mit anstehenden Ereignissen nehmen an der Arbitrierung teil; der Gewinner antwortet, die anderen warten auf die nächste Anfrage.

Ein erzeugtes Ereignis wartet auf die Übertragung. Nachdem das Gerät seinen Frame auf den Bus gesendet hat, wird das Ereignis als gesendet markiert. Die nächste Bestätigung des Masters für dieses Gerät entfernt die gesendeten Ereignisse aus dessen Warteschlange. Dies ist der normale Bestätigungsmechanismus.

Der Fehler markierte Ereignisse zu früh als gesendet: bereits beim Empfang der Ereignisanfrage und vor Abschluss der Arbitrierung. Gewann das Gerät die Arbitrierung, funktionierte alles normal. Verlor es, wurde kein Paket gesendet, seine Ereignisse waren jedoch bereits als gesendet markiert. Eine spätere Bestätigung für dieses Gerät bestätigte auch diese ungesendeten Ereignisse und entfernte sie aus der Warteschlange, bevor sie den Master erreicht hatten.

Der Wert in der Weboberfläche wird nicht aktualisiert und es wird keine MQTT-Meldung veröffentlicht, obwohl die Geräteregister korrekt bleiben. Die Änderungsbenachrichtigung geht verloren.

Schließen beispielsweise Eingänge zweier Relaismodule am selben Bus gleichzeitig, kann ein Modul in der Weboberfläche korrekt aktualisiert werden, während das andere einige Ereignisse verliert und trotz tatsächlichem Schalten weiterhin im vorherigen Zustand erscheint.

Übergangslösung

Deaktivieren Sie vorübergehend den ereignisbasierten Betrieb für betroffene Register, indem Sie sporadic in der Gerätevorlage auf false setzen. Die Register werden dann im konfigurierten Intervall abgefragt.

Behebung

In Firmware 4.35.1 behoben.


ERRMODBUS008: Unerwartetes Verhalten bei langen Anfrageframes

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.35.2.

Beschreibung

Der Empfang eines Frames mit mehr als 265 Byte, der maximalen Fast-Modbus-Framelänge, kann das Gerät blockieren und neu starten; in einigen Fällen können auch Einstellungen verloren gehen.

Ursache und Einzelheiten

Der Empfangsalgorithmus verarbeitete übergroße ungültige Anfragen nicht korrekt, wodurch ein Pufferüberlauf und die Beschädigung benachbarter Speicherbereiche entstanden. Das Gerät blockiert und wird vom Watchdog neu gestartet. Sehr große Frames über etwa 500 Byte können außerdem Einstellungen beschädigen, sodass das Gerät mit Standard-Kommunikationsparametern neu startet: 9600 8N2, Adresse 1.

Übergangslösung

  • Senden Sie keine Anfragen, die die Grenzen von Modbus RTU oder Fast Modbus überschreiten (265 Byte bei Fast Modbus).
  • Schließen Sie das Gerät nicht an einen Bus an, der Nicht-Modbus-Verkehr oder Meldungen mit mehr als 265 Byte führt.

Behebung

In Firmware 4.35.2 behoben.


ERRMODBUS009: Unerwartetes Verhalten beim Lesen nahe Adresse 0xFFFF im Modus für fortlaufendes Lesen

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.35.2.

Beschreibung

Bei aktiviertem fortlaufendem Lesen kann ein Lesebereich, der Adresse 0xFFFF erreicht oder überschreitet, das Gerät blockieren und neu starten.

Ursache und Einzelheiten

Der Algorithmus zum fortlaufenden Lesen behandelte den Überlauf des 16-Bit-Registeradresszählers nicht korrekt. Das Lesen von 0xFFFF ließ den Zähler überlaufen und verursachte eine Endlosschleife mit anschließendem Watchdog-Reset.

Übergangslösung

Lesen Sie bei aktiviertem fortlaufendem Lesen keinen Bereich einschließlich 0xFFFF. Wiren Board-Geräte besitzen an dieser Adresse kein implementiertes Register.

Behebung

In Firmware 4.35.2 behoben.


ERRMODBUS010: Fehlerhafte Prüfung und Verarbeitung ungültiger Anfragen

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.35.2.

Beschreibung

Das Gerät kann syntaktisch ungültige Anfragen akzeptieren oder falsch verarbeiten, einen falschen Ausnahmecode zurückgeben oder eine falsche Registeranzahlgrenze anwenden.

Ursache und Einzelheiten

Der Prüfalgorithmus behandelt folgende Fälle fehlerhaft:

1) Anfragen zum Lesen von null Registern werden mit einer Antwort ohne Nutzdaten akzeptiert, die nur Header und CRC enthält. Modbus verlangt Ausnahme 0x03 (ILLEGAL_DATA_VALUE).

2) Für alle Lese-/Schreibfunktionen gilt ein einheitlicher Grenzwert von 125 Registern; bei Überschreitung wird 0x02 (ILLEGAL_DATA_ADDRESS) zurückgegeben. Modbus sieht dagegen 2000 Bits für Bit-Lesezugriffe, 125 Register für Eingangs-/Holding-Lesezugriffe, 1968 Coils für Mehrfach-Coil-Schreibzugriffe und 123 Holding-Register für Mehrfachregister-Schreibzugriffe vor. Bei Überschreitung des jeweils geltenden Grenzwerts müsste 0x03 (ILLEGAL_DATA_VALUE) zurückgegeben werden.

3) Byte Count wird bei Mehrfach-Schreibzugriffen (0x0F und 0x10) nicht geprüft. Stimmen Byte Count und Registeranzahl nicht überein, müsste 0x03 (ILLEGAL_DATA_VALUE) zurückgegeben werden.

4) Einzel-Coil-Schreibzugriffe prüfen den Wert nicht und verwenden dessen höchstwertiges Bit. Modbus erlaubt nur 0x0000 und 0xFF00; bei allen anderen Werten müsste 0x03 (ILLEGAL_DATA_VALUE) zurückgegeben werden.

5) Strukturell ungültige Anfragen mit gültiger CRC, etwa überlange Anfragen, werden normal verarbeitet. Solche fehlerhaft aufgebauten Anfragen müssten stattdessen ignoriert werden.

6) Strukturell gültige, aber übergroße Frames mit 257–265 Byte werden verarbeitet. Standard-Modbus-Frames mit mehr als 256 Byte sind ungültig und müssten ignoriert werden.


Übergangslösung

Senden Sie nur strukturell korrekte Anfragen gemäß der Modbus-Spezifikation.

Behebung

In Firmware 4.35.2 behoben.


ERRMODBUS011: Fehlerhafte Verarbeitung ungültiger Anfragen zur Konfiguration von Fast-Modbus-Ereignissen

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.35.2.

Beschreibung

Ein Ereigniskonfigurationsbefehl (EVENT_CTRL, cmd=0x46, sub_cmd=0x18) mit ungültigen Längenfeldern kann Ereignisbenachrichtigungen fehlerhaft konfigurieren und eine Antwort unvorhersehbarer Länge erzeugen.

Ursache und Einzelheiten

Der Handler zur Konfiguration von Fast-Modbus-Ereignissen prüfte die Größen- und internen Datenblocklängenfelder nicht. Ungültige Längen können dazu führen, dass Daten außerhalb des empfangenen Frames verarbeitet werden. Mögliche Folgen:

1) Fehlerhafte Ereignisbenachrichtigungseinstellungen, einschließlich unbeabsichtigter Änderungen von Ereignisprioritäten oder Masken.

2) Eine Ereigniskonfigurationsantwort mit unvorhersehbarer Länge.

Übergangslösung

Senden Sie nur gültige Fast-Modbus-Befehle gemäß dessen Spezifikation.

Behebung

In Firmware 4.35.2 behoben.


ERRMODBUS012: Gerät sendet keine Fast-Modbus-Ereignisse mehr

Betroffene Geräte

WB-MIR v3 devices mit Firmware vor 4.36.0.

Beschreibung

Das Gerät sendet keine Fast-Modbus-Ereignisse mehr und meldet auf Ereignisanfragen (cmd=0x46, sub_cmd=0x10) dauerhaft, dass keine Ereignisse vorliegen (sub_cmd=0x12). Die Controls der Weboberfläche bleiben unverändert, während sich die Geräteregister weiterhin ändern.

Je häufiger sich ein ereignisfähiger Wert ändert, desto früher tritt das Problem auf. Bei Tests mit 1 ms Entprellung endete die Ereignisübertragung bei 200 Eingangsimpulsen pro Sekunde nach 23 Minuten und bei 100 Impulsen pro Sekunde nach mehreren Stunden. Auch bei seltenen Änderungen kann dies auftreten, ist aber deutlich unwahrscheinlicher. Der Treiber protokolliert keinen Fehler, da das Gerät gültig meldet, dass keine Ereignisse anstehen.

Lesen Sie zur Diagnose das Register direkt ohne Ereignisse, beispielsweise den Eingangsimpulszähler:

modbus_client_rpc -mrtu -pnone -s2 /dev/ttyRS485-1 -b115200 -a1 -r32 -t0x03

Steigt der Registerwert, während das Control in der Weboberfläche unverändert bleibt, liegt dieses Problem vor.

Ursache und Einzelheiten

Der Zähler ungesendeter Ereignisse wird von einem Interrupt-Handler und der Hauptschleife ohne korrekte Synchronisierung gemeinsam verwendet. Ein Interrupt während eines Lese-Änderungs-Schreibvorgangs in der Hauptschleife kann eine Zählererhöhung verlieren lassen. Diese lässt sich nicht wiederherstellen, da sie nur beim erstmaligen Einreihen eines Ereignisses erfolgt. Das Gerät glaubt dann, nichts senden zu müssen, obwohl Ereignisse in der Warteschlange liegen.

Der Zustand bleibt bis zum Neustart des Geräts bestehen. Ein weiteres Ereignis kann die angesammelte Warteschlange vorübergehend leeren und das Control einmal aktualisieren; die Abweichung tritt jedoch sofort wieder auf. Eine Installation ohne weitere Änderungen erscheint daher eingefroren.

Die Wahrscheinlichkeit steigt mit Ereignishäufigkeit und Buslast, da gleichzeitige Zugriffe wahrscheinlicher werden.

Übergangslösung

Ein Neustart des Geräts stellt die Ereignisübertragung bis zum erneuten Auftreten des Fehlers wieder her. Ein Neustart des Controllers oder von wb-mqtt-serial hilft nicht: Der Zustand befindet sich im Gerät und wird durch eine erneute Ereigniskonfiguration nicht zurückgesetzt.

Verringern Sie die Wahrscheinlichkeit, indem Sie die Eingangsentprellzeit erhöhen oder Ereignisse für häufig wechselnde Register deaktivieren. Lesen Sie bis zur Firmware-Aktualisierung die Werte direkt aus den Registern.

Behebung

In Firmware 4.36.0 behoben.


ERRMIR09: Sicherheitsmodus ist immer aktiviert

Betroffene Geräte

WB-MIR v3 mit Firmware 4.32.1.

Beschreibung

Der Sicherheitsmodus ist immer aktiviert: Bei Kommunikationsausfall wird stets ein IR-Befehl wiedergegeben, selbst wenn in Register 956 Do nothing konfiguriert ist.

Abhilfe

Aktualisieren Sie die Firmware auf 4.32.2.

Behebung

In Firmware 4.32.2 behoben.