Parametrierung CANopen für eine igus D1

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo allerseits,

ich bin gerade dabei eine CANopen Verbindung zwischen einer Beckhoff EL6751 Klemme und einer igus dryve D1 Motorsteuerung zu parametrieren.

Anhand des online verfügbaren EDS-Files, welches nur Basisobjekte beinhaltet möchte ich mittels CANeds mein eigenes schreiben, welches alle im Handbuch der D1 aufgelisteten Objekte als PDOs verfügbar macht. Ich habe dazu ein Bild angehängt. Die unterstrichenen Adressen sind parametriert. Anhang anzeigen 50854

Den derzeitigen (unvollständigen) Stand des EDS-Files habe ich als zip angehängt. Anhang anzeigen 50853

Ich habe begonnen die RxPDOs zu parametrieren. Ich möchte auf RxPDO1 alle PDOs zur Steuerung der D1 haben. Auf RxPDO2 sind alle Bewegungsparameter (Geschwindigkeit und Position). Derer gibt es nach meiner Logik 9.

Jetzt habe ich das Problem, dass nach einladen der erstellten EDS Datei in TwinCAT unter RxPDO2 nur die ersten zwei Einträge ("607Ah Target Position" und "6081h Profile Velocity") als verlinkbare Prozessvariablen angezeigt werden. Anhang anzeigen 50855

Wenn ich unter Node/Online nachsehe ergibt sich folgendes Bild:
Anhang anzeigen 50857

Es werden jedoch für alle verfügbaren Adressen Werte unter Node/Online angezeigt.
Anhang anzeigen 50858

Was mache ich falsch?

Danke für eure Hilfe!

Beste Grüße
LeFish
 
Zuletzt bearbeitet:

oliver.tonn

Well-known member
Beiträge
4.041
Punkte Reaktionen
652
PDOs sind auf 8 Byte beschränkt und die sind bei Dir mit den zwei Positionen schon erreicht. Kann man hier nachlesen.
 
Zuletzt bearbeitet:
OP
L

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Ok, das klingt einleuchtend.

Dann wäre da noch die Möglichkeit weitere PDOs anzulegen.

Habe mal ein Test-File erstellt: Anhang anzeigen 50865
Bei dem habe ich einen RxPDO5 und einen TxPDO5 hinzugefügt.


Beim reinladen der EDS Datei in TC meckert er (für Tx und Rx gleichermaßen): Anhang anzeigen 50864

Ich klicke beide male auf "JA".

Wenn ich nun die Konfiguration auf die SPS lade, bekomme ich am CANopen-Node einen Fehler: 4 = SDO syntax error at StartUp
Anhang anzeigen 50866
bzw. unter Diag vom Node: SDO-Upload-Error 1804, SI 1: Object does not exist in the object dictionary

Anhang anzeigen 50867

Mir scheint, als könnten nur jeweils 4 PDOs existieren (?!)

Was bringen mir dann aber die ganzen schönen und nützlichen Objekte lt. Handbuch, wenn ich nicht alle auf den Bus legen kann, sondern nur max. jeweils 8 Variablen zu je max 32bit!

Oder habe ich da einen groben Denkfehler?
 

oliver.tonn

Well-known member
Beiträge
4.041
Punkte Reaktionen
652
Na ja, meist braucht man ja nicht alle Objekte als PDOs, also als zyklische Objekte in Echtzeit. Es gibt in TC3 Funktionsbausteine mit denen man CAN Objekte auslesen kann, dann allerdings nicht zyklisch.
 

oliver.tonn

Well-known member
Beiträge
4.041
Punkte Reaktionen
652
Wenn ich der von mir verlinkten Doku glauben darf gibt es bis zu 512 RX und TX PDOs, allerdings muss das Gerät dies auch unterstützen. Ich denke nicht, dass man einfach die EDS Datei anpassen kann um mehr PDOs zu erhalten.
 
OP
L

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Ich glaube auch, dass der Node das unterstützen muss und die D1 nur 4+4 PDOs unterstützt.

Auch habe ich zB bei Wikipedia gefunden, dass bis zu 255 Subindizes auf einer Adresse dranhängen dürfen. Zitat: "Ein Index kann wiederum bis zu 255 Subindizes enthalten. " von https://de.wikipedia.org/wiki/CANopen
Aber klar, wenn das Fenster nur 8byte groß ist tu ich mir schwer 255 32bit-Werte zu übertragen =)

Meinst du mit dem von dir oben erwähnten Funktionsbaustein zum Auslesen den FB_EcSoERead aus der Bibliothek Tc2_EtherCAT?

Kennst du ein Beispiel, wo zB ein 4Byte-Wert (vielleicht sogar über CANopen) abgefragt oder beschrieben wird?

Sorry für meine blöde Frage, aber ich mach das zum ersten mal und eine Referenz würde mir sehr helfen. Ich hab auch noch keine Bus-Erfahrung im Allgemeinen, wie man vielleicht schon gemerkt hat =)

DANKE!
 
Zuletzt bearbeitet:
OP
L

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Ich habe mich jetzt mit den Prozessvariablengrößen und der Aufteilung auf die 4 +4 TxRxPDOs gespielt.

Ich konnte alle Objekte der D1 hinzufügen und sehe diese auch im TC3/IO: Anhang anzeigen 50877

Das aktuelle, von mir bearbeitete EDS-File habe ich angehängt: Anhang anzeigen 50878

Wo mir nun das Verständnis fehlt: Obwohl ich im EDS die PDOs mit deren Adressen neu definiert habe, werden mir noch immer die im default-EDS hinterlegten Werte angezeigt.

