Guten Tag Ich arbeite an einem Projekt mit CAN, was das Projekt genau für einen Zweck hat spielt hier jedoch keine grosse Rolle. Nun meine Fragen: 1. Wozu sind die Intentifier? Ich weis das sie über die Priorität entscheiden, doch das ist ja vermutlich nicht alles. Muss ich einer Mail-Box die auf receive konfiguriert wurde eine ID zuteilen oder ist dazu die Maske gedacht? 2.Was für eine Funtkion haben die Masken. So wie ich dies verstanden habe entscheiden sie welche Nachrichten von einem Knoten bearbeitet werden und welche nicht (Akzeptanzfilter). Falls ich alle Nachrichten zulassen will, muss ich die Maske auf 0xFF oder 0x00 setzen? Braucht eine Mail-Box die auf transmit konfiguriert wurde eine Maske? oder ist dies nur für Empfänger gedacht. 3. Macht es Sinn mehr als eine Mail-Box (MOb) als Empfänger bzw. als Sender zu konfigurieren? Wenn ja, wozu? Es ist ja nicht möglich zwei Nachrichten gleichzeitig zu versenden bzw. zu empfangen. Nun...Antworten auf eine oder mehrer Antworten wären herzlich Willkommen. Gruss David
Hallo, zu Deinen Fragen: In einem CAN-Netzwerk wird den Identifiern ein bestimmer Nachrichteninhalt zugeordnet. Beispiel: ID 0x00001 überträgt immer Temperatursignal vom Sensor1 ID 0x00002 überträgt immer Temperatursignal von Sensor2 ID 0x00010 übertragt immer eine Textnachricht (max 8 Zeichen) usw. Wie die IDs in einem CAN Netzwerk vergeben werden hängt von den Teilnehmern des CAN Netzwerks ab, wichtig ist, daß der Nachrichteninhalt einer ID immer gleich ist. Außerdem wird mit der ID die Priorität der Nachricht festgelegt. Niedrigere IDs haben eine höhere Priorität. D.h. wenn zwei CAN-Knoten zur selben Zeit senden möchten, setzt sich die Nachricht mit der niedrigeren ID durch. Einer Receive Mailbox muß man sowohl die Maske als auch die ID konfigurieren. Die Maske legt fest, welche Bits des Identifiers beachtet (Maske=1) und welche ignoriert (Maske=0) werden sollen. Somit kann man die Mailbox auf eine bestimmte Art von Nachrichteninhalten vorkonfigurieren. Mit der ID legt man fest, ob die Nachrichten wirklich in dieser Mailbox landen. Man kann das auch als eine Art Nachrichtengruppe ansehen. Beispiel von oben: Um die Temperatur eines beliebigen Sensors in einer gemeinsamen Mailbox zu empfangen muß diese wie folgt konfiguriert werden: Maske 0xFFFF0 ID 0x00000 Nur die oberen Bits vergleichen, diese müssen alle '0' sein. Um nur den Text zu empfangen, ist die Kombination diese: Maske 0xFFFFF ID 0x00010 Alle Bits vergleichen, der Nachrichten-Identifier muß genau 0x00010 sein um in dieser Mailbox empfangen zu werden. Transmit-Mailboxen brauchen keine Maske, hier muß die (eindeutige) ID angegeben werden, mit der die Nachricht versendet werden soll. Eine Maske macht keinen Sinn. Es kann Sinn machen, die Nachrichten auf mehrere Mailboxen zu verteilen: - um die Nachrichten vorzusortieren - um die CPU nicht nach jeder Nachricht zu unterbrechen indem man die Nachrichten erst einmal in den Mailboxen sammelt und dann 'am Stück' verarbeitet Gruß Bernd
Tach Bernd Geyer Vielen Dank für eine solch ausführliche Antwort, hat sehr zum Verständnis des CAN-Bus beigetragen Gruss David
Salüüü Leute... Ich habe noch eine weitere Frage bezüglich Identifier: Ich habe nun einen Master und einen Slave auf meinem Can-Bus. Der Master kann 20 verschiedene RemoteRequest-Frames an den Slave senden. Im Identifier der RemoteRequest-Frames kann ich nun jeder Anforderung, für einen bestimmten Wert, einen individuellen Identifier geben. So zeigt der Identifier also an, welcher Wert gefragt ist. Ich frage mich nun: Wie muss ich den Slave konfigurieren, dass er jederzeit "alle" diese RemoteRequest-Frames empfangen und zuordnen kann, damit er mit dem gwünschten Wert antwortet? Das Problem ist ja, dass ich nur 15 verschiedene MessageObjekte (Mailbox) habe, so kann ich also nur 15 verschiedene Identifier gleichzeitig unterscheiden. Und würde ich die Maske so einstellen, dass alle RemoteRequest-Frames empfangen werden, wie könnte der Slave da erkennen welches RemoteRequest-Frame welchen Wert anfordert?
Hallo zusammen, kann man überhaupt ein ID definiert und mit dem Mask diese ID wieder ignoriert. BeispielA:Ich möchte nur diese ID über Kanal 0 empfangen ID=0x080 Mask=7FF BeispielB:Ich möchte nur diese ID wieder über Kanal 0 nicht empfangen ID=0x080 Mask=77F Beim ersten Beispiel empfange ich nur die ID=0x80.Beim zweiten Beispiel empfange ich noch die 0x80 und auch weitere, obwohl ich diese ID(0x80)nicht empfangen will. Danke
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.