Benutzer-Werkzeuge

Webseiten-Werkzeuge


pqplus_cmd68-52

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
pqplus_cmd68-52 [2020/02/15 13:18] – [Hardware] pqpluspqplus_cmd68-52 [2020/02/21 19:00] – [Hardware] pqplus
Zeile 8: Zeile 8:
   * KDK Dornscheidt PRO380-S-CT Mod   * KDK Dornscheidt PRO380-S-CT Mod
 ===== Hardware ===== ===== Hardware =====
-Getestet wurde die Modbus-Kommunikation mit dem USB-RS485 Konverter DIGITUS DA-70157 und einem Raspberry Pi 2B. Am RS485 Konverter wurden folgende Widerstände angeschlossen+Getestet wurde die Modbus-Kommunikation mit dem USB-RS485 Konverter DIGITUS DA-70157 und einem Raspberry Pi 2B. Am RS485 Konverter wurden Pull-up und Pull-down Widerstände mit je 820Ω angeschlossen. Die für den Pull-up Widerstand benötigten 5V stellt der RS485 Konverter selbst zur Verfügung. Zusätzlich sind am RS485 Konverter und am Energiezähler je ein 120Ω Abschlusswiderstand angeschlossen. GND und +5V können nicht mit dem PQ Plus CMD 68-52 verbunden werden. 
-^Pin^Pin^Widerstand+=== Anschluss direkt am Sub-D Stecker des DIGITUS DA-70157: === 
-|+5V|RS485+|820Ω+ 
-|RS485+|RS485-|120Ω| +{{:hardware:channels:rs485_mit_da-70157_d-sub.png?600|}} 
-|RS485-|GND|820Ω| + 
-Anschlussbelegung D-Sub Stecker am DIGITUS DA-70157 +=== Anschluss an den Klemmen des mitgelieferten Adapters: === 
-^Pin^Funktion^ + 
-|1|RS485-| +{{:hardware:channels:rs485_mit_da-70157_klemmen.png?600|}} 
-|2|RS485+| + 
-|3|nicht verwendet| +
-|4|nicht verwendet| +
-|5|GND| +
-|6|+5V| +
-|7|nicht verwendet| +
-|8|nicht verwendet| +
-|9|nicht verwendet| +
-Ein weiterer 120Ω Widerstand ist am Energiezähler zwischen den Klemen A und B angeschlossen.+
  
 ===== Einstellungen am Energiezähler ===== ===== Einstellungen am Energiezähler =====
 Diese Beschreibung gilt für folgende Einstellungen am Energiezähler: Diese Beschreibung gilt für folgende Einstellungen am Energiezähler:
   * Baud rate: 9600   * Baud rate: 9600
-  * Parity: Even+  * Parity: None
 Die Anzahl der Stopbits ist nicht einstellbar (immer 1). Die Anzahl der Stopbits ist nicht einstellbar (immer 1).
  
Zeile 46: Zeile 39:
 Beispiel für das Auslesen eines Wertes im Hex Format: Beispiel für das Auslesen eines Wertes im Hex Format:
 <code> <code>
-mbrtu -d/dev/ttyUSB0 -b9600 -pE -s1 -a1 -f3 -thex -n1 -r0x1060+mbrtu -d/dev/ttyUSB0 -b9600 -pN -s1 -a1 -f3 -thex -n1 -r0x1060 
 +</code> 
 +Liefert dieses Ergebnis: 
 +<code> 
 +ADDR=1 REG=4192 DATA=0x5
 </code> </code>
 Beispiel für das Auslesen eines Wertes im Float Format: Beispiel für das Auslesen eines Wertes im Float Format:
 <code> <code>
-mbrtu -d/dev/ttyUSB0 -b9600 -pE -s1 -a1 -f3 -tF32_dcba -n2 -r0x2008+mbrtu -d/dev/ttyUSB0 -b9600 -pN -s1 -a1 -f3 -tF32_dcba -n2 -r0x2008 
 +</code> 
 +Liefert die Netzspannung von L1: 
 +<code> 
 +ADDR=1 REG=8200 DATA=231.20
 </code> </code>
 ^Parameter ^Beschreibung^ ^Parameter ^Beschreibung^
 |-d/dev/ttyUSB0|USB-RS485 Konverter| |-d/dev/ttyUSB0|USB-RS485 Konverter|
 |-b9600|Baudrate 9600. Muss der Einstellung am Energiezähler entsprechen.| |-b9600|Baudrate 9600. Muss der Einstellung am Energiezähler entsprechen.|
-|-pE|Gerade ParitätDer Energiezähler muss auf Even-Parity eingestellt sein.|+|-pN|Kein Parity BitAm Energiezähler muss Parity: None eingestellt sein.|
 |-s1|Ein Stoppbit. Der CMD68-52 verwendet immer ein Stoppbit.| |-s1|Ein Stoppbit. Der CMD68-52 verwendet immer ein Stoppbit.|
 |-a1|Modbus Adresse 1. Der Energiezähler muss auf Adresse 1 eingestellt sein.| |-a1|Modbus Adresse 1. Der Energiezähler muss auf Adresse 1 eingestellt sein.|
Zeile 67: Zeile 68:
  
 Eine Liste der Modbus Register ist auf den letzten Seiten dieses Dokuments: [[https://www.kdk-dornscheidt.de/wp-content/uploads/2017/11/Bedienungsanleitung_KDK_PRO380_4205100Pro_420506Pro_S_Mbus_Modbus_V3_00.pdf|Bedienungsanleitung KDK PRO380]] Eine Liste der Modbus Register ist auf den letzten Seiten dieses Dokuments: [[https://www.kdk-dornscheidt.de/wp-content/uploads/2017/11/Bedienungsanleitung_KDK_PRO380_4205100Pro_420506Pro_S_Mbus_Modbus_V3_00.pdf|Bedienungsanleitung KDK PRO380]]
 +
 +===== Einbindung über einen vzlogger exec-Kanal =====
 +Das folgende Script ''exec-modbus'' kann über einen vzlogger exec-Kanal angebunden werden. Achtung: Mit diesem Script können nur Werte im Float-Format ausgelesen werden.
 +<code>
 +#!/bin/bash
 + 
 +set -e
 +set -u
 + 
 +usage() {
 +cat <<EOF
 +$0 [options] register ...
 +        -t|--tty
 +        -b|--baudrate
 +        -p|--parity
 +        -s|--stopbits
 +        -a|--addr
 +EOF
 +}
 + 
 +TEMP="$(getopt -n installremote \
 +        -l tty:,baudrate:,parity:,stopbits:,addr: -- \
 +        +t:b:p:s:a: "$@")"
 +eval set -- "${TEMP}"
 + 
 +MBRTU="mbrtu"
 +TTY=""
 +BAUDRATE=""
 +PARITY=""
 +STOPBITS=""
 +ADDR=""
 + 
 +while test "$1" != "--"; do
 +        case $1 in
 +                -t|--tty)
 +                        shift
 +                        TTY="$1"
 +                        ;;
 +                -b|--baudrate)
 +                        shift
 +                        BAUDRATE="$1"
 +                        ;;
 +                -p|--parity)
 +                        shift
 +                        PARITY="$1"
 +                        ;;
 +                -s|--stopbits)
 +                        shift
 +                        STOPBITS="$1"
 +                        ;;
 +                -a|--addr)
 +                        shift
 +                        ADDR="$1"
 +                        ;;
 +        esac
 +        shift
 +done
 +shift
 + 
 +checkparameter() {
 +        PARMNAME="${1:-}"
 +        CONTENT="${2:-}"
 +        if [ -z "${CONTENT}" ]; then
 +                printf "%s must not be empty\\n" "${PARMNAME}"
 +                exit 1
 +        fi
 +}
 + 
 +checkparameter tty "${TTY}"
 +checkparameter baudrate "${BAUDRATE}"
 +checkparameter parity "${PARITY}"
 +checkparameter stopbits "${STOPBITS}"
 +checkparameter addr "${ADDR}"
 + 
 +for reg in "$@"; do
 +        NOW="$(date +%s)"
 +        METER="$($MBRTU -d"${TTY}" -b"${BAUDRATE}" -p"${PARITY}" -s"${STOPBITS}" -Q -P -a"${ADDR}" -f3 -tF32_dcba -n2 -r"${reg}" | cut -d\  -f3)"
 + 
 +        if [ -z "${METER}" ]; then
 +                printf >&2 "no data received on modbus\\n"
 +        else
 +                printf "%d: %s = %f\\n" "${NOW}" "${reg}" "${METER:-0}"
 +        fi
 +done
 + 
 +# end of file
 +</code>
 +
 +== Eintrag in vzlogger.conf ==
 +<code>
 +// Meter configuration
 +"meters": [
 +    {
 +     "enabled": true,
 +     "allowskip": true,
 +     "protocol": "exec",
 +     "command": "/home/pi/exec-modbus --tty /dev/ttyUSB0 --baudrate 9600 --parity N --stopbits 1 --addr 0x1 0x2008",
 +                "format": "$t: $i = $v",
 +     "interval": 30,
 +     "channels": [
 +        {
 +            "api": "volkszaehler",
 +            "uuid": "72c65340-4a72-11ea-acb1-d536b07bbb9d",
 +            "identifier": "0x2008",
 +            "middleware": "http://localhost/middleware.php"
 +        }
 +     ]
 +    },
 +]
 +</code>