Forum: Analoge Elektronik und Schaltungstechnik M-Bus Master/Slave Interface ohne Spezial-IC


von Olli Z. (z80freak)


Angehängte Dateien:

Lesenswert?

Hallo,

aus einem anderen Projekt heraus habe ich den Bedarf an einem M-Bus 
Interface. Dazu habe ich schon so einiges im Netz gefunden, bin mir aber 
unsicher was man da wirklich nehmen kann.

Der M-Bus an den ich ankoppeln möchte hat die Besonderheit das er im 
nicht mit den sonst üblichen 36V Ruhepegel, sondern 18V arbeitet. Der 
Arbeitspegel (Master) ist dann entsprechend 10V und nicht 24V wie beim 
"Original" M-Bus.
Das Bus-Prinzip beim Slave ist jedoch dasselbe (bezüglich 
Stromaufnahme).

Mein erstes M-Bus Interface (2-draht_to_ttl.png) habe ich mit Hilfe 
dieses Forums gebaut, welches letztlich nur ein Pegelwandler war um von 
18V/10V auf 5V/0V zu kommen um damit dann über einen TTL-USB 
Serial-Adapter im Terminal auf dem PC die Daten eines Master lesen zu 
können. Das hat auch funktioniert, jedoch kann ich damit weder senden 
noch die Slave-Antworten empfangen.

Dann habe ich einen anderen Aufbau aus einem anderen Schaltplan 
getestet, welcher explizit als "M-Bus Master" deklariert war 
(m-bus_pegelwandler.png), dieser bot sogar eine galvanische Trennung. 
Damit konnte ich dann Master spielen und einem Slave sowohl Daten 
senden, als auch seine Antworten empfangen.

Nun suche ich nach einer Schaltung mit der ich als Slave arbeiten und 
Daten vom Master lesen aber auch selbst senden kann. Mir ist klar das 
ich mich immer für die ein oder andere Variante entscheiden muss. Ich 
möchte auch bewusst keinen integrierten Baustein einsetzen wie den 
TSS721A, also mit Standard-Komponenten aufbauen. Eine galvanische 
Trennung mittels Optokoppler erscheint mir sehr sinnvoll und wäre 
gewünscht.

Hat da jemand einen Schaltungsvorschlag für mich? Oder wie ich erkenne 
ob es sich um eine Slave-Schaltung handelt?

von Olli Z. (z80freak)



Lesenswert?

Das sind einige die ich gefunden habe.

von J. S. (jojos)


Lesenswert?

weil du da schon im Thema bist: welche wäre denn für die Vitotronic 200 
KW1?
Soll zwar bald ersetzt werden, aber die Termine von meinem HB sind nicht 
die genauesten...
Wollte das auch schon mit dem Optolink anfangen, aber das ist ja auch 
eine Bastelei.

: Bearbeitet durch User
von Klaus R. (klara)


Angehängte Dateien:

Lesenswert?

Olli Z. schrieb:
> Hat da jemand einen Schaltungsvorschlag für mich?

Ich habe 2006 eine Schaltung entwickelt. Ich steuere bis heute einen 
Vailant Brennwert - Heizkessel. Bei Bedarf kann ich Dir die Eagle 
Dateien schicken.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

Klaus R. schrieb:
> Ich habe 2006 eine Schaltung entwickelt. Ich steuere bis heute einen
Danke fürs teilen!
Ist das ein M-Bus Slave? Oder kann der evtl. sogar beide Modus?
Wozu wird die DTR/CTS Steuerung benötigt? Läuft das nicht auch ohne?
Wie sind die Trimmer einzustellen?

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Olli Z. schrieb:
> Wie sind die Trimmer einzustellen?

So, dass beim Senden die Pegel stimmen und beim Empfang die 
Schaltschwelle ungefähr in der Mitte liegt (max. Störabstand).
Auf der Sendeseite muss erst R1 abgeglichen werden und dann R2, weil 
Änderungen von R1 die Einstellung von R2 beeinflusst.
Oder was meinst du mit deiner Frage.

von DerEinzigeBernd (Gast)


Lesenswert?

Olli Z. schrieb:
> Ist das ein M-Bus Slave?

Ziemlich sicher nicht, der versorgt nämlich nicht den Bus mit Strom.

Das ist mit an Wahrscheinlichkeit grenzender Sicherheit ein Master.

Sieh Dir mal das hier an:

https://piers.rocks/mbus/m-bus/iot/slave/pi/esp8266/2019/01/08/mbus-slave-schematic.html

von Forist (Gast)


Lesenswert?


von DerEinzigeBernd (Gast)


Lesenswert?

Auch das ist ein Master (wie in der URL auch drinsteht).

