Filterparameter beim CAN-Bus verstehen.

Hi NG, ich habe verschiedene Schaltungen mit Vernetzung durch den CAN-Bus entwickelt. Funktioniert auch ganz ordentlich.

Ein wesentlicher Bestandteil wird aber die Filetrung der Nachrichten sein. Leider tue ich mich noch immer schwer, die Auswirkungen der Parameter Filter und Maske zu druchschauen.

Um die Konsequenzen der EInstellungen zu testen habe ich eine kleine Software geschrieben. Ich suche aber immer noch nach einer einfachen Rechenvorschrift mit irgendwelchen logischen Verknüpfungen die mir dann sagt ob die Message durchkommt oder nicht.

Hier

formatting link
habe ich die einzige Stelle gefunden, wonach man zunächst die CAN-ID mit der Maske UND-verknüpfen soll.

Das Ergebnis wiederum soll mit dem Filter UND-verknüpft werden. Sofern das Ergebnis dem Filter entspricht, kommt die Message durch.

Leider kann ich die Beispiel nicht so nachvollziehen.

Stimmt die Rechenvroschrift so ?

Gruss Nico

Reply to
Nicolas Nickisch
Loading thread data ...

Nicolas Nickisch schrieb:

Fast: Das Ergebnis wird mit dem Filter(Code) verglichen, nicht einfach ver-UND-et.

--
Gruesse
Stephan
Reply to
S.Urban

Nicolas Nickisch schrieb:

Aha, also hat sich in dem Punkt seit Juni 2007 wenig getan ;-)

Also zunächst einmal ist dort die Rede von CAN-ID, Akzeptanzmaske und Akzeptanzcode. Die beiden letzteren zusammengefasst sollen dann wohl der Akzeptanzfilter sein.

Welchem Filter? Du meinst sicherlich den Akzeptanzcode und das was Du schreibst steht da auch gar nicht. Da wird nichts zweimal UND-Verknüpft sondern das _Ergebnis_ der UND- Verknüpfung von ID und Maske wird mit dem Akzeptanzcode _verglichen_.

Also in C: if ((acc_mask & can_id) == acc_code)) ich_bin_drin;

Ja, wenn man die von Dir dazugedichtete 2. UND-Verknüpfung und die verwurschtelung der Begriffe Filter und Akzeptanzcode weglässt bzw. korrigiert. Lies Dir das doch in Ruhe nochmal durch, vielleicht auch meine Antwort von Damals (Vorsicht! da ist die Rede von "Filter", meint aber genau das was in dem PDF mit "Akzeptanzcode" gemeint ist. Ausserdem diente meine Beschreibung eher der Anschauung wie sich die Parameter auswirken denn als 1:1 Vorlage für eine zu schreibende Bedingung in einem Programm).

Jörg.

Reply to
Jörg Schneide

So hatte ich das auch interpretiert. Nach der Literatur kommen die IDs durch, die am Ende der Prozedur dem Filter entsprechen.

"S.Urban" schrieb im Newsbeitrag news:gtn2np$ru4$ snipped-for-privacy@news.motzarella.org...

Reply to
Nicolas Nickisch

Ganz einfach:

Die Maske gibt an, _welche_ Bits dir überhaupt wichtig sind.

Der Filter gibt an, _wie_ diese Bits gesetzt sein müssen, damit die Nachricht durchkommt.

--
Thomas Kindler
Reply to
Thomas Kindler

"Jörg Schneide" schrieb im Newsbeitrag news:49ff12b8$0$31347$ snipped-for-privacy@newsspool4.arcor-online.net...

Es hat sich eigentlich viel getan. Aber als Hobby-Bastler muss man gelegentlich noch die Brötchen verdienen. Da bleibt so manches liegen. Obendrein muss man sich oft nach längerer Pause wieder in die Materie inklusive der eigenen Projekte einarbeiten. Bislang geht es eigentlich sogar ohne Filterung. Ich würde aber gerne den µC etwas entlasten. Die letzten Versuche haben den µC allerdings komplett taub gemacht.

Reply to
Nicolas Nickisch

Nicolas Nickisch schrieb:

Achso, das erklärt natürlich einiges. Es klang zunächst irgendwie nicht nach Hobby.

Welchen verwendest Du denn? Wenn Du alle Bus-Teilnehmer selbst programmierst hast Du zumindest den Vorteil das Du bei der Adressvergabe frei bist. Um komplizierte Filter zu umgehen kannst Du vielleicht auch jedem nur eine ID zuordnen und weitere Informationen über die Art des Inhalts in den Daten verschicken. So hättest Du einen Kompromiss aus Entlastung des Prozessors und Aufwand bei der ID-Zuordnung und Filtererstellung.

Ansonsten ist natürlich eine ID-Vergabe aufgrund der binären Filterwirkung sinnvoll, also z.B. so das man die untersten 2, 3, oder 4 Bits (je nach Anzahl der versch. IDs die der Teilnehmer empfangen soll) für jeden Teilnehmer auf don't care setzt, und die oberen fest zuordnet. In dem Beispiel im PDF ist es genau umgekehrt, es werden Frames mit allen Kombinationen der höherwertigen Bits durchgelassen was vielleicht in Deinem Fall überhaupt nicht sinnvoll ist.

Senden kann schliesslich jeder was er will und solange Du das bestimmst macht es Sinn die IDs rein aus Empfängersicht zu verteilen.

Eine andere Frage ist ob Du die Priorisierung der IDs nutzt. Ich vermute mal das dies keine grosse Rolle spielt, vergib einfach die niedrigsten IDs für die wichtigsten Daten.

Jörg.

Reply to
Jörg Schneide

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.