[vz-users] DVH 4013 Modbus?
Frank Richter
frank.richter83 at gmail.com
Sat Dec 24 19:29:12 CET 2016
Hallo Marc,
noch ganz kurz vor der Bescherung:-)
Win-Software lief hier out of the box, Geräte-Manager hab ich nicht
angefasst. Bin davon ausgegangen, dass sich die Software die Schnittstelle
selbst konfiguriert.
MinmalModbus hab ich per pip installiert, und pip gab es zumindest für
Raspbian (apt-get python-pip).
Mit dem Hexdump kann ich spontan nix anfangen, aber die Ausgabe von mbrtu
zeigt, dass die Antwort deines Zählers immer mit 0x00 beginnt, tatsächlich
sollte sie aber mit der Slave-Adresse 0x47 beginnen.
Wie sieht deine Hardware momentan aus, insbesondere Widerstände? Mit
Abschlusswiderstand hatte ich auch immer falsche CRCs. Wobei, wenn es unter
Win läuft, sollte das ja passen...
Aber jetzt erst mal frohe Weihnachten für alle, die hier mitlesen!
Grüße
Frank
Am 24.12.2016 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/20161224/2935a8fe/attachment-0001.html>
More information about the volkszaehler-users
mailing list