CAN: SID, Filter und Maske

OP #3211014
Lesenswert?

Hab hier aufm Steckbrett zwei PICs die fleißig Daten hin und 
herschieben, d.h. die SIDs (Standard-Identifizierer) werden richtig 
erkannt, bei falscher SID bleibt der Empfangspuffer leer bzw der alte 
Inhalt wird nicht aktualisiert (es ist schön wenn Dinge funktionieren 
wie sie sollen ;-).

Was aber hat es mit Akzeptanz-Maske + Filter auf sich, wenn die 
Kommunikation über die SIDs (vollständig?) gesteuert ist? Im Datenblatt, 
das an dieser Stelle wohl eher als eine Referenz zu den Registern zu 
sehen ist und keine tiefere Erklärung liefert, finde ich nichts.
#3211021
Lesenswert?

Wenn du einen CAN Controller dazu bringen willst, nicht nur auf ein paar 
wenige einzelne SIDs zu reagieren, sondern auf ein Bündel davon, dann 
kannst du mit der Maske jene Bits ausmaskieren, die für den Vergleich 
nicht relevant sind.

Ansonsten gehört es leider zur Standardprozedur von Forenteilnehmern, 
nicht den Typ zu verraten, um den es geht. Aber auch bei den PICs gibts 
verschiedene CAN Module.
OP #3211064
Lesenswert?

Ich mache mit CAN gerade meine ersten Gehversuche, ich hab das 
zurückgehalten, weil ich es nicht für wichtig hielt. Sind zwei 18F458 
mit MCP2551.


>nicht nur auf ein paar wenige einzelne SIDs zu reagieren, sondern auf ein >Bündel 
davon
Warum sollte man das haben wollen? Ist eine einzelne SID (SID = 
Adresse?) nicht besser als mehrere, was zur Verwirrung führen könnte? 
Oder seh ich das falsch und es steckt mehr dahinter?
Gast #3211084
Lesenswert?

Joachim ... schrieb:

> Oder seh ich das falsch und es steckt mehr dahinter?
Ja und ja.

Der Identifier soll den Botschaftstyp beschreiben, nicht unbedingt die 
Adresse des adressierten Teilnehmers. Sonst musst Du ja unterschiedliche 
Botschaftstypen in der Payload verklausulieren und verschenkst damit 
Bandbreite.
Gast #3211225
Lesenswert?

>Der Identifier soll den Botschaftstyp beschreiben,
Aber ist der Identifizierer denn nicht eindeutig? Oder hat das nichts 
damit zu tun?


Muß ich wirklich erst die CAN-Referenz von Bosch lesen um die 
Zusammenhänge zu verstehen?
#3211244
Lesenswert?

Die IDs adressieren nicht explizit einen bestimmten Controller, sondern 
definieren eine Botschaft oder einen Zustand. Also sowas wie "Lampe an". 
Welcher Controller sich für Lampen zuständig fühlt, der hört dann 
darauf.

Nun kann es aber sein, dass ein Controller sich für mehr Botschaften 
zuständig fühlt, als er einzelne IDs matchen kann. Sinnvollerweise 
stehen diese Botschaften dann in einem Block, der mit einem ID/Mask-Paar 
durch binäres maskieren identifiziert werden kann.

Wenn das CAN-Netz langsam oder darin generell wenig los ist, dann ist 
kann man sich das allerdings ggf. auch sparen und ohne ID-Erkennung 
seitens des CAN-Controllers arbeiten.
Gast #3211485
Lesenswert?

Du kannst mit der Maske z.B. definieren, daß in den Empfangspuffer 4 
alle Messages mit ID 0x1000 bis 0x100F gehen.
Dieser Puffer würde also die Messages mit ID 0x1000, 0x1001, 
0x1002...0x100F akzeptieren.
Wenn Du das machst, muß natürlich sichergestellt sein, daß zwischen zwei 
Messages, die in diesen Puffer gehen, genug Zeit ist, damit Du die erste 
rechtzeitig herausholen kannst, bevor die zweite kommt.

Wie A.K. schon sagt:
Eine Message geht nicht zwangsläufig an nur einen bestimmten Teilnehmer.
Es ist oft eher so:
Ein Gerät schickt unaufgefordert zyklisch eine Information (z.B. 
Temperatur von Sensor X) mit einer vorher festgelegten Message-ID weg, 
und jeder andere CAN-Teilnehmer kann selbst entscheiden, ob er diese 
Information haben will oder nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren