Wiren BoardDocumentazione
Documentazione · Italiano

Problemi noti di WB-MIR v.3

revisione 102436

ERRMODBUS003: comportamento imprevisto quando vengono scritti valori non validi in alcuni registri

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.32.1.

Descrizione

Quando valori nell’intervallo [256 ... 65535] vengono scritti in alcuni registri, gli 8 bit superiori vengono scartati e il firmware riceve il valore modulo 256. Ad esempio, scrivere 257 ha lo stesso effetto di scrivere 1.

Il registro dell’indirizzo del dispositivo (128) è uno di quelli interessati.

Tutti i registri funzionano come previsto entro i campi documentati. Il problema si verifica quando vengono scritti valori non validi superiori a 255.

Rimedio

Aggiornare il firmware alla versione 4.32.1.

Risoluzione

Corretto nel firmware 4.32.1.


ERRMODBUS007: perdita di eventi quando due dispositivi trasmettono contemporaneamente sullo stesso bus

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.35.1.

Descrizione

Quando due dispositivi sullo stesso bus hanno contemporaneamente eventi in attesa, uno dei due può trasmettere un pacchetto di eventi incompleto.

Causa e dettagli

In Fast Modbus, il master richiede gli eventi. Tutti i dispositivi con eventi in attesa partecipano all’arbitraggio; il vincitore risponde, mentre gli altri attendono la richiesta successiva.

Un evento generato attende la trasmissione. Dopo che il dispositivo ha immesso il proprio frame sul bus, l’evento viene contrassegnato come inviato. La successiva conferma del master per quel dispositivo rimuove dalla coda gli eventi inviati. Questo è il normale meccanismo di conferma.

Il difetto contrassegnava gli eventi come inviati troppo presto, alla ricezione della richiesta di eventi, prima del termine dell’arbitraggio. Se il dispositivo vinceva l’arbitraggio, il funzionamento era normale. Se perdeva, non veniva trasmesso alcun pacchetto, ma gli eventi erano già contrassegnati come inviati. Una conferma successiva per quel dispositivo confermava anche questi eventi non inviati, rimuovendoli dalla coda prima che raggiungessero il master.

Il valore nell’interfaccia web non si aggiorna e non viene pubblicato alcun messaggio MQTT, anche se i registri del dispositivo rimangono corretti. La notifica di variazione va persa.

Ad esempio, se gli ingressi di due moduli relè sullo stesso bus si chiudono contemporaneamente, un modulo può aggiornarsi correttamente nell’interfaccia web mentre l’altro perde alcuni eventi e continua ad apparire nello stato precedente nonostante la commutazione fisica.

Soluzione temporanea

Disabilitare temporaneamente il funzionamento basato sugli eventi per i registri interessati, impostando sporadic su false nel template del dispositivo. I registri verranno quindi interrogati all’intervallo configurato.

Risoluzione

Corretto nel firmware 4.35.1.


ERRMODBUS008: comportamento imprevisto con frame di richiesta lunghi

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.35.2.

Descrizione

La ricezione di un frame più lungo di 265 byte, lunghezza massima di un frame Fast Modbus, può bloccare e riavviare il dispositivo; in alcuni casi possono andare perse anche le impostazioni.

Causa e dettagli

L’algoritmo di ricezione non gestiva le richieste non valide di dimensioni eccessive, causando un overflow del buffer e la corruzione della memoria adiacente. Il dispositivo si blocca e il watchdog lo riavvia. Frame molto grandi, superiori a circa 500 byte, possono anche corrompere le impostazioni, causando un riavvio con i parametri di comunicazione predefiniti: 9600 8N2, indirizzo 1.

Soluzione temporanea

  • Non inviare richieste che superano i limiti di Modbus RTU o Fast Modbus (265 byte per Fast Modbus).
  • Non collegare il dispositivo a un bus che trasporta traffico non Modbus o messaggi più lunghi di 265 byte.

Risoluzione

Corretto nel firmware 4.35.2.


ERRMODBUS009: comportamento imprevisto durante la lettura vicino all’indirizzo 0xFFFF in modalità di lettura continua

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.35.2.

Descrizione

Con la modalità di lettura continua abilitata, un intervallo di lettura che raggiunge o supera l’indirizzo 0xFFFF può bloccare e riavviare il dispositivo.

Causa e dettagli

L’algoritmo di lettura continua non gestiva l’overflow del contatore a 16 bit degli indirizzi dei registri. La lettura di 0xFFFF faceva tornare a zero il contatore e causava un ciclo infinito, seguito da un reset del watchdog.

Soluzione temporanea

Con la modalità di lettura continua abilitata, non leggere un intervallo che include 0xFFFF. I dispositivi Wiren Board non implementano alcun registro a tale indirizzo.

Risoluzione

Corretto nel firmware 4.35.2.


ERRMODBUS010: convalida errata delle richieste e gestione errata delle richieste non valide

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.35.2.

Descrizione

Il dispositivo può accettare o gestire in modo errato richieste sintatticamente non valide, restituire un codice di eccezione errato oppure imporre un limite errato al numero di registri.

Causa e dettagli

L’algoritmo di convalida gestisce in modo errato questi casi:

1) Le richieste di lettura di zero registri riescono con una risposta senza dati contenente solo intestazione e CRC. Modbus richiede l’eccezione 0x03 (ILLEGAL_DATA_VALUE).

