Hallo zusammen
Bin wieder mal auf Eure geschätzte Hilfe angewiesen.
Gibt es eine Möglichkeit, per Hardware oder Software festzustellen, ob
die Abschlusswiderstände in einem CAN Bus korrekt eingesetzt sind, oder
ob einer fehlt?
Gruss Andy
Die Abschlusswiderstände sollten nur beim Aufstarten detektiert werden.
Im Anhang findest Du das aktelle Schema der Schaltung.
Diese könnte aber noch angepasst werden, falls es eine Transciever geben
würde, welcher den Bus ausmessen könnte, um eine Aussage über die
Terminierung zu machen.
Habe mir gedacht, dass es evtl. einen Transciever gibt, der entweder
interne zuschaltbare Abschlusswiderstände, oder ein Fehlerausgang
besitzt,
welcher bei unangepasster Leitung ein Error ausgibt.
(Wenns sowas noch nicht gibt, sollte man es meiner Meinung nach
noch erfinden)
Hattet Ihr noch nie das Problem, dass die Abschlusswiderstände vergessen
wurden dazu zu schalten? (Stecker nicht gesteckt, Jumper vergessen...)
Bereits mit paar wenigen Serviceeinsatz wären die Mehrkosten wieder
drin.
andy schrieb:> Bereits mit paar wenigen Serviceeinsatz wären die Mehrkosten wieder> drin.
Was wiederum das Problem Deines/Euren Knden ist.
Einige Hersteller von CAN-Geräten haben im Auslieferungszustand die
Busterminierung immer aktiviert. Bei mehr als drei Widerständen läuft
der Bus nicht und der Kunde muss sich gezwungenermaßen mit der
Bustopologie auseinander setzten...
Ähnlich wie bei Consumergeräten (Netzstecker gesteckt?) könnte unter den
ersten Fragen bei der Problemlösung die Frage nach den
Abschlußwiderständen sein.
Habe gerade gesehen, dass der MAX3059 über interne Abschlusswiderstände
verfügt, welche sich über ein externes Signal Ein- und Ausschalten
lassen.
Wäre ja schon mal ein Ansatz.
Wäre einfach schön, wenn's eine einfache Schaltung gäbe, mit der man
überprüfen könnte, ob die beiden Abschlusswiderstände vorhanden sind.
Dies müsste doch über einen Strommessung machbar sein.
andy schrieb:> Wäre ja schon mal ein Ansatz.
Nach welcher Logik willst Du dies automatisieren?
Wenn jedes Gerät so einen Transceiver hat und eine Widerstandmessung
macht, dann wird es ein wirres zu- und abgeschalte.
Insofern müßtest du in den Geräten konfigurieren, ob sie die jeweils
letzten sind. Ist zwar häufig einfacher als das Gerät zu öffnen und den
Jumper zu setzen. Das eigentliche Problem dürfte aber nicht gelöst
werden.
Du könntest ein SDO-Register definiere mit welchem Du den
Abschlusswiderstand zu- oder wegschaltest.
Mehr automatismus ist hier vermutlich Overkill und zu teuer.
Allein die Tatsache, dass du schon den ganzen Montag morgen (an dieser
nicht lösbaren Aufgabe) herum machst rentiert sich nicht....
Das Problem beim CAN wie auch RS485 ist, das ohne R nichts geht und bei
zu vielen R ebenfalls Ärger gibt! Daher mache viele eine Leitung und
setzen dort den Abschluss-R bzw bei BUS-Modulen wir ein R-Modul links
und rechts am BUS angestöpselt. Bei PhoenixContact gibt es diese Gehäuse
mit BUS-Öffnung. Da wird ein Gehäuse in diesem Anwenungsfall mit einem
Widerstand versehen und davon kommt jeweils eines links und rechts an
die Module.
Eignetlich ist es kein Problem!
Unsere Geräte haben hier prinzipiell zwei identische M12 Stecker,
beschriftet mit In und Out.
Wird Out nicht verwendet/benötigt, kommt ein M12-Blindstecker mit
Terminierung drauf. Das ist im Maschinenbau soweit ich weiß auch der
führende Standard - siehe Wago, Siemens, Lumberg...
Icke schrieb:> Was wiederum das Problem Deines/Euren Kunden ist.>> Einige Hersteller von CAN-Geräten haben im Auslieferungszustand die> Busterminierung immer aktiviert. Bei mehr als drei Widerständen läuft> der Bus nicht und der Kunde muss sich gezwungenermaßen mit der> Bustopologie auseinander setzten...
Ob dies einen kundenfreundliche Lösung ist, sei mal dahingestellt...
Steffen R. schrieb:> Nach welcher Logik willst Du dies automatisieren?> Wenn jedes Gerät so einen Transceiver hat und eine Widerstandmessung> macht, dann wird es ein wirres zu- und abgeschalte.
Wir haben 5 CAN Knoten innerhalb des Gerätes und 1 bis max. 3 Knoten
ausserhalb des Gerätes. Innerhalb des Gerätes ist die Sache eigentlich
ziemlich klar, da sich hier nie etwas ändert.
Das Problem ist die Steckerleiste, wo der CAN- Bus nach aussen geht.
Ist ein externer Knoten eingesteckt, braucht's auf der internen
Steckerleiste keinen Widerstand, jedoch auf dem letzten externen
Geräten.
Die Leitungslänge beträgt max. ca. 3-4m. Ich gehe also davon aus, dass
ich auch mit fehlendem 2. Abschlusswiderstand und mir geringer Baudrate
mit dem entferntesten Knoten kommunizieren kann.
Da ich die Konfiguration der Geräte kenne, könnte ich über ein Menu
definieren, welches externe Gerät am Ende der Kette den
Abschlusswiderstand einschalten soll. Dies würde dann über ein
entsprechendes Kommando dem Endgerät übermittelt, welches dann den
Widerstand einschaltet.