Rx Tx auf einer Ader mit R + D

OP #1094095
Lesenswert?

Hallo,

ich suche eine Möglichkeit mehrere Controller über eine Leitung 
miteinander zu verbinden. Alle Controller sollen als Master 
kommunizieren dürfen.

Hardware:

MC 1           MC 2           MC 3

Rx  Tx  GND    Rx  Tx  GND    Rx  Tx  GND
 |   |   |      |   |   |      |   |   |
 |  ---  -      |  ---  -      |  ---  -
 |  \ / | |     |  \ / | |     |  \ / | |
 |  --- | |     |  --- | |     |  --- | |
 |   |   -      |   |   -      |   |   -
 |   |   |      |   |   |      |   |   |
 o---o---o      o---o---o      o---o---o
     |              |              |
     |              |              |
 ----o--------------o--------------o----- Daten

Software:

Jeder MC hat eine ID
Wenn MC1 senden möchte an MC3 wird die ID 3 und ein Befehlscode 
gesendet.
  Aufbau:
  Byte 1   Byte 2      Byte 3       Byte 4
  Send ID  Receive ID  Befehlscode  Control / ACK

Der gesendete Befehl wird am eigenen Rx gelesen und verglichen mit dem 
gesendeten Code. Wenn keiner reingepfuscht hat, sollte Rx und Tx gleich 
sein. Ansonsten wird nach einer Zeit nochmal gesendet.
Der Empfänger schickt als Antwort den gleichen Befehlscode zurück, nur 
statt ein Control ein ACK im Byte 4.

Habe leider kein Oszi um die Kommunikation zu überwachen, zu testen. Was 
meint Ihr, kann das funktionieren?

Erfinde ich das Rad neu, oder gibt es das schon?
Nebenbei: Nein, ich kann keine zweite Ader legen! ;-)

Bernhard
Gast #1094116
Lesenswert?

tja, der Ruhezustand von Rx und Tx ist H-Pegel..., zumindest wenn du 
(sinnvollerweise) auf Hardware-Uarts setzt.
Also: Dioden umdrehen, pullup statt pulldown.
Erwarte nicht zuviel von einer solchen Konstruktion. Ohne Treiber wird 
das schon hardwaremässig störungsanfällig, u.U. sogar gefährlich für die 
Eingänge.
Datenrate und Entfernung werden nicht sehr hoch sein.
Software wird aufwändig, neben Störungen musst du mit Kollisionen 
rechnen und damit klar kommen.
Gast #1094192
Lesenswert?

Ich Trottel,

ich habe in jeder Unterverteilung einen MC, und die sind durch ein 
3-adriges Kabel mit einem Netzteil verbunden.

Also habe ich gemeinsamen GND.

MC 1                 MC 2                 MC 3

Rx  Tx  +5V  GND     Rx  Tx  +5V  GND     Rx  Tx  +5V  GND
 |   |   |    |       |   |   |    |       |   |   |    |
 |  ---  -    |       |  ---  -    |       |  ---  -    |
 |  / \ | |   |       |  / \ | |   |       |  / \ | |   |
 |  --- | |   |       |  --- | |   |       |  --- | |   |
 |   |   -    |       |   |   -    |       |   |   -    |
 |   |   |    |       |   |   |    |       |   |   |    |
 o---o---o    |       o---o---o    |       o---o---o    |
     |        |           |        |           |        |
     |        |           |        |           |        |
 ----o--------)-----------o--------)-----------o--------)----- Daten
              |                    |                    |
 -------------o--------------------o--------------------o----- GND

Was würdet Ihr für einen Treiber empfehlen um die Reichweite zu erhöhen?

Bernhard
#1094209
Lesenswert?

Hallo,
wenn es eine langsame Übertragung sein darf, hilft vielleicht die gute 
alte Stromschleife weiter (auch als 20-mA-Schnittstelle oder 
TTY-Schnittstelle bezeichnet).
Einfach mal danach suchen, es gibt jede Menge Treffer (muss ja nicht 
gleich mit Potenzialtrennung und allem Komfort sein :-)

Gruß
 DF2DS
Gast #1094264
Lesenswert?

> Ist LIN-Bus nicht nur Single-Master?

Eigentlich ja, aber mir ging es beim Vorschlag nur um die Hardwareseite. 
Man muss bei Multimaster immer Kollisionen per Software vermeiden. Geht 
also mit LIN-Bustreibern genauso gut wie mit jeder anderen Hardware.

Wir setzen LIN-Bustreiber ein und nehmen unser eigenes proprietäres 
Protokoll, da es wesentlich einfacher ist. Wir brauchen den ganzen 
Funktionsumfang nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren