# Stromzähler mittels Modbus aulesen klappt nicht :-(



## dast (2 Januar 2017)

Liebe Forumsgemeinde,

versuche gerade einen SDM630 Stromzähler von bg-etech.de mittels Modbus an meiner WAGO 750-881 auszulesen.
Das Auslesen per Modbus an meinem Raspberry Pi 2 mit RS485 Aufsteckmodul funktioniert tadellos, nur an meiner WAGO 750-881 wills einfach nicht hinhauen :-(.

Das ganze soll über die 750-653/003-000 Klemme von WAGO und dem MODBUS_EXTENDED_MASTER FB aus der Modb_l05.lib laufen.
An der Klemme habe ich für die 2-Draht Übertragung die Anschlusspunkte 1 und 2 sowie die Anschlusspunkte 5 und 6 gebrückt und die 2-Draht Leitung zum SDM630 an den Klemmen 1 und 5 angeschlossen.

Das Programm im Online-Modus seht ihr im Anhang.

Bekomme weder einen Fehlercode noch sonst welche Info, was schief geht.
Nur die Daten sind alle Null ...

Vielleicht sieht ja jemand von euch einen Fehler?!

Danke schon mal und Grüße,
Daniel.


----------



## Kayle (2 Januar 2017)

Hi,

ich nutze die gleiche Hardware wie Du. Allerdings nutze ich den Modbus Configurator. Bei Interesse schick ich Dir ein paar Screenshots.

Gruß Kay


----------



## Kayle (2 Januar 2017)

Was mir bei Deiner Konfiguration noch auffällt:

Stimmt die Baudrate? Start Adresse = 0? 

Bei mir lese ich Register 1+2 aus. Die beiden Register geswappt ergeben Volt l1 gegen Null.


----------



## dast (2 Januar 2017)

Parameter, wie Baudrate usw. sollten stimmen. Da verwende ich die selben wie im Python Programm am Raspberry Pi, wo es ja funktioniert.
Und die COM-Port Nummer ist 3, da ich davor noch eine 750-652 Klemme für DMX sitzen hab.

Ich versuche ja einfach die ersten 80 WORDs auszulesen, steht aber überall 0 drin.
Und ja, im Python Programm am Raspberry Pi lese ich auch einfach die ersten 80 WORDs ab Adresse 0x0000.
Sollte also gehn ...


----------



## Kayle (2 Januar 2017)

Ist komisch. Bei mir ist es genauso angeschlossen. Hast du mal den Modbus konfigurator probiert?

Gesendet von meinem Elephone P8000 mit Tapatalk


----------



## dast (2 Januar 2017)

Noch nicht, kann ich morgen mal machen.


----------



## holgermaik (2 Januar 2017)

Klappe mal itte den Modbusmaster und Request Data im Onlinemodus auf & mach nochmal ein Bild


----------



## dast (3 Januar 2017)

holgermaik schrieb:


> Klappe mal itte den Modbusmaster und Request Data im Onlinemodus auf & mach nochmal ein Bild



...


----------



## holgermaik (3 Januar 2017)

Hallo dast.
Die 





> 750-653/003-000


 ist eine frei konfigurierbare Klemme. Hast du die Parameter(Baud, Stop, Parity) mit I/O Check in der Klemme konfiguriert?
Lt. Datenblatt ist max. 19200 Baud möglich. Konntest du wirklich 38400 Baud einstellen?

Holger


----------



## .:WAGO::014797:. (3 Januar 2017)

Hallo Daniel,

zuerst mal zum letzten Beitrag von Holger. Baudraten bis zu 57600 Baud lassen sich bei der 750-653/003-000 durchaus einstellen. Siehe Handbuch: http://www.wago.com/wagoweb/documentation/750/ger_manu/modules/m07500653_00000000_0de.pdf

Grundsätzlich ist zu beachten, dass Übertragungsparameter, die im CODESYS-Projekt mittels eines FB's in der Klemme eingestellt werden, dominierend sind. D.h. eine zuvor mittels WAGO IO-Chcke3 getroffene Einstellung wird überschrieben! 

Nun zu Deinem Projekt an sich:

Wenn über eine 750-653/003-000 eine größere Anzahl Bytes gelesen werden soll (in Deinem Fall 80 Modbus-Register -> in Summe etwas über 160 Bytes), dann kommt dem Taskmanagement eine entscheidende Bedeutung zu. Je nach Einstellung der Prozessabbildgröße (3 oder 5 Byte) können über den K-Bus pro Programmzyklus nur 1 bis 3 Bytes des über 160 Byte langen Telegramms aus der Klemme gelesen werden. In der Folge kann es recht schnell zu einem Buffer-Überlauf in der Klemme kommen. Bei der genannten Baud-Rate ist die 5 Byte Einstellung, eine Task-Zykluszeit von 10 ms und eine hohe Priorität für die Mod-Bus Task zu empfehlen.

Du hast zwischen dem Kontroller und der 750-653/003-000 noch eine 750-652 gesteckt. Läuft diese serielle Schnittstelle? Passt hier die eingestellte Prozessabbildgröße zu der in der Steuerungskonfiguration? Die 750-652 kann auch auf RS485 konfiguriert werden. Zu Versuchszwecken könntest Du also auch diese mal als ModBus-Schnittstelle verwenden.



Wenn alles nicht hilft, kannst Du mir gerne mal das Projekt schicken. Mailaddresse siehe unten.


----------



## holgermaik (3 Januar 2017)

@Wago
Danke für die Info. Aus dem Kurzdatenblatt war dies so nicht zu erkennen.


----------



## dast (3 Januar 2017)

Lieber WAGO-Support,

zuerst mal vielen Dank für die Hilfe und die Info bzgl. der Task-Zykluszeit ...

Ich hab jetzt mal ein simples Program für meine verbaute Steuerung programmiert (siehe Anhang) und das SDM630 (testhalber) auf eine Baudrate von 9600 gesetzt.

Selbes Ergebnis, nur etwas ist mit aufgefallen:
Die übergebene Response-Struktur ist leer, genau so wie die innerhalb der MODBUS_EXTENDED_MASTER Instanz.
Nur innerhalb der Struktur ".ReceiveBuffer" der MODBUS_EXTENDED_MASTER Instanz scheinen sich die Daten regelmäßig zu aktualisieren.
Siehe dazu auch das Bild im Anhang! Es scheint so, als ob doch Werte ausgelesen werden, welche aber nicht in der Response Struktur landen.

Und ja, die 750-652 sitzt genau vor der 750-653/003-000 und darüber läuft meine DMX-Beleuchtung einwandfrei und ohne Probleme!

LG Daniel.




Anhang anzeigen Sdm630.zip


----------



## holgermaik (4 Januar 2017)

Morgen
Es gibt von Wago ein Beispiel dazu.
Suche mal auf der Seite nach Dokument a102607-
Holger


----------



## dast (4 Januar 2017)

Problem gefunden! 

*Der Boolean StartFunction DARF NICHT (zu früh) ZURÜCKGESETZT werden!

*Durch die TON FB in meinem Programm wurde StartFunction zurückgesetzt und deshalb die Daten vermutlich im MODBUS_EXTENDED_MASTER nicht umkopiert!

Habs jetzt umgebaut, dass StartFunction erst geändert wird, sobald es vom MODBUS_EXTENDED_MASTER zurückgesetzt wurde.


----------



## MarkusSchus (13 Juni 2017)

Wir möchten ebenfalls einen SDM630 auslesen und haben das Beispielprogramm von dast heruntergeladen. Das Programm läuft aber leider bekommen wir nur Nullen zurück. Kann es vielleicht daran liegen, dass wir die normale 750-653-Karte statt der 750-653/003-000 einsetzen?


----------



## dast (13 Juni 2017)

Passen die Einstellungen am SDM630, sprich 9600/N/8/1?
Die normale WAGO 750-653 kann nämlich nur diese Einstellungen!

EDIT: Noch eine Anmerkung: Die SDM630 muss - glaub ich - nach Änderung der Parameter kurz stromlos geschalten werden (was einem Neustart entspricht).


----------



## Tobsucht (13 Juni 2017)

Hallo Markusschus,

ich denke dein Ausgang bInterfaceError ist nicht gleich Null.


Grüße


----------



## ClMak (13 Juni 2017)

MarkusSchus schrieb:


> Kann es vielleicht daran liegen, dass wir die normale 750-653-Karte statt der 750-653/003-000 einsetzen?



Hallo Markusschus,

mit der "normalen" 750-653 wird das vermutlich nicht funktionieren, weil die Klemme im Modus Vollduplex arbeitet.
Bei einen 2-draht Anschluss muss die Klemme aber zwingend im Modus Halfduplex arbeiten. Oder hast Du den Stromzähler über 4-draht angeschlossen?


----------



## weißnix_ (14 Juni 2017)

Hat der SDM nicht per default Adresse 1? Ich meine im Screen die Adr 0 gesehen zu haben. TX+ ist auf RX+ und TX- auf RX- gebrückt? RTX- ist auf A und RTX+ auf B gebrückt?
Die nicht unterstützten Eingänge am FB (Baudrate, Duplexmodus) sollen unbeschaltet bleiben bzw. mit den Defaultwerten belegt werden.


----------



## MarkusSchus (14 Juni 2017)

Danke für die vielen Tipps. Der SDM630 ist mit einer 2-Draht-Verbindung angeschlossen. Einstellungen 9600/N/8/1 waren von Anfang an gesetzt.
Es hat uns auch gewundert, dass im Programm (siehe mein Bild) alle Werte 0 sind. Die Brücken sind so gesetzt wie von weißnix_ beschrieben.

Viele Grüße


----------



## dast (14 Juni 2017)

MarkusSchus schrieb:


> Danke für die vielen Tipps. Der SDM630 ist mit einer 2-Draht-Verbindung angeschlossen. Einstellungen 9600/N/8/1 waren von Anfang an gesetzt.
> Es hat uns auch gewundert, dass im Programm (siehe mein Bild) alle Werte 0 sind. Die Brücken sind so gesetzt wie von weißnix_ beschrieben.
> 
> Viele Grüße


Hast du das Beispielpogramm von mir entsprechend dem Kommentar #14 geändert?


----------



## MarkusSchus (14 Juni 2017)

Ja, den Kommentar #14 habe ich berücksichtigt.


----------



## Tobsucht (16 Juni 2017)

Hallo,

die Schnittstelle 750-653 (ohne weitere Nummern) arbeitet fest im Vollduplex Mode. Werden jetzt Brücken zwischen Rx und Tx geschaltet, empfängt das Modul die Zeichen, welche das Modul selbst sendet.
Der Masterbaustein sieht dann seine Anfrage und die Antwort vom Slave und kann dies nicht verarbeiten.

Die Schnittstelle kann also nur an einem Vierleiter Bus angeschlossen werden. Da alle Parameter fest vorgeben sind, müsste bei den Parameter die TerminalDefault gewählt werden.


Grüße


----------



## weißnix_ (17 Juni 2017)

Das "Terminal Echo" könnte ja ggf maskiert werden. Muss allerdings auf der Softwareseite passieren...


----------



## uzi10 (18 April 2019)

Hallo!

Ist dies auch mit einer 750-652 möglich?
Hat jemand schon diesen Zähler auch mit e!cockpit ausgelesen?


----------



## Thruser (19 April 2019)

Hallo,


uzi10 schrieb:


> Ist dies auch mit einer 750-652 möglich?


da beide Geräte RS-485 unterstützen sollte es möglich sein.

Da Du wohl eine 8202 verwendest, warum nutzt Du nicht die vorhandene Schnittstelle, die unterstützt sowohl RS-232 als auch RS-485.

Gruß


----------

