3 Phasen Stromzähler SDM630M DC alle Werte auslesen !!!! Nativ auslesen !!!

Ja das mit den Klemmports für die Kommunikationskabel ist echt lästig, zumal man die Kommunikation ja meist nicht über 1,5 mm² macht. Ich habe Telefonleitung genommen, alternativ hätte ich CAT7-Kabel. Bei mir schaut es zusätzlich noch so aus, als wenn auch die Terminierung am Zähler nicht notwendig oder sinnvoll wäre. Habe das aber nicht bis zum allerletzten durchdekliniert. Ich war dann einfach mal froh, als die Daten kamen.

Hat jemand eine Idee, wie man sinnvoll mit den Daten umgeht? Ich bekomme auch noch die Erzeugungsdaten aus meinem Wechselrichter von der PV-Anlage (Kostal Piko 10.1).

Aus dem SDM630 lese ich gerade Sekundenwerte aus, vom WR bekomme ich 15-Sekundenwerte (reicht auch).
Gerne würde ich die Daten in einem Diagramm anzeigen mit Verrechnung des Eigenverbrauchs. Dann würde ich mir die Tageswerte gerne per MAil zusenden lassen.

Etwas Sorgen mache ich mir um die „Datenhygiene“, im Prinzip müssen nicht alle Daten hochauflösend sein. Je weiter sie zurückliegen, um so mehr können sie aggregiert sein. Im Tages- und Wochenbereich würde ich sie in nativer Auflösung belassen, dann reichen Minuten- und 15-Minuten-Werte.

Aber ich würde die Daten dann gerne „rollierend“ verrechnen, also nicht auf ein Jahr vom 1.1. bis 31.12. sondern immer 364 Tage zurück, denn man hat ja immer ein ganzes Jahr im Vergleich, dazu braucht es kein Sylvester.

Hat da jemand Ideen und oder Erfahrungen?

Gruß
tango

Also erstmal lese ich überhaupt nur sehr wenige der verfügbaren Daten aus: Leistung Phase 1,2,3 getrennt und Leistung gesamt. Alles andere ist mMn nach nur für spezielle Zwecke interessant (z.B. mal Stromstärke pro Phase).

Auswertung mache ich mit IPSPowerControl - allerdings noch nicht so richtig intensiv.

Terminierung habe ich übrigens auch wieder rausgeschmissen.

Hi alleseits, bin relativ neu und stehe erst am Anfang.
Habe ich das richtig verstanden, dass diese Lösung auch den Rückstrom (wenn die PV mehr liefert als ich verbrauche) misst?

Der Zähler hat ja eine RS485 Modbusschnittstelle. Meine Heizung (drexel und weiss X2) hat auch so eine Schnittstelle und ist noch nicht eingebunden.

Bei mir ist sowohl ein 1wire als auch ein KNX Bus in Betrieb. Welcher Umsetzter wäre da geeignet?
Kennt da jemand eine gute Lösung?
Danke Walter

Hey Walter2104,

Uff rs485 zu 1wire oder KNX kenne ich beide nicht(man lernt nie aus)! Ich denke rs485 auf IP oder USB sollte hier die Wahl sein. Mit dem Rückstrom kann ich dir nicht sicher sagen aber ich gehe mit 90% Sicherheit davon aus da es eine extra Modbus Adresse für gelieferte Energie gibt. Bei der Leistung sollte einfach nur eine negative Leistung herauskommen.

Gruß Bernd

Hi, danke erstmal,
allerdings habe ich einen eigenen „Electronik“ Kasten für Server, router etc. und im E-Verteilerschrank gehen halt nur die beiden Busse KNX und 1-wire durch (die beiden sind auch für 4000V geeignet). Dort mit usb oder Rs485 zu arbeiten ist „Systemfremd“.
Vielleicht weiss noch wer was?
Danke

Öh - verstehe ich nicht… :confused:
Der Zähler hängt im E-Schrank und bietet Modbus-Kontakte. Was spricht denn dagegen von dort ein Kabel in den „Elektronik-Kasten“ zu ziehen und dort auf ein Modbus-Interface zu klemmen?

Stimmt, ich muss ja nicht mit dem USB da rein. Bin wohl auf der Leitung gestanden.

Guten Abend,

seit kurzer Zeit bin ich nun auch Besitzer einer SymBox.
Mein erstes Vorhaben ist, den genannten Zähler DSM630 Modbus auszulesen.

Dazu habe ich mir einen Modbus->Lan Converter gekauft: CSE-H55N und den Stromzähler angeschlossen.

Ich sehe jetzt gerade am Anfang den Wald vor lauter Bäumen nicht so richtig, und die Anleitung im ersten Post scheint hier für einen Seriellen Port zu sein, wenn man Symcon auf einem PC betreibt?

Ich habe alles in einem LAN und im Setup/Diagnose Tool des Converter kommen auch Daten an.

In Symcon weiss ich nicht so recht wie (korrekt) starten muss…

Muss ich eine Splitter Instanz erstellen, dann ein ModBus Device und unter diesem dann die Abfragewerte hinzufügen?
Oder doch einen ComPort, da man im Configtool des Wandlers COM1 angezeigt bekommt?

Da wäre ich über ein festes Anstupsen sehr dankbar.

Durch „wildes“ ausprobieren akzeptiert Symcon die IP des Wandlers und den Port und es kommen im Debug auch Daten an.


HEX: 28.12.2015 20:02:23.00 |             RECEIVED | DF 00 EF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | y<NUL>;<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 79 00 3B 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | }<NUL>Û<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 7D 00 DB 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | »<NUL>û<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | BB 00 FB 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>÷<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 F7 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | <NUL>¹<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 00 B9 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ý<NUL>ï<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FD 00 EF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ý<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FD 00 FF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | {<NUL>÷<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 7B 00 F7 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>ý<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 FD 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | y<NUL>ù<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 79 00 F9 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ù<NUL><NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | F9 00 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>÷<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 F7 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ÿ<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FF 00 FF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | »<NUL><DEL><NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | BB 00 7F 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>»<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 BB 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 FF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ÿ<NUL>ù<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FF 00 F9 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ÷<NUL>ù<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | F7 00 F9 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | û<NUL>ý<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FB 00 FD 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ÿ<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FF 00 FF 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | <NUL>û<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | 00 FB 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ý<NUL>{<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FD 00 7B 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | »<NUL>_<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | BB 00 5F 00 
TXT: 28.12.2015 20:02:23.00 |             RECEIVED | ÿ<NUL>û<NUL>
HEX: 28.12.2015 20:02:23.00 |             RECEIVED | FF 00 FB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | »<NUL>½<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | BB 00 BD 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | »<NUL>ï<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | BB 00 EF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | û<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FB 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | <NUL>û<NUL>û<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 00 FB 00 FB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | <DEL><NUL>û<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 7F 00 FB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | û<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FB 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | }<NUL>»<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 7D 00 BB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL><NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | û<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FB 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | Û<NUL>û<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | DB 00 FB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | û<NUL>¹<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FB 00 B9 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ß<NUL>ý<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | DF 00 FD 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | »<NUL><NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | BB 00 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | <NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL>ÿ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 FF 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | <NUL>þ<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 00 FE 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL>ù<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 F9 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | y<NUL>ý<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 79 00 FD 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ÿ<NUL>»<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FF 00 BB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | <DEL><NUL>û<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | 7F 00 FB 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ý<NUL>ý<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FD 00 FD 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | ý<NUL>ý<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FD 00 FD 00 
TXT: 28.12.2015 20:02:24.00 |             RECEIVED | þ<NUL>û<NUL>
HEX: 28.12.2015 20:02:24.00 |             RECEIVED | FE 00 FB 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | {<NUL>ý<NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 7B 00 FD 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL><NUL>ü
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 00 FC 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | ÿ<NUL>Ï
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | FF 00 CF 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | ÿ<NUL>ÿ
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | FF 00 FF 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | ÿ<NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | FF 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | ý<NUL>ÿ
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | FD 00 FF 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>û
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 FB 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | <NUL>
HEX: 28.12.2015 20:02:25.00 |             RECEIVED | 00 
TXT: 28.12.2015 20:02:25.00 |             RECEIVED | ý<NUL>ÿ

Würde mir helfen, wenn ich für den Anfang eine kurze Schritthilfe bekommen könnte, was ich, bzw welche Elemente ich anlegen muss und wie die anzuordnen sind.

Mfg
Tobias

Guten Abend zusammen.

Ich bin absoluter IPS Anfänger und habe ein geplantes Vorhaben und in diesem inbegriffen waren/sind den SDM630 auszulesen, da er hier im Forum (M.m.n. berechtigt, als Preis/Leistungs Künstler angepriesen wird).

Auf dieses Gerät bin ich gestossen, weil mein erster Weg war, den vorhandenen S0 Bus meinen Stromzählers auszulesen. Jedoch verplompt. Also habe ich beim Netznetreiber eine Anfrage gestellt, diesen freizulegen.
Nach einigen Tagen kam auch promt die Antwort, dass dieses ca. 185€ kostet. Die Nachfrage, ob bei einem Zählerwechsel, der alle paar Jahr stattfindet, die Gebühren wieder fällig werden, verkniff ich mir mit einer weiteren eMail und suchte mir andere Wege.

Der zuerst angestrebe war, einen Koppler auf den Zähler zu setzten, der die IR Impulse empfangen kann. Aber auch damit ist man ratz fatz einige Euros los und hat dann „nur“ die KWh Impulse.

Daher erschien mit die Lösung für keine 100e einen SDM630 Modbus zu installieren als außerordentlich fair!

Also, den SDM630 bestellt plus einen 484 -> Lan Wandler. Da ein Forumsmitglied en CSE-H55M als funktioniernd erwähnte, bestellte ich auch diesen.

Da es mein erstes Erlebnis mit IPS war, wusste ich beim einrichten nicht, ob es an meinem Wissen, oder an der Hardware haperte, als ich keine Daten ins IPS zustade bekam.

Daher habe ich mich an den Premium Support gewendet. Dieser ging mit mir grob die selben Schritte durch, wie ich zuvor aus den Anleitungen dieses Thread schon selbst mehrfach probiert hatte.

Ich war sehr erfreut, dass nach der Einrichtung, auch Daten einprasselten im Debug Fenster. Aber das war nicht hilfreich. Dem Support kam das „nicht richtig“ vor, da Modbus Anfragen gepollt werden sollten und nicht ohne Anfrage reinprasseln. Siehe meinen Post hier drüber.

Und wie gesagt, das es meine ersten Gehversuche waren, wusste ich nicht, ob die Hardware zickte, oder es an meiner Config lag.

Also habe ich das Forenmember kontaktiert, was mit auch promt Antowrten lieferte, bei dem der CSN55 erfolgreich in Betrieb war. Aber auf dem Foto, welches er mir sendete, konnte ich sehen, dass es sich im eine frühere Version handelte.

Und in den FAQ des Herstellers, wird mein Problem auch aufgeführt, nämlich das „Datenmüll“ auf der Schnittstelle aufläuft, sobald Symcon die Ethernet Verbindung zum Wandler hergestellt hat.
Wen es interessiert: Support / FAQ

Ich bin kein Eletroniker und kann kaum ein Schaltplan lesen…

Also habe ich mir aus Frust zwei vergleichebare Produkte bestellt.

Der erste ist aus dem Hause „SaintSmart“. Er kam als erstes an…IP zog er per DHCP, konfiguert werden musste nichts und er schob direkt die Daten aus dem SDM630 ins Symcon.

Heute kam dann der zweite, bzw dritte, Wandler an con ATC Tech und auch dieser kachte genau das, was er sollte, nachdem die IP im Symcon als Gateway konfiguriert wurde. Hier musste ich faiererweise angemerkt, noch von RS232 auf 484 im Config umstellen, welches im Browser via der IP sehr einfach klappte.

Ich möchte also den CSE55N nicht schlecht reden, aber ich habe mit den anderen beiden Produkten direkt das Zeil erreicht, welches ich wollte.

Das möchte ich den Nachlesenden hier mit auf den Weg geben, dass dieses Setup „für Dummies“ problemlos sofort funktioniert, wer den Wunsch hat, einen SDM630 einzubinden.

Habe jeweils ein Foto von den Wandlern angehangen.

Gruß

Hi,

das ist gut zu wissen, dass es da jetzt mehr Produkte gibt mit denen man zum Ziel kommt. Als ich auf der Suche war gab es als bezahlbare Lösung nur den CSE55N.

Hast Du auch Preise zu den von Dir angesprochenen Geräten?
Und hast Du schon mal probiert ob man damit auch 2 oder mehr Zähler auslesen kann?

Einen zweiten Zählen kann ich leider (noch) nicht testen, da ich nur einen habe.

Auf dem Foto, welches du mir geschickt hast, kann ich erahnen, dass Du eine ältere Version des CSE-H55N verbaut hast. Vielleicht war was im Upgrade, was die Einbindung erschwert, oder ich habe einfach Pech gehabt.

Preise:

Den
TCP/IP Ethernet to Serial RS232 RS485 RS422 Intelligent Communication
von SaintSmart" kam für 54€ Brutto ins Haus - jedoch ohne Netzteil. Hier werden 9-24V vorgegeben, 12V empfohlen.

Der
TCP/IP Converter Konverter Adapter Ethernet auf seriell RS232 RS485 RS422
kommt für keine 63€ Brutto an, dafür mit Netzteil (9Volt).

Wie dem Namen entnommen werden kann, unterstützen diese Geräte auch RS-232 auf Ethernet und haben dafür einen COM-Port verbaut.

Der
RS422/485 Ethernet Converter CSE-H55N
hingegen stand für 59,50€ Netto im Warenkorb, plus 9,95€ für das Netzteil und plus 4,95€ Versand und 21% Mwst (15,60€) aus Holland. Waren dann 90€ bis es im Haus war.

Das waren die günstigsten Geräte, die keine 3-6 Wochen Lieferzeit aus Fernost haben, die ich fand.

Ab guten 100€ bekommt man das ganze Spiel als W-LAN Version, für Gegebenheiten, wo Kabel ziehen schwierig wird.

Ich hänge noch die Adressen des SDM630 hier dran.

Gruß

SDM630Modbus.pdf (128 KB)

Das ist noch immer ein IPS-Problem; unabhängig davon ob der RS485 Konverter es kann.
Außer du hast einen echten ModBus to LAN-Konverter, welcher von ModBus RTU auf ModBus TCP umsetzt. Dann könntes es funktionieren, da diese Geräte den Bus eigenständig managen.

Aber wenn ich das richtig verstanden haben, sind alle hier vorgestellten Geräte ‚reine‘ Seriell to LAN Konverter.
Und dann kracht es aktuell noch in IPS, weil beide ModBus RTU-Splitter ungesynct versuchen Daten auf den Bus zu schreiben. Und dann teilweise die Anwort vom falschen Gerät als Fehler werfen.

Gab dazu auch schon min. 3 Themen hier im Forum und einen Funktionswunsch gibt es glaube ich auch :smiley:

Michael
PS: Ich habe für meinen RS485 to LAN ~7 Tage Lieferzeit gehabt, von den freundlichen China-Man für 25 Teuron :smiley:

EDIT: Mhhh… wohl doch keinen Funktionswunsch.
Aber hier mal zum nachlesen:

Also wird sich da vielleicht mal zur 4.1 was ändern :wink:

Außer du hast einen echten ModBus to LAN-Konverter, welcher von ModBus RTU auf ModBus TCP umsetzt. Dann könntes es funktionieren, da diese Geräte den Bus eigenständig managen.

Das wären dann sicherlich die Geräte, die ab 300€ bis 1500€ kosten.

Da sind die 25€ vom Chinaman doch gut angeleget, wenn man für jedes Modbus Gerät einen Wandler haben muss.
Wie bereits beschrieben, der erste Versuch wa den S0 vom Zähler des Versorgers freilegen zu lassen, was aber schlappe 180€ kosten soll. Und dann müsste man immer noch einen S0 Counter oder PoKeys dazu haben um es auszuwerten.
Da ist der SDM630 + Wandler günstiger und man hat einfach alle Werte…

auch von mir herzlichen Dank!
Hat auf Anhieb geklappt.
Grüße Walter

Übrigens läuft bei mir als Konverter ein
usb-485 USB zu RS485 Konverter-Adapter Unterstützung win7 xp linux Vista S89A
bei ebay von iamsn2008 um € 2,42 ( ich habe mich nicht verschrieben) :slight_smile: ohne Porto direkt aus Singapur.
Nachteil: Bestellt 22.12.2015, angekommen heute. Er sagt es können manchmal auch 6 Wochen sein.
hab gleich 2 bestellt, vielleicht krieg ich damit meine Drexel und Weiss KWL und WP auch noch drauf.
Grüße Walter

Übrgends noch zu Terminierung und Verkabelung.
Bei mir gehts am besten ganz ohne Terminierung. ca 8m vom Zähler zum Usb- Stick der an der ZBox direkt hängt.
Verwendet habe ich das grüne KNX Buskabel. Da fühle ich mich im Schaltschrank und im Technikschacht am wohlsten. Es liegt immerhin „nackt“ zwischen den Starkstromkabeln.
Walter

hab zeitweise die Fehlermeldung „Timer #68 existiert nicht“
Weiß wer wo ich den finde :slight_smile:
Danke Walter

Hallo Inspra,

vielen herzlichen Dank für das Anlege-Script. Bei IPS 4.1 hatte ich nur ein kleines Problem mit Fehlermeldungen, da sich die Konfiguration der ModBus-Device geändert hat.

Damit die Devices korrekt angelegt werden, müssen folgende Zeilen ergänzend in das Script ab etwa Zeile 413 eingepflegt werden:


IPS_SetProperty ($InstanzId , "ReadFunctionCode" , 4);
IPS_SetProperty ($InstanzId , "WriteFunctionCode" , 16);

Anbei das komplette Script mit den Egänzungen:


<? 

/* Anlegen Setzen auf    0  Um die entsprechende Instanz nicht anzulegen oder zu löschen. 
                                1    Um die entsprechende Instanz anzulegen bzw. nicht zu löschen. 
                                2    Wie 1, es wird zusätzlich die Variable unter der Instanz benannt 
                                    mit $Bezeichnung 
                                    oder, wenn $VarName existiert, mit $VarName Siehe Beispiel unter Spannung L1 
                                     
                                3  wie 1 zusätzlich werden WFE Links erstellt. 
                                4    wie 2 zusätzlich werden WFE Links erstellt. */ 
                                     
/* Auskommentieren des Profils bewirkt, das der Variable kein Variablenprofil zugewiesen wird. 
    Profile ohne "Tilde" müssen, wenn gewünscht, vorher selbst angelegt werden. 
   Die Jeweils erste Kommentarzeile ist die Beschreibung aus dem Handbuch, 
    die Bezeichnung ist von mir teilweise übersetzt und kann natürlich frei gewählt werden */ 
     
/*    TextVor -Nach Kann Frei gelassen werden. */ 

/*--------------------------------Config-------------------------------------*/ 
$ParentId = 59883 /*[Hauptzähler]*/; //Dort werden die Instanzen angelegt. 
$SplitterId = 28865 /*[ModBus Gateway]*/;  //Id des Modbus RTU Spliters 
$WFEId = 17908 /*[HomeMatic Configurator]*/; // Nur relevant bei $Anlegen > 2 
$TextVor = "";    // z.B. $TextVor = "UV_EG"; 
$TextNach = ""; 

/*----------------------------Ausleseadressen--------------------------------*/ 

//Phase 1 line to neutral volts 
$Anlegen[1] = 0; 
$Bezeichnung[1] = "Spannung L1"; 
$VarName[1] = "Variablen Name"; 
$Profil[1] = "~Volt"; 

//Phase 2 line to neutral volts 
$Anlegen[2] = 0; 
$Bezeichnung[2] = "Spannung L2"; 
$Profil[2] = "~Volt"; 

//Phase 3 line to neutral volts 
$Anlegen[3] = 0; 
$Bezeichnung[3] = "Spannung L3"; 
$Profil[3] = "~Volt"; 

//Phase 1 current 
$Anlegen[4] = 0; 
$Bezeichnung[4] = "Strom L1"; 
$Profil[4] = "~Ampere"; 

//Phase 2 current 
$Anlegen[5] = 0; 
$Bezeichnung[5] = "Strom L2"; 
$Profil[5] = "~Ampere"; 

//Phase 3 current 
$Anlegen[6] = 0; 
$Bezeichnung[6] = "Strom L3"; 
$Profil[6] = "~Ampere"; 

//Phase 1 Power 
$Anlegen[7] = 3; 
$Bezeichnung[7] = "Leistung L1"; 
$Profil[7] = "~Watt.3680"; 

//Phase 2 Power 
$Anlegen[8] = 3; 
$Bezeichnung[8] = "Leistung L2"; 
$Profil[8] = "~Watt.3680"; 

//Phase 3 Power 
$Anlegen[9] = 3; 
$Bezeichnung[9] = "Leistung L3"; 
$Profil[9] = "~Watt.3680"; 

//Phase 1 volt amps 
$Anlegen[10] = 0; 
$Bezeichnung[10] = "Scheinleistung L1"; 
//$Profil[10] = "VoltAmpere"; 

//Phase 2 volt amps 
$Anlegen[11] = 0; 
$Bezeichnung[11] = "Scheinleistung L2"; 
//$Profil[11] = "VoltAmpere"; 

//Phase 3 volt amps 
$Anlegen[12] = 0; 
$Bezeichnung[12] = "Scheinleistung L3"; 
//$Profil[12] = "VoltAmpere"; 

//Phase 1 volt amps reactive 
$Anlegen[13] = 0; 
$Bezeichnung[13] = "Blindleistung L1"; 
//$Profil[13] = "VAr"; 

//Phase 2 volt amps reactive 
$Anlegen[14] = 0; 
$Bezeichnung[14] = "Blindleistung L2"; 
//$Profil[14] = "VAr"; 

//Phase 3 volt amps reactive 
$Anlegen[15] = 0; 
$Bezeichnung[15] = "Blindleistung L3"; 
//$Profil[15] = "VAr"; 

//Phase 1 power factor (1) 
$Anlegen[16] = 0; 
$Bezeichnung[16] = "Power Faktor L1"; 
//$Profil[16] = "None"; 

//Phase 2 power factor (1) 
$Anlegen[17] = 0; 
$Bezeichnung[17] = "Power Faktor L2"; 
//$Profil[17] = "None"; 

//Phase 3 power factor (1) 
$Anlegen[18] = 0; 
$Bezeichnung[18] = "Power Faktor L3"; 
//$Profil[18] = "None"; 

//Phase 1 phase angle 
$Anlegen[19] = 0; 
$Bezeichnung[19] = "Phasenwinkel L1"; 
//$Profil[19] = "Degrees"; 

//Phase 2 phase angle 
$Anlegen[20] = 0; 
$Bezeichnung[20] = "Phasenwinkel L2"; 
//$Profil[20] = "Degrees"; 

//Phase 3 phase angle 
$Anlegen[21] = 0; 
$Bezeichnung[21] = "Phasenwinkel L3"; 
//$Profil[21] = "Degrees"; 

//Average line to neutral Volts 
$Anlegen[22] = 0; 
$Bezeichnung[22] = "Spannung Durchschnitt"; 
$Profil[22] = "~Volt"; 

//Average line current 
$Anlegen[24] = 0; 
$Bezeichnung[24] = "Strom Durchschnitt"; 
$Profil[24] = "~Ampere"; 

//Sum of line Currents 
$Anlegen[25] = 0; 
$Bezeichnung[25] = "Strom Insgesamt"; 
$Profil[25] = "~Ampere"; 

//Total system power 
$Anlegen[27] = 3; 
$Bezeichnung[27] = "Leistung Insgesamt"; 
$Profil[27] = "~Watt.14490"; 

//Total system volts amps 
$Anlegen[29] = 0; 
$Bezeichnung[29] = "Scheinleistung Insgesamt"; 
//$Profil[29] = "VA"; 

//Total system VAr 
$Anlegen[31] = 0; 
$Bezeichnung[31] = "Blindleistung Insgesamt"; 
//$Profil[31] = "VAr"; 

//Total system power factor 
$Anlegen[32] = 0; 
$Bezeichnung[32] = "Power Faktor Insgesamt"; 
//$Profil[32] = "None"; 

//Total system phase angle 
$Anlegen[34] = 0; 
$Bezeichnung[34] = "Phasenwinkel Insgesamt"; 
//$Profil[34] = "Degrees"; 

//Frequency of supply voltages 
$Anlegen[36] = 0; 
$Bezeichnung[36] = "Frequency of supply voltages"; 
//$Profil[36] = "Hz"; 

//Import Wh since last reset(2) 
$Anlegen[37] = 3; 
$Bezeichnung[37] = "Zählerstand Gesamt"; 
$Profil[37] = "~Electricity"; 

//Export Wh since last reset(2) 
$Anlegen[38] = 0; 
$Bezeichnung[38] = "Export Wh since last reset(2)"; 
//$Profil[38] = "kWh/MWh"; 

//Import VArh since last reset(2) 
$Anlegen[39] = 0; 
$Bezeichnung[39] = "Import VArh since last reset(2)"; 
//$Profil[39] = "kVArh/MVArh"; 

//Export VArh since last reset(2) 
$Anlegen[40] = 0; 
$Bezeichnung[40] = "Export VArh since last reset(2)"; 
//$Profil[40] = "kVArh/MVArh"; 

//VAh since last reset(2) 
$Anlegen[41] = 0; 
$Bezeichnung[41] = "VAh since last reset(2)"; 
//$Profil[41] = "kVAh/MVAh"; 

//Ah since last reset(3) 
$Anlegen[42] = 0; 
$Bezeichnung[42] = "Ah since last reset(3)"; 
//$Profil[42] = "Ah/kAh"; 

//Ah since last reset(3) 
$Anlegen[42] = 0; 
$Bezeichnung[42] = "Ah since last reset(3)"; 
//$Profil[42] = "Ah/kAh"; 

//Total system power demand (4) 
$Anlegen[43] = 0; 
$Bezeichnung[43] = "Total system power demand (4)"; 
$Profil[43] = "~Watt.14490"; 

//Maximum total system power 
$Anlegen[44] = 0; 
$Bezeichnung[44] = "Maximum total system power"; 
$Profil[44] = "~Watt.14490"; 

//Total system VA demand 
$Anlegen[51] = 0; 
$Bezeichnung[51] = "Total system VA demand"; 
//$Profil[51] = "VA"; 

//Maximum total system VA demand 
$Anlegen[52] = 0; 
$Bezeichnung[52] = "Maximum total system VA demand"; 
//$Profil[52] = "VA"; 

//Neutral current demand 
$Anlegen[53] = 0; 
$Bezeichnung[53] = "Neutral current demand"; 
$Profil[53] = "~Ampere"; 

//Maximum neutral current demand 
$Anlegen[54] = 0; 
$Bezeichnung[54] = "Maximum neutral current demand"; 
$Profil[54] = "~Ampere"; 

//Line 1 to Line 2 volts 
$Anlegen[101] = 0; 
$Bezeichnung[101] = "Spannung zwischen L1 und L2"; 
$Profil[101] = "~Volt"; 

//Line 2 to Line 3 volts 
$Anlegen[102] = 0; 
$Bezeichnung[102] = "Spannung zwischen L2 und L3"; 
$Profil[102] = "~Volt"; 

//Line 3 to Line 1 volts 
$Anlegen[103] = 0; 
$Bezeichnung[103] = "Spannung zwischen L1 und L3"; 
$Profil[103] = "~Volt"; 

//Average line to line volts 
$Anlegen[104] = 0; 
$Bezeichnung[104] = "Spannung zwischen den Phasen durchschnittlich"; 
$Profil[104] = "~Volt"; 

//Neutral current 
$Anlegen[113] = 0; 
$Bezeichnung[113] = "Strom auf dem Neutralleiter"; 
$Profil[113] = "~Ampere"; 

//Phase 1 L/N volts THD 
$Anlegen[118] = 0; 
$Bezeichnung[118] = "Phase 1 L/N volts THD"; 
//$Profil[118] = "%"; 

//Phase 2 L/N volts THD 
$Anlegen[119] = 0; 
$Bezeichnung[119] = "Phase 2 L/N volts THD"; 
//$Profil[119] = "%"; 

//Phase 3 L/N volts THD 
$Anlegen[120] = 0; 
$Bezeichnung[120] = "Phase 3 L/N volts THD"; 
//$Profil[120] = "%"; 

//Phase 1 Current THD 
$Anlegen[121] = 0; 
$Bezeichnung[121] = "Phase 1 Current THD"; 
//$Profil[121] = "%"; 

//Phase 2 Current THD 
$Anlegen[122] = 0; 
$Bezeichnung[122] = "Phase 2 Current THD"; 
//$Profil[122] = "%"; 

//Phase 3 Current THD 
$Anlegen[123] = 0; 
$Bezeichnung[123] = "Phase 3 Current THD"; 
//$Profil[123] = "%"; 

//Average line to neutral volts THD 
$Anlegen[125] = 0; 
$Bezeichnung[125] = "Average line to neutral volts THD"; 
//$Profil[125] = "%"; 

//Average line current THD 
$Anlegen[126] = 0; 
$Bezeichnung[126] = "Average line current THD"; 
//$Profil[126] = "%"; 

//Total system power factor (5) 
$Anlegen[128] = 0; 
$Bezeichnung[128] = "Total system power factor (5)"; 
//$Profil[128] = "Degrees"; 

//Phase 1 current demand 
$Anlegen[130] = 0; 
$Bezeichnung[130] = "Phase 1 current demand"; 
$Profil[130] = "~Ampere"; 

//Phase 2 current demand 
$Anlegen[131] = 0; 
$Bezeichnung[131] = "Phase 2 current demand"; 
$Profil[131] = "~Ampere"; 

//Phase 3 current demand 
$Anlegen[132] = 0; 
$Bezeichnung[132] = "Phase 3 current demand"; 
$Profil[132] = "~Ampere"; 

//Maximum phase 1 current demand 
$Anlegen[133] = 0; 
$Bezeichnung[133] = "Maximum phase 1 current demand"; 
$Profil[133] = "~Ampere"; 

//Maximum phase 2 current demand 
$Anlegen[134] = 0; 
$Bezeichnung[134] = "Maximum phase 2 current demand"; 
$Profil[134] = "~Ampere"; 

//Maximum phase 3 current demand 
$Anlegen[135] = 0; 
$Bezeichnung[135] = "Maximum phase 3 current demand"; 
$Profil[135] = "~Ampere"; 

//Line 1 to line 2 volts THD 
$Anlegen[168] = 0; 
$Bezeichnung[168] = "Line 1 to line 2 volts THD"; 
//$Profil[168] = "%"; 

//Line 2 to line 3 volts THD 
$Anlegen[169] = 0; 
$Bezeichnung[169] = "Line 2 to line 3 volts THD"; 
//$Profil[169] = "%"; 

//Line 3 to line 1 volts THD 
$Anlegen[170] = 0; 
$Bezeichnung[170] = "Line 3 to line 1 volts THD"; 
//$Profil[170] = "%"; 

//Average line to line volts THD 
$Anlegen[171] = 0; 
$Bezeichnung[171] = "Average line to line volts THD"; 
//$Profil[171] = "%"; 

//Total active energy 
$Anlegen[172] = 0; 
$Bezeichnung[172] = "Total active energy"; 
$Profil[172] = "~Electricity"; 

//Total reactive energy 
$Anlegen[173] = 0; 
$Bezeichnung[173] = "Total reactive energy"; 
//$Profil[173] = "kVarh"; 
/*---------------------------------------------------------------------------*/  

for ($i = 1; $i <=173; $i++) 
            { 
            $InstanzId = @IPS_GetObjectIDByIdent ($i , $ParentId); 
            if($InstanzId != false) 
                  { 
                  $ChildIds = IPS_GetChildrenIDs($InstanzId); 
                  IPS_SetName($InstanzId, "$TextVor $Bezeichnung[$i] $TextNach"); 
                  if(isset($Profil[$i])) 
                                    IPS_SetVariableCustomProfile($ChildIds[0], $Profil[$i]); 
                                     
                  if(isset($VarName[$i]) && ($Anlegen[$i] === 2 || $Anlegen[$i] === 4)) 
                                    { 
                                     IPS_SetName ($ChildIds[0], $VarName[$i]); 
                            echo ("$Bezeichnung[$i]: Bezeichnungen aktualisiert 
"); 
                                    }elseif (isset($Anlegen[$i]) && ($Anlegen[$i] === 2 || $Anlegen[$i] === 4)) 
                                          { 
                                          IPS_SetName ($ChildIds[0], "$TextVor $Bezeichnung[$i] $TextNach"); 
                                          echo ("$Bezeichnung[$i]: Bezeichnungen aktualisiert 
"); 
                                          } 
                                           
               if(isset($VarName[$i]) && $Anlegen[$i] >=3) 
                                    SetLinkByName($WFEId, $VarName[$i], $ChildIds[0], "BGETechInstall$i"); 
                            elseif (isset ($Anlegen[$i]) && $Anlegen[$i] >=3) 
                                  SetLinkByName($WFEId, $Bezeichnung[$i], $ChildIds[0], "BGETechInstall$i"); 
                  } 
            if(isset($Anlegen[$i]) && $Anlegen[$i] >= 1) 
                    { 
                    if ($InstanzId === false) 
                            { 
                            $InstanzId = IPS_CreateInstance("{CB197E50-273D-4535-8C91-BB35273E3CA5}"); 
                            IPS_SetParent ($InstanzId, $ParentId); 
                            IPS_SetName($InstanzId, "$TextVor $Bezeichnung[$i] $TextNach"); 
                            IPS_SetIdent ($InstanzId, $i); 
                            IPS_SetProperty ($InstanzId , "WriteAddress", 0); 
                            IPS_SetProperty ($InstanzId , "EmulateStatus", false); 
                            IPS_SetProperty ($InstanzId , "ReadAddress", ($i-1)*2); 
                            IPS_SetProperty ($InstanzId , "DataType", 7); 
                            IPS_SetProperty ($InstanzId , "ReadFunctionCode" , 4);
							IPS_SetProperty ($InstanzId , "WriteFunctionCode" , 16);
							IPS_SetProperty ($InstanzId , "Poller", 5000);
							IPS_DisconnectInstance($InstanzId); 
                            IPS_ConnectInstance ($InstanzId, $SplitterId); 
                            IPS_ApplyChanges($InstanzId); 
                            $ChildIds = IPS_GetChildrenIDs($InstanzId); 
                             
                            if(isset($Profil[$i])) 
                                    IPS_SetVariableCustomProfile($ChildIds[0], $Profil[$i]); 
                                     
                     if(isset($VarName[$i]) && ($Anlegen[$i] === 2 || $Anlegen[$i] === 4)) 
                                    { 
                                     IPS_SetName ($ChildIds[0], $VarName[$i]); 
                                    }elseif (isset($Anlegen[$i]) && ($Anlegen[$i] === 2 || $Anlegen[$i] === 4)) 
                                          IPS_SetName ($ChildIds[0], "$TextVor $Bezeichnung[$i] $TextNach"); 
                                           
                     if(isset($VarName[$i]) && $Anlegen[$i] >=3) 
                                    SetLinkByName($WFEId, $VarName[$i], $ChildIds[0], "BGETechInstall$i"); 
                            elseif ($Anlegen[$i] >=3) 
                                  SetLinkByName($WFEId, $Bezeichnung[$i], $ChildIds[0], "BGETechInstall$i"); 
                                   
                            echo ("$Bezeichnung[$i]: Instanz erfolgreich angelegt 
"); 
                            }elseif($Anlegen[$i] >= 1) 
                                    echo ("$Bezeichnung[$i]: Instanz schon vorhanden 
"); 
                    }elseif (isset($Anlegen[$i]) && !$InstanzId === false && $Anlegen[$i] === 0) 
                    { 
                          IPS_DeleteLink (IPS_GetObjectIDByIdent ("BGETechInstall$i", $WFEId )); 
                          foreach ($ChildIds as $ChildId) 
                                    IPS_DeleteVariable($ChildId); 
                            if (IPS_DeleteInstance ($InstanzId)); 
                                    echo ("$Bezeichnung[$i]: Instanz gelöscht 
"); 
                    } 
            } 
function SetLinkByName($parentID, $name, $targetID, $Ident) 
        { 
         $LinkId = @IPS_GetObjectIDByIdent ($Ident, $parentID ); 
         if($LinkId === false) 
             { 
                $LinkId = IPS_CreateLink();       //Link anlegen 
                IPS_SetLinkTargetID($LinkId, $targetID); 
              IPS_SetParent($LinkId, $parentID); 
              IPS_SetIdent ($LinkId, $Ident); 
                } 
        IPS_SetName($LinkId, $name);         //Link benennen 
        return $LinkId; 
         } 
?>

Viele Grüße und nochmals vielen Dank,

Burkhard

Guten Abend.

Kurz vor dem Fest habe ich jetzt auch noch eine Frage zu dem Thema. Ich versuche jetzt auch den Umstieg von einem USB-232 Adapter auf einen 232-LAN Konverter. Bestellt habe ich beim freundlichen Chinamann den USR-TCP232-304.
Das Ganze 2x - für meine Lüftungsanlage (Auslesen funktioniert einwandfrei) und für den SDM630.

Ich bekomme laufend Fehlermeldungen wie:

  • (UpdateTimer): Zeitüberschreitung beim Warten auf Antwort
  • Kann Daten nicht zur Instanz #53794 weiterleiten: Waiting for buffer usage timed out
  • Zählerstand (UpdateTimer): Unknown ModBus Schreibfehler

Die Werte der Variablen werden allerdings korrekt aktualisiert!! Nur die Meldungsflut im Meldungsfenster lässt mich eben aufhorchen.

Konfiguriert ist der Adapter als TCP Server und IPSymcon als Client Socket. Das Modbus Gateway als Modbus RTU over TCP ohne die Checkbox Swap LSW/MSW.

Hat jemand eine Idee woran das liegen könnte? Vielen Herzlichen Dank so kurz vor dem Fest…

IPSymcon läuft auf Windows10 in der neuesten Testing Version…

Hallo und ein gesundes Neues an die Bastelfraktion :wink:

Ich habe mittlerweile 4x SDM630M in Betrieb und muss sagen es funktioniert alles sehr gut und anhand der geloggten Werte, findet man die Stromfresser und Sünder recht schnell auf dem Grundstück :wink:

Ich habe mir 5x USB->RS485 Adapter in der Bucht bestellt, kosten 6,69€ inkl. Versand (Ja alle zusammen) :smiley:
Nachdem einer Installiert wurde (Treiber, aber ich glaube das war nicht mal nötig) steckt man die anderen nur noch nach und schaut welchen COM-Port diese bekommen haben, der Rest ist dann nur abarbeiten der Scripte (Danke nochmal dafür)

Damit bin ich auch schon bei meinem Problem, eigentlich wollte ich Ordnung in die COM-Ports bringen, also in diesem Fall bei COM10 für den Hauptzähler beginnen und dann fortlaufend…
Im Windows einstellen ist kein Problem aber im Symcon kann ich bei der SerialPort Instanz nur bis max COM7 Auswählen, ist das normal?
Das wäre natürlich schade, weil ich mit der USB-Variante einfach sehr zufrieden bin…

gruß Benny