Forum: Mikrocontroller und Digitale Elektronik Stromzähler mit MODBUS RTU auslesen


von Stromer (Gast)


Lesenswert?

Hallo,

ich möchte meinen Energiebedarf mit einem Zähler erfassen und periodisch 
in einer SQL DB ablegen. Zudem soll der aktuelle Stromverbrauch und der 
aktuelle Verbrauch je Außenleiter angezeigt werden können.

Als Zähler möchte ich ein MODBUS RTU kompatibles Modell nehmen.
Der Günstigste, den ich gefunden habe ist von Conard. (Das wundert mich 
ehrlichgesagt etwas ;-) )
http://www.conrad.de/ce/de/product/125442/?insert=U1&hk=WW2&utm_source=epro&utm_medium=seosite&utm_campaign=link&WT.mc_id=epro


Wie bekomme ich die Daten vom Stromzähler nun mit einem Linux Rechner 
verarbeitet? Hat jemand Erfahrung mit FreeModbus?
Woher bekomme ich die Informationen, welche Register ich für welche 
Daten (Ströme L1-3, Spannungen, Freq etc) auslesen muss?
Sind diese Register zählerspezifisch oder für alle Zähler 
gleich/aehnlich?
Gibt es gar eine Anbindung an Volkszähler oder ähnliche Projekte?


Bin auf Eure Tips und Ideen sehr gespannt.


Der Stromer

von heinzhorst (Gast)


Lesenswert?

Da hast du dir ja was vorgenommen. Modbus ist protokollmäßig nicht ganz 
ohne. Vor Allem, weil da jeder Hersteller sein eigenes Süppchen kocht. 
Wie hast du die hardwaremäßige Anbindung der Schnittstelle gelöst?

von Stromer (Gast)


Lesenswert?

Hardware:
http://www.dealextreme.com/p/usb-to-rs232-db9-serial-port-adapter-22407
http://www.dealextreme.com/p/rs232-to-rs485-converter-6040

Aber wenn ich von Voltcraft keine Beschreibung der Register bekomme, 
fällt dieser Zähler wohl aus.

von spaneg (Gast)


Lesenswert?

Im Handbuch wird wohl stehen, wo die Daten stehen....bei 40001 geht's 
wohl los....falls nicht ist das Ding Schrott.Ich kenne nur Modscan und 
Modpoll aber das laeuft unter WIN.

von Stromer (Gast)


Lesenswert?


von magic2 (Gast)


Lesenswert?

wenn es den unbedingt dieser Zähler mit undokumentierter Modbus 
schnittstelle sein muss, dann würde ich mir die passende PC software des 
Herstellers besorgen und die kommunikation seriellen mitschneiden.
Die verwendeten Modbuskennungen und Register mit den angezeigten PC 
Werten, Strom Spannung... vergleichen
und anschliessend in die eigene MC Routine implementieren

von Stromer (Gast)


Lesenswert?

Es kann auch gerne ein anderer Zähler sein. Nur die Preisregion sollte 
gleich sein. Und nur S0 reicht mir nicht. Ich möchte auch Spannung, 
Freq, Phasenversch. etc auslesen.

von Justin O. (justin)


Lesenswert?

Oh, das klingt spannend.

Die SML-Schnittstelle der EDL-/eHZ-Geräte haben wir fast implementiert.
Lt. 
http://itrona.ch/stuff/F2-2_PJM_5_Beschreibung%20SML%20Datenprotokoll%20V1.0_28.02.2011.pdf 
sind in der SML-(bzw. OBIS-)Spezifikation auch Felder für die 
Übertragung von U, I, F und cos Phi vorgesehen. Im Lastenheft des eHZ 
und EDL ist das allerdings nicht verpflichtend. Vermutlich kommt's also 
auf den Hersteller an, ob er das implementiert -> sieht eher schlecht 
aus - könnte aber eine Recherche wert sein. Der Easymeter Q3D hat's 
jedenfalls nicht.

Falls Du hier ein passendes Gerät findest, wäre das sicher der 
schnellste Weg.

Anderenfalls können wir (volkszaehler.org) Dir gerne helfen, das Ding 
anzubinden.

Ein Listenmitglied kennt das Conrad-Gerät wohl:
https://volkszaehler.org/pipermail/volkszaehler-dev/2011-February/000683.html

Bei dem kannst Du ja mal nachfragen, ob er neue Erkenntnisse hat.


Gruss, J.

von Daniel B. (dbuergin)


Lesenswert?

Hallo

Ich habe mir Ende letzten Jahres auch so ein Teil gegönnt:

http://www.elektrotools.de/Produkt/Siemens-ET-Multizaehler-Wandler5000/1-oder-5-3x3-3-7KT1341

