[vz-users] mbrtu - update: bug fixes for unsigned ints and support for [u]int(32|64) added

Lars Täuber lars.taeuber at web.de
Wed Dec 28 01:15:31 CET 2016


Hallo Frank,

ok, ich sehe.
Zieh mal den Fix von github und teste noch mal.

Gute Nacht!
Lars

On Wed, 28 Dec 2016 00:31:40 +0100 Frank Richter <frank.richter83 at gmail.com> wrote:
> Hallo Lars,
> 
> ich habe eben einen Test mit uint32 gemacht. Leider wirkt sich der andere
> Typ nicht auf die Ausgabe aus, es werden immer noch 2 mit Doppelpunkt
> getrennte 16-Bit-Integer ausgegeben:
>
> pi at raspberrypi:~ $ mbrtu -D -d/dev/ttyUSB0 -b9600 -pE -O1000 -a57 -f3 -tint
> -n2 -r0x4000
> Timeout set to 1s and 0ms.
> 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
> 
> pi at raspberrypi:~ $ mbrtu -D -d/dev/ttyUSB0 -b9600 -pE -O1000 -a57 -f3
> -tuint32 -n2 -r0x4000
> Timeout set to 1s and 0ms.
> 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
> 
> 
> Für einen Wert der zu groß ist für uint16 musste ich etwas suchen, dann
> habe ich die interne Uhr des Zählers gefunden:
> 
> pi at raspberrypi:~ $ mbrtu -D -d/dev/ttyUSB0 -b9600 -pE -O1000 -a57 -f3
> -tuint32 -n2 -r0x0400
> Timeout set to 1s and 0ms.
> ADDR=57 FUNC=3 REG=1024 CNT=2
> Opening /dev/ttyUSB0 at 9600 bauds (E, 8, 1)
> [39][03][04][00][00][02][C1][83]
> Waiting for a confirmation...
> <39><03><04><00><16><48><1C><95><FD>
> ADDR=57 REG=1024 DATA=22:18460
> 
> 
> Zum Vergleich die Ausgabe eines Python-Skripts (MinimalModbus):
> 
> pi at raspberrypi:~ $ cat dvh4013.py
> #!/usr/bin/env python
> import minimalmodbus
> minimalmodbus.TIMEOUT = 1
> dvh4013 = minimalmodbus.Instrument('/dev/ttyUSB0', 57, mode='rtu')
> dvh4013.serial.baudrate = 9600
> dvh4013.serial.parity = minimalmodbus.serial.PARITY_EVEN
> print dvh4013.read_long(0x0400)
> 
> pi at raspberrypi:~ $ ./dvh4013.py
> 1460270
> 
> Die Ausgabe von mbrtu kann man händisch in einen 32-Bit-Int umrechnen: 22 *
> 2^16 + 18460 = 1460252
> Die kleine Abweichung liegt nur daran, dass ich das Python-Skript ein paar
> Sekunden später aufgerufen habe und die Uhr inzwischen weiter gelaufen ist.
> 
> Gruß
> Frank
> 
> Am 27. Dezember 2016 um 22:18 schrieb Lars Täuber <lars.taeuber at web.de>:
> 
> > Hallo zusammen,
> >
> > die Quellen bei github enthalten nun einige Bugfixes und unterstützen auch
> > [u]int(32|64) Werte.
> > Bitte auch das mal testen.
> >
> > Wenn ich keine Beschwerden höre, gebe ich dieser Version die Nummer 0.3.3.
> >
> > Dank und Grüße
> > Lars
> >


-- 
Schöne Grüße
Lars Täuber


More information about the volkszaehler-users mailing list