www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN ID/MASK (AT89c51cc03)


Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernd Geyer (bege)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach Bernd Geyer

Vielen Dank für eine solch ausführliche Antwort, hat sehr zum 
Verständnis des CAN-Bus beigetragen

Gruss David

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an Bernd Geyer für die ausführliche Eklärung.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.