Forum: Fahrzeugelektronik automotive can zuverlässigkeit


von H. R. (hacker_r)


Lesenswert?

Hi
kennt sich jemand mit CAN error rates aus? 125 kbs, DLC 8, standard 
frame(nicht extended), kein FD

ich muss irgendwelche Daten (RGB Wertetabelle, 500 kilo Byte Interior 
Beleuchtung) in ein auto CAN netzwerk an mein Steuergerät schicken.
Soll ich über meine Nutzdaten einen zusätzlichzen CRC machen? Also es 
geht drum
a. jede message zusaetzlich über ein CRC zu schützen
b. nur die gesamt Menge allerdaten Daten über ein CRC schützen!
Was meint ihr?

Danke

von Richard Z. (richard_z65)


Lesenswert?

Mach lieber einen Zähler mit rein, z.b. 4bit. Damit erkennst du 
zumindestens, ob du ein Telegramm verloren hast. CRC32 ist bei CAN schon 
mit dabei, du bekommst also sowieso nur komplette Telegramme, da die 
Hardware fehlerhafte direkt verwirft.

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Soll ich über meine Nutzdaten einen zusätzlichzen CRC machen? Also es
> geht drum

Die haben doch schon eine CRC. Was nicht geschützt ist, ist die ID! Es 
ist also sinnvoll, die ID nochmal in die Nutzdaten mit zu übernehmen, 
damit die zusätzlich von der CRC geschützt wird.

H. R. schrieb:
> b. nur die gesamt Menge allerdaten Daten über ein CRC schützen!
Das ist schon deutlich sinnvoller. Das hilft auch gegen Fehler im 
Software-Protokoll.

von Lexa (Gast)


Lesenswert?

Wie wäre es mit dem Einsatz von ISO-TP?
Ggf. UDS Kommandos 34, 36, 37 implementieren und im 36er dann Blöcke zu 
4k übertragen.

