DAS SMART METER FÜR JEDEN

Siemens TD-3511

TD-3511 Bei der Installation einer Solaranlage haben die Stadtwerke bei mir Zähler TD-3511 von Siemens installiert. Es handelt sich um Zweirichtungszähler mit IR-Schnittstelle. Der Zähler besitzt auch noch einen frei zugänglichen Steckplatz für einen M-Bus Adapter, der allerdings hier nicht weiter betrachtet wird.

Hardware

Man benötigt den IR-Schreib-Lese-Kopf, da der Zähler erst angesprochen werden muss, bevor er sendet.

Die linke der beiden Punkte im Bereich des Lesekopfes ist der Empfänger. Rechts ist die IR-Sendediode des Zählers. Wenn man den IR-Schreib-Lese-Kopf zusammen mit der USB-Erweiterung wie im Wiki beschrieben aufbaut, geht das USB-Kabel nach unten weg.

Test #1

Zum Testen habe ich hterm verwendet.
Einzustellen sind:
Port: bei Windows:verwendeter COM-Anschluss des USB-Adapters, bei Linux z.B. /dev/ttyUSB0
Baud: 300
Data: 7
Stop: 1
Parity: Even
Bei „input control“: Send on Enter auf „CR-LF“
Auf „Connect“ klicken, dann im Eingabefeld “/?!“ (ohne Anführungszeichen) eingeben und Enter drücken. Dann sollte der Zähler sofort mit seiner Seriennummer antworten. Nach 2-3 Sekunden fängt der Zähler dann an, Daten auszugeben.

Test #2

Das folgende Perlscript automatisiert die manuelle Bearbeitung des Zählers mit hterm.

#!/usr/bin/perl

#
# (m)ein Stromzähler mit IR-Schnittstelle blubbert nach einem "Anforderung-
# telegramm" Daten raus. Das Telegramm ist mit 300 Baud, 7 Bit, 1 Stoppbit
# und gerader Parität zu senden. Das ist der Initialmodus von Geräten,
# die das Protokoll IEC 62056-21 implementieren.
#
# Autor: Andreas Schulze
# Bugfix: Eric Schanze
# Datum: 20120302
#

my $PORT='/dev/ttyUSB0';
my $anforderungstelegramm = "\n/?!\r\n";

use warnings;
use strict;
use utf8;
use Device::SerialPort;

my $tty = new Device::SerialPort($PORT) || die "can't open $PORT: $!";
$tty->baudrate(300)      || die 'fail setting baudrate';
$tty->databits(7)        || die 'fail setting databits';
$tty->stopbits(1)        || die 'fail setting stopbits';
$tty->parity("even")     || die 'fail setting parity';
$tty->write_settings     || die 'fail write settings';
#$tty->debug(1);

my $num_out = $tty->write($anforderungstelegramm);
die "write failed\n" unless ($num_out);
die "write inclomplete\n" unless ($num_out == length($anforderungstelegramm));
print "$num_out Bytes written\n";

my ($num_read, $s);
$tty->read_const_time(10);
while(1) {
  ($num_read, $s) = $tty->read(1);
  print $s if $s;
}

$tty->close || die "can't close $PORT: $!";

hardware/channels/meters/power/edl-ehz/siemens_td3511.txt · Zuletzt geändert: 2012/03/02 23:34 von sca