DZT-6001 power meter

Si tratta di un misuratore di consumi per barra DIN molto compatto (1 modulo) e con interfaccia ModBus.
Peccato che definire scarna la documentazione sia farle un complimento!

Infatti dire "ModBus" lascia più o meno il tempo che trova: se non si sa cosa rappresentano i registri e come è codificata l'informazione, il protocollo non aiuta per nulla! Anche per questo sto cercando di fare in modo che il protocollo per la mia domotica sia il più possibile auto-documentante...

Fortunatamente ho potuto trovare un paio di riferimenti che mi hanno dato una grossa spintarella.

Il primo è stato un PDF (che includo anche tra gli allegati alla pagina... non si sa mai che sparisca...). Con qualche errore, ma abbastanza comprensibile.

Il secondo è stato il modulo per un altro sistema domotico, che copre meglio alcuni registri ma non dice nulla della gestione della password.

Comunque ho anche chiesto informazioni direttamente al produttore... Vedrò se/quando risponde.

Una cosa che mi ha fatto perdere molto tempo (anche se, a posteriori, è quasi ovvia): il modulo include una batteria, ma viene usata esclusivamente per tenere la memoria e permettere la visualizzazione sul display. Se l'ingresso non è collegato alla rete, l'interfaccia ModBus non risponde! Ciao ciao test in sicurezza!
Inoltre i morsetti di ingresso/uscita per la fase hanno solo una vite, non una piastra che prema il capocorda. Quindi è necessario usare un capocorda piuttosto schiacciato. In dotazione ci sono alcuni pezzi che non viene spiegato come usare:

  • due grossi capicorda in rame (forse proprio da mettere sotto le due viti?)
  • tre cilindretti forati forse in alluminio (non mi pare però che possano entrare nel connettore ModBus... forse vanno usati con la "bava da pesca"?)
  • un pezzetto di plastica (per chiudere l'accesso alla vite del filo di neutro)
  • tre pezzetti di "bava da pesca" (per "sigillare" l'accesso alle viti, forse da abbinare ai cilindretti di cui sopra)

Certo che da un prodotto tedesco (anche se economico) mi sarei aspettato documentazione molto migliore...

Edit: aggiungo un programma minimale che usa libmodbus per leggere ed interpretare (tirando ad indovinare, visto che il produttore ancora non ha risposto!) le informazioni fornite dai registri. In particolare l'indicazione della corrente passa da 0 a 1 con una lampadina da 40W, e passa da 1 a 3 aggiungendone un'altra, quindi per un totale di 80W.
A 220V (il DZT ne misura 221) significa una corrente rispettivamente di ~181mA e ~362mA, quindi il valore indica la corrente reale, troncata a un decimale (in entrambe le misure, se fosse stata correttamente arrotondata avrebbe indicato il valore successivo).
Rimane da chiarire come vengono usati i registri totalizzatori, poiché non mi torna molto la formula usata in Constellation.

Per compilare comm.c (dopo aver modificato l'indicazione del device, se necessario) va usato il comando:

gcc `pkg-config --cflags libmodbus` comm.c `pkg-config --libs libmodbus` -o comm

È ovviamente necessario aver installato libmodbus-dev (in Ubuntu).

Edit/2: ho trovato un'implementazione di un gateway per un contatore Rayleigh Instruments RI-D19-80-C. I registri pare che siano organizzati allo stesso modo. Alcune differenze con quanto avevo trovato in precedenza:

  • I registri 7 e 8 (come anche il 17/18) vengono combinati in modo più logico rispetto a quanto viene fatto in Constellation: il primo registro è la parte alta del totale, il secondo la bassa e vengono trattate come un intero a 32 bit che va poi diviso per 100 per avere il valore (float) in kWh
  • il registro 0x25 contiene la temperatura
  • c'è anche la gestione della password
  • fa anche da orologio
  • si può leggere il numero di serie

Da una prima analisi, direi che si tratta dello stesso contatore venduto con marchi differenti... Infatti ottengo risultati analoghi col DZT-6001.
In più, ho notato che quello che era il totale di consumo pare essersi spostato nella successiva coppia di registri. Devo verificare se in questo modo forma uno storico mensile, ma mi pare molto probabile!

Edit/3: da Rayleigh Instruments hanno risposto molto velocemente alla richiesta del significato dei registri, mandandomi un file xlsx. Ho così avuto conferma che la decodifica dei dati "base" è corretta. Purtroppo non era indicato il significato dei registri da 0x1b a 0x29. Ma era indicato che dopo aver inviato la password (8 cifre codificate BCD in 4 byte, default 00000000) scrivendola negli holding register 0x2c-0x2d, si hanno 10 secondi per inviare altri comandi di scrittura.
Invece da DZT ancora nessuna risposta: non stanno dimostrando molta serietà.

Edit/4: pare essere molto simile anche al Qeed QC-PM485... Per lo meno la documentazione disponibile del QC-PM485 è congruente con quanto appurato finora. Comunque praticamente identica a quella "riservata" inviatami da RI, quindi mancante della descrizione dell'orologio e del significato di T1/T2/T3/T4.

Comunque direi che il prossimo passo sarà un'integrazione col mio protocollo, magari usando un modulino da inserire all'interno di DomoNode.

0
Il tuo voto: Nessuna
AllegatoDimensione
MODBUS Protocol DZT 6001.pdf51.63 KB
comm.c4.98 KB
Realizzato con Drupal, un sistema open source per la gestione dei contenuti