2) Un limite unico di 125 registri viene applicato a tutte le funzioni di lettura/scrittura; il superamento restituisce 0x02 (ILLEGAL_DATA_ADDRESS). Modbus specifica invece limiti di 2000 bit per le letture di bit, 125 registri per le letture di registri di ingresso/holding, 1968 coil per le scritture multiple di coil e 123 registri holding per le scritture multiple di registri. Il superamento del limite pertinente dovrebbe restituire 0x03 (ILLEGAL_DATA_VALUE).

3) Byte Count non viene convalidato per le scritture multiple (0x0F e 0x10). Una mancata corrispondenza tra Byte Count e numero di registri dovrebbe restituire 0x03 (ILLEGAL_DATA_VALUE).

4) Le scritture di una singola coil non convalidano il valore e utilizzano il bit più significativo del valore della richiesta. Modbus ammette solo 0x0000 e 0xFF00; tutti gli altri valori dovrebbero restituire 0x03 (ILLEGAL_DATA_VALUE).

5) Le richieste strutturalmente non valide con CRC valido, ad esempio richieste troppo lunghe, vengono elaborate normalmente. Tali richieste malformate dovrebbero invece essere ignorate.

6) Vengono elaborati frame strutturalmente validi ma sovradimensionati, da 257–265 byte. I frame Modbus standard più lunghi di 256 byte non sono validi e dovrebbero essere ignorati.


Soluzione temporanea

Inviare solo richieste strutturalmente corrette e conformi alle specifiche Modbus.

Risoluzione

Corretto nel firmware 4.35.2.


ERRMODBUS011: gestione errata delle richieste non valide di configurazione degli eventi Fast Modbus

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.35.2.

Descrizione

Un comando di configurazione degli eventi (EVENT_CTRL, cmd=0x46, sub_cmd=0x18) con campi di lunghezza non validi può configurare in modo errato le notifiche degli eventi e produrre una risposta di lunghezza imprevedibile.

Causa e dettagli

Il gestore di configurazione degli eventi Fast Modbus non convalidava i campi della dimensione e della lunghezza dei blocchi dati interni. Lunghezze non valide possono portarlo a elaborare dati oltre il frame ricevuto, causando:

1) Impostazioni errate delle notifiche degli eventi, comprese variazioni spontanee delle priorità o delle maschere degli eventi.

2) Una risposta di configurazione degli eventi di lunghezza imprevedibile.

Soluzione temporanea

Inviare solo comandi Fast Modbus validi e conformi alle relative specifiche.

Risoluzione

Corretto nel firmware 4.35.2.


ERRMODBUS012: il dispositivo smette di trasmettere eventi Fast Modbus

Dispositivi interessati

Dispositivi WB-MIR v3 con firmware precedente a 4.36.0.

Descrizione

Il dispositivo smette di inviare eventi Fast Modbus e segnala continuamente l’assenza di eventi (sub_cmd=0x12) in risposta alle richieste di eventi (cmd=0x46, sub_cmd=0x10). I comandi dell’interfaccia web rimangono fermi mentre i registri del dispositivo continuano a cambiare.

Quanto più frequentemente cambia un valore con eventi abilitati, tanto prima si verifica il problema. Durante le prove con antirimbalzo di 1 ms, la trasmissione degli eventi si è arrestata dopo 23 minuti a 200 impulsi di ingresso al secondo e dopo diverse ore a 100 impulsi al secondo. Il problema può verificarsi anche con variazioni poco frequenti, ma è molto meno probabile. Il driver non registra errori perché il dispositivo segnala validamente che non vi sono eventi in attesa.

Per la diagnosi, leggere direttamente il registro senza utilizzare gli eventi, ad esempio il contatore degli impulsi dell’ingresso:

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

Se il registro aumenta ma il comando nell’interfaccia web rimane invariato, questo problema è presente.

Causa e dettagli

Il contatore degli eventi non inviati è condiviso da un gestore di interrupt e dal ciclo principale senza una sincronizzazione corretta. Un interrupt durante un’operazione di lettura-modifica-scrittura nel ciclo principale può causare la perdita di un incremento del contatore. L’incremento non può essere recuperato perché avviene solo quando un evento entra per la prima volta nella coda. Il dispositivo ritiene quindi di non avere nulla da inviare nonostante gli eventi in coda.

La condizione persiste fino al riavvio del dispositivo. Un altro evento può temporaneamente svuotare la coda accumulata e aggiornare il comando una volta, ma la discrepanza ricompare immediatamente. Un’installazione senza altre variazioni appare quindi bloccata.

La probabilità aumenta con la frequenza degli eventi e il carico del bus, perché gli accessi concorrenti diventano più probabili.

Soluzione temporanea

Il riavvio del dispositivo ripristina gli eventi finché il problema non si ripresenta. Riavviare il controllore o riavviare wb-mqtt-serial non aiuta: lo stato è mantenuto nel dispositivo e la riconfigurazione degli eventi non lo azzera.

Ridurre la probabilità aumentando il tempo di antirimbalzo degli ingressi o disabilitando gli eventi per i registri che cambiano frequentemente. Finché il firmware non viene aggiornato, leggere i valori direttamente dai registri.

Risoluzione

Corretto nel firmware 4.36.0.


ERRMIR09: la modalità sicura è sempre abilitata

Dispositivi interessati

WB-MIR v3 con firmware 4.32.1.

Descrizione

La modalità sicura è sempre abilitata: alla perdita di comunicazione viene sempre riprodotto un comando IR, anche quando Do nothing è configurato nel registro 956.

Rimedio

Aggiornare il firmware alla versione 4.32.2.

Risoluzione

Corretto nel firmware 4.32.2.