Ich arbeite gerade daran, meine Dimplex-Wohnraumlüftung in mein Smart Home zu integrieren. Diese Lüftungssteuerung bietet von Werk aus eine Modbus-Ansteuerung, allerdings mit einem Twist: Seitens der Steuerplatine sind zwar alle Ausgänge und die Software-Optionen vorhanden, um allerdings direkt die Modbus-Leitungen A-, B+ und GND verbinden zu können, benötigt es einen eigenen Modbus-Platinenaufsatz, der die Pins des Microcontrollers konvertiert.
Dieser Aufsatz kostet über 100 €, und wenn ich mir die Produktbilder dazu ansehe, merke ich: auf dieser Platine befindet sich genau ein Controller, ein Widerstand und ein Kondensator - das war es. Mir scheint die Platine also massiv überteuert, insbesondere, da ich in einer Mietwohnung wohne.
Hat jemand Tipps, wie ich die Komponenten auf der Platine, insbesondere den Modbus-Controller anhand des Produktfotos (eine bessere Auflösung finde ich leider nicht) identifizieren, oder zumindest abschätzen kann? Oder weiß vl. überhaupt jemand direkt anhand der von mir aus dem Foto getracten Pinbelegung, welcher in Frage kommen könnte?
Was ich bereits sagen kann: der Microcontroller, der die Modbus-Platine ansteuert, ist ein STMicroelectronics STM8S208RBT6. Die einzelnen Pin-Belegungen konnte ich auch bereits tracen (siehe Bild im Anhang). Was mir allerdings fehlt ist der konkrete Typ des Modbus-Controllers. Ich vermute, dass es ein richtiger Controller und nicht nur ein Level Shifter oder so etwas ist, da aus den RX- und TX-Pins des Microcontrollers keine direkten Modbus-Signale lesbar sind. Auf der anderen Seite benötige ich für meinen ESP32 ebenfalls einen Modbus-Adapter, auf dem ein MAX485-Controller für das Modbus-Signal sorgt.
Ganz schlau werd ich aus den Bildchen nicht. Wenn es 2-Draht RS485 ist, dann braucht das Treiber-IC noch eine Richtungsumschaltung.
RST ist irgendwie unangebracht, ein EN aber schon.
Bei den gängigen Halb-Duplex RS485-Treibern ist Pin 2 nRE und Pin 3 DE.
Auf dem Bildern kann man ganz gut erkennen, dass die beiden zusammengeschlossen sind und auf das Via rechts unter dem IC200 geführt sind.
Vermutlich geht diese Verbindung dann auf der Unterseite an den unteren Pin der 3-poligen Stiftleiste, der hier mit GND beschriftet wurde.
Da beide Stiftleisten wohl auf die gleich Platine gesteckt werden, wäre die zweite GND-Verbindung redundant und somit erscheint es mit logisch, dass es DE/nRE sein müsste. Kann man aber nur am realen Objekt überprüfen.
Der 'Controller' wird ein RS485 Treiber sein wie
ST485, SN75176BP SN75LBC176, LTC485, SIT3088E SIT3485 SIT3490 SIT65HVD75, MAX487MAX489E MAX490E, ADM3485
Stand das im Bundesanzeiger, dass man dich vorher gefälligst zu fragen
hat?
Einfache Frage, patzige dämliche Antwort?
Wir verwenden in der Firma Modbus über RS485. Aber nur als 2-Wire.
Die Frage war, wie verbreitet der 4-Wire-Bus heute bei Neuentwicklungen ist.
Auch früher kam mir dessen Verwendung nicht unter.
Wenn, dann war es die Umsetzung von RS232 auf RS422, um die Leitungskiänge zu vergrößern.
Da war aber das Protokoll zweitrangig.
Nenn mir doch bitte einfach mal eine (professionelle) Anwendung in modernen Geräten für diesen Bus!
Datenblätter zu den Bausteinen kenne ich und wie der Bus ausseieht weiß ich auch.
Der Hinweis auf 4-Draht ist entstanden durch:
Die eigentümliche, widersprüchliche Bezeichnung A+ / B- und die 4 Schraubklemmen die weder für 4-Draht (dann müssten es 5 sein) noch 2-Draht (dann müssten es 3 sein) sinnvoll sind. Das war als Hinweis für den TO gedacht, seine Vermutungen nochmal zu überdenken.
Je nach Implementierung hat 4-Draht Vorteile.
Ich hatte mal immer wieder sporadische Probleme bei der Kommunikation mit Streckenstationen (so Kästen an der Autobahn die Verkehrszählungen machen; TLS für das Straßenwesen). Nachdem ich tonnenweise Logdateien bekommen hab und die zerpflückt hab, hab ich rausgefunden, dass der "Gegner" sich nicht an das Timing gehalten hat, sondern irgendwann willkürlich den Bus umgeschaltet hat. Ein und das selbe Telegramm benötigte mehrere Anläufe um anzukommen. Die konnten das Timing nicht einhalten (BS Gegenseite war BusyBox, großer Hersteller). Das lief bei denen so über Jahrzehnte, bis die Telegramme mal größer als "üblich" und "ging immer so" wurden. Nein, meine Telegramme waren richtig. Verifiziert mit LA und Scope.
Nach dem kollegialen Hinweis auf die Ursache haben sie dann ihre Software korrigiert.
Ich hab mir mal ein Handrad für die Fräsmaschine gebaut, das über ModBus 2-Draht angesteuert wurde. LinuxCNC (auf RT-Linux) hat es auch da nicht geschafft, den Bus richtig umzuschalten. Da wurden aus 1 ms schnell 50 ms.
Konsequenz: Selbst wenn sich der Master nicht ans ModBus-Timing hält, bei 4-Draht würde es noch funktionieren. Ist natürlich immer noch Pfusch und an der Definition vorbei!
Der Hinweis auf 4-Draht ist entstanden durch:
Die eigentümliche, widersprüchliche Bezeichnung A+ / B- und die 4
Schraubklemmen die weder für 4-Draht (dann müssten es 5 sein) noch
2-Draht (dann müssten es 3 sein) sinnvoll sind. Das war als Hinweis für
den TO gedacht, seine Vermutungen nochmal zu überdenken.
Ich würde eher einen miesen Platinenaufruck vermuten, der dazu führte, dass der senkrechte Teil des B+ verloren gegangen ist.
Vier Schraubklemmen findet man auch bei RS485-Adaptern, die das Board noch versorgen.
Die sind dann häufig auch vom Rest der Schaltung isoliert.
Die eigentümliche, widersprüchliche Bezeichnung A+ / B- und die 4
Schraubklemmen die weder für 4-Draht (dann müssten es 5 sein) noch
2-Draht (dann müssten es 3 sein) sinnvoll sind.
Das eine der vier Schraubklemmen Gnd ist, wurde bereits oben geschrieben. Dann hast Du das Aderpaar A-/B+ (A ist der invertierte, nicht wie oben geschrieben B) und eine Klemme für die Versorgungsspannung des isolierten Treibers. Die wird hier nicht verwendet, da die Bauteile für die galvanische Trennung nicht bestückt sind. Man hätte eine dreipolige Klemme bestücken können, aber das Gleichteil war wohl billiger.
Vielen Dank für die vielen hilfreichen Antworten. Die Vermutung, dass es sich hier um einen x-beliebigen RS485-Chip handeln dürfte, könnte korrekt sein. Was ich in meiner originalen Frage noch verschwiegen habe, war ein Bild im Handbuch des Geräts, das die Schnittstelle eindeutig mit RS485 bezeichnet. Die Platine wird mit beiden Stiftleisten auf die Hauptplatine gesteckt (siehe zweites Bild). Und ja, eine der vier Klemmen ist B- mit 120 Ohm (der, bei dem man den Widerstand gut erkennt). Die Versorgungsspannung wird somit nicht auf die Klemmleiste herausgeführt, sondern kommt von VDD vom Mikrocontroller.
Ich habe meine Schemazeichnung mal aktualisiert. RX, TX und GND waren schon klar, die Ausgänge habe ich mit den richtigen Pins der Klemmleiste verbunden. Am meisten Sinn ergeben würde es, wenn der SWIM-Pin sowohl mit nRE als auch DE verbunden wäre: Ist SWIM high, werden Daten empfangen, ist SWIM low, werden Daten gesendet. Warum? Die einzige Alternative wäre NRST, und das ist einer der Standardpins des Controllers, der als Reset-Eingang verwendet wird. Unwahrscheinlich also, dass dieser eine Doppelbelegung und steuernde Funktion hätte. Der Kondensator wäre dann vermutlich ein 1,5 µF-Baustein, wenn ich das Layout Example des SN75176 als Beispiel nehme, und verbindet VCC mit GND.
Und ja, eine der vier Klemmen ist B- mit 120 Ohm (der, bei dem man den
Widerstand gut erkennt).
Da kann man einfach durch Auswahl der Schraubklemme die Bus-Terminierung des Moduls "ein- oder ausschalten".
Der Kondensator wäre dann vermutlich ein 1,5 µF-Baustein, wenn ich das
Layout Example des SN75176 als Beispiel nehme, und verbindet VCC mit
GND.
Das ist ein sog. Bunkerkondensator, der bei digitalen Schaltungen an jedem Digitalbaustein Standard und eher 100nF groß ist. (bei SMD-Keramikkondensatoren steht dann 104 für 100nF drauf; 105 wären 1µF).
Ja, das ist ja (nicht ganz zufällig) auch genau das, was Kai F. bereits
vorgestern hier beschrieb:
Das habe ich natürlich gelesen, aber Kai glaubt, dass der GND-Pin des 3-Pin-Headers DE/nRE steuert. Ich habe aber noch einmal verifiziert, dass tatsächlich bei beiden Headern ein Pin GND ist, deswegen auch meine Erklärung, die ich mir bestätigen lassen wollte: Ich glaube, dass SWIM (das auch nur eine mögliche, aber frei definierbare Funktion des STM8S208RBT6 ist) diese beiden Pins des Transceivers steuert, habe aber auch Schaltungen gefunden, in denen TX sie steuert (mit der Logik, solange nicht gesendet wird, kann empfangen werden). Ich werde das aber noch mit einem Logic Analyzer nachkontrollieren.
diese Platine kann mit einem 2ten RS485 Treiber und einen Isolator ala
ADuM1301 / ADuM1411 oder ISO7741 bestückt werden.
100€ ist ein stolzer Preis.
Eindeutig, aber Haustechnik ist mMn insgesamt überteuert, nachdem so eine Wohnraumlüftung im Wesentlichen nur zwei Lüfter mit ein bisschen Sensorik in einer Kiste ist.
Für mich klingt das ein wenig so als hätte Dimplex hier eine Testplatine für die Entwicklung hergenommen, um ein paar Komponenten befreit und anschließend als Steuerungsplatine verkauft?
Danke für die Links. Gerade das Board aus dem zweiten scheint mir der Funktion der Platine sehr nahe zu kommen, weil dort direkt die DI/DE/RE/RO-Pins herausgeführt werden. So eines wie beim ersten habe ich für meinen ESP32 bereits, allerdings ist dort zusätzlich noch ein 74HC04D Hex-Inverter verbaut, bei dem ich mir nicht sicher war, ob er die Funktionalität und Ansteuerung nicht schon wieder verändert im Vergleich zum "nackten" Transceiver.
Ich hatte allerdings nochmal eine andere Idee: Nachdem der Zweck der Übung ist, meine Lüftungssteuerung Smart-Home-fähig zu machen und ich den ESP32 eigentlich sowieso direkt in der Lüftung einbauen möchte, habe ich mich gefragt, ob ich mir nicht die Konvertierung zu RS-485 ganz sparen und die UART-Pins direkt verbinden könnte. Wäre das eurer Meinung nach möglich, oder würde ich dafür einen RS-485-Transceiver dazwischen "emulieren" müssen?
(...) Ich habe aber noch einmal verifiziert,
dass tatsächlich bei beiden Headern ein Pin GND ist,
Das sollte man erwarten. Zumindest wenn das eine professionelle Schaltung ist, die durch eine EMV-Prüfung muss und im Produkt auch ein CE-Zeichen tragen soll.
Ich hatte allerdings nochmal eine andere Idee: Nachdem der Zweck der
Übung ist, meine Lüftungssteuerung Smart-Home-fähig zu machen und ich
den ESP32 eigentlich sowieso direkt in der Lüftung einbauen möchte, habe
ich mich gefragt, ob ich mir nicht die Konvertierung zu RS-485 ganz
sparen und die UART-Pins direkt verbinden könnte.
Wenn Du RS232 oder WLAN brauchst, dann wäre es natürlich überflüssig, eine Wandlung auf RS485 vorzunehmen.
Im ersten Schritt kannst Du auf den dreipoligen Stecker (Gnd, RxD, TxD) ein "FTDI-Kabel" aufstecken und damit nach USB wandeln. Da kann man sich mit TeraTerm anschauen was das Ding sendet und auch mal testweise ein paar Kommandos absetzen. Im nächsten Schritt kannst Du dann den ESP32 anschließen.
Die Sendetaste braucht der Transceiver, da RS-485 bidirektional ist. WLAN und RS-232 brauchen das nicht. Du kannst das Umschaltsignal also ignorieren.