Ist nicht deine Preisklasse, ich weiss, funktioniert aber ebenfalls mit
Modbus-RTU Protokoll.

Dazu einen RS458_to_RS232 Konverter, und das Ganze an meinen kleinen
Linux PC http://www.pcengines.ch/alix3d3.htm mit Ubuntu 10.10.

Nach verschiedenen Versuchen habe ich die OpenSource ModBus Library 
http://libmodbus.org/ gefunden, und in der Version 2.9.2 installiert.

Darin hat es verschiedene Beispiel, von welchen ich das 
"unit-test-server.c" als Grundlage genommen und für den Siemens Zähler 
angepasst habe. Dieses Program wird von einem Perl-Daemon im 5s Rhythmus 
aufgerufen und liefert einen Comma-separated String mit den Zähler-daten 
zurück.

Der Siemens Zähler hat 96 16bit register, welche mit einem Befehl 
ausgelesen werden können, nach dem Motto, gib mir von Register 0 - 96 
alles. Dannach liegen die Daten in einem C-Array (uint16_t xy[96]), und 
können ausgewertet werden.
Grundlage ist aber ganz klar die Dokumentation, welches Register was
bedeutet. Ohne die hast Du wohl keine Change.

Aufgetretene Probleme:
- Da der kleine PC keine RS232 Schnittstelle mehr hat, muss ich noch
  einen USB_to_RS232 Converter einfügen. Damit hat es bei einem Model
  ein Problem gegeben. Gab nur Timeouts, keine Verbindung.
- Sporadisch (1-2x pro Tag) antwortet der Siemenszähler für eine
  Anfrage nicht. 5s später geht es dann, keine Ahnung warum.

Hoffe das hilft Dir etwas

Daniel

von Max (Gast)


Lesenswert?

Hallo Stromer,

sowas wollte ich auch.

Ich habe mir das System mit Logger/Funkmodul bestellt - kostet immer 
noch weniger als ein Marken-Stromzaehler mit Modbus:
http://www.conrad.de/ce/de/product/125441/VOLTCRAFT-SMART-METERING-SYSTEM

Dann habe ich die Schnittstellenuebertragung Zaehler-Logger (RS-484) 
angeguckt. Mit den Infos dann ein kleines perl-Programm geschrieben das 
den Logger emuliert.
Nun kann ich Momentanleistung und Zaehlerstand abfragen.

Praktisch sieht das so aus:
Zaehler <--(RS-485)--> Seriell/Ethernet-Wandler <--Netz/Internet--> 
Rechner.

Hoffe das ich auch noch die anderen Infos auslesen kann, habe das aber 
noch nicht ernsthaft versucht (Der Zaehler ist gerade 4 Tage in 
Betrieb), aber ein mini-Test sah erfolgversprechend aus.

Kann bei Interesse gerne mehr schreiben.

PS.: Habe noch ein Logger/Funkmodul inklusive USB-Funkmodul zu 
verkaufen...

Tschuess
       Max

von Stromer (Gast)


Lesenswert?

Hallo Max,

ich habe verstärktes Interesse.

Man kann den Zähler auch einzeln für 118 EUR bei Conrad kaufen.

Kannst du dein Script hier reinstellen? Hast du auch schon versucht 
Spannungen auszulesen?
Was macht dein Script? Werden den Daten in einer mysql DB abgelegt?

Ich strebe auch eine Anbindung an volkszähler.org an. Dann müsste ich 
nicht das Rad neu erfinden.


VG

Stromer

PS: Hab deinen Post auch im Conrad Forum gefunden. Ich denke aber, hier 
sind wir besser aufgehoben... ;-)

von Max (Gast)


Lesenswert?

Hallo,

ich verweise 'mal auf das volkszähler-wiki:
http://wiki.volkszaehler.org/hardware/channels/meters/power/vsm-103

Da habe ich meine bisherigen Erkenntnisse beschrieben.
Script reiche ich nach.
Also Spannung, Strom, Frequenz, Leistungsfaktor, Zählerstand kann ich 
auslesen :-) und schreibe die Daten in eine Datei.

Max

von Stromer (Gast)


Lesenswert?

Hallo Max,

schön, dass du dich meldest. Ich habe daraufhin direkt mal einen Zähler 
beim blauen Klaus geordert.

Für deine Infos bei Volkszähler einen dicken fetten Dank :-) Ich werde, 
sobald die Hardware da ist versuchen noch fehlende Infos zu ergänzen.

Gruss

Stromer

von Patrick-Oliver S. (patrick-oliver)


Lesenswert?

Danke für den tollen Beitrag!
Die Länge eines Perl-Arrays bekommst du übrigens wie folgt:
1
my @foo = qw(foo bar baz);
2
print scalar(@foo);

Beitrag #5799157 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.