CAN ACK Slot

Gast #3742621
Lesenswert?

Hallo zusammen,
ich habe eine kleine CAN Grundlagen Frage.

Folgende Behauptungen:

 - Jeder CAN Contoller (z.B. TJA1040) setzt beim korrekten Empfang einer 
CAN Nachricht das ACK Bit
 - Dies erfolgt unabhängig vom µC
 - Evtl. vorhandene Filter haben darauf keinen Einfluss
 - Wenn der Sender kein ACK bekommt sollte nach einer bestimmten Zeit 
ein Fehler erkannt werden

Ist das so korrekt oder gibt es Abweichungen?

Gruß Hans
Gast #3742685
Lesenswert?

Hans schrieb:
>  - Jeder CAN Contoller (z.B. TJA1040) setzt beim korrekten Empfang einer
> CAN Nachricht das ACK Bit
falsch

>  - Dies erfolgt unabhängig vom µC
CAN Controller kann bestandteil des µC sein, muss aber nicht

>  - Evtl. vorhandene Filter haben darauf keinen Einfluss
falsch

>  - Wenn der Sender kein ACK bekommt sollte nach einer bestimmten Zeit
> ein Fehler erkannt werden
falsch, nach einer bestimmten Anzahl Wiederholungen

> Ist das so korrekt oder gibt es Abweichungen?
Es gibt Abweichungen

Hast du noch weitere Behauptungen oder Rückfragen?
Gast #3742705
Lesenswert?

Kein Problem.

Hans schrieb:
> - Jeder CAN Contoller (z.B. TJA1040) setzt beim korrekten Empfang einer
> CAN Nachricht das ACK Bit

TJA1040 ist wie beschrieben kein Controller sondern ein Transceiver. Der 
Controller setzt das ACK Bit wenn er die Nachricht korrekt empfangen hat 
und wenn sie für ihn bestimmt war.

>  - Dies erfolgt unabhängig vom µC
Ja, wobei wie beschrieben der CAN Controller immer öfter in den µC 
integriert ist.

>  - Evtl. vorhandene Filter haben darauf keinen Einfluss
Doch haben Sie. In den mir bekannten CAN Controllern wird das ACK Bit 
nur gesetzt wenn die Adresse durch die Filter durchkommt.

>  - Wenn der Sender kein ACK bekommt sollte nach einer bestimmten Zeit
> ein Fehler erkannt werden
Der Sender Wiederholt so lange die Nachricht bis er in den CAN Passive 
Zustand wechselt. Die Grenze dafür kann man meistens einstellen. Danach 
hört er nur noch passiv zu, deswegen der Name passiv. Kommen dann 
genügend korrekte Nachrichten vorbei geht er wieder in den normalen 
Modus und kann wieder senden.
#3742930
Lesenswert?

Aus dem Datenblatt des MCP2515:
Any node that has received an
error-free frame acknowledges the correct reception of
the frame by sending back a dominant bit (regardless
of whether the node is configured to accept that
specific message or not).

Beim AT90CAN128 findet man:
Correct messages are acknowledged by the receivers regardless of the 
result of the acceptance test.

Zumindest diese beiden senden ein ACK unabhängig von den 
Filtereinstellungen.
#3742987
Lesenswert?

Könner schrieb:
>>  - Evtl. vorhandene Filter haben darauf keinen Einfluss
> Doch haben Sie. In den mir bekannten CAN Controllern wird das ACK Bit
> nur gesetzt wenn die Adresse durch die Filter durchkommt.

Auch alle mir bekannten CAN Controller senden das Ack Bit unabhängig vom 
Filter. Die CAN ID darf er ja erst auswerten, wenn die Nachricht von 
allen Teilnehmern fehlerfrei empfangen wurde. Oder sie würde immer 
wiederholt werden, wenn sich niemand hierfür interessiert.


>>  - Wenn der Sender kein ACK bekommt sollte nach einer bestimmten Zeit
>> ein Fehler erkannt werden
> Der Sender Wiederholt so lange die Nachricht bis er in den CAN Passive
> Zustand wechselt. Die Grenze dafür kann man meistens einstellen. Danach
> hört er nur noch passiv zu, deswegen der Name passiv. Kommen dann
> genügend korrekte Nachrichten vorbei geht er wieder in den normalen
> Modus und kann wieder senden.

Der Sender merkt bei jedem fehlenden Ack einen Fehler (Acknowledge 
Error) und sendet aufgrund dieses Fehlers die Nachricht erneut.

Richtig ist, dass bei zuvielen Fehlern der Zustand aufgrund der Error 
Counter gewechselt wird. Falsch ist an dieser Aussage, dass ein Error 
Passive Knoten nicht sendet. Er nimmt weiter an der Kommunikation teil.

Erst, wenn ein Wechseln in den Bus Off state erfolgt, sendet er nicht 
mehr.

'Error Passive' heißt es, weil der Knoten den Bus nicht mehr mit aktiven 
Error Flags stört. Egal, ob er recht hat 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