Hallo,
ich wollte mal fragen, wie genau das mit der RS485 läuft. Ich benötige
ein BUS, wo ich eigentlich nichts umschalten will, um die Datenrichtung
zu ändern, daher auch 4-Draht. Das soll so laufen wie mit RS232, nur
dass ich halt noch RS485-Treiber dazwischen habe, um die
Störempfindlichkeit zu verringern und die Möglichkeit habe, ein BUS
draus zu stricken. Wie genau werden die RS485-Slaves adressiert? Wird
das in Firmware implementiert, oder ist das so ähnlich wie bei I2C?
Welche ICs gibt es? Mein Ziel ist es, 4-5 Geräte über eine längere
Strecke miteinander zu verbinden. Das Protokoll ist selbst definiert
aber für RS232, aber wenn ich statt RS232 RS485-Treiber einsetze,
sollte das doch funktionieren, oder ?
Besten Dank
Spice
Spice schrieb:> Ich benötige> ein BUS, wo ich eigentlich nichts umschalten will, um die Datenrichtung> zu ändern, daher auch 4-Draht.
Bei zwei angeschlossenen Geräten ist das kein Problem, aber wie stellst
Du Dir das bei mehr als zweien vor?
Das war ja auch meine Frage :-)
Vielleicht, dass alle Slaves auf dem Bus lauschen und dann entscheiden,
ob die Message an "ihn" gerichtet ist, oder nicht. So ähnlich wie bei
CAN-BUS?
Bei Single-Master geht auch 4-Draht RS485, explizit einschalten muss man
die Slave-Transmitter trotzdem. Sind natürlich keine 8-Pin-Transceiver
mehr einsetzbar. Kann man machen, offen bleibt der Vorteil davon.
Und wenn man 2-Draht CAN-Transceiver an Stelle der 4-Draht
RS485-Transceiver verwendet, dann muss man überhaupt nicht umschalten,
nur Disziplin beim Senden einhalten.
Spice schrieb:> draus zu stricken. Wie genau werden die RS485-Slaves adressiert? Wird
rs485 beschreibt nur den layer 1 also die PHYsischen
übertragungsmodalitäten.
> das in Firmware implementiert, oder ist das so ähnlich wie bei I2C?
kommt auf deine hardware an.
es gibt controller, die einen andressen-vergleich in hardware
übernehmen.
> Welche ICs gibt es? Mein Ziel ist es, 4-5 Geräte über eine längere
sowas gibt es nicht.
das muss der client selbst machen, nicht seine PHY-einheit.
> Strecke miteinander zu verbinden. Das Protokoll ist selbst definiert
na also... wenn es eh selbst-gestrickt ist, bau da den adress-vergleich
ein oder implementiers auf einem controller, der das selbst macht.
> aber für RS232, aber wenn ich statt RS232 RS485-Treiber einsetze,> sollte das doch funktionieren, oder ?
rs232 ist p2p, rs485 willst du als bus...
wie passt das zusammen?
Vielen Dank nochmal
>> aber für RS232, aber wenn ich statt RS232 RS485-Treiber einsetze,>> sollte das doch funktionieren, oder ?>rs232 ist p2p, rs485 willst du als bus...>wie passt das zusammen?
vielleicht hätte ich noch erwähnen müssen, dass ich beide Seiten unter
meiner eigenen Kontrolle (mittels µC mit mehreren UARTs) habe.
So wie in den Bildern beschrieben habe ich mir das gedacht. Per RS232
quasi kaskadiert mit 2 UARTs pro µC oder über RS485 als Bus mit CAN-like
Adresserkennung.
4-Draht-RS485 nennt man RS422.
RS422 ist der RS232 Ersatz. also auch nur P2P.
Als BUS (so wie in Skitze) kann trotzdem nur ein Slave antworten.
Also 2 Drähte gespart und gleich RS485 genommen.
hmmm jaa ... rs485
Also Du kannst Master-Slave-Verbindungen aufbauen über 4-Draht,
dann darf aber nur ein Busteilnehmer der Master sein, alle
Anderen zwangsläufig Slaves.
Beim Master brauchst Du keine aktive Umschaltung der Datenrichtung,
bei den gängigen RS485 Bausteinen der Slaves (z.B. Max487 MAX485, LTC485
etc.)
Musst Du die Belegung des Bus, also des zweiten Aderpaares für den
Rückkanal schon aktiv einschalten, da sonst alle gleichzeitig "senden",
egal ob das ausgehende Signal nun Low oder high ist. Du bekommst also
Kollisionen.
Lösen kannste das z.B. über CTS oder RTS vom Slave, den Du dann einfach
verwendest um deinen 485-Baustein einzuschalten.
Du kannst auch alternativ die Bausteine vom CAN-Bus verwenden, dann
kannste Dir die Umschaltung schenken, die machen das von sich aus schon.
PCA82C250 / 251 z.B.
Landwirt schrieb:> Also Du kannst Master-Slave-Verbindungen aufbauen über 4-Draht,> dann darf aber nur ein Busteilnehmer der Master sein, alle> Anderen zwangsläufig Slaves.
zu einem zeitpunkt.
es gibt viele protokolle, die multi-mastering und master-negotiation
unterstützen.
> egal ob das ausgehende Signal nun Low oder high ist. Du bekommst also> Kollisionen.
nein, kurzschlüsse.
kollisionen in der nachrichtentechnik sind was andres.
frage eines dau:
unterschied zwischen 2 und 4 draht ist ja "nur" ob ZUGLEICH gesendet
werden kann , oder ?
es kann also ein master daten senden während zugleich (einen) slave
"zurück" senden.. kann
(was zwar jetzt im "üblichen" bus-fällen eher nicht benötigt wird..)
nur, warum solle man da nicht trotzdem die master dynamisch bestimmen
können..
Robert L. schrieb:> unterschied zwischen 2 und 4 draht ist ja "nur" ob ZUGLEICH gesendet> werden kann , oder ?
Ein weiterer Unterschied ist, daß bei Vierdraht die Rolle des Masters
durch die Busanschaltung festgelegt ist. Bei Zweidraht dagegen sind die
Teilnehmer hardwaremäßig gleichberechtigt (jeder "hört" jeden) und es
ist nur eine Frage des Protokolls bzw. der Software in den Controllern,
wer die Rolle des Masters übernimmt.
> nur, warum solle man da nicht trotzdem die master dynamisch> bestimmen können..
Weil der Master wie gesagt durch die Verdrahtung bestimmt wird. Der
Ausgang des Masters ist mit den Eingängen aller Slaves verbunden und die
Ausgänge aller Slaves mit dem Eingang des Masters. Will man die Rolle
des Masters also auf einen anderen Knoten übertragen, muß man beim alten
und neuen Master die Ein- und Ausgänge vertauschen.
Hier mal als Beispiel ein Bus mit den Teilnehmern 1..4. E und A stehen
für die Ein- und Ausgänge des jeweiligen Teilnehmers, === für die
Busletungen.
Hier ist Teilnehmer 1 der Master:
A1 === E2 === E3 === E4
E1 === A2 === A3 === A4
Hier ist es Teilnehmer 3:
E1 === E2 === A3 === E4
A1 === A2 === E3 === E4
@ben: ich meine 2 x rs485 (also 4 kabel) (also auch 2 treiber usw)
1. teilnemer wäre master am 1. rs485 und sendet (slave wäre dann master
am 2. bus)
wie gesagt eher theoretisch, weil beim klassischem bussystem keiner
parallel senden will/muss...
@ Spice
Bei der "grünen Version" wirds schon wieder schwierig ohne Umschaltung,
zumindest wenn die Kommunikation bidirektional sein soll. Außer du
spendierst jeweils zwischen zwei Teilnehmern 4 Leitungen und nimmst
reine Transmitter/Receiver statt Transceivern.
Ber der "schwarzen Version" brauchst du eine Zugriffskontrolle für den
Bus, damit nicht zwei Slaves gleichzeitig senden.
Micha schrieb:> Ber der "schwarzen Version" brauchst du eine Zugriffskontrolle für den> Bus, damit nicht zwei Slaves gleichzeitig senden.
Äh, bei Vierdraht Bus ist nur Master/Slave möglich. Und da kein Slave
unaufgefordert senden darf braucht man auch keine "Zugriffskontrolle"
also 2 x 2 Vollduple Multimaster geht schon mit vielen Kunstgriffen.
Zum Einen müsstest Du entweder die RX / TX Pins der UART abwechselnd auf
den einen oder anderen Transceiver schalten, oder
dann Software-Uart verwenden, dann kannste den jeweiligen Pin frei
zuordnen, oder Variante 3, Der Teilnehmer am Busende (quasi
Pseudomaster) müsste, so er die Kontrolle an einen anderen Busteilnehmer
abgegeben hat die eingehenden Daten einfach auf den Ausgangskanal
spiegeln, also n Echo geben.
Das ginge dann ... wär aber schon von hinten durchs Knie ins Auge.