Hallo,
wenn kein weiterer Teilnehmer auf dem Bus ist (also niemand da ist, der
eine gesendete Botschaft mit ACK quittiert), dann versucht der Sender in
der Regel, die Nachricht noch einmal zu senden. Je nach Konfiguration
auch öfter, wobei am Ende der Sender in einen Error-Mode geht, weswegen
er beim senden "hängen" bleiben kann (TXREQ wird nicht zurückgesetzt,
sondern das entsprechende Fehlerflag gesetzt).
Allerdings wird das ACK von jedem Busteilnehmer aufgelegt, der einen
korrekten CAN-Frame erkennt, also auch von Teilnehmern, die nicht
unbedingt Ziel der Nachricht waren. Wenn man also erkennen möchte, ob
wirklich noch alle Teilnehmer zuhören, muss man entweder diese zyklisch
senden lassen (und dann über einen Time-Out erkennen, dass die
Nachrichten nicht mehr gesendet werden) oder sie aber einzeln abfragen.
Dabei sollten aber zusätzlich noch die verschiedenen Fehlerflags beim
Sender abgeprüft werden, um das beobachtete "Hängen" zu vermeiden. Die
abgefragten Empfänger müssen dann ihre Anwesenheit durch eine
Rückantwort kundtun, wobei der Sender Buch führen muss, wer schon
geantwortet hat.
Schöne Grüße,
Martin