[vz-users] DVH 4013 Modbus?

Frank Richter frank.richter83 at gmail.com
Mon Dec 26 02:43:23 CET 2016


Hallo Marc,

als Ergänzung noch die Ausgabe von mbrtu mit Debug-Option:

pi at raspberrypi:~ $ mbrtu -D -d/dev/ttyUSB0 -b9600 -pE -a57 -f3 -tint -n2
-r0x4000
ADDR=57 FUNC=3 REG=16384 CNT=2
Opening /dev/ttyUSB0 at 9600 bauds (E, 8, 1)
[39][03][40][00][00][02][D5][73]
Waiting for a confirmation...
<39><03><04><00><00><0D><A4><46><DB>
ADDR=57 REG=16384 DATA=0:3492

Also Zählerstand 1.8.0 (Register 0x4000) = 3,492kWh
So lang der Wert noch in einen Integer passt, geht das auch ohne
32-bit-Support.

Man sieht, dass die Antwort des Slaves mit seiner Adresse beginnt.

Gruß
Frank

Am 24. Dezember 2016 um 15:48 schrieb Marc Haber <
mh+volkszaehler-users at zugschlus.de>:

> Hallo Frank, hallo Liste,
>
> On Thu, Dec 22, 2016 at 09:54:42AM +0100, Frank Richter wrote:
> > ich war ungeduldig und hab mir einfach einen DVH4013 bestellt.
>
> Hehe ;-)
>
> Meiner wurde inzwischen getauscht, funktioniert jetzt unter Windows
> (aber seltsamerweise mit 8n1, nicht wie von Dir beobachtet 8e1), aber
> unter Linux mit mbrtu ist nach wie vor nix.
>
> Der Support der DZG ist vorbildlich. Geduldig, erklärt die Dinge auf
> Augenhöhe, wirft nicht mit Textbausteinen. Gegenüber diesem Pluspunkt
> steht die abgrundtiefe Dokumentation, die wichtige Dinge wie die
> RS485-Adresse unterschlägt und in anderen Punkten schlicht inkorrekt
> ist und die Tatsache, dass man die Windows-Software für den Zähler
> erst auf Nachfrage erhält.
>
> > * Der DVH4013 spricht 9600 8E1. Die Baudrate lässt sich verändern, die
> > ungewöhnliche Parity wohl nicht.
>
> Interessanteweise muss ich die Schnittstelle im Gerätemanager (!) auf
> 9600 8_N_1 einstellen, damit die Windows-Software funktioniert. Mit
> mbrtu muss es jedoch -pE (mit _zwei_ Stoppbits) sein, damit der Zähler
> überhaupt mit etwas antwortet.
>
> > * Die Modbus-Slave-Adresse berechnet sich aus den letzten beiden Stellen
> > der Seriennummer + 1. Dabei wird Ziffer für Ziffer behandelt, es erfolgt
> > keine Umrechnung dezimal zu hex. Beispiel: Meine Seriennummer endet mit
> 38,
> > daraus wird das Adressbyte 0x39 = 57, nicht wie man auch erwarten könnte
> > 0x27 = 39!
>
> Eiwei. Das hätte ich in dieser Form niemals geraten.
>
> Andererseits, Seriennummer 46 führt zu Adresse 0x47,
>
> > * Der DVH4013 erwartet zur Abfrage der Modbus-Register function code 03
> > (output holding register), im Gegensatz zum Eastron SDM630, der function
> > code 04 (input register) verwendet.
>
> Auch das hätte ich vermutlich erst im wilden ausprobieren
> herausgefunden. Überraschung.
>
> > Nachdem ich das alles aussortiert hatte, konnte ich den Zähler mit Python
> > (lib: MinimalModbus), mbrtu (lib: libmodbus) und auch per Arduino (lib:
> > ModbusMaster) zumindest rudimentär auslesen. Hier die zugehörigen
> > Codeschnipsel:
> >
> > * Python:
> > #!/usr/bin/env python
> > import minimalmodbus
> > minimalmodbus.TIMEOUT = 1
> > # port name, slave address (in decimal)
> > dvh4013 = minimalmodbus.Instrument('/dev/ttyUSB0', 57, mode='rtu')
> > dvh4013.serial.baudrate = 9600
> > dvh4013.serial.parity = minimalmodbus.serial.PARITY_EVEN
> > # Zaehlerstand 1.8.0
> > print dvh4013.read_long(0x4000)
>
> minimalmodbus scheint es für Debian noch nicht zu geben. In Debian
> gibt es:
>
> python-pymodbus/unstable,unstable,testing,testing 1.2.0+git20151013-1 all
>   full Modbus protocol implementation
>
> Die scheint aber nicht so toll im Bereich RTU zu sein, richtig?
>
> > * mbrtu:
> > mbrtu -d/dev/ttyUSB0 -b9600 -pE -a57 -f3 -tint -n2 -r0x4000
> > mbrtu ist Stand heute allerdings nicht wirklich für den Zähler geeignet,
> da
> > es nichts mit den 32--bit-Integern anzufangen weiß. Außerdem treten in
> > meinem Setup öfters Timeouts auf, die ich via Python nicht bekomme.
>
> 1 [2/892]mh at drop:~ $ ./mbrtu -d/dev/ttyUSB0 -b9600 -pE -s1 -D -a0x47 -f3
> -tint -n2 -r0x4000
> ADDR=71 FUNC=3 REG=16384 CNT=2
> Opening /dev/ttyUSB0 at 9600 bauds (E, 8, 1)
> [47][03][40][00][00][02][DF][6D]
> Waiting for a confirmation...
> <00><03><04><00><00><0D><70><D8><83>
> ERROR CRC received 0xD883 != CRC calculated 0xEF87
> ADDR=71 REG=16384 ERROR: Invalid CRC
> 1 [3/893]mh at drop:~ $ ./mbrtu -d/dev/ttyUSB0 -b9600 -pE -s2 -D -a0x47 -f3
> -tint -n2 -r0x4000
> ADDR=71 FUNC=3 REG=16384 CNT=2
> Opening /dev/ttyUSB0 at 9600 bauds (E, 8, 2)
> [47][03][40][00][00][02][DF][6D]
> Waiting for a confirmation...
> <00><03><04><00><00><0D><70><D8><83>
> ERROR CRC received 0xD883 != CRC calculated 0xEF87
> ADDR=71 REG=16384 ERROR: Invalid CRC
> 1 [4/894]mh at drop:~ $ ./mbrtu -d/dev/ttyUSB0 -b9600 -pN -s2 -D -a0x47 -f3
> -tint -n2 -r0x4000
> ADDR=71 FUNC=3 REG=16384 CNT=2
> Opening /dev/ttyUSB0 at 9600 bauds (N, 8, 2)
> [47][03][40][00][00][02][DF][6D]
> Waiting for a confirmation...
> ERROR Connection timed out: select
> ADDR=71 REG=16384 ERROR: Connection timed out
> 1 [5/895]mh at drop:~ $
>      1 [5/895]mh at drop:~ $ ./mbrtu -d/dev/ttyUSB0 -b9600 -pN -s1 -D -a0x47
> -f3 -tint -n2 -r0x4000
> ADDR=71 FUNC=3 REG=16384 CNT=2
> Opening /dev/ttyUSB0 at 9600 bauds (N, 8, 1)
> [47][03][40][00][00][02][DF][6D]
> Waiting for a confirmation...
> ERROR Connection timed out: select
> ADDR=71 REG=16384 ERROR: Connection timed out
> 1 [6/896]mh at drop:~ $
>
> Zusammengefasst: Wenn der Zähler antwortet ist die CRC verkehrt, und
> er antwortet mit 9600 8E1 und 9600 8E2.
>
> > * Arduino:
> > auf Anfrage, keine Ahnung ob das hier jemand interessiert
>
> Das würde mich interessieren, wenn man den Arduino irgendwie dazu
> kriegt, selbständig den Zähler alle Minute zu pollen und einen Teil
> Daten, z.B. eine halbe Stunde, zu puffern, wenn das eigentliche
> Speicherbackend mal nicht da ist (z.B. für Updates oder im
> Störungsfall). Aber das ist für mich nur die kür, das hat im Moment
> geringste Priorität.
>
> > Vorteile gegenüber dem Eastron SDM630 sehe ich vor allem in den
> > phasensaldierenden Registern für Bezug und Einspeisung und möglicherweise
> > in der Mehrtarif-Fähigkeit, falls jemand sowas sucht.
> > Nicht vorhanden sind wohl Blind- und Scheinleistung, halte ich aber für
> > entbehrlich.
>
> Ohne jetzt den SDM630 in der Hand gehabt zu haben, sieht er auch
> größer aus als der DVH4013, was vielleicht den Anschluß in der
> Unterverteilung schwierig machen könnte. In der Beschreibung stand
> auch eine Warnung vor den Klemmen, bei denen man wissen möchte, wie
> fest man sie anziehen darf, bevor sie "ab" sind. Bei einer potenziell
> mit > 40A belasteten Verbindung möchte ich sowas eigentlich nicht haben.
>
> Die Klemmen des DVH4013 hingegen machen mir einen recht guten Eindruck.
>
> Hier noch ein Mitschnitt einer erfolreichen Kommunikiation der
> Windows-Software des Zählers mit dem Zähler. Vielleicht wirdda jemand
> schlauer als ich.
>
> [10/908]mh at drop:~ $ hexdump zaehler.bin
> 0000000 0347 1309 d006 75a0 47e7 1303 200c 3380
> 0000010 ac01 7430 8435 0d47 0622 2010 7960 47e7
> 0000020 2303 200e 5384 0f21 ff7b 0347 0201 9004
> 0000030 5930 47eb 0103 200e 0080 d601 ffdb 0d47
> 0000040 0302 9004 afb0 47fb 0303 200e 0d80 d870
> 0000050 ff09 0d47 0d02 2018 3f60 47ad 2303 200e
> 0000060 0580 ef01 e11f 0347 2381 9006 8e30 47f5
> 0000070 0103 600e 0200 e393 ff4d 0547 3302 9004
> 0000080 c4b0 47fe 2303 200e 0280 e3a0 47ef 0205
> 0000090 0c43 3090 f5ed 0347 0e01 8020 a902 2ee3
> 00000a0 47ff 020d 1848 6020 db6d 0347 0e23 8020
> 00000b0 0100 dbd6 47ff 0a0d 1009 6020 f92b 0347
> 00000c0 0e01 8020 5b0a 1e6d 47c6 0a0d 0612 b090
> 00000d0 fd8b 0347 0e23 8020 ce02 035d 47ff 0a0d
> 00000e0 0c22 b090 f90a 0347 0e23 8020 9802 ebdd
> 00000f0 47fe 0503 0432 3090 fa06 0347 1e01 0040
> 0000100 9902 aee3 0347 4205 9006 69b0 47e5 2303
> 0000110 200e 0280 dd8c fe93 0347 8201 9006 79b0
> 0000120 47da 0103 200e 0380 eb01 fa09 0d47 2402
> 0000130 8008 4d60 47ea 0303 200e c380 d683 e7b4
> 0000140 0747 a402 2010 f560 47af 2303 600e 0080
> 0000150 d601 ffdb 0d47 4402 2018 5160 479b 2303
> 0000160 401e 5a00 675b d735 0d47 c402 2010 8360
> 0000170 47ae 0103 200e 0080 d601 ffdb 0d47 c802
> 0000180 2010 c960 47ac 2303 200e 0080 d601 ffdb
> 0000190 0347 7201 9006 75b0 47d7 2303 200e 0080
> 00001a0 d601 ffdb 0347 4201 9006 49b0 47f3 2303
> 00001b0 200e 0080 d600 ffdb 0d47 3622 500c 6f60
> 00001c0 4796 1303 20ce 3280 ff2b 0d47 0c22 2010
> 00001d0 7960 47e7 0103 200e 5384 0701 47e7 0103
> 00001e0 0402 3090 eb59 0347 0e23 8020 0100 dbd6
> 00001f0 47ff 020d 1005 6020 fbaf 0347 0e01 8020
> 0000200 700d 1bd8 47ff 0103 0613 3090 ff6a 0347
> 0000210 0e23 8020 a305 1fef 47e1 8103 0623 3090
> 0000220 f58e 0347 0e23 8060 9302 4de3 47ff 0103
> 0000230 0433 b090 f3c4 0347 1e01 0040 a002 efe3
> 0000240 0347 4301 9004 ed30 47f5 0303 200e 0280
> 0000250 61a9 ff2e 0347 1201 9006 6db0 47db 2303
> 0000260 200e 0080 d601 ffdb 0347 0205 9004 2b30
> 0000270 47f9 2303 600e 0a80 6d5b c61e 0347 1205
> 0000280 9006 8bb0 47fd 0303 200e 0280 5dce ff03
> 0000290 0d47 220a 900c 0ab0 47e5 2303 600e 0280
> 00002a0 dd98 fee1 0347 3205 9008 0630 47fa 0103
> 00002b0 401e 0200 6199 47ae 0a05 0642 b090 e569
> 00002c0 0347 0e01 8020 8c02 93dd 47fe 020d 0c04
> 00002d0 6020 b479 0347 0e23 8060 0103 5beb 47fa
> 00002e0 020d 0824 6090 d44d 0347 0e01 8020 03c3
> 00002f0 b4d6 47e7 0003 0452 3090 f57d 0347 0e01
> 0000300 0060 0100 dbd6 47ff 020d 1844 6020 9b51
> 0000310 0347 0e23 8020 015a b967 47ff 0103 0462
> 0000320 3090 fd41 0347 0e23 8020 0100 dbd6 47ff
> 0000330 020d 1064 6020 acd5 0347 0e03 8020 0100
> 0000340 dbd6 47ff 0103 0672 b090 d775 0347 0e23
> 0000350 8060 0100 dbd6 47ff 020d 1884 6020 f349
> 0000360 0347 0e23 8060 0100 dbd6 47ff 2206 0c36
> 0000370 60a0 59bd 0347 ce01 8020 2b32 00ff
> 000037d
> [11/909]mh at drop:~ $
>
> Grüße
> Marc
>
> --
> ------------------------------------------------------------
> -----------------
> Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
> Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
> Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20161226/3a0b9308/attachment-0001.html>


More information about the volkszaehler-users mailing list