MBus-Devices werden üblicherweise über den Bus gespeist, oder hat hier 
schon mal wer 'ne Wasseruhr mit zusätzlichem Stromversorgungsanschluss 
gesehen?

von Klaus R. (klara)


Lesenswert?

Olli Z. schrieb:
> Ist das ein M-Bus Slave? Oder kann der evtl. sogar beide Modus?
> Wozu wird die DTR/CTS Steuerung benötigt? Läuft das nicht auch ohne?
> Wie sind die Trimmer einzustellen?

Hallo,
ich war noch mit es anderem beschäftigt, deswegen melde ich mich erst 
jetzt.

Ich habe zwei Wärmemengenzähler im Einsatz, Sontex Supercal 539. Man 
kann diese Zähler auch über den MBus mit Strom versorgen. Das habe ich 
gerne angenommen, denn ich wollte nicht nach 6 Jahren eine Batterie 
tauschen, wenn das überhaupt machbar wäre.

Also der MBus Slave ist der Wärmemengenzähler. Von denen kann es viele 
geben. Der Kern des Slaves ist ein richtiger Microprozessor.

Der MBus Master ist eigentlich nur ein Pegelumsetzer ohne besondere 
Fähigkeiten. Der Master spricht jeden Slave einzeln mit seiner Adresse 
an.

DTR Data Term Ready
Damit wird vom Master den Slave Empfangsbereitschaft signalisiert.
Der MBUS wird bei Ready hochgefahren, bei Not Ready heruntergefahren.
Sollten auf dem MBus mehrere Teilnehmer gleichzeitig sprechen, fährt man 
den Bus kurz herunter und wieder hoch. Die Slave reagieren auf den Pegel 
des MBus.

CTS Clear to Send
Der Master erhält das Signal, der MBus hat Betriebsspannung.

Mit Trimmer R1 und R2 wird der obere und untere Pegel des MBus 
eingestellt. Als Schalter nehme ich hier einen linearen Spannungsregler. 
Er ist für den relativ langsammen MBus schnell genug und die Spannungen 
werden exakt eingehalten.

Die Slave erhalten über die Spannungsimpulse 24V/12V ihre Informationen, 
also spannungsmoduliert.

Der Slave antwortet dem Master über die Modulation seines
Stromverbrauchs zwischen 11 bis 20 mA.

Jeder Slave hat einen Ruhestrom von einigen, wenigen mA. Mit jedem 
weiteren Slave erhöht sich der Ruhestrom des MBus. Und wenn 10 Slave am 
MBus wären, dann hätte man schon ca. 5 mA x 10 = 50 mA Ruhestrom. Jetzt 
meldet sich ein Slave mit 11 bis 20 mA. Die werden dann den 50 mA 
hinzuaddiert. Also muß man mit dem Trimmer R10 schon ziemlich genau die 
Schalthysterese einstellen. Bei 2 Slave ist das einfacher.

Teuere Master können diese Hysterese automatisch einstellen. Das ist 
zwar kein Hexenwerk, war für mich aber nicht notwendig.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

In meiner Heizung ist der Master die Steuerungsplatine (VR18) und der 
Slave das Bedienteil. Mein Plan war das ich die Bedienung über meine 
Hausautomation durchführe und darüber dann auch die internn Sensoren der 
Heizung abfragen kann. Daher ist es für mich von besonderer Bedeutung 
einen Slave-Aufbau zu haben. Die weitere Besonderheit ist auch der 
Spannungspegel von 18V. Das wird sicher Einfluss auf die Dimensionierung 
der Schaltung haben.

von DerEinzigeBernd (Gast)


Lesenswert?

Klaus R. schrieb:
> Der MBus Master ist eigentlich nur ein Pegelumsetzer ohne besondere
> Fähigkeiten. Der Master spricht jeden Slave einzeln mit seiner Adresse
> an.

Der MBus-Master versorgt den Bus mit Strom, und ist deswegen je nach 
Anzahl angeschlossener Geräte unterschiedlich aufgebaut. Wenn das keine 
"besondere Fähigkeit" ist, dann weiß ich auch nicht.

Die üblichen Schaltungen, die man für MBus-Master findet, können sechs 
Geräte mit Strom versorgen; Master für mehr Geräte werden 
schaltungstechnisch deutlich aufwendiger.

Olli Z. schrieb:
> In meiner Heizung ist der Master die Steuerungsplatine (VR18) und der
> Slave das Bedienteil.

Tatsächlich? Das Bedienteil ist also ein MBus-Gerät (mit Adresse) und 
wird von der Steuerungsplatine angesprochen? Das klingt unerwartet.

Und das würde Deinen Plan sehr verkomplizieren, denn ein MBus-Master 
kann nicht mit einem anderen MBus-Master kommunzieren, das aber müsstest 
Du tun, denn Deine Hausautomatisierung ist logischerweise ein Master.