Konkret heißt das:
Statusword liegt auf 6041h und wird mir auch dort angezeigt:
Anhang anzeigen 50879
Obwohl ich jedoch auf TxPDO2.0 die Adresse 6067h (Position_window) im EDS-File definiert habe, wird mir der Wert von 6041h (Statusword) = 1088 angezeigt.
Anhang anzeigen 50880
Im von igus verfügbaren Default-EDS liegt genau auf TxPDO2.0 6041h:
Anhang anzeigen 50881


Wie kann ich der D1 die neue (meine) Parametrierung beibringen? Oder geht das nicht?

Danke für eure Unterstützung!
 
Zuletzt bearbeitet:

oliver.tonn

Well-known member
Beiträge
4.041
Punkte Reaktionen
652
Also ich habe es gerade mal probiert und bei mir hat es geklappt.
Ich habe bei PDO1 mal den Eintrag DefaultValue von 60410010 auf 60680010 geändert und nachdem ich den Slave neu hinzugefügt habe stand im PDO die andere Zuordnung drin. Du musst natürlich den Slave löschen und wieder einfügen.
Was ich nicht weiß ist, was man wo außer dem Daten Typ noch ändern muss. Ich hatte mal statt "StatusWord" "Position Actual Value" genommen, aber obwohl ich den Datentyp auf 4 geändert habe hatte der I/O nur 2 Bytes und nicht 4. und der Typ war immer noch UINT statt DINT.
 
OP
L

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Was ich nicht weiß ist, was man wo außer dem Daten Typ noch Andern muss. Ich hatte mal statt "StatusWord" "Position Actual Value" genommen, aber obwohl ich den Datentyp auf 4 geändert habe hatte der I/O nur 2 Bytes und nicht 4. und der Typ war immer noch UINT statt DINT.

Ich glaube genau daran scheitere ich auch.
"StatusWord" hat genau 2Byte, "Position Actual Value" hat 4Byte lt D1 Handbuch.

Du hast wahrscheinlich keine igus D1 zum ausprobieren. Aber meine Annahme ist, wenn du jetzt eine dranhängen würdest, bekämst du den wert von "StatusWord" und er wird dir als "Position Actual Value" in IO von TC ausgegeben. Genau das geschieht nämlich bei mir.

Meine Annahme ist, dass die igus D1 auf der Adresse 0x0 am Bus immer die 2Byte von "StatusWord" schreibt, egal ob du dort TwinCat-seitig "Position Actual Value" erwartest.

Unter Node/Online sieht man, dass meine Einstellungen lt. EDS ignoriert werden:
Anhang anzeigen 50888

In meinem EDS-File habe ich unter

1A00:1 die Adresse 6041h definiert (PASST)
1A00:2 die Adresse 6061h definiert (PASST NICHT, hier steht am Bus nichts)
1A00:3 die Adresse 6098h definiert (PASST NICHT, hier steht am Bus nichts)
1A00:4 die Adresse 6064h definiert (PASST NICHT, hier steht am Bus nichts)

1A01:1 die Adresse 6067h definiert (PASST NICHT, hier steht am Bus das defaultmäßige 6041h)
1A01:2 die Adresse 606Ch definiert (PASST NICHT, hier steht am Bus das defaultmäßige 6064h)

Was mir also noch fehlt ist, dass ich dem Bus das Mapping lt. meinem EDS-File mitteile. Er hat noch immer die defaultmäßigen Einträge lt. Default-EDS von igus hinterlegt.
 

StructuredTrash

Well-known member
Beiträge
1.100
Punkte Reaktionen
291
Den Igus wird die EDS-Datei nicht interessieren, die soll ja nur anderen mitteilen, was er zu bieten hat. Wenn der Igus ein variables Mapping unterstützt, musst Du das vermutlich direkt im Antrieb einstellen. Was sagt denn die Igus-Doku dazu?
 
OP
L

LeFish

Active member
Beiträge
38
Punkte Reaktionen
1
Igus hält sich dazu in der Doku recht bedeckt. Hier die aus meiner Sicht relevante Seite dazu in der Doku https://igus.widen.net/content/kda7...=sRW4bwaiJA5b0j4CsOQeFTan1Y5-hYnZ4UJtu0L41dI=

(S.82) Anhang anzeigen 50890

Es stehen max. 4 RxTxPDOs zur Verfügung.

Zu PDO-Mapping steht nur: Wird in der Mastersteuerung vorgenommen.

Der Telegrammaufbau dürfte prinzipiell passen - ich bekomm ja Werte.

In Byte1,2,3 wird das Objekt definiert.
Die Werte für die drei Bytes kommen aus dem EDS, oder?

Die igus bietet ein Webinterface. Dort kann man aber nur CAN-ID und Baudrate einstellen, sowie CAN prinzipiell aktivieren. Auch kann man die Steuerung über CAN dominant stellen.
Das habe ich alles eingestellt.

Zu PDOs/Mapping etc. findet man auf dem Webinterface leider nichts.
 
Zuletzt bearbeitet:

StructuredTrash

Well-known member
Beiträge
1.100
Punkte Reaktionen
291
Zuviel Werbung?
->Hier kostenlos registrieren
Zu PDO-Mapping steht nur: Wird in der Mastersteuerung vorgenommen.
Das heisst (hoffentlich), dass der IGUS vom Master gesendete Mapping-Parameter akzeptiert. Ob TwinCat das aber auch weiss? Ich kenne es von meinen CanOpen-Geräten nur so, dass TwinCat nur die COB-IDs und die Übertragungsart sendet. Schau mal in dem IGUS Can node im Reiter SDOs, dort stehen alle Objekte, die die EL6751 beim Start an den IGUS sendet. Evtl. musst Du dort die Mapping-Parameter komplett von Hand eingeben.
 
Oben