von CAN Profi (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Was nicht geschützt ist, ist die ID
Auch die CAN Id ist in die Lowlevel-CRC Berechnung des CAN Controllers 
einbezogen. Anders macht das keinen Sinn.

Der professionelle Ansatz wurde oben schon genannt.
ISO15765 als Transportprotokoll (4k-Blöcke) und dann per UDS
übertragen. Wenn jeder 4k-Block nochmal eine Software CRC hat, bist du
auf der sicheren Seite. Die CRC kannst du on the fly beim Empfang
mitrechnen, so kannst du jeden 4k Block direkt bestätigen.

von Michael B. (laberkopp)


Lesenswert?

H. R. schrieb:
> Soll ich über meine Nutzdaten einen zusätzlichzen CRC machen?

Nein.

CAN ist schon geprüfsummt.

Das Problem bei CAN ist eher, daß etwas nicht ankommt. Da reicht es, 
wenn eine der CAN Leitungen in einem etwas anderen Biegeradius verlegt 
ist als vorgesehen.

Und natürlich wenn etwas Hardware am Bus kaputt geht steht gleich der 
ganze Bus.

Extem frsgiles Zeug das viel Spass macht wenn man sein Leben spordischen 
Fehlern hinterherjagen will.

Man braucht also ein perfektes Fehlerreporting, was denn nun der 
angebliche Grund ist, warum etwas mal wieder nicht funktioniert.

von Worker (Gast)


Lesenswert?

Hallo,

Wenn der CAN Bus derart fragil wäre, hätte sich der Bus nicht im 
Automotive Bereich so ausgebreitet.

Beim Design eines CAN Busknotens wird Wert darauf gelegt, dass Fehler 
der ECU nicht das gemeinsame Übertragungsmedium beeinträchtigen.

Ein Zähler in den Botschaften macht Sinn zur Ausfallerkennungen.

Gruss Worker

von Rolf M. (rmagnus)


Lesenswert?

Michael B. schrieb:
> H. R. schrieb:
>> Soll ich über meine Nutzdaten einen zusätzlichzen CRC machen?
>
> Nein.
>
> CAN ist schon geprüfsummt.

Im Automotive-Bereich ist eine zusätzliche End-to-End-CRC nicht so 
unüblich, denn die eingebaute CRC des CAN sichert nur die Kommunikation 
von CAN-Controller zu CAN-Controller ab.

> Das Problem bei CAN ist eher, daß etwas nicht ankommt. Da reicht es,
> wenn eine der CAN Leitungen in einem etwas anderen Biegeradius verlegt
> ist als vorgesehen.

So empfindlich ist CAN nicht. Was haben wir da schon für Schindluder 
damit getrieben, ohne dass ihn das in irgendeiner Weise beeinträchtigt 
hätte.

> Und natürlich wenn etwas Hardware am Bus kaputt geht steht gleich der
> ganze Bus.

Auch das ist nur bedingt richtig. Die CAN-Controller haben einen 
Mechanismus, über den sie sich schrittweise vom Bus zurückziehen, wenn 
sie Fehler bemerken. Natürlich kann damit nicht alles abgedeckt sein. 
Aber das ist immer so, wenn alle Teilnehmer parallel an einem Strang 
hängen.

von Fabian F. (fabian_f55)


Lesenswert?

Bei 125kbit wirds wohl eher nicht in einem Fahrzeug sein?
Die frage die sich immer stellt ist was passiert wenn Daten falsch 
empfangen werden? Brennt die Bude ab oder hat das Licht die falsche 
Farbe?
RGB klingt für mich nicht nach etwas elementar wichtigen. Nachdem man 
wie bereits erwähnt bei CAN davon ausgehen kann, dass jede einzelne 
Frame korrekt ist, muss man nur Prüfen ob man alle Frames empfangen hat 
(Böswillige manipulation mal ausgenommen).
Ich würde also einen Header verwenden, der ankündigt wie viele Frames 
kommen und dann mit einem Zähler sicherstellen, dass alle empfangen 
wurden.

von Thomas (kosmos)


Lesenswert?

zur Eingangsfrage...ja CAN ist gut durchdacht, man muss eben nur darauf 
achten den Bus nicht vollzustopfen, denn das sich ein Knoten langsam von 
alleine zurückzieht muss auch programmiert werden, von Haus aus macht er 
das nicht das Protokoll schreibt es nur so vor.

von CAN Profi (Gast)


Lesenswert?

Thomas O. schrieb:
> denn das sich ein Knoten langsam von
> alleine zurückzieht muss auch programmiert werden, von Haus aus macht er
> das nicht das Protokoll schreibt es nur so vor.

Die Fehlererkennung und die Fehlerzähler sind schon im 
CAN-Controllerbaustein
integriert. Bis kurz vor Bus_off kann der Controller Fehler selbst 
handeln.
Da muss man keine Software dafür schreiben. Erst wenn der Fehlerzähler 
bei 255 steht (Bus Off) muss der es im Microcontroller Code geben, der 
den CAN-Controller resettieren kann.

von Thomas (kosmos)


Lesenswert?

Suchst du eine fertige Lösung? Ansonsten wäre der ATMega16M1 ein µC der 
CAN als auch LIN kann.

Hab das Thema damals nur überflogen, ich glaube dir das man mit dem 
automatischen Bus_off war aber der Meinung das man hier eingreifen kann 
in dem man den Zähler manipuliert bzw auch zurücksetzen kann.

von Le X. (lex_91)


Lesenswert?

ISO-TP wäre bei dieser Datenmenge das Mittel der Wahl, es wurde genau 
für das entwickelt was du vorhast.
Dieses Protokoll wird (über UDS) auch benutzt um z.B. die Firmware zu 
updaten, d.h. es macht eigentlich genau das was du willst.
Auf jeden Fall besser als wenn du dir dein eigenes Transportprotokoll 
häkelst.
Solche Späße wie Zähler oder CRC auf Protokollebene brauchst du dann 
auch nicht.

Auf UDS kannst du theoretisch verzichten. Außer es läuft eh bereits auf 
deiner ECU, dann kannst du es ruhig benutzen.

PS: CAN ist wohl eines der robustesten Bussysteme und funktioniert auch 
under abartigen Bedingungen oder wenn es weit außerhalb der 
Spezifikation betrieben wird.

: Bearbeitet durch User
von Philipp G. (geiserp01)


Lesenswert?

Le X. schrieb:
> PS: CAN ist wohl eines der robustesten Bussysteme und funktioniert auch
> under abartigen Bedingungen oder wenn es weit außerhalb der
> Spezifikation betrieben wird.

und auch mit abartigen Biegeradien ;)

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.