hardware:channels:meters:power:edl-ehz:siemens_td3511
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hardware:channels:meters:power:edl-ehz:siemens_td3511 [2017/12/30 21:21] – Datenblatt sca | hardware:channels:meters:power:edl-ehz:siemens_td3511 [2023/05/29 13:51] (aktuell) – korrektur Tippfehler gregor.wolf | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| {{ : | {{ : | ||
| Beim TD-3511 von Siemens | Beim TD-3511 von Siemens | ||
| - | <note important> | + | <note important> |
| - | http:// | + | </ |
| - | Siehe auch den Thread im [[http:// | + | |
| - | + | ||
| - | Update: Datenblatt verfügbar: {{: | + | |
| ===== Hardware ===== | ===== Hardware ===== | ||
| Zeile 12: | Zeile 9: | ||
| ===== Kommunikation ===== | ===== Kommunikation ===== | ||
| + | Die Datenübertragung erfolgt gemäß Hersteller-Anleitung per IEC 62056-21 in Mode " | ||
| + | Das im vzlogger zu konfigurierende Protokoll ist " | ||
| + | Der Zähler arbeitet im Pull-Modus, d.h. er sendet die Daten erst nach Anforderung. | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | ---- | ||
| + | |||
| Der Zähler erwartet die Initialisierungssequenz | Der Zähler erwartet die Initialisierungssequenz | ||
| - | < | + | < |
| - | nach Startsequenz | + | und antwortet mit seinem Identifikationstelegramm. |
| - | < | + | |
| - | \x06050\r\n</ | + | Nach der an den Zähler gesendeten |
| - | sendet er die Daten mit 9600bd. | + | <code> ACK0< |
| + | sendet er bei Option " | ||
| + | Beispiel: " | ||
| + | |||
| + | |||
| + | Ausschnitt aus der Hersteller-Anleitung (s. Quellen - Benutzerhandbuch (Siemens AG Österreich)): | ||
| + | > | ||
| + | >< | ||
| + | Code Übertragungsrate | ||
| + | 0 300 Bit/s | ||
| + | 1 600 Bit/s | ||
| + | 2 1.200 Bit/s | ||
| + | 3 2.400 Bit/s | ||
| + | 4 4.800 Bit/s | ||
| + | 5 9.600 Bit/s | ||
| + | 6 | ||
| + | 9 115.200 Bit/s | ||
| + | </ | ||
| + | >Der Zähler meldet sich aus Kompatibilitätsgründen | ||
| + | |||
| + | ---- | ||
| Wahrscheinlich funktionieren auch die Befehle des [[hardware: | Wahrscheinlich funktionieren auch die Befehle des [[hardware: | ||
| < | < | ||
| + | ---- | ||
| + | <note tip>Je nach Messstellenbetreiber kann auch eine niedrigere, als die vom Hersteller angegebene, maximal mögliche Baudrate parametriert sein.\\ | ||
| + | Falls die Kommunikation bei einer höheren Baudrate nicht funktioniert, | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | ===== Beispielkonfiguration ===== | ||
| + | <note tip>Im Gegensatz zu anderen Zählern müssen beim TD-3511 die OBIS-Kennzahlen in der Form " | ||
| + | </ | ||
| + | |||
| + | |||
| + | <code base vzlogger.conf> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | //" | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | ===== Auslesen mit anderen Methoden als vzlogger ===== | ||
| - | ===== Auslesen per PHP ===== | + | ==== Auslesen per PHP ==== |
| Dieses Script übergibt die Daten ganz normal an die Middleware. | Dieses Script übergibt die Daten ganz normal an die Middleware. | ||
| Das Script verwendet als Geschwindigkeit 9600. Wer 19200 möchte muss die beiden Zeilen im Script einkommentieren. | Das Script verwendet als Geschwindigkeit 9600. Wer 19200 möchte muss die beiden Zeilen im Script einkommentieren. | ||
| - | < | + | < |
| <?php | <?php | ||
| Zeile 170: | Zeile 281: | ||
| </ | </ | ||
| - | ===== Auslesen per C zu MySQL ===== | + | ==== Auslesen per C zu MySQL ==== |
| Das folgende C Programm kann alle Daten mit dem [[hardware: | Das folgende C Programm kann alle Daten mit dem [[hardware: | ||
| Dabei wird die Übertragungsrate auf 9600bps erhöht.\\ | Dabei wird die Übertragungsrate auf 9600bps erhöht.\\ | ||
| Das Programm kann über PHP mit pclose(popen(" | Das Programm kann über PHP mit pclose(popen(" | ||
| - | < | + | < |
| #include < | #include < | ||
| #include < | #include < | ||
| Zeile 349: | Zeile 460: | ||
| </ | </ | ||
| - | ===== Test mit HTerm | + | ==== Test mit HTerm ==== |
| Zum Testen kann [[http:// | Zum Testen kann [[http:// | ||
| Einzustellen sind:\\ | Einzustellen sind:\\ | ||
| Zeile 360: | Zeile 471: | ||
| Auf " | Auf " | ||
| - | ===== Test mit Perl-Script+hterm | + | ==== Test mit Perl-Script ==== |
| - | Das folgende Perlscript automatisiert die manuelle Bearbeitung des Zählers mit hterm. | + | < |
| - | < | + | |
| # | # | ||
| - | |||
| # | # | ||
| - | # (m)ein Stromzähler mit IR-Schnittstelle blubbert nach einem "Anforderung- | + | # (m)ein Stromzähler mit IR-Schnittstelle blubbert nach einem "Aufforderung- |
| # telegramm" | # telegramm" | ||
| # und gerader Parität zu senden. Das ist der Initialmodus von Geräten, | # und gerader Parität zu senden. Das ist der Initialmodus von Geräten, | ||
| Zeile 375: | Zeile 484: | ||
| # Datum: 20120302 | # Datum: 20120302 | ||
| # | # | ||
| - | + | # 20171230: Andreas Schulze: speed :-) | |
| - | my $PORT='/ | + | |
| - | my $anforderungstelegramm = " | + | |
| use warnings; | use warnings; | ||
| Zeile 383: | Zeile 490: | ||
| use utf8; | use utf8; | ||
| use Device:: | use Device:: | ||
| + | use Time::HiRes qw(usleep); | ||
| - | my $tty = new Device:: | + | # functions |
| - | $tty-> | + | sub tty_init($); |
| - | $tty-> | + | sub tty_baudrate($$); |
| - | $tty-> | + | sub tty_close($); |
| - | $tty-> | + | sub send_telegram($$); |
| - | $tty-> | + | sub receive_line($); |
| - | # | + | |
| - | my $num_out | + | # global vars |
| - | die "write failed\n" | + | my $PORT='/ |
| - | die "write inclomplete\n" | + | my $aufforderung = "/? |
| - | print "$num_out Bytes written\n"; | + | my $speed = chr(6) . " |
| + | my $tty; | ||
| + | my $answer; | ||
| + | |||
| + | # main | ||
| + | $tty = tty_init($PORT); | ||
| + | send_telegram($tty, | ||
| + | print receive_line($tty); | ||
| + | |||
| + | usleep(250*1000); | ||
| + | |||
| + | send_telegram($tty, | ||
| + | usleep(250*1000); | ||
| + | tty_baudrate($tty, | ||
| + | |||
| + | do { | ||
| + | $answer = receive_line($tty); | ||
| + | print $answer; | ||
| + | } until $answer eq "!\r\n"; | ||
| + | |||
| + | tty_close($tty); | ||
| + | exit(0); | ||
| + | |||
| + | # parameter: tty name | ||
| + | # return | ||
| + | # on error : die | ||
| + | sub tty_init($) { | ||
| + | my ($device) | ||
| + | my $tty = new Device:: | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | # | ||
| - | my ($num_read, $s); | + | |
| - | $tty-> | + | |
| - | while(1) { | + | |
| - | ($num_read, $s) = $tty-> | + | |
| - | print $s if $s; | + | |
| } | } | ||
| - | $tty-> | + | # parameter: a tty handle |
| - | </ | + | # on error : die |
| + | # return | ||
| + | sub tty_close($) { | ||
| + | my ($tty) = @_; | ||
| + | | ||
| + | } | ||
| + | # parameter: a tty handle | ||
| + | # parameter: new baudrate | ||
| + | # return | ||
| + | # on error : die | ||
| + | sub tty_baudrate($$) { | ||
| + | my ($tty, $baudrate) = @_; | ||
| + | $tty-> | ||
| + | $tty-> | ||
| + | }; | ||
| + | # parameter: a tty handle | ||
| + | # parameter: string to send | ||
| + | # return | ||
| + | # on error : die | ||
| + | sub send_telegram($$) { | ||
| + | my ($tty, | ||
| + | |||
| + | print "send ' | ||
| + | $telegram .= " | ||
| + | my $num_out = $tty-> | ||
| + | die "write failed\n" | ||
| + | die "write inclomplete\n" | ||
| + | print " | ||
| + | } | ||
| + | |||
| + | # parameter: a tty handle | ||
| + | # return | ||
| + | # on error : - | ||
| + | sub receive_line($) { | ||
| + | my ($tty) = @_; | ||
| + | |||
| + | my ($line, $num_read, $c); | ||
| + | do { | ||
| + | ($num_read, $c) = $tty-> | ||
| + | $line .= $c; | ||
| + | } until !defined($c) || $c eq " | ||
| + | | ||
| + | $line; | ||
| + | } | ||
| + | </ | ||
| + | ===== Quellen ===== | ||
| + | [[https:// | ||
| + | {{: | ||
hardware/channels/meters/power/edl-ehz/siemens_td3511.1514665314.txt.gz · Zuletzt geändert: von sca