Wahrscheinlicher ist es, daß das Bedienteiil ein MBus-Master ist und die 
Steuerplatine ein Slave; das Bedienteil steuert die Kommunikation, indem 
es bei der Steuerplatine Daten anfordert.

In so einem Fall trennt man das Bedienteil vom Bus und hängt seinen 
eigenen Master an den Bus, der dann wiederum mit der Steuerplatine 
"redet".

Eine kommerzielle PC-Software zum Auslesen von MBus-Geräten (und zum 
Einstellen von Parametern etc.) ist MBSheet von der Firma Relay: 
https://www.relay.de/produkte/software/mbsheet

Diese Software kann bei beliebigen MBus-Geräten Datentelegramme 
anfordern, decodiert sie entsprechend der MBus-Spezifikation und stellt 
die Ergebnisse hübsch aufbereitet dar.

Das Decodieren kann man auch selbst machen, dazu eignet sich libmbus
http://www.rscada.se/libmbus/ (Source auf Github).

von Klaus R. (klara)


Lesenswert?

Klaus R. schrieb:
> Ich habe 2006 eine Schaltung entwickelt. Ich steuere bis heute einen
> Vailant Brennwert - Heizkessel.

Hallo,
hier habe ich mich vertan. Den MBus nutze ich nur für meine 
Wärmemengenzähler.

Der Vailant Brennwert - Heizkessel arbeitet mit einem eBUS. Der Bus ist 
völlig anders als der MBus. Den eBus Koppler wollte ich nicht selber 
basteln, es war auch keine Zeit zu verlieren und habe ihn mir von hier 
besorgt.
https://esera.de/produkte/ebus/
Er lief sofort und ohne Störungen.

Der eBus ist zwar gut dokumentiert und die Befehlssätze auch definiert. 
Nur hat jeder Betreiber auch die Freiheit eigene Befehle hinzuzufügen. 
Und davon hat Vailant reichlich gebrauch gemacht. Somit war das Vailant 
- System weitgehend proprietär. Aber dann tat sich etwas zwischen 2009 
und 2010. Seit dem lese ich den Bus nicht nur, sondern kann auch viele 
Sachen Steuern.

Damals war dieser Thread mein Durchbruch.
https://community.symcon.de/t/vaillant-therme-ueber-ebus-steuern/26181

Terenyi war der User der ein wirklich gutes PHP Programm für einen eBus 
Connector geschrieben hat. In PHP kann man leicht grausamme Scripte 
schreiben. Terenyi war da ganz anders, genial.
https://community.symcon.de/t/ebus-connector/30502

Der heute beste Einstieg ist aber eine neue Vorgehenweise. Sie umfaßt 
auch aktuelle Vailantgeräte.

https://www.verdrahtet.info/2021/05/15/ebus-logger-heizungsdaten-direkt-auslesen/

Der maßgebende Treiber ist John.
https://github.com/john30/ebusd

Das mußte noch einmal wieder raus. Vailant hatte mich mit ihrem 
proprietären Code doch einige Zeit beschäftigt.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

DerEinzigeBernd schrieb:
> Olli Z. schrieb:
>> In meiner Heizung ist der Master die Steuerungsplatine (VR18) und der
>> Slave das Bedienteil.
> Tatsächlich? Das Bedienteil ist also ein MBus-Gerät (mit Adresse) und
> wird von der Steuerungsplatine angesprochen? Das klingt unerwartet.
Ja, natürlich. Die Heizung läuft grundsätzlich auch ohne Bedienteil. 
Zudem gibt es die Möglichkeit das interne Bedienteil auszuhebeln und 
über einen 2-Draht-Bus (M-Bus) woanders hin zu platzieren. Ebenso wie 
eine zusätzliche Bedieneinheit an eben diesen Bus anzuschließen.

Außerdem ist es doch ganz logisch das das Bedienteil ein Slave sein 
muss, da es ja nur Soll- und Ist-Werte ausgibt, selbst aber keine 
Regelaufgaben übernimmt, dafür ist ja die VR18 da.

Also denke ich das meine Idee das Bedienteil zu simulieren, schon 
richtig sein sollte.

Einiges an den Datagrammen konnte ich ja schon entschlüsseln (siehe 
meine anderen Threads hier im Forum) indem ich als M-Bus Master ein 
solches Bedienteil angeschlossen hatte.

Aber welche Rolle spielt nun der unterschiedliche Spannungspegel dabei? 
Der M-Bus in der Viessmann OC arbeitet mit 18V High und 10V Low. Da 
traue ich mich nicht ein reguläres M-Bus Interface mit 36V und 24V 
anzuschließen. Verringere ich die Spannung auf die Hälfte hat das bei 
einfachen Schaltungen mit berechneten Widerständen sicher massive 
Auswirkungen auf die Arbeitspunkte der Transistoren sowie die 
berechneten Stromflüsse?

