Forum: Mikrocontroller und Digitale Elektronik CAN Bus?


von Markus Hagebusch (Gast)


Lesenswert?

Ola,
ich brauche Unterstützung im Bereich des CAN Bus. Mein Problem ist das 
ich ein Feld von Daten verschicken möchte und nicht darauf komme wie 
dieses zu realisieren ist. Desweiteren kommt noch dazu das ich 
spätestens alle 4 Nachrichten eine Steuernachricht versenden muß. Hat 
jemand Ideen wie dieses zu realisieren ist?
Was noch wichtig ist, ich habe für die Aufgabe nur eine ID zur 
Verfügung! Bedankt für jegliche Antwort!
MfG Markus

von Klaus (Gast)


Lesenswert?

Du musst ein Protokoll definieren und Deine Daten in Abschnitten von je 
max. 8 Byte versenden.

von Rahul, der Trollige (Gast)


Lesenswert?

Wie groß ist das Feld?
Klaus hat es schon geschrieben: Du brauchst ein Protokoll, das die Daten 
formatiert.
Wenn du nur eine ID zur Verfügung hast, mußt du ein Datenbyte (oder auch 
mehr) dafür "opfern".
Z.B. könnte man das erste Byte dafür benutzen:
Durch setzen des MSB wird ein Datentransport signalisiert.
Die restlichen sieben Bit werden dann als Zähler für das aktuelle Feld 
benutzt (muß man nicht unbedingt, wenn man die Reihenfolge einhält - bei 
UDP-Versand ist sowas sehr hilfreich...).
Ist das MSB nicht gesetzt, handelt es sich um ein Komando...
Man könnte es auch so signalisieren, dass Datenrahmen, die 8Byte Daten 
mitführen als Daten-Nachricht und Datenrahmen mit weniger als 
Comando-Nachricht interpretiert werden.

von Markus Hagebusch (Gast)


Lesenswert?

Ja genau um dieses Protokoll geht es mir ja nun auch wie baut man das 
auf?

von Florian (Gast)


Lesenswert?

aja wie gesagt. im ersten Paket setzt du das msb des ersten bytes um 
anzuzeigen das es das erste paket deines feldes ist. in den folgenden 
nachrichten setzt du es nicht, aber du benutzt die restlichen sieben bit 
des ersten bytes um zu numerieren wie die daten zusammengehören.

Gruß
Florian

von Smartie (Gast)


Lesenswert?

Schickst 7 Byte Daten das 8. Byte nimmst Du 4 Bit um die Frames 
hochzuzählen (0-F) und 4 Bit für die Checksumme. Damit kannst Du dann 
16x7 Byte übertragen.
oder Frame 0 als Steuerframe und 1-F als Datenframes, die müssen dann 
auch nicht unbedingt zeitlich aufeinander folgen und es kann auch mal 
eine Botschaft verloren gehen, ohne daß es Datenmüll gibt.Auch könntest 
Du nur die Daten senden, die sich geändert haben und nur bei jedem 10. 
mal komplett alle Daten.

könnte also z.B. so aussehen 
0-1-2-3-0-4-5-6-0-7-8-9-0-a-b-c-0-d-e-f-0-1-2-3 usw.

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
Noch kein Account? Hier anmelden.