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
Nächste ÜberarbeitungBeide Seiten der Revision
pqplus_cmd68-52 [2020/02/14 21:38] – [Test der Kommunikation] pqpluspqplus_cmd68-52 [2020/02/18 14:07] – [Test der Kommunikation] pqplus
Zeile 13: Zeile 13:
 |RS485+|RS485-|120Ω| |RS485+|RS485-|120Ω|
 |RS485-|GND|820Ω| |RS485-|GND|820Ω|
-Ein weiterer 120Ω Widerstand ist am Energiezähler zwischen den Klemen A und B angeschlossen.+Anschlussbelegung D-Sub Stecker am DIGITUS DA-70157 
 +^Pin^Funktion^ 
 +|1|RS485-| 
 +|2|RS485+| 
 +|3|nicht verwendet| 
 +|4|nicht verwendet| 
 +|5|GND| 
 +|6|+5V| 
 +|7|nicht verwendet| 
 +|8|nicht verwendet| 
 +|9|nicht verwendet| 
 +Anschlussbelegung der Klemmen am mitgelieferten Adapter 
 +^Klemme^Funktion^ 
 +|1|RS485+| 
 +|2|RS485-| 
 +|3|+5V| 
 +|4|GND| 
 +Klemmen am Energiezähler PQ Plus CMD 68-52 
 +^Klemme^Bezeichnung^Verbunden mit^ 
 +|22|COM A|RS485+| 
 +|23|COM B|RS485-| 
 +Zwischen den Klemmen A und B muss ein 120Ω Widerstand angeschlossen werden. GND und +5V können nicht mit dem PQ Plus CMD 68-52 verbunden werden.
  
 ===== 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 35: Zeile 56:
 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 56: Zeile 85:
  
 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
 +<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>