Forum: Mikrocontroller und Digitale Elektronik Welche Multimaster-Busse gibt es für µC?


von Manfred H. (manfred8534)


Lesenswert?

Es gibt CAN mit fertigen Bauteilen u. Bibliotheken.

RS485 ist ohne Protokoll; SPI u. I²C/TWI nicht wirklich Multimaster und 
auch nur für kurze Leitungslängen; 1-Wire nur Master/Slave; UART ist nur 
Schnittstelle; und sonst?

Was gibt es für Multimaster-Bussen im Einsatz für µC ohne all zu 
exotisch zu werden?

Ich habe sonst nur PJON (Padded Jittering Operative Network) gefunden.
https://github.com/gioblu/PJON
Was meint ihr dazu?

Und sonst? Ist CAN mehr oder weniger das einzige?

von Poster (Gast)


Lesenswert?

Warum ist 485 ohne Protokoll?
Das muss man da halt selber programmieren.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Manfred H. schrieb:
> I²C/TWI nicht wirklich Multimaster
Wenns richtig implementiert ist, ist auch I²C ein Multimaster.
> auch nur für kurze Leitungslängen
das ist wahr.

von Wolfgang A. (Gast)


Lesenswert?

Manfred H. schrieb:
> Was gibt es für Multimaster-Bussen im Einsatz für µC ohne all zu
> exotisch zu werden?

CAN

Manfred H. schrieb:
> ... I²C/TWI ... und auch nur für kurze Leitungslängen;

Stimmt, bei hundert Metern ist deutlich Schluss, so NXP.
http://www.nxp.com/documents/application_note/AN10658.pdf

von Manfred H. (manfred8534)


Lesenswert?

Poster schrieb:
> Warum ist 485 ohne Protokoll?
> Das muss man da halt selber programmieren.

Ja, eben... Wenn's nicht sein muss und was fertiges gibt... Ist nicht so 
einfach, sich um Kollision, Übertragungsfehler, etc. selbst zu kümmern.

von Gerd E. (robberknight)


Lesenswert?

Manfred H. schrieb:
> Ja, eben... Wenn's nicht sein muss und was fertiges gibt... Ist nicht so
> einfach, sich um Kollision, Übertragungsfehler, etc. selbst zu kümmern.

Naja, man muss ja nicht alles selbst neu erfinden.

Du kannst RS485 nehmen und darüber IP-Pakete senden. TCP kümmert sich 
dann um Prüfsumme und Paketverluste.

Normal lauschen die Stationen bevor sie anfangen zu senden. Wenn 2 
Stationen wirklich gleichzeitig anfangen zu senden gibts ne Kollision, 
darum kümmert sich dann auch das TCP.

von Thomas W. (Gast)


Lesenswert?

Manfred H. schrieb:
> Was gibt es für Multimaster-Bussen im Einsatz für µC ohne all zu
> exotisch zu werden?

Exotisch in Bezug auf Reichweite, Datenübertragungsrate oder was meinst 
du?

von Pandur S. (jetztnicht)


Lesenswert?

Man kann mit zB 485 auch Multimaster betreiben ohne Kollisionen, dann 
muss man eben ein Token (Fähnchen) umgehen lassen. Welche Station auch 
immer das Token hat, darf senden. Nachher geht das Token an den 
naechsten weiter.
Zu loesenden Probleme : Wie kommen neue Stationen ans Netzwerk & was 
geschieht wenn das Token verloren geht, dh Regeneration eines Tokens, 
wenn zB die Station mit dem Token abgeschaltet, ausgezogen wird. Ist 
aber machbar.

Die Performance eines Token Netzwerkes ist bei hoeherer Buslast besser 
wie die Performance eine kollisionsbasierten Netzwerkes. Dh ein 
Tokennetzwerk kann bis fast 100% ausgelastet werden.

Ethernet war damals die schlechtere Wahl gegenueber den Tokennetzwerken. 
Das jetzige Ethernet ist ja ein Punkt-zu-Punkt Netzwerk und hat diese 
Nachteile korrigiert.

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

