Hallo, möchte bei in einem CAN Netzwerk optionale Teilnehmer anbieten... jetzt soll ein Teilnehmer A zwischendurch nachschauen, ob Teilnehmer B vorhanden ist... wie macht man das am blödsten? Denn wenn ich immer wieder Nachrichten an B schicke und dieser die Nachrichten nicht "ack"ed, gehen ja ständig die CAN-Fehlercounter hoch bis mein CAN-Controller lahm gelegt wird (BUS-OFF) oder führt da kein weg am bus-off vorbei? danke
sina anargo schrieb: > Denn wenn ich immer > wieder Nachrichten an B schicke und dieser die Nachrichten nicht > "ack"ed, Dann ACK'ed die irgendein anderer Teilnehmer am Bus. ACK wird immer von jedem gesendet. sina anargo schrieb: > gehen ja ständig die CAN-Fehlercounter hoch bis mein > CAN-Controller lahm gelegt wird (BUS-OFF) Das passiert nur wenn gar kein anderer Teilnehmer am Bus (erreichbar) ist, und in dem Fall willst du das wahrscheinlich eh wissen... Mach es entweder so dass A regelmäßig B abfragt ob er existiert, oder B einfach regelmäßig sendet "ich bin da"...
Ein CAN Bus benötigt mindestens 2 potentiell aktive Teilnehmer. Ist das der Fall, geht der Fehlerzähler nur bei echten Fehlern hoch.
ah.. ok. ich dachte nur derjenige fuer den die nachricht bestimmt ist acked?
Einfach eine ich-bin-da Botschaft senden mit einem Zähler, da kann zum Beispiel auf ein Teil der Botschaften drin enthalten sein die der Knoten verarbeiten soll, so als Bestätigung, dass die Anfrage richtig angekommen ist.
sina anargo schrieb: > ah.. ok. ich dachte nur derjenige fuer den die nachricht bestimmt ist > acked? Es gibt kein Zieladresse in CAN. Nur Message-IDs. Ob sich jemand für die interessiert ist für den Bus nicht relevant.
Hm, üblicherweise sendet jeder Knoten zyklisch. An der ID kann man doch erkennen, ob der jeweilige Teilnehmer da ist? Alternativ sollte das mit remote-frames gehen, habe ich aber noch nie benutzt, daher keine Erfahrung.
schau mal unter CANopen nach. dort sind zwei modelle im einsatz. http://www.canopensolutions.com/english/about_canopen/guarding_heartbeat.shtml
H.Joachim Seifert schrieb: > Hm, üblicherweise sendet jeder Knoten zyklisch. Kann man natürlich so machen, aber wieso "üblicherweise"?
Zumindest kenne ich nichts, wo das nicht passiert. Im Auto (da wiederum kenne ich nur den Motor-CAN Porsche und VW) ist es so. Buderus-Heizungssteuerung ebenso. An einer Maschinensteuerung (Walzstrasse) war es auch so. Mehr praktische Beispiele kenne ich nicht. Bleiben ein paar eigene Sachen, da habe ich es auch so gemacht. Natürlich muss man nicht, wird aber auch dazu benutzt, zu schauen, ob alle Teilnehmer da sind.
A. K. schrieb: > > H.Joachim Seifert schrieb: >> Hm, üblicherweise sendet jeder Knoten zyklisch. > > Kann man natürlich so machen, aber wieso "üblicherweise"? Die Dinger die ich so von namhaften Autoherstellern kenne tun das tatsächlich öfters.. die senden zumeist irgendwelche Werte zyklisch rum.
Zyklisch senden kann man machen um feststellbar zu machen, ob der Knoten noch da ist, muss man aber nicht und machen die Knoten des Fragenden ja scheinbar nicht.
Der Beitrag von Autor: Clemens S. (zoggl) sagt eigentlich alles... und bisschen Standard (CANopen) kann nicht schaden. Grüße Runout
H.Joachim Seifert schrieb: > Zumindest kenne ich nichts, wo das nicht passiert. Bei der Verwendung von CANopen und reiner SDO-Kommunikation muss da gar nichts zyklisch laufen. Ich kenne mindestens ein Produkt, das so arbeitet. Und selbst bei PDO ist der zyklische Versand nur optional, aber durchaus recht gebräuchlich. Bei aktivem Heartbeat gibt es natürlich zyklische CAN-Frames.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.