Forum: Mikrocontroller und Digitale Elektronik CANopen dynamic PDO mapping über SDO


von Biba (Gast)


Lesenswert?

Hallo,

ich möchte bei meinem CANopen Slave keine Angaben über das 
Defaultmapping für die PDOS tätigen, sondern das PDO-Mapping soll zur 
Laufzeit von dem Master bestimmt werden.
Welche Objektverzeichnisse müssen hierfür über eine Write-SDO geändert 
werden?


Freundliche Grüße
Biba

von Steffen R. (steffen_rose)


Lesenswert?

Es müssen die Kommunikations- und die Mapping Parameter der jeweiligen 
PDOs angefasst werden.
Entsprechend CiA301 lassen sich PDOs nur im deaktivierten Zustand 
ummappen.
Es können nur Mappbare Objekte gemappt werden.
Das PDO muss dynamisches PDO Mapping unterstützen.

=> eds File

von Biba (Gast)


Lesenswert?

Steffen R. schrieb:
> Entsprechend CiA301 lassen sich PDOs nur im deaktivierten Zustand
> ummappen.

Also soll ich den Slave in den Pre-Operation Modus setzen, dann die 
entsprechenden Einträge ändern und ihn anschließend wieder zurück 
setzen?

von Steffen R. (steffen_rose)


Lesenswert?

Eine PDO wird über Bit31 in der COBID deaktiviert.
Aber es ist günstig, dies im NMT Preoperational Zustand zu machen.

von Biba (Gast)


Lesenswert?

Steffen R. schrieb:
> Eine PDO wird über Bit31 in der COBID deaktiviert.
> Aber es ist günstig, dies im NMT Preoperational Zustand zu machen.

Danke dir, hat mir schon mal geholfen.
Allerdings habe ich noch ein Problem.
Und zwar kann ich eine deaktivierte PDO ummappen, was absolut perfekt 
klappt. Die PDO wird auch gesendet, bei Änderung des Wertes.
Allerdings kann ich nachdem die PDO einmal benutzt wurde, sie nicht mehr 
ummappen, es kommt immer die Fehlermeldung 0x06 01 00 00 zurück bei dem 
Versuch sie umzumappen, trotz gesetztem 31 Bit in der COB ID.
Hat einer eine Idee woran das liegen könnte?

von Biba (Gast)


Lesenswert?

Danke dir!

von Steffen R. (steffen_rose)


Lesenswert?

Biba schrieb:
> Danke dir!

Hinbekommen?

Der Vollständigkeit halber:
Auch das (alte) Mapping muß ungültig gemacht werden. (Sub 0 des Mappings 
auf 0).

Alles Nachzulesen im CiA301, welches jeder Downloaden kann.

von Biba (Gast)


Lesenswert?

Steffen R. schrieb:
> Biba schrieb:
>> Danke dir!
>
> Hinbekommen?
>
> Der Vollständigkeit halber:
> Auch das (alte) Mapping muß ungültig gemacht werden. (Sub 0 des Mappings
> auf 0).
>
> Alles Nachzulesen im CiA301, welches jeder Downloaden kann.

Ja genau so hab ichs jetzt gemacht und klappt. Danke.
Hab noch eine Frage zu SDOs.
Und zwar kann ich den Wert eines Gerätespezifischen Einträgs, welcher 
als READ-PDO dient nur im Pre-Operational Modus ändern. Ist das normal?
Die Write-PDO kann ich auch im Operational Modus über eine SDO ändern.

von Steffen R. (steffen_rose)


Lesenswert?

Ich gehe bei der Beantworteung mal davon aus, dass mit
READ-PDO = Receive PDO und
WRITE-PDO = Transmit PDO
aus Sicht des Gerätes gemeint ist.

Und ich gehe davon aus, dass auf gemappte Daten per SDO zugegriffen 
werden soll.

Biba schrieb:
> Und zwar kann ich den Wert eines Gerätespezifischen Einträgs, welcher
> als READ-PDO dient nur im Pre-Operational Modus ändern. Ist das normal?

Normal nicht unbedingt. Kommt aber vor.

> Die Write-PDO kann ich auch im Operational Modus über eine SDO ändern.

Dies ist eher merkwürdig, da TPDOs häufig Werte der Hardware oder der 
Applikation versenden. Diese sind üblicherweise read-only.

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
Noch kein Account? Hier anmelden.