Hallo Forum, im Zuge einer Hausautomatisierung möchte ich mehrere kleine Controller (Z.B. C-Control-Micro) mit einem Master-Controller (C-Control) verbinden. Die "Micro's" befinden sich in Unterputzdosen und sind sternförmig zur Masterunit im Keller mit NYM-3x1.5-Kabeln verdrahtet. Mit jeder "Micro" sollen Taster Eingaben ausgewertet und durch LED-Statusanzeigen signalisiert werden. Nach Aufforderung durch die Masterunit soll das Ergebnis der Tasteneingabe eines angesprochenen Slaves zum Master übertragen und dort verarbeitet werden. Die C-Control (Master) ist bereits vorhanden. Ebenso die einzelnen Softwarebausteine zur Tastenauswertung im Slave und zur Verarbeitung dieser Daten im Master. Was jedoch noch fehlt ist die komplette Bus-Verbindung. Leider stehen incl. Stromversorgung ja leider nur 3 Adern für die Anbindung der Slaves zur Verfügung. Die Programmiersprache ist wegen der vorhandenen Masterunit zwingend "BASIC". Mit anderen Sprachen habe ich außerdem keine Erfahrung. Beide Controller verfügen zwar über RS-232 Schnittstellen, aber das würde ja (genau wie I²C) eine 4-Adrige Verbindung erfordern. (RX TX +5V / GND) Ich dachte daher an einen 1-Wire-Bus der unter Verwendung eines normalen I/O-Pins implementiert werden könnte. Leider habe ich davon aber keine Ahnung. Besonders was das Timing bzw. die Synchronisation der beiden Controller betrifft. Für jede Hilfe schon mal herzlichen Dank im Voraus. Gruß, Peter
Hallo Otto, danke für die superschnelle Antwort, aber so wie ich das sehe brauche ich da auch vier Leitungen, oder habe ich das was falsch gelesen ? Gruß, Peter
Nein - insgesammt sogar nur zwei - der ebus wurde entwickelt, um "alte" Regler gegen neue mit mehr Funktionalität auszutauschen. Otto
Tx über die Versorgungsleitung schicken? In jedem Slave Diode + Kondensator. Vor der Diode kannst Du das Tx-Signal abgreifen, hinter dem Kondensator hast Du Gleichspannung zur Versorgung der Schaltung. Du darfst dann nur nicht ununterbrochen Bytes senden, sondern musst nach jedem eine angemessene Pause lassen, damit sich der Kondensator wieder aufladen kann.
Hallo Gast, ich kann Deinen Ausführungen nicht ganz folgen. Da würde sich doch ein Kurzschluss einstellen sobald sobald TX von High auf Low schaltet. Oder meinst Du das der TX des Masters als Stromversorgung für die Slaves herangezogen werden soll. Also solange TX High ist werden die Kondensatoren der Slaves geladen und speisen diese. In der Low-Phase hält der C die Spannung aufrecht. Eine Rückentladung wird in dieser Zeit durch die Diode(n) geblockt. So wäre es mir verständlich. Allerdings sehe ich ein zeitliches Problem. Die Slaves sollen vom Master der Reihe nach abgefragt werden. Antwortet der Slave mit "Keine Tasteneingabe" wird der nächste abgefragt. Meldet ein Slave eine "Tasteneingabe" wird diese vom Master verarbeitet. Danach soll der Master dem Slave mitteilen das die Tasteneingabe verarbeitet wurde. Der Slave muss nun das Tastenbyte zurücksetzen und gegebenenfalls noch die Status-LED's schalten. Nach Abschluss der Kommunikation mit diesem Slave wird nun der nächste Slave abgefragt, usw. Der Master wird also die meiste Zeit nur die Slaves abfragen und als Antwort "Keine Tasteneingabe" erhalten. Da bleibt vermutlich zu wenig Zeit um die Kondensatoren auf Spannung zu halten, denn jede Anfrage an einen Slave unterbricht ja den Ladevorgang für alle Kondensatoren. Veranschlage ich mal den Strombedarf für jeden Slave und die Status-LED's mit 10mA, so wären das bei 8 Slaves immerhin 80mA. Gruß, Peter
>Also solange TX High ist werden die >Kondensatoren der Slaves geladen und speisen diese. In der Low-Phase >hält der C die Spannung aufrecht. Eine Rückentladung wird in dieser Zeit >durch die Diode(n) geblockt. Ja, genau. Hab Dir mal nen Mini-Schaltplan gekritzelt (Anhang). >Allerdings sehe ich ein zeitliches Problem. Die Slaves sollen vom Master >der Reihe nach abgefragt werden. Tut das not? Ich denke, Du hast eine Sterntopologie, d. h. von jedem Slave führt eine eigene dreiadrige Leitung in den Schaltschrank zum Master. Dort kommen also 3 N Leitungen an, mit N = Anzahl der Slaves. Dann kannst Du doch alle Slaves gleichzeitig abfragen, genügend leistungsstarker Master vorausgesetzt. Oder hast Du eine Bustopologie, d. h. alle Slaves hängen an einer gemeinsamen dreiadrigen Leitung? Dann wärst Du auf Nacheinanderabfragen angewiesen. Im letzteren Fall wäre Dein Projekt übrigens noch deutlich anspruchsvoller als es ohnehin schon ist. >Der Master wird also die meiste Zeit nur die Slaves abfragen und als >Antwort "Keine Tasteneingabe" erhalten. Da bleibt vermutlich zu wenig >Zeit um die Kondensatoren auf Spannung zu halten, Damit man sowas vorher abschätzen kann, gibts ja die Mathematik. "Bei soundsoviel Slaves und soundsoviel Daten und soundsoviel Kondensatorladezeit darf die Baudrate nicht unter... usw. --> akzeptabel/nicht akzeptabel". Rechnen! >denn jede Anfrage an >einen Slave unterbricht ja den Ladevorgang für alle Kondensatoren. Notwendigerweise nur bei Bus. Bei Stern hättest Du die Alternative, ihn nicht durch Zusammenschalten aller Leitungen zu einem Bus zu machen, sondern jeden Slave separat anzusteuern, d. h. jeder Slave hat seine eigenen zwei Pins am Master. Allerdings muss dann im Master auch für jeden Slave eine eigene Treiberstufe vorhanden sein. Bei Bus wärs nur eine für alle Slaves. >Veranschlage ich mal den Strombedarf für jeden Slave und die >Status-LED's mit 10mA, so wären das bei 8 Slaves immerhin 80mA. Wäre das eine Lösung: Bustopologie (alle Leitungen im Master zusammengeschaltet); Tx wie beschrieben über die Versorgung, aber die Spannung wird nicht zwischen 5 V und 0 V geschaltet, sondern z. B. zwischen 12 V und 9 V. Dann können die Diode und der Kondensator entfallen (einen kleinen C wird man trotzdem vorsehen wollen). Jeder Slave wird dafür mit einem 100 mA-Spannungsregler (TO-92 Gehäuse) ausgestattet, der die konstanten 5 V für den Controller bereitstellt. Der 9V-12V-Spannungspegel könnte einfach mit dem Analogkomparator der Controller erfasst werden, mit Threshold auf 10.5 V.
Hi Gast, OK, soweit hatte ich also verstanden was Du meintest. Meinen Dank für die ausführlichen Erläuterungen. Ich bin jedoch davon ausgegangen das der Bus unter Ausnutzung der jeweils vorhandenen RS-232 Schnittstelle betrieben wird. Nur so kann ich mir die Implementierung eines eigenen Protokolls ersparen, was mir mangels Ahnung sehr recht wäre. Daher wollte ich alle RX-Eingänge der Slaves zusammen auf den TX-Ausgang des Masters legen. Ebenso alle Slave TX gemeinsan auf RX des Masters. Andernfalls würde ich zu viele I/O-Ports am Master belegen, die ich nicht zur Verfügung habe ohne mit Porterweiterung zu arbeiten. Tatsächlich ist es aber so wie Du vermutet hattest. Also sternförmig verdrahtet. Paralleles Abfragen dürfte aber so wie so schwieriger sein, da ich ja nicht nur ein Bit, sondern mindestens ein Byte vom Slave zum Master senden muss. Jeder Slave überwacht 2 Tasten auf "Klick", "Doppelklick", "langes halten" und "beide Tasten gedrückt". Außerdem sollen bestimmten Tasteneingaben mittels Status-LED's angezeigt werden. Nach einer Tasteneingabe ( bzw. Tasten-Sequenz oder Tastenkombination ) kodiert der Slave die Eingabe zu einem Bitmuster und speichert es in einer Variablen ab. Sobald der Master dazu auffordert, wird das Bitmuster gesendet. Ist das Bitmuster "Keine Eingabe", fragt der Master den nächsten Slave ab, andernfalls werden Schaltaufgaben abgearbeitet und zuletzt das Bitmuster für die Status-LED's zum Slave gesendet. Der Slave setzt daraufhin die LED-Ports, löscht das Tastenbyte und kehrt zurück in die Tastenüberwachung. Der Bus steht also sozusagen unter Dauerfeuer und läßt wenig Zeit zum laden der Kondensatoren. Aus diesem Grund finde ich Deinen zuletzt genannten Vorschlag sehr gut. Leider verfügt der kleine Slave-Controller ( DIP08-Gehäuse !! ) über keinen Komperator. Den Pegelumsetzer müsste ich also diskret aufbauen. Platzmäßig würde das wohl gehen. Es gibt allerdings noch ein anderes Problem, und zwar unabhängig von der Art der Buskofiguration. Der Master hat eine hardwaremäßig fest verdrahtete RS-232 Schnittstelle mit einem MAX232 als Pegelwandler. Somit stehen am Master also +/- 10V zur Verfügung. ( RS-232 Standard ) Beim Slave hingegen werden I/O-Pins als RS-232 Schnittstelle kofiguriert. Der Pegel ist hier also TTL. Ich habe mir noch keine großen Gedanken darüber gemacht wie ich die beiden Schnittstellen koppeln kann. Noch eine Frage am Rande. Kann man eigentlich sowas wie einen Multimaster Betrieb fahren ? Wenn jeder Tastencontroller ein Master wäre, und der Hauptcontroller der Slave ( oder auch Master ?? ), dann könnte der Datenverkehr auf dem Bus drastisch reduziert werden. Die Tastenkontroller würden ja dann nur auf den Bus schreiben wenn Tatsächlich eine Eingabe erfolgt ist. Man müsste allerdings sicherstellen das immer nur einer "redet". Mit dieser Technik könnte Dein erster Vorschlag auch wieder die Nase vorne haben. ( Wenig Rraffic => viel Zeit zum Nachladen ) Von "OTTO" ( sieh Posting oben ) habe ich auch einen sehr interessanten Link bekommen. EBus. Der kommt mit nur 2 Drähten incl. Stromversorgung aus. Da wird auch was von Multimasterbetrieb geschrieben. Bin gerade dabei mich einzulesen, blicke aber noch nicht richtig durch. Vielen Dank auch an Otto an dieser Stelle. Gruß, und ein schönes Restwochenende, Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.