# D0 Schnittstelle eines Energiezählers mit WAGO auslesen



## Tom... (22 März 2015)

Hallo liebes WAGO-Team,

seht Ihr eine Möglichkeit, einen Energiezähler ( bei mir eine EMU professional ) über die D0 Schnittstelle mit Euerer RS232 Schnittstelle ( 750-650/003-000 ) auszulesen.
Einen funktionierenden IR Lesekopf habe ich. Das Problem besteht darin, den Zähler zur "Herausgabe" der Daten zu bewegen.
Nach EN 62056 - 21 erwartet der Zähler die "Eröffnung" mit 300 Baud. So weit runter kommt aber Euere Schnittstelle nicht. Warum eigentlich nicht?
Gibt es noch andere Möglichkeiten?

Die zweite Sache wäre noch: Wo finde ich das IO-check Tool zur Parametrierung der Schnittstelle.

Vielen Dank!

Es ist natürlich auch jeder andere User gern aufgerufen, seine diesbezüglichen Erfahrungen mitzuteilen. 

Grüße Tom


----------



## fraggle-m (22 März 2015)

Hallo Tom,

IO-Check muß man kaufen.

EMU professional mit DO-Schnittelle ?

Kannst Du mal die genaue Bezeichnung deines Zählers posten, irgendwie hören siech die 300 Baut nach M-Bus an.

Gruß

Frank


----------



## Tom... (23 März 2015)

schau mal im Handbuch Seite 36 -> siehe Bild

Ich kann da den Zähler mit dem Lesekopf von volkszähler auslesen, aber eben nur mit 300 Baud?! Irgendwie schräg.


----------



## .:WAGOsupport:. (25 März 2015)

Hallo Tom… ,

leider stehen zum jetzigen Zeitpunkt seitens WAGO noch keine fertigen Anwendungshinweise für die Auswertung von Zählergeräten über die folgenden Schnittstellen zur Verfügung:


Optische D0-Schnittstelle (OBIS-Protokoll)
S0-Schnittstelle mit Hilfe von gewichteten Impulsen
 
Wir sind jedoch bemüht, dies möglichst zeitnah nachzuholen und einen allgemeinen Lösungsansatz zur Verfügung zu stellen.

Bezüglich Deines Vorhabens kannst Du dir jedoch mit dem Baustein "SERIAL_INTERFACE" aus der "Serial_Interface_01.lib" behelfen. Den Link zum Anwendungshinweis mit Beispielprojekt findest Du im zweiten Post bei folgendem Thema.

http://www.sps-forum.de/wago/76089-wago-und-ethernet-seriell-konverter.html

Bezüglich der Baudrate bei der 750-650/003-000 wir hier leider keine kleinerer Baudrate als 1200 Baud unterstützt. Hier würde ich Dir die 750-652 empfehlen, die zusätzlich in allen Parametern über I/O-Check 3 frei konfigurierbar ist. I/O-Check 3 steht jedoch nicht als freier Download zur Verfügung, da es sich hier um eine kostenpflichtige Software handelt.


----------



## Tom... (25 März 2015)

@ WAGO Support: Vielen Dank für die Infos!



.:WAGO::015533:. schrieb:


> leider stehen zum jetzigen Zeitpunkt seitens WAGO noch keine fertigen Anwendungshinweise für die Auswertung von Zählergeräten über die folgenden Schnittstellen zur Verfügung:



Schade! Ich arbeite 'was aus ;-)



.:WAGO::015533:. schrieb:


> Bezüglich Deines Vorhabens kannst Du dir jedoch mit dem Baustein  "SERIAL_INTERFACE" aus der "Serial_Interface_01.lib" behelfen.



Hab' ich mir schon besorgt.



.:WAGO::015533:. schrieb:


> I/O-Check 3 steht jedoch nicht als freier  Download zur Verfügung, da es sich hier um eine kostenpflichtige  Software handelt.



Hab' ich auch besorgt.


Bezüglich der Zähler EMU professional und EMU allround habe ich noch folgendes herausgefunden:

Auf die Eröffnung mit 300 Baud antwortet der Zähler.
Bei 600 Baud nicht. Ebensowenig bei 2400 oder 4800 Baud.

Doch, oh Wunder, auf 1200 und 9600 Baud reagiert er auch. Ich kann die serielle Schnittstelle also verwenden...
Der Allround antwortet mit 466 Zeichen, der Professional mit 2364 Zeichen.


----------



## Tom... (26 März 2015)

Weiter geht's mit einer weiteren Frage an den Support von WAGO:

