www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gültigkeit von CAN Nachrichten -> Frage


Autor: Se (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus

Ich habe mal ne Frage wegen den Gültigkeiten von Nachrichten die übern 
CAN Bus gehen sollen.
Angenommen beim Sender staut sich die Sendewarteschlange und eine im 
Puffer befindliche Nachricht muss warten. Es gibt ja Situationen in 
denen eine Nachricht ihre Gültigkeit verliert, richtig?
Wie macht man das in der Praxis? Gibt es zu jedem Identifier eine 
Look-up-Tabelle wo die Gültigkeit einer jeden ID gespeichert ist?

gruß
S

Autor: Willivonbienemaya .. (willivonbienemaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei CAN ist das nicht so.

Bei einem Protokoll, dass über CAN überträgt, kann das so sein.

Hast du noch konkretere Angaben was du vor hast?

Autor: Se (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll ne Art Gateway/Bridge zwischen 2 CAN Netzen werden.
Es gibt nen bestimmten Zyklus in dem der Datenaustausch erfolgt. Daher 
sammeln sich CAN Nachrichten an. Und ich dachte, ich muss jene aus der 
Warteschlange löschen, die eh keine Gültigkeit mehr haben.

Autor: Se (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat das vielleicht was mit dem "Earliest Deadline First" gemeinsam?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Se wrote:

> Angenommen beim Sender staut sich die Sendewarteschlange und eine im
> Puffer befindliche Nachricht muss warten.

Wenn Du eine Sendewarteschlange haben willst, mußt Du sie in Software 
emulieren.

Der CAN-Bus selber hat keine Warteschlange, alle Nachrichten werden 
streng nach Priorität (lowest ID first) gesendet.


Nachrichtenm die veralten können, sollte man eben nicht in eine 
Warteschlange packen, sondern einfach direkt in einen der 15 Datenpuffer 
stellen.
Dann setzt man einen Timeout auf, der dann diesen Puffer wieder 
freigibt, wenn die Nachricht noch nicht gesendet wurde.
Dabei auf die richtige Reihenfolge achten, damit nicht versehentlich die 
Nachricht zerstört wird, wenn sie gerade gesendet wird.


Peter

Autor: Se (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dort in den einzelnen Datenpuffern kann es aber auch sein, dass mal 
nicht gesendet wird und neue Daten nachrücken.

Du meinst, es mit einem Timeout zu lösen. Das ist OK.

Wenn ich dennoch ein Earliest-Deadline-Fist Verfahren einbaue, wie kann 
ich dann sagen welche ID welche Deadline hat?
Weis das nur der "Erbauer" des CAN Netzes?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Se wrote:

> Wenn ich dennoch ein Earliest-Deadline-Fist Verfahren einbaue, wie kann
> ich dann sagen welche ID welche Deadline hat?

Wenn die Nachrichten nach ID gesendet werden dürfen, kannst Du soviele 
Nachrichten einstellen, wie der CAN-Chip Sendepuffer hat.

Wenn Du eine andere Reihenfolge wünschst, mußt Du einen Softwarepuffer 
programmieren und darin eine Dir genehme Sortierung vornehmen. Es kann 
dann aber nur ein Sendepuffer des CAN-Chips verwendet werden.


Der Timeout muß nun prüfen, ob die Nachricht noch im Softwarepuffer ist 
oder schon im Senderegister.
Das Senderegister kann man dann disablen, muß aber noch testen, ob 
gerade kein  Senden erfolgt (Flag testen).
Ist das Senden beendet, kann das nächste Paket aus dem Softwarepuffer 
geholt werden.


Peter

Autor: Null (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Bus dauernd am Anschlag laeuft, dh dauernd verstopft ist sollte 
man sich ueberlegen, ob man noch auf der richtigen Spur ist. Allenfalls 
sollte man die Geschwindigkeit um eine Groessenordnung erhoehen (bringt 
nur was bei grossen Blocklaengen), einen anderen Bus waehlen, einen 
zweiten Bus einziehen, das Meldungskonzept ueberdenken. Ich fuehl mich 
nicht mehr wohl, wenn mein Bus mehr als 30% belastet ist. Ist natuerlich 
auch eine Sache der Arbitrierung. Wenn die Arbitrierung sauber ist, kann 
man dauernd auf 100% gehen.

Autor: Null (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergass noch : Solange eine Meldung innerhalb einer maximale Wartezeit 
abgeliefert wird geht's noch. Unbrauchbar wird's wenn keine maximale 
Wartezeit mehr gibt.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.