: Bearbeitet durch User
von Klaus R. (klara)


Lesenswert?

Olli Z. schrieb:
> Verringere ich die Spannung auf die Hälfte hat das bei
> einfachen Schaltungen mit berechneten Widerständen sicher massive
> Auswirkungen auf die Arbeitspunkte der Transistoren sowie die
> berechneten Stromflüsse?

Nicht unbedingt. Zeig mal Deine Schaltung.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

Klaus R. schrieb:
> Olli Z. schrieb:
>> Verringere ich die Spannung auf die Hälfte hat das bei
>> einfachen Schaltungen mit berechneten Widerständen sicher massive
>> Auswirkungen auf die Arbeitspunkte der Transistoren sowie die
>> berechneten Stromflüsse?

> Nicht unbedingt. Zeig mal Deine Schaltung.

Hust, damit habe ich diesen Thread ja begonnen, siehe gaaanz oben rechts 
:-)

von Klaus R. (klara)


Angehängte Dateien:

Lesenswert?

Olli Z. schrieb:
> Hust, damit habe ich diesen Thread ja begonnen, siehe gaaanz oben rechts
> :-)

Hallo,
habe ich mir bald gedacht. Hoffentlich hast Du damit nichts ausser 
Betrieb gesetzt.

Deine Schaltung erzeugt für Low 34 V - 12,73 V = 21,27 V
Für High 34 V - 0,80 V = 33,2 V

>> Der M-Bus in der Viessmann OC arbeitet mit 18V High und 10V Low

Ich habe mal eine Anpassung für Viessmann gemacht.

Versorgungsspannung auf 18 V heruntergesetzt. Durch ändern des 
Spannungsteiler R3 & R4 habe ich die Schulter auf 7,91 V gelegt.

Die Viessmann Schaltung erzeugt für Low 18 V - 7,91 V = 10,09 V
Für High 18 V - 0,80 V = 17,2 V

Wie Du siehst, diese Schaltung schaltet nicht ganz auf 0 V durch.
Der MBUS sollte so auch für Viessmann funktionieren. Auf 1 V kommt es da 
auch nicht an.

In Deiner Schaltung müßte der Slave schon mit 20 mA antworten. Sonst 
schaltet der BC337 nicht durch.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

Klaus R. schrieb:
> Deine Schaltung erzeugt für Low 34 V - 12,73 V = 21,27 V
> Für High 34 V - 0,80 V = 33,2 V

Ne, das ist ein Mißverständnis. Ich habe die rechte Schaltung nachgebaut 
und mit 18V betrieben, nicht mit 36V.

von Klaus R. (klara)


Lesenswert?

Olli Z. schrieb:
> Ne, das ist ein Mißverständnis. Ich habe die rechte Schaltung nachgebaut
> und mit 18V betrieben, nicht mit 36V.

Ja, dann habe ich ja für Dich mit der Schaltung MBus_Viessmann schon die 
Lösung präsentiert. Das Senden ist damit möglich. Die Strommodulation 
der ursprünglichen Schaltung sollte auch funktionieren, wenn R7 richtig 
angepasst wird.

>> Der Slave antwortet dem Master über die Modulation seines
Stromverbrauchs zwischen 11 bis 20 mA.

Kann man ja leicht überprüfen.

11 mA x 39 Ohm = 429 mV
20 mA x 39 Ohm = 780 mV

Mit 780 mV sollte der BC337 durchgeschaltet werden.
mfg Klaus

von Olli Z. (z80freak)


Lesenswert?

Inzwischen habe ich mir diesen M-Bus Master Sketch besorgt um damit das 
externe Bedienteil etwas weiter zu untersuchen
https://download.mikroe.com/documents/add-on-boards/click/m-bus-master-click/m-bus-master-click-schematic-v100.pdf
Leider ist das auf 36V dimensioniert und nicht auf 18V wie der interne 
M-Bus von Viessmann. Dort wird der space durch einen 10V Pegel vom 
Master erzeugt, beim M-Bus hingegen von einem 24V Pegel.
Das müsste man wohl irgendwie umbauen... so ganz verstehe ich die 
Schaltung mit den Z-Dioden da nicht.

Auch die Antworten vom Slave werden damit wohl nicht erkannt. Zwar sind 
diese Stromgesteuert, aber die Messung über die OpaAmps bezieht sich ja 
auch auf eine andere Bauteildimensionierung für 36V. Sprich der 
Spannungsabfall über R9 ist doch entscheidend?

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.