Forum: Mikrocontroller und Digitale Elektronik CAN InteractionLayer / CANoe / Zyklisches Senden/Empfangen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thorben (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich hab eine kleine CAN ECU Hardware gebaut und steuere diese 
mittels CANoe inklusive Panel Designer an.

Dazu hab ich eine DBC Datei mit InteractionLayer erstellt und es 
funktioniert alles wunderbar. Im CANoe Panel Designer wurden die Signale 
auf verschiedene Controls gelegt. Die CAN Frames werden zyklisch nach 
der DBC Beschreibung gesendet. Meine CAN ECU Hardware überprüft den 
Identifier und gibt den Payload entsprechend an die SPI oder I2C 
Schnittstelle.

Jetzt hätte ich gerne dazu ein paar Fragen:

- Wieso werden CAN Nachrichten in vielen Produkten zyklisch gesendet, 
reicht es nicht bei einer Änderung das Frame zusenden? Es würde doch den 
Traffic auf dem CAN Bus reduzieren oder nutzt man das Zyklischesenden 
als Deadlockerkennung?


- Wie behandelt Ihr zyklische Nachrichten, legt Ihr den Payload in ein 
Buffer und vergleicht diesen Buffer mit der Nachricht davor und wenn 
sich nix geändert hat verwerft Ihr die Daten? So würde ich es machen um 
SPI,I2C und CPU zuentlasten oder spricht etwas dagegen?

von Heinz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thorben schrieb:
> Wieso werden CAN Nachrichten in vielen Produkten zyklisch gesendet,
> reicht es nicht bei einer Änderung das Frame zusenden?

In der dbc kannst du Signale onChange definieren. Dann wird nur bei 
Wertänderung geschickt.

Viele Anwendungen brauchen aber zyklische Daten um bspw. eine
Timeouterkennung durchzuführen und Ersatzreaktionen anzustossen,
Werte als veraltet zu erkennen, Funktionen einzufrieren usw...

Oft spielt auch die ISO26262 eine Rolle: Wenn bspw der Empfänger 
ASIL-Funktionen implementiert, für die er gültige und vertrauenswürdige 
Daten in ASIL-Qualität vom Sender benötigt, geht das meines Wissens nur 
mit zyklischem Senden sowie Sequenzzähler und CRC.

von Heinz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thorben schrieb:
> Wie behandelt Ihr zyklische Nachrichten, legt Ihr den Payload in ein
> Buffer

Man könnte einen Buffer anlegen und ein memcmp machen oder eine CRC 
rechnen.
Ich würde vermutlich die Daten 1 zu 1 an SPI, I2C weitergeben, 
vorausgesetzt die CAN-Wiederholrate ist nicht zu hoch. 10ms Sende-Raster 
würde ich als absolut problemlos betrachten.

von Thorben (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke Heinz für deine Erklärungen, damit ergibt alles einen Sinn.

von rcc (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thorben schrieb:
> - Wieso werden CAN Nachrichten in vielen Produkten zyklisch gesendet,
> reicht es nicht bei einer Änderung das Frame zusenden? Es würde doch den
> Traffic auf dem CAN Bus reduzieren oder nutzt man das Zyklischesenden
> als Deadlockerkennung?

Nachdem CAN per Definition nicht deterministisch ist und manchmal 
Messages einfach auch mal verloren gehen (Bus grad voll, Störung von 
außen) müsste man sich für reines onChange oft noch irgend einen 
Handshake basteln. Da ist stupide zyklisch senden der einfachere Weg. 
Der Traffic kostet ja nichts solange man den Bus nicht ans Limit fährt.

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]
  • [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.