CAN ohne ein darüber gelegtes Protokoll ist auch nicht sicher, was die 
Sicherheit der Datenübertragung angeht. Im Prinzip ist es nur Broadcast.

Ich halte die Frage des TO für wenig durchdacht. DEN Multimaster Bus 
gibt es nicht. Es wäre hilfreich, wenn die Randbedingungen genannt 
würden.

von m.n. (Gast)


Lesenswert?

Manfred H. schrieb:
> Was gibt es für Multimaster-Bussen im Einsatz für µC ohne all zu
> exotisch zu werden?

Profibus, wenn man mit der Baudrate auf dem Teppich bleibt.

von MCUA (Gast)


Lesenswert?

>RS485 ist ohne Protokoll; SPI u. I²C/TWI nicht wirklich Multimaster und
>auch nur für kurze Leitungslängen;
SPI ist sozusagen auch ohne Protokoll.
Man kann auf jegliche Arten Multimaster implementieren.

von Nosnibor (Gast)


Lesenswert?

Gerd E. schrieb:
> Du kannst RS485 nehmen und darüber IP-Pakete senden. TCP kümmert sich
> dann um Prüfsumme und Paketverluste.
>
> Normal lauschen die Stationen bevor sie anfangen zu senden. Wenn 2
> Stationen wirklich gleichzeitig anfangen zu senden gibts ne Kollision,
> darum kümmert sich dann auch das TCP.

Ich glaube nicht, daß TCP mit Kollisionen vernünftig umgeht. Wenn zwei 
Teilnehmer gleichzeitig ein Datenpaket senden, wird bei beiden TCP 
irgendwann merken, daß die Daten nicht angekommen sind, und das Paket 
wiederholen. Und zwar bei beiden gleichzeitig; die nächste Kollision ist 
also garantiert.

Was bei RS-485 fehlt, ist eine explizite Kollisionserkennung. Die 
Hardware leistet das einfach nicht (im Gegensatz zu z.B. Ethernet, CAN, 
ISDN-S0, etc.). Die beiden beteiligten Sender merken nichts von der 
Kollision und können daher nicht vernünftig reagieren. Man muß also bei 
RS-485 das Senderecht immer ausdrücklich vergeben, z.B. durch ein 
Master-Slave-Protokoll oder Token-Ring.

von Pandur S. (jetztnicht)


Lesenswert?

Das Kollisionsrecovery funktioniert anders bei den Bussen, die das 
koennen. Wenn eine Kollision erkannt wird, zB bei 10base2 Ethernet, 
warten beide Stationen eine Zufallszeit ab, bevor sie es nochmals 
probieren. Deswegen kann man auch die Sendezeit nicht vollaufbrauchen.

Tokenring ist uebrigens was anderes. Der wurde damls von IBM entwickelt, 
und da durch Patente geschuetzt, zu proprietaer, zu teuer. Da waren alle 
Stationen als ring angeschlossen. Es waren 4 Leitungen, die pro modul 
anzuschliessen waren. Zwei eingaenge, zwei ausgaenge. Der eine Ring ging 
links rum, der andere Ring rechts herum, jeweils als Sender/Empfaenger 
Paar. Jede Station kannte den Nachbarn. Wenn eine Meldung nicht quitiert 
wurde, wurde angenommen, dass diese Richtung unterbrochen war, und die 
Meldung nochmals in die andere Richtung geschickt.

Ein Hardware tokenbus war das Arcnet. Hatte leider nur 5MBit waehrend 
Ethernet als 10Base2 schon 10MBit konnte. Unter Last war er aber besser. 
Die 5MBit konnten ausgenutzt werden. Pech gehabt, Marketing Bla-Bla.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Ich finde CAN unschlagbar einfach, da fast alles die Hardware macht:
- Nachricht in Sendepuffer stellen, Interrupt: Nachricht wurde 
erfolgreich gesendet.
- Empfangsinterrupt: Nachricht aus Empfangspuffer lesen.
Man muß nur noch die höheren Protokollschichten in SW implementieren.

von MCUA (Gast)


Lesenswert?

>Wenn eine Kollision erkannt wird, zB bei 10base2 Ethernet,
>warten beide Stationen eine Zufallszeit ab, bevor sie es nochmals
>probieren. Deswegen kann man auch die Sendezeit nicht vollaufbrauchen.
Das ist so ziemlich das schlechteste, was man hinsichtl. MultiMaster 
machen kann.

Bei CAN ist die Geschwindigkeit, wegen der Arbitrierung, sehr von der 
benutzten Bus-Reichweite abhängig.

von Pandur S. (jetztnicht)


Lesenswert?

CAN ist eher fuer die Autoindustrie, optimiert fuer schnelle kurze 
Packete. 6 byte maximum. Einen Filetransfer moechte man eher nicht 
darueber machen. Auch keinen Videostream.

von Route_66 (Gast)


Lesenswert?

Die Firma Phytec hatte mal einen Multimaster-Bus im Angebot.
Das Prinzip wurde in der (ich glaube) ELRAD beschrieben.
Basierte auf RS485 Treibern, mit Kollisionserkennung, und Vermeidung 
(CSMA/CD), mit Prioritätensteuerung, Point to Point oder Broadcast.

Buszugriff mit RS485-Pegeln und Arbitrierung über dominante/rezessive 
Pegelsteuerung.

Viele Eigenschaften des CAN sind so auf einfacher UART-Technik 
realisiert worden. Damals noch 8051 aber bei allen Familien mit 
Multiprozessorcommunikationsbit (9. Datenbit) realisierbar.

Wird wohl nicht mehr angeboten, nannte sich "µNET".

von Thomas W. (Gast)


Lesenswert?

Oh D. schrieb:
> CAN ist eher fuer die Autoindustrie, optimiert fuer schnelle kurze
> Packete. 6 byte maximum. Einen Filetransfer moechte man eher nicht
> darueber machen. Auch keinen Videostream.

Und so bleibt die Frage: Was möchte der TO?

von Manfred H. (manfred8534)


Lesenswert?

Danke für die vielen Antworten!

Thomas W. schrieb:
> Und so bleibt die Frage: Was möchte der TO?

Mit möglichst wenig SW-Aufwand 3-20 AVR's über 50-200m verteilt in einer 
Art Hausautomatisierung alle paar Zehntel-Sekunden bis Minuten kurze 
Nachrichten austauschen. Da scheint CAN wohl am geeignetsten zu sein.

von 1234567890 (Gast)


Lesenswert?

Bei den ganzen Begriffen (CAN, I²C/TWI, UART, RS485, usw.) bringst du 
einiges durcheinander. So kann man das nicht vergleichen. Zuerst 
solltest du die Schicht im OSI-Schichten-Modell klären. Befinden wir uns 
auf der physikalischen Ebene, auf der logischen Ebene usw. Dann fällt es 
auch leichter die Bussysteme miteinader zu vergleichen.
Möglicherweise solltest du vorher den Begriff Protokoll in Verbindung 
mit dem Begriff Bussystem klären.

Mir fallen bei Multi-Master-Bussystemen ein: CAN, VME, I²C, Profibus, 
Avalon Bus, PCI, LON, SafetyBUS p, RS485, ...

Ein Multi-Master-System ist nur in den seltensten Fällen notwendig und 
es erleichtert die Kommunikation meistens nicht. Der Weg der 
Botschaften wird mit zunehmender Anzahl an Teilnehmern immer 
unübersichtlicher und weniger nachvollziehbar. Das macht die Fehlersuche 
nicht einfacher.

Für deine Anwendung kann CAN sehr gut sein. CAN bringt auf jeden Fall 
eine Menge Overhead mit, ist aber dafür sehr störunanfällig. Beachten 
solltest du die Leitungslänge zusammen mit der Übertragungsrate (1Mbit/s 
geht nur bis 40m).

Der CAN-Bus ist schon eine ganz ausgefuchste Sache mit all seinen 
Mechanismen (CSMA/CR, Arbitrierung, Identifier, Acknowledge, 
Bit-Stuffing usw.)

Benutze den CAN-Bus in deinem Projekt. Das ist sehr interessant und da 
kannst du ordentlich was dazulernen.

von Thomas W. (Gast)


Lesenswert?

Manfred H. schrieb:
> ... über 50-200m verteilt ....
> Da scheint CAN wohl am geeignetsten zu sein.

Das setzt voraus, dass du mit den Einschränkungen für die Topologie 
eines CAN-Bus zurecht kommst.

von Rudolph R. (rudolph)


Lesenswert?

Oh D. schrieb:
> CAN ist eher fuer die Autoindustrie, optimiert fuer schnelle kurze
> Packete. 6 byte maximum.

Es sind 8.
Und mit CAN-FD sind es 64.


Als weiteres Buzzword für die Runde fällt mir noch Flexray ein.
Edit: Hab die Anforderung überlesen, dazu passt Flexray dann eher nicht, 
nein.

: Bearbeitet durch User
von gatsby (Gast)


Lesenswert?

Hallo,

ich frage mich immer wieder, warum die Leute immer auf die Idee kommen, 
einen Multimaster fähigen Bus verwenden zu müssen.
Der TO will eine popelige Haussteuerung erstellen. Redet von geringem SW 
Aufwand und will dann einen Multimaster Bus einsetzen. Da hat er sich 
mit Kollisionen, Prioritäten, Timings, Adressarbitrierung und ,und ,und 
herumzuschlagen.
Ein simpler UART basiertes Master-Slave Bus ist da um Größenordnungen 
einfacher und schneller erstellt. Und natürlich RS485 basiert.
Wer sich einmal mit einem Multimaster Bus herumgeschlagen hat, der 
erkennt die Vorteile eines Master-Slave Systems.
Also Manfred, lass die Idee von Multimaster sein und all ihr anderen 
spart euch die Energie darüber zu grübeln.

Gruß
gatsby

von Stefan K. (stefan64)


Lesenswert?

gatsby schrieb:
> Da hat er sich
> mit Kollisionen, Prioritäten, Timings, Adressarbitrierung und ,und ,und
> herumzuschlagen.

Schon mal was mit CAN gemacht? Multimaster ohne eines der o.g. Probleme.

Ich benutze CAN bei mir als Hausbus seit > 10 Jahren ohne Probleme oder 
Ausfälle. Meine Baudrate ist 20kbaud. Damit sind auch lange 
Stichleitungen problemlos möglich.

Ich finde CAN für die Anwendung des TO die ideale Lösung.

Gruß, Stefan

von Michael K. (Gast)


Lesenswert?

Nosnibor schrieb:
> Was bei RS-485 fehlt, ist eine explizite Kollisionserkennung. Die
> Hardware leistet das einfach nicht

Lass den Receiver immer an und schau nach was der Transmitter raushaut.
Wenn RX != TX dann Kollision. Denn Rest macht CRC + Retransmission.
Das alles mußt Du natürlich selber schreiben.

Multimaster ist in den meisten Fällen nur Multi-Problem.
Anstatt da selber drin herumzustochern verwende einen klassischen Master 
/ Slave Bus oder lass dir die meiste Arbeit von z.B. CAN abnehmen.

von Peter D. (peda)


Lesenswert?

Stefan K. schrieb:
> gatsby schrieb:
>> Da hat er sich
>> mit Kollisionen, Prioritäten, Timings, Adressarbitrierung und ,und ,und
>> herumzuschlagen.
>
> Schon mal was mit CAN gemacht? Multimaster ohne eines der o.g. Probleme.

Kann ich nur bestätigen.
Wer einmal CAN benutzt hat, möchte nie nie nie wieder das umständliche 
RS-485 haben.
CAN ist codesparend und sorgenfrei.

von Stefan K. (stefan64)


Lesenswert?

Das Einzige, was mich bei CAN aufregt, ist der Name. Schon einmal nach 
CAN gegoogelt?

;-) Stefan

von Klaus (Gast)


Lesenswert?

Manfred H. schrieb:
> Mit möglichst wenig SW-Aufwand 3-20 AVR's über 50-200m verteilt in einer
> Art Hausautomatisierung alle paar Zehntel-Sekunden bis Minuten kurze
> Nachrichten austauschen.

WLan mit ESP8266, billiger gehts nicht (< 2€ pro Knoten, Kabelkosten 0). 
Und dann jedes Protokoll, was man gut kann, HTML zum Beispiel oder UDP 
Broadcasts. Und alle PCs im Haus sind auch noch for free angeschlossen.

MfG Klaus

von Georg (Gast)


Lesenswert?

Michael K. schrieb:
> Lass den Receiver immer an und schau nach was der Transmitter raushaut.
> Wenn RX != TX dann Kollision. Denn Rest macht CRC + Retransmission.

Im Gegensatz zu anderen Bussen (Open Collector + Pullup o.ä.) ist das 
aber ein echter Kurzschluss von Sendern, garnicht gut für die Chips und 
technischer Totalmurks.

Georg

von Michael K. (Gast)


Lesenswert?

Georg schrieb:
> aber ein echter Kurzschluss von Sendern, garnicht gut für die Chips und
> technischer Totalmurks.

Kurzschluss ?
Einen Empfänger auf Enable belassen ?
Mit RS485 hast Du Dich mal länger als 20sek beschäftigt ?
Kollision ist dort ein normaler Vorgang und die Treiber sind explizit 
dafür geeignet wie übrigens bei CAN auch.

Georg schrieb:
> technischen Totalmurks ...

von Netz Flicker (Gast)


Lesenswert?

Da gibt's jede Menge:

Arcnet
tokennet
jedes System das CSMA implementiert

von Georg G. (df2au)


Lesenswert?

Georg schrieb:
> technischer Totalmurks

Aus Wikipedia:
Gegenüber dem EIA-422-Standard besitzen die Sender durch einen 
integrierten Widerstand kurzschlussfeste Ausgangsstufen, so dass auch 
ein Gegensenden zweier Sender nicht zu Defekten führt.

von MCUA (Gast)


Lesenswert?

>WLan mit ESP8266, billiger gehts nicht ...
Funk ist unzuverlässig.


>Im Gegensatz zu anderen Bussen (Open Collector + Pullup o.ä.) ist das
>aber ein echter Kurzschluss von Sendern, garnicht gut für die Chips und
>technischer Totalmurks.
ja mit std. RS485 usw., wenn man will, kann man sich ja mit 
CAN-Transceivern ein eigenes System stricken.

von Peter D. (peda)


Lesenswert?

Die RS-485 Treiber können sehr hohe Ströme liefern, das kann bis zum 
thermal Shutdown führen.
Z.B. der MAX485 kann bis 250mA, da braucht man schon ein ausreichend 
starkes Netzteil, wenn dem MC nicht der Saft ausgehen soll.

Beim CAN gibt es keine Kollision, es gewinnt immer der dominante Pegel. 
Daher können auch 2 Teilnehmer gleichzeitig senden. Blöd wirds nur, wenn 
2 den gleichen ID senden, da dann beide denken, sie haben gewonnen. Das 
muß daher vermieden werden.
Die CAN-Transceiver können auch hohe Spannungen ab, z.B. der TJA1050 
-27..+40V. Man darf also versehentlich die 24V Versorgung an die 
Datenpins geben, ohne daß er die Hufe hochreißt.

von Nosnibor (Gast)


Lesenswert?

Michael K. schrieb:
> Lass den Receiver immer an und schau nach was der Transmitter raushaut.
> Wenn RX != TX dann Kollision. Denn Rest macht CRC + Retransmission.

Die Hardware garantiert mir aber nicht, daß ich eine Kollision sauber 
erkenne. Im Zweifelsfall ist immer mein eigener Sender näher 
(=niederohmiger) an meinem Empfänger als jeder andere, der gleichzeitig 
etwas anderes sendet. RX!=TX wird also meist nicht eintreten; die 
Kollision bleibt (von einem der beteiligten Sender) unbemerkt.

Andere Systeme (z.B. CAN oder ISDN) garantieren, daß bei einer Kollision 
ein bestimmter Pegel "gewinnt", so daß damit auch gleich die Priorität 
geregelt ist. Das funktioniert aber auch nur, weil ein gemeinsamer 
Bittakt gegeben ist; RS-485 ist vollkommen asynchron, so daß von einer 
Kollision vielleicht nur Teile eines Bits betroffen sind.

von MCUA (Gast)


Lesenswert?

ja, mehrere RS-485 -Driver aufeinander los zu lassen ist eigentlich 
nicht erlaubt (es gibt allerd welche mit Strombegrenz. oä).
Es wird aber wohl immer unsaubere Lösung bleiben, das so zu verschalten 
(bzw das SWtechn zu erlauben)

>RS-485 ist vollkommen asynchron, ..
RS-485 ist genauso nicht 'asynchron' wie CAN oder Sonstige.
Wenn das Timing zu knapp ist, wird man auch mit CAN-Transc. die 
Kollision nicht erkennen.

von wirewound (Gast)


Lesenswert?

Kann man nicht auch X.25 oder AX.25 einsetzen auf RS485?

von Klaus (Gast)


Lesenswert?

MCUA schrieb:
>>WLan mit ESP8266, billiger gehts nicht ...
> Funk ist unzuverlässig.

Du hast deinen Laptop, dein iPad immer am Kabel? Kein Wlan zu Hause?

MfG Klaus

von Max G. (l0wside) Benutzerseite


Lesenswert?

Manfred H. schrieb:

> Und sonst? Ist CAN mehr oder weniger das einzige?

Wenn du von Hausautomatisierung sprichst, darf KNX nicht fehlen - das 
kann auch Multimaster.

Zum Selberbau ist CAN aber sicher die beste Variante. Die korrekte 
Übertragung wird vom Sender bereits geprüft (durch das Acknowledge des 
Empfängers).

Bezüglich Topologie brauchst du dir keinen großen Kopf machen. Was ich 
in der Automobilindustrie schon alles an Topologien gesehen habe, hat 
mit einem "korrekt terminierten Bus ohne Stichleitungen" so viel zu tun 
wie eine Kuh mit dem Fliegen. Die laufen auch. Musst halt irgendwo zwei 
Terminierungswiderstände unterbringen.

Das gibt zwar böse Reflektionen, die sind aber nicht schlimm. Eine 
niedrige Datenrate reicht dir ja, CAN sampelt m.W. bei 80% der Bitlänge, 
d.h. bis dahin sollte deine Reflektion abgeklungen sein.
KNX läuft mit 9,6 kBit/s, und das reicht locker. Bei diesem Tempo kannst 
du 80µs Reflektion der Signalflanke verdauen, da war das Signal dann 
schon rund 16km unterwegs. Das sollte zum Abklingen reichen.

Max

von Georg G. (df2au)


Lesenswert?

wirewound schrieb:
> Kann man nicht auch X.25 oder AX.25 einsetzen auf RS485?

Kann man selbstverständlich. Quelltexte sind PD. Ist sogar Multimaster 
fähig. Der Aufwand für ein sauberes L2 Protokoll wird übrigens gern 
unterschätzt.

MCUA schrieb:
> mehrere RS-485 -Driver aufeinander los zu lassen ist eigentlich
> nicht erlaubt

Gilt die Aussage auch, wenn die Norm etwas anderes sagt und im 
Datenblatt des Transceivers ausdrücklich steht, dass Kollisionen nicht 
schaden?

von MCUA (Gast)


Lesenswert?

>> mehrere RS-485 -Driver aufeinander los zu lassen ist eigentlich
>> nicht erlaubt
>Gilt die Aussage auch, wenn die Norm etwas anderes sagt und im
>Datenblatt des Transceivers ausdrücklich steht, dass Kollisionen nicht
>schaden?

Was sagt denn die Norm, was man lesen soll, wenn von 2 verbundenen 
Treibern einer 0 der andere 1 schreibt?

von Georg G. (df2au)


Lesenswert?

MCUA schrieb:
> Was sagt denn die Norm, was man lesen soll, wenn von 2 verbundenen
> Treibern einer 0 der andere 1 schreibt?

Das ist Sache des Layer 2 und nicht Aufgabe des Layer 1. Der Layer 1 
kann "Fehler entdeckt" melden, muss er aber nicht. Und was gelesen wird 
ist auch irrelevant. Ist es zufällig der richtige Wert, prima. Ist es 
Müll, wird es vom L2 entdeckt und es wird ein erneuter Versuch 
angefordert. Das Netz ist voll mit Beispielen zu diesem Thema.

von Nosnibor (Gast)


Lesenswert?

Wenn ein Sender 1 sendet und der andere 0, gibt es keinen "richtigen" 
Wert für den Empfänger. Bei RS-485 haben wir dann einen Zustand, wo im 
schlimmsten Fall jeder Empfänger andere Daten sieht. Das ist für die 
höheren Schichten ...ungünstig, um es höflich auszudrücken.

Natürlich kann man das Problem auf die höheren Schichten abwälzen. "Bei 
einer Kollision passiert eben Mist, Fehlererkennung gibt es nicht, kommt 
gefälligst damit klar". Für mich als Entwickler der Schicht 2 und höher 
ist die logische Konsequenz, daß Kollisionen nicht Bestandteil des 
Protokolls sein dürfen, basta. Also keine multimaster-Fähigkeit bei 
RS-485.

von Marc S. (marc_s86)


Lesenswert?

Klaus schrieb:
> Du hast deinen Laptop, dein iPad immer am Kabel? Kein Wlan zu Hause?

wenn mein laptop mal kein wlan hat ist das ziemlich egal. wenn dagegen 
der Lichtschalter oder der Rauchmelder nicht klappt ist das schon eher 
doof...

Max G. schrieb:
> Die korrekte Übertragung wird vom Sender bereits geprüft
> (durch das Acknowledge des Empfängers).

Wichtig: irgendeines Empfängers. Wenn irgendjemand die Nachricht 
empfängt quittiert er sie, das heißt aber nicht, dass die Nachricht ihr 
Ziel erreicht.

von Pandur S. (jetztnicht)


Lesenswert?

> Lichtschalter oder der Rauchmelder


Rauchmelder am WLAN ... aaahhhh. Dann kannst du die Huette auch gleich 
abfackeln.

Lichtschalter am WLAN ... aaaahhh. ein WLAN Knoten zieht sicher 1 Watt. 
um einen Kontakt, der ausserordentlich selten betaetigt wird, zu 
uebertragen ?

von Arc N. (arc)


Lesenswert?

Nosnibor schrieb:
> Wenn ein Sender 1 sendet und der andere 0, gibt es keinen "richtigen"
> Wert für den Empfänger. Bei RS-485 haben wir dann einen Zustand, wo im
> schlimmsten Fall jeder Empfänger andere Daten sieht. Das ist für die
> höheren Schichten ...ungünstig, um es höflich auszudrücken.
>
> Natürlich kann man das Problem auf die höheren Schichten abwälzen. "Bei
> einer Kollision passiert eben Mist, Fehlererkennung gibt es nicht, kommt
> gefälligst damit klar". Für mich als Entwickler der Schicht 2 und höher
> ist die logische Konsequenz, daß Kollisionen nicht Bestandteil des
> Protokolls sein dürfen, basta. Also keine multimaster-Fähigkeit bei
> RS-485.

SAE J1708 arbeitet mit RS-485 und ist auch für Multimaster geeignet.
Der "Trick" ist dort, dass bei den Transceivern DI immer auf Low ist und 
nur DE zum Senden verwandt wird: DE High -> dominant -> DE Low -> 
rezessiv, Rest erledigen externe Pullups etc.
http://www.ti.com/lit/an/snla038b/snla038b.pdf
http://ww1.microchip.com/downloads/en/AppNotes/01230A.pdf

von Marc S. (marc_s86)


Lesenswert?

