2017-05-15 11 views
0

Ich versuche, CAN-Bus-Client-Anwendung basierend auf CanFestival zu öffnen.CanFestival readNetworkDict() schlägt fehl

Wenn ich versuche, aus dem CAN-Server readNetworkDict() nicht in dem folgenden Code

offset = d->firstIndex->SDO_CLT; 
    lastIndex = d->lastIndex->SDO_CLT; 
    if (offset == 0) { 
     MSG_ERR(0x1AC6, "No SDO client index found for nodeId ", nodeId); 
     return 0xFF; 
    } 

und das ist SDO_CLT in meinem Wörterbuch zu lesen.

const quick_index GoldTwitter_firstIndex = { 
    3, /* SDO_SVR */ 
    0, /* SDO_CLT */ 
    4, /* PDO_RCV */ 
    5, /* PDO_RCV_MAP */ 
    6, /* PDO_TRS */ 
    7 /* PDO_TRS_MAP */ 
}; 

Nach nur ein paar Tagen CAN-Bus-Erfahrung habe ich ein paar grundlegende Fragen.

Was ist SDO_CLT?

Bedeutet Null Null das Problem bei der Wörterbuchgenerierung oder muss ich es während der Laufzeit initialisieren?

+0

„nur ein paar Tage von CAN-Bus-Erfahrung zu haben:“ Was macht Sie denken, dass Sie kompetent genug sind, um eine CANopen-Anwendung schreiben dann ...? Ich würde vermuten, dass dieser Fehler damit zusammenhängt, dass Ihr Client nicht versteht, welches SDO verwendet werden soll, um das Objektverzeichnis anderer Knoten im Netzwerk zu pingen. Möglicherweise wurde es nicht konfiguriert. Wird der Fehler für Ihren Knoten oder den Knoten gemeldet, mit dem Sie kommunizieren möchten? Ich habe keine Erfahrung mit diesem bestimmten CANopen-Stack. – Lundin

+0

SDO-Clients sind "Kontexte", die zum Ausführen von SDO-Operationen verwendet werden. Normalerweise definieren Sie sie statisch im Objektverzeichnis (wie in der @ JMA-Antwort gezeigt) oder dynamisch, indem Sie dieselbe Information mit 'writeLocalDict()' schreiben. – ntd

Antwort

1

Sie müssen die SDO-Parameter im Wörterbuch definieren, so etwas wie diese: enter image description here