Fehlersuche und -Behebung bei Download-Problemen

Dieses Dokument beschreibt, welche Fehler beim Übertragen der Applikation aus dem Programmiertool in das programmierbare Terminal per CAN-Bus auftreten können, und wie diese behoben werden können. Das Dokument ist Teil des Online-Hilfesystems; im Zweifelsfalle finden Sie die neueste Version dieses Dokuments daher im Programmiertool.

Inhalt

  1. Strategisches Vorgehen bei der Fehlersuche
  2. Prüfen ob das CAN-Interface am PC korrekt arbeitet (und ob der passende CAN-Treiber installiert wurde)
  3. Prüfen ob der CAN-Bus "physikalisch" in Ordnung ist
  4. Prüfen ob alle CAN-Bus-Teilnehmer mit der gleichen Baudrate arbeiten (dazu gehört auch das Programmiertool)
  5. CANopen: Prüfen ob auf beiden Seiten (Tool und Terminal) der passende Node-ID eingestellt ist

Siehe auch: Index vom Hilfesystem des Programmiertools ; FAQs ; Fernbedienung ; Dateiübertragung per XMODEM / YMODEM .


Strategisches Vorgehen bei der Fehlersuche

Leider gibt es Dutzende von möglichen Ursachen, wenn die Programm-Übertragung per CAN-Bus nicht funktioniert. Glücklicherweise sind meistens "triviale" Ursachen der Grund. Die folgende Liste sollte zunächst abgearbeitet werden; die Links führen zu weiter unten folgenden Kapiteln mit detailierteren Informationen.

  1. Prüfen ob der CAN-Treiber im PC korrekt geladen und initialisiert wird
    wenn ok: Weiter mit Schritt 2
    wenn nicht: das vom Hersteller des CAN-Interfaces hoffentlich mitgelieferte Testprogramm verwenden, um zu ermitteln warum das Interface nicht funktioniert,
    oder ob das Interface nur zusammen mit dem MKT-Programm nicht laufen will. Im letzteren Fall vermutlich ein Versionskonflikt... in dem Fall: weiter mit Schritt 8 !
  2. Prüfen ob im Programmiertool das richtige CAN-Interface ausgewählt wurde
    wenn ok: Weiter mit Schritt 3
    geht nicht (kann mein Interface nicht in der Auswahlliste finden): Weiter mit Schritt 8 !
  3. Prüfen ob CAN-Telegramme gesendet und empfangen werden können
    wenn ok: Weiter mit Schritt 5
    wenn nicht: Weiter mit Schritt 4
  4. Prüfen ob der CAN-Bus "physikalisch" in Ordnung ist
    wenn ok: Weiter mit Schritt 6
    wenn nicht: Weiter mit Schritt 8
  5. Prüfen ob auf beiden Seiten (Terminal und PC) die gleiche CAN-Baudrate verwendet wird
    wenn ok: Weiter mit Schritt 6
    wenn nicht: Weiter mit Schritt 8
  6. Nur bei CANopen: Prüfen ob Node-ID im Terminal und im PC zueinander passen
    Danach weiter mit Schritt 7 !
  7. Terminal aus- und wiedereinschalten, Programmiertool neu starten, und nochmal versuchen ob sich das Terminal nun per CAN-Bus programmieren lässt.
    Wenn ja : Prima...
    Wenn nicht: Weiter mit Schritt 8 !
  8. Funktioniert noch immer nicht ? Wirklich ein besonders hartnäckiger Fall !
    Vielleicht sollten Sie zur Programmübertragung statt CAN-Bus doch lieber die serielle Schnittstelle (RS-232) oder eine Flash-Speicherkarte als "Datenträger" einsetzen !
    Dies ist bei fast allen Geräten (ausser beim UPT515) möglich.

Prüfen ob der CAN-Treiber im PC korrekt geladen und initialisiert wird

Schalten Sie dazu im Programmiertool auf die Registerkarte "Fehler" um, und scrollen die Fehlerhistorie bis zum ältesten Eintrag (ganz oben) zurück. Dort finden Sie -hoffentlich- eine Meldung dass der passende CAN-Treiber geladen und initialisiert wurde. Beispiel:

UCAN_Init: Peak's CANAPI2 driver loaded.
UCAN_InitCtrl: PCAN_open ok, using net name "MktNet" .
connect this node to network...

(je nach verwendetem CAN-Interface und CAN-Protokoll (CANopen, CANdb, ...) stehen in der Meldungsliste noch viele andere Zeilen. Hier wichtig sind Zeilen die mit "UCAN" (=Universeller CAN-Treiber) beginnen. Achtung: Viele Treiber werden auch dann erfolgreich(!) "geladen", wenn das entsprechende Interface nicht am PC angeschlossen ist (viele USB-Interfaces verhalten sich aus obskuren Gründen so).

Mit anderen Worten: Eine Meldung wie "UCAN_Init: xxxxxx driver loaded" bedeutet zwar, dass ein CAN-Treiber geladen wurde, es heisst aber noch lange nicht dass dieser dann auch funktioniert. Tauchen allerdings Fehlermeldungen wie die folgenden (vom CAN-Treiber) in der Meldungsliste auf, wissen Sie, dass der CAN-Treiber definitiv *nicht* funktioniert (und es auch keinen Sinn macht, zig-mal zu versuchen das Programm vom Programmiertool in's Terminal zu laden).

Hier einige typische Meldungen, die weniger auf Probleme mit dem CAN-Bus, sondern  eher auf Probleme mit den CAN-Treiber hindeuten - viele davon sind leider 'Interface-spezifisch' :

Error: UCAN_Init: Peak's CANAPI2 driver not loaded !
CAN: UCAN_Init: Peak's CANAPI2 driver not loaded !
CAN: UCAN_InitCtrl: NOVXD 
SIM: Error: Couldn't initialize CAN(500).
CAN: CANnot add id, controller not initialized
UCAN_Receive: Handle is invalid

Erläuterungen dazu:

Zurück zur 'Strategie'

Prüfen ob CAN-Bus und CAN-Interface "physikalisch" funktionieren

Dazu werden mindestens zwei funktionierende CAN-Bus-Teilnehmer benötigt (einer davon ist der PC mit CAN-Interface). Stellen Sie vor dem Test sicher...

Sind die oben angeführten Punkte erfüllt, schalten Sie die Spannungsversorgung ein und messen den Gleichspannungspegel zwischen CAN-High, CAN-Low, und CAN-Ground mit einem Digitalmultimeter (Handmultimeter ohne Verbindung zum Schutzleiter ! ). Typische Messwerte (mit starken Schwankungen, je nach verwendetem Transceiver, hier für "high-speed"-Transceiver). Korrekte Werte sind:

Falls zwischen CAN-High und CAN-Low eine Spannungsdifferenz von über 1.5 V liegt, ist der CAN-Bus stark ausgelastet oder gestört. Im Zweifelsfall ein Zweikanal-Oszilloskop anschliessen und die Wellenform analysieren ! Bei "dominanten" Datenbits springt CAN-High von ca +2.5 V auf +3.6 V, und CAN-Low von +2.5 V auf +1.4 V. Maßgeblich ist nur die Differenz zwischen CAN-High und CAN-Low; übliche Transceiver fordern folgende Differenzspannungen auf der Empfängerseite:

Übliche Differenzen bei dominantem Datenbits liegen bei 2 Volt (CAN-High minus CAN-Low; die im Internet gefundene Angabe "Dominant-Pegel > 3.5 Volt" ist Unfug). Diese Pegel können nur mit dem Oszilloskop überprüft werden - ein Digitalvoltmeter reicht dazu nicht !

Zurück zur 'Strategie'

Prüfen ob alle CAN-Bus-Teilnehmer mit der gleichen Baudrate arbeiten

Klingt trivial, ist es aber nicht ! Ein CAN-Bus funktioniert nur, wenn *alle* Teilnehmer mit der gleichen Baudrate arbeiten. Dazu gehört auch das Programmiertool, falls das Programm per CAN-Bus in das Terminal geladen werden soll. Bei CANopen kommt erschwerend dazu, dass für die Kommunikation im Normalbetrieb die gleiche Schnittstelle benutzt werden muss wie für die Programmierung. Leider unterstützen nicht alle CAN-Bus-Interfaces (für den PC) alle in der Praxis verwendeten, z.T. exotischen CAN-Baudraten.

Aus diesem Grund existieren im Programmiertool auch zwei grundsätzlich verschiedene Einstellungen für die CAN-Baudrate. Beide stehen auf der Registerkarte "Eintellungen" (Settings):

Die CAN-Baudrate(n) unter "Terminal-Einstellungen" sind die Baudraten, die das Terminal später im "Normalbetrieb" verwendet, d.h. nachdem die Applikation vom Terminal geladen und gestartet wurde.

Die CAN-Baudrate unter "Einstellungen des Programmiertools" ist - wie der Name des Panels schon sagt - die vom Programmiertool für die Übertragung verwendete Baudrate. Diese kann UNTER UMSTÄNDEN von der Baudrate abweichen, die später -im Normalbetrieb des Terminals- verwendet wird ! ! Speziell bei CANopen ist es sinnvoll, beide Baudraten auf den gleichen Wert zu setzen, um Kollisionen (im wahrsten Sinne des Wortes) von vornherein zu vermeiden. Dazu gehören auch die Einstellungen IM TERMINAL SELBST. Ein beispielhaftes Szenario:

Ein CANopen-Terminal wurde für eine "alte" Anwendung mit CAN-Baudrate = 125 kBit/Sekunde programmiert. Das Programmiertool wurde aber -für ein anderes Projekt- schon auf 500 kBit/Sekunde umgestellt. Eine Kommunikation per CANopen (-SDO) funktioniert dann natürlich nicht ! Die nach dem Laden der Applikation im Terminal verwendete CAN-Baudrate kann im Systemmenü des Terminals unter "User Settings" kontrolliert werden, und sogar -gegebenenfalls- umprogrammiert werden.

Hinweis: Es empfiehlt sich, im Terminal die Baudraten-Einstellungen unter "User Settings" und unter "System Setup" immer auf den gleichen Wert zu setzen, speziell bei CANopen - denn dort wird die Übertragung zwischen PC und Terminal ja nicht manuell per Systemmenü gestartet, sondern per CANopen Service-Daten-Objekt (SDO) !

Wie das Systemmenü bei den verschiedenen Terminals aufgerufen wird, steht im Zweifelsfall immer in der Hardware-Dokumentation. Im Normalfall werden dazu die zweite und dritte Funktionstaste gleichzeitig gedrückt (bis eine entsprechende Meldung auf dem LCD angezeigt wird), und anschliessend per Cursortasten oder Drehknopf die entsprechende Funktion angewählt.

Zurück zur 'Strategie'

CANopen: Prüfen ob auf beiden Seiten (Tool und Terminal) der passende Node-ID eingestellt ist

Bei CANopen-Geräten muss -neben der Baudrate- auch der Node-ID ("CANopen-Knotennummer") passend eingestellt werden, und zwar sowohl auf der Seite des Terminals als auch auf der Seite des Programmiertools. Da das Programmiertool selbst auch ein CANopen-Gerät darstellt (bzw simuliert), darf der vom Tool "simulierte" Knoten nicht mit der Knotennummer des "echten" Terminals identisch sein !

Zurück zur 'Strategie'


Last modified: 2006-05-16 (ISO8601, YYYY-MM-DD)

top