Page 1 of 1
Busstatus bzw. Controllerstatus abfragen
Posted: Thu 9. Oct 2014, 10:32
by _Michael_
Hallo,
bietet die PCAN-Basic API eine Möglichkeit, den Busstatus bzw. den Status des CAN Bus Controllers abzufragen?
Ich möchte erkennen, ob am PCAN-USB Adapter ein Bus angeschlossen ist und ob Teilnehmer an diesem Bus aktiv sind.
Danke!
Michael
Re: Busstatus bzw. Controllerstatus abfragen
Posted: Thu 9. Oct 2014, 12:06
by K.Wagner
Hallo,
PCAN-Basic bietet eine CAN_GetStatus Funktion. Dadurch können Sie den momentanen Bus-Zustand des CAN-Controllers eines verbundenen PCAN-Kanals ermitteln. Dies kann einer der folgenden Werte sein:
- PCAN_ERROR_INITIALIZE: Nicht Verbunden.
- PCAN_ERROR_BUSLIGHT: Fehlerzähler erreichte das 'Light'-Limit.
- PCAN_ERROR_BUSHEAVY: Fehlerzähler erreichte das 'Heavy'-Limit.
- PCAN_ERROR_BUSOFF: CAN-Controller ist Bus-OFF.
- PCAN_ERROR_OK: Kanal verbunden, kein Fehler.
Wenn die Status anders als PCAN_ERROR_OK ist, so ist das ein Zeichen dafür, dass keine andere Teilnehmer an den Bus hängen oder dass Sie ein falsches Bit-Rate benutzen. Wenn die Status PCAN_ERROR_OK ist, dann müssen Sie die CAN Kommunikation prüfen, um festzustellen ob andere Teilnehmer an den Bus hängen:
- Passiv: Listen-Only Modus setzen und Bus lauschen. Gibt Kommunkation, dann gibt andere Teilnehmer.
- Aktiv: Nachricht sneden und erneut CAN_Status aufrufen. Wenn PCAN_ERROR_OK, dann andere Teilnehmer vorhanden.
Re: Busstatus bzw. Controllerstatus abfragen
Posted: Thu 9. Oct 2014, 12:59
by _Michael_
Das Abfragen des Status mit CAN_GetStatus() liefert hier bei initialisiertem Kanal immer den Wert PCAN_ERROR_OK.
Der Status ändert sich auch nicht wenn der PCAN-USB-Adapter vom Bus abgezogen oder mein (einziger) Kommunikationspartner abgeschaltet wird.
Diese Verhalten ist unabhängig von der Funktion PCAN_BUSOFF_AUTORESET und auch unabhängig vom gesetzten Message Filter. Ich verwende Windows 7 (64 Bit).
Wie lange müsste es dauern bis ein Status ungleich PCAN_ERROR_OK gemeldet wird nachdem der CAN Bus abgezogen wurde?
Re: Busstatus bzw. Controllerstatus abfragen
Posted: Fri 10. Oct 2014, 12:01
by PEAK-Support
Wenn sie das Kabel abziehen, und auf dem Bus nicht gesendet wird, bekommen Sie auch kein Fehler. Das sieht der CAN Controller ja nicht - nur wenn Ihre Applikation versuchen würde zu senden, bekommen Sie den Busfehler.
Die anderen Knoten sehen das überhaupt nicht das Ihr CAN USB Gerät vom Bus weg ist - außer es war der einzige Teilnehmer, so das nur noch ein Knoten aktiv am Bus ist - dann bekommt der verbliebene Teilnehmer beim Versuch zu senden ebenfalls Fehler (kein ACK).
Re: Busstatus bzw. Controllerstatus abfragen
Posted: Fri 10. Oct 2014, 12:22
by _Michael_
Ok, jetzt wird die Sache klarer
Danke!