Meine RS 232 soll Daten mit 9600 Baud empfangen. Bei einem Start- einem Stop-, sieben Datenbits und der Bitpause macht das zusammen 10 Bit pro Zeichen. Also 960 Zeichen ( oder Byte ) pro Sekunde. Da ich höchstens 5 Byte für den Datenaustausch parametrieren kann, muss ich pro Sekunde 200 mal "vorbeikommen", um die Daten abzuholen. ( Der Puffer von 120 Byte reicht nicht, denn die komplette "Sendung" ist 466 bzw. 2364 Zeichen lang )
Reicht es also, wenn ich zyklisch alle 5ms aufrufe, um 200 mal pro Sekunde Daten abzuholen, oder muss ich um die Flankenwechsel von RR zu erfassen eigentlich 400 mal pro Sekunde vorbeikommen? Von 57.600 Baud wollen wir mal noch gar nicht reden... Wie soll das gehen, wenn das Telegramm länger als der Puffer ist?


```
VAR
    Bufferer    :    ARRAY [ 0..2399 ] OF BYTE ;        (* Puffer für Datenempfang *)
    Pointer    :    INT ;                        (* Zeiger auf zuletzt empfangenes Zeichen im Empfangspuffer *)
    count        :    INT ;                        (* Zähler für Datenempfang *)
END_VAR



(* Datenempfang *)
IF ( RR <> RA )

    THEN    count . 2 := IL2 ;
            count . 1 := IL1 ;
            count . 0 := IL0 ;

            IF count > 0 THEN        Buffer [ Pointer + 1 ] := D0 ;
                                    Buffer [ Pointer + 2 ] := D1 ;
                                    Buffer [ Pointer + 3 ] := D2 ;
                                    Buffer [ Pointer + 4 ] := D3 ;
                                    Buffer [ Pointer + 5 ] := D4 ;
                                    Pointer := Pointer + count ;
            END_IF ;

            RA := RR ;                    (* Empfang bestätigen *)
END_IF ;
(* Ende Empfang *)
```

Danke für Euere Bemühungen!
Grüße Tom


----------



## .:WAGO::014797:. (1 April 2015)

Hallo Tom,

grundsätzlich sind Deine Berchnungen erst einmal richtig. Bei entsprechend langen Telegrammen und höheren Baudraten wird der Buffer in der Klemme überlaufen, wenn die Task zum Auslesen der Bytes aus der Schnittstellenklemme nicht hinterher kommt die Daten auszulesen. In der Regel wird deshalb bei der seriellen Kommunikation ein Handshake-Verfahren vereinbart, dass es dem Empfänger erlaubt, den Sender "einzubremsen". Wenn kein Hardware-Handshake möglich ist, dann besteht mit dem xon/xoff-Verfahren die Möglichkeit eines Handshakes auch auf einer Dreidraht-RS232-Schnittstelle.

Wenn keines der Handshake-Verfahren möglich ist, dann empfehlen wir in diesem Fall die WAGO Klemme 750-652. Durch die Möglichkeit das Prozessabbild auf 24 oder sogar 48 Byte einzustellen ist der Datendurchsatz zwischen der seriellen Schnittstelle und dem WAGO Kontroller weitaus höher und zudem verfügt diese Klemme über einen deutlich größeren Buffer als die 750-650.


----------



## Tom... (6 April 2015)

Vielen Dank an alle,
das Projekt ist erfolgreich abgeschlossen.
Ausgelesen wird ein EMU profeesional mit einem RS232 IR Lesekopf von volkszaehler. Die Stromversorgung erledigt ein 9V Schaltregler von conrad und die Daten sendet und empfängt die 750-650/003 an einem 750-880.
Die Schnittstelle ist parametriert auf 1 Start-, 7 Daten- und 1 Stopbit. Parität gerade. 1200 Baud.
Damit ist mein PLC_PRG in einer 20ms Zeitscheibe schnell genug, die vom Zähler gesendeten Daten schnell genug abzuholen und zu verarbeiten.
Nach dem Senden der sogenannten "Eröffnung" aus 5 Byte antwortet der Zähler mit mehr als 2000 Byte in OBIS Code in einen Ringpuffer. Das dauert gut 20 Sekunden.
Sobald mehr als 20 Byte im Puffer stehen, folgt ein Lesezeiger dem Schreibzeiger und sucht nach der Zeichenkette 15.7.0
Die folgenden Zeichen -0000.000*kW repräsentieren die aktuelle Leistung über alle drei Phasen zum Energieversorger und müssen noch in ein vorzeichen behaftetes real umgewandelt werden. Fertig.

Schöne Ostern!
Grüße Tom


----------

