Hi ich will eine Übertragungsstrecke über etwa 200 m aufbauen. Welche der o.g. Verfahren ist sicherer bez. Datenverlust. Auf Geschwindigkeit kommt es nicht an, der Probrammieraufwand bei CAN sei auch als unwichtig gesehen. Gibt es dann überhaupt einen Unterschied?
War es nicht so, dass der CAN-Bus eine Art Weiterentwicklung der RS485 ist? Somit ist ein Vergleich meiner Ansicht nach ziemlich hinfällig, wenn man sich nicht um Fehlerbehandlung und so kümmern will.
RS485 definiert nur die Signale auf der Leitung. Was für Bits du überträgst ist deine Sache. Für CRC/ECC/Retry bist also ausschliesslich du selbst verantwortlich. Bei CAN wird CRC/Retry-Handhabung bereits vom Controller erledigt. Dafür ist der Controller etwas umständlicher anzusprechen.
gut, der Max485 hat also kein eigenes CRC... damit wäre die Entscheidung gefallen...
die CAN-Leitungstreiber selbst haben das auch nicht... Aber sie haben einen grossen Vorteil gegenüber RS485-Treibern: es gibt nicht den üblichen H- und L-Pegel auf der Leitung, sondern einen dominanten und einen rezessiven Pegel, damit sind Hardwarekollisionen schon mal ausgeschlossen. Ansonsten kommt es darauf, welche Art von Netzwerk du aufbauen willst. Der übliche RS485-Bus ist erstmal wesentlich leichter zu implementieren, da du einfach mit einem x-beliebigen MC rangehen kannst. Und wenn du dann eine Single-Master-Architektur fahren kannst, ist das ganz easy. Master fragt -> nur der angesprochene slave antwortet. Kompliziert wirds nur, wenn du ein Multimaster-Bus aufbauen willst/musst. Dafür ist CAN wesentlich besser geeignet, auch wenn man dafür spez. CAN-Controller braucht. Kosten aber nicht die Welt, ich setz am liebsten den MCP2515 ein.
hallo zusammen ich habe mal eine Frage zu diesem Thema, ich benötige einen Umsetzer von seriel auf rs 485. Gibt es da einfache Schaltungen und kennt jemand einen guten Link mit Erklärungen. danke für eure Hilfe.
Stück Kupfer. RS485 ist nämlich schon seriell. ;-) Aber ich nehme an, dass du mir "seriell" tatsächlich RS232 meinst. Siehe http://www.mikrocontroller.net/forum/read-1-398222.html#398559
Warum ist eigentlich eine Hardwarekollision ausgeschlossen, wenn ich die dominanten und einen rezessiven Pegel benutze?
Ausgeschlossen ist sie nicht, aber das dominante Bit setzt sich durch, und wenn man den Zustand auf dem Bus überwacht, sprich das Signal zurückliest, das man gerade auf die Leitung gestellt hat, es aber nicht liesst, weil jemand anders ein dominantes auf dei Leitung gelegt hat, dann nimmt man "die Beine" vom Bus und wartet bis der Bus wieder freigegeben ist. Das übernimmt dann der CAN-Controller. Im Gegensatz zu RS485-Transceivern sind die CAN-Transceiver auch extra so aufgebaut, dass man das auch detektieren kann. RS485-Transceiver sind da niederohmiger. (Hoffentlich habe ich nicht zuviel wirres Zeug geschrieben...)
genauso isses. Der CAN-Controller liest mit, was auf der Leitung passiert und zieht sich beim Senden sofort vom Bus zurück, wenn gelesener Pegel (dominant) nicht mit dem gesendeten (rezessiv) übereinstimmt. Und genau diese Struktur macht den CAN so einfach multimasterfähig, d.h. jeder kann jederzeit versuchen, auf den Bus zuzugreifen, ohne sich vorher mit den anderen abzusprechen oder eine Zeitscheibe zugeteilt zu bekommen (klappt zwar nicht immer sofort, aber wenn der Bus nicht überlastet ist, irgendwann schon) Hardwareseitig sind die Treiber so ausgelegt, dass sich 2 "gegeneinander" sendende Ausgangsstufen weder überlasten oder undefinierte Pegel erzeugen können.
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.