Oh D. schrieb:
> Lichtschalter oder der Rauchmelder
>
> Rauchmelder am WLAN ... aaahhhh. Dann kannst du die Huette auch gleich
> abfackeln.
>
> Lichtschalter am WLAN ... aaaahhh. ein WLAN Knoten zieht sicher 1 Watt.
> um einen Kontakt, der ausserordentlich selten betaetigt wird, zu
> uebertragen ?

Na das sage ich doch, WLAN ist ungeeignet.

Das heißt aber nicht, dass WLAN schlecht ist, es ist halt nur nichts für 
diesen Zweck.

von Georg G. (df2au)


Lesenswert?

Nosnibor schrieb:
> Kollisionen nicht Bestandteil des Protokolls

Fehler können immer passieren,damit muss dein Programm klarkommen. Es 
gibt keine 100% sichere Übertragung, auch nicht bei Single Master. Dafür 
hat man eben die höheren Protokoll Schichten. Und dafür, dass es 
funktioniert, gibt es viele Beispiele.

von Georg (Gast)


Lesenswert?

Michael K. schrieb:
> Kurzschluss ?
> Einen Empfänger auf Enable belassen ?
> Mit RS485 hast Du Dich mal länger als 20sek beschäftigt ?

Pöbelei ersetzt noch lange keine technischen Argumente. Was glaubst du 
denn, worin eine Kollision besteht, wenn nicht darin, dass 2 Sender 
gleichzeitig versuchen zu senden? Dazu muss man sich nicht 20 Sek mit 
RS485 beschäftigen, dafür genügt ganz normales logisches Denken. Und 
sofern man dazu überhaupt in der Lage ist, braucht man auch weniger als 
20 Sekunden.

Georg

von MCUA (Gast)


Lesenswert?

>> Was sagt denn die Norm, was man lesen soll, wenn von 2 verbundenen
>> Treibern einer 0 der andere 1 schreibt?
>Das ist Sache des Layer 2 und nicht Aufgabe des Layer 1.
Nö, das hast du nicht verstanden.
Der SpannungsPegel ist überhaupt da nicht definiert (und nicht 
defninierbar), und damit das Ganze schon von vorn herein schlecht/falsch 
geplant.
Und wenn irgentwas 'drüber' gelagertes das erkennen soll, kann das viel 
länger dauern, als wenn bereits auf Spannungs-Ebene eine Kollision 
detektiert wird (bsp mit dominantem Pegel).

von Wolfgang (Gast)


Lesenswert?

Michael K. schrieb:
> Nosnibor schrieb:
>> Was bei RS-485 fehlt, ist eine explizite Kollisionserkennung. Die
>> Hardware leistet das einfach nicht
>
> Lass den Receiver immer an und schau nach was der Transmitter raushaut.
> Wenn RX != TX dann Kollision.

Der Haken ist nur, das RS-485 nichtmal soetwas wie dominanten/rezessiven 
Buszustand kennt. Dadurch könnten beliebig undefinierte Buszustände 
auftreten, wenn zwei Busteilnehmer gegensinnig am Bus ziehen. Bei jedem 
Sender mag der Pegel noch als RX=TX erkannt werden, aber wie sieht das 
bei Busteilnehmern aus, die weiter weg liegen. Man muss also mindestens 
einen größeren Bereich mit ungültigen Pegeln auf dem Bus prüfen.

von Wolfgang (Gast)


Lesenswert?

Michael K. schrieb:
> Kollision ist dort ein normaler Vorgang und die Treiber sind explizit
> dafür geeignet wie übrigens bei CAN auch.

Der Unterschied ist nur, dass bei RS485 die Treiber zwar überleben, bei 
CAN aber, trotz Kollision, immer noch saubere Logikpegel auf dem Bus 
liegen, was man bei RS485 nicht behaupten kann.

von MCUA (Gast)


Lesenswert?

>SAE J1708 arbeitet mit RS-485 und ist auch für Multimaster geeignet.
>Der "Trick" ist dort, dass bei den Transceivern DI immer auf Low ist und
>nur DE zum Senden verwandt wird: DE High -> dominant -> DE Low ->
>rezessiv, Rest erledigen externe Pullups etc.
hier ist bei rezessiv der Driver nur disabled!

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.