Forum: Mikrocontroller und Digitale Elektronik CANOpen SDO PDO


von Christian (Gast)


Lesenswert?

Hallo,

ich beschäftige mich gerade mit CANOpen und versuche das Prinzip von SDO 
und PDO zu verstehen:

Bei einem SDO ist die Anzahl der nutzbaren Bytes begrenzt, da ich in 
jeder Nachricht mittels Index und Subindex genau sagen muss, worum es 
sich bei der Nachricht handelt, richtig?
Daher verwendet man SDO i.d.R. nur für Service und 
Konfigurationsaufgaben innerhalb des Netzwerks und weniger zur 
Datenübertragung, richtig?

Beim PDO ist es so, dass ich erstmal (per default bzw. pro Node-ID) nur 
4 RxPDO und 4 TxPDO habe. Ich kann alle 8 Bytes benutzen, um Daten zu 
transportieren. Dafür ist ein PDO weniger "flexibel" da zuvor genau 
definiert sein muss in welchem der 4*8=32 Bytes welche Information 
empfangen bzw. gesendet wird, richtig?
Und diese Definition steht im Objektverzeichnis welches im 
CAN-Controller liegt? Muss dann jeder CAN-Teilnhemer das 
Objektverzeichnis des anderen kennen? Oder haben alle das gleiche 
Objektverzeichnis?

Ich würde mich freuen wenn dazu jemand ein bisschen was erklären könnte 
und eventuell auf gute Literatur o.ä. verweisen könnte.

Viele Grüße,

Christian

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Hallo Christian.

Infos zu CANopen kannst du hier anfordern: http://www.can-cia.org/
Wichtig ist die CIA-301 und wenn du IOs übertragen willst die CIA-401.
Grundsätzlich hast du recht, SDOs werden in erster Linie dazu verwendet 
Einstellungen und System-Geschichten zu übertragen. Im ersten Telegramm 
können 4 Byte übertragen werden, bei den Weiteren 7 Byte. Auf diese 
Weise können größere Datenblöcke übermittelt werden. die restlichen 4 
Byte der ersten Nachricht sind unter anderem für den Index (2 Byte) und 
den Subindex (1 Byte) des Objektverzeichnisses. Das Objektverzeichnis 
ist grundsätzlich für jeden anderen Teilnehmer zugänglich, allerdings 
wird nur der Netzwerkmaster sich für einige Daten wärend der 
Initialisierung interessieren.
Zusätzlich gibt es noch die PDO Kommunikation, dies sind normale 
CAN-Nachrichten mit bis zu 8 Byte Nutzdaten, deren Identifier im 
Objektverzeichnis ersichtlich und eventuell auch editierbar ist.
Deben diesen beiden Kommunikationsmethoden gibt es noch einige 
Netzwerkmanagement-Telegramme (Sync, Zeit, Alarme, ...).
Schreib mir mal eine PN, dann kann ich dir was zukommen lassen.

Christian_RX7

von Alex (Gast)


Lesenswert?

Nicht alle CANopen-Knoten haben das gleiche OV. Die Knoten, die PDOs 
verwenden, müssen die Bedeutung und Zusammensetzung der Daten natürlich 
kennen.

Hier noch ein paar Links:
http://www.can-wiki.info/doku.php?id=can_higher_layer_protocols:canopen
http://atlas.web.cern.ch/Atlas/GROUPS/DAQTRIG/DCS/CANINFO/canproto.html
http://www.canfestival.org/
https://bitbucket.org/JaFojtik/canfestival-3/src/050d732baaea/doc/CANOpen_memento/CANOpen_memento.pdf

von Christian (Gast)


Lesenswert?

Vielen Dank euch beiden!

von Heinz-Jürgen O. (Firma: emtas) (hjo)


Lesenswert?

Christian_RX7 hat ja schon vieles geschrieben,
Von mir noch einige Ergänzungen.

Christian schrieb:
> Hallo,
>
> ich beschäftige mich gerade mit CANOpen und versuche das Prinzip von SDO
> und PDO zu verstehen:
>
> Bei einem SDO ist die Anzahl der nutzbaren Bytes begrenzt, da ich in
> jeder Nachricht mittels Index und Subindex genau sagen muss, worum es
> sich bei der Nachricht handelt, richtig?

Nicht ganz. Innerhalb eines CAN Frame ist die Nutzdatenanzahl begrenzt, 
jetzt auf 8 Byte, mit dem CAN FD Protokoll auf 64 Byte.
Ein CANopen SDO dient gerade dazu, diese dem CAN innewohnende Begrenzung 
zu überwinden. Bis zu 32^2-1 Byte können mit einem SDO Transfer 
übermittelt werden, Daten lesend oder schreibend beim Server, vom SDO 
Client initiiert.
Der so genannte expedited SDO mit bis zu 4Byte in jede Richtung ist nur 
eine Möglichkeit. Die anderen heißen SDO segmented Transfer und SDO 
Blocktransfer.



> Daher verwendet man SDO i.d.R. nur für Service und
> Konfigurationsaufgaben innerhalb des Netzwerks und weniger zur
> Datenübertragung, richtig?

Auch nur teilweise. Konfigurationsdaten können Parametertabellen, 
Linearisierungskurven etc. von mehreren hundert oder mehreren KiB sein.
Der SDO Transfer wird auch gern benutzt, um im CANopen Knoten ein 
Firmwareupdate durchzuführen, dann können es schon 100 kiB sein.
Stichwort CANopen Bootloader

>
> Beim PDO ist es so, dass ich erstmal (per default bzw. pro Node-ID) nur
> 4 RxPDO und 4 TxPDO habe. Ich kann alle 8 Bytes benutzen, um Daten zu
> transportieren. Dafür ist ein PDO weniger "flexibel" da zuvor genau
> definiert sein muss in welchem der 4*8=32 Bytes welche Information
> empfangen bzw. gesendet wird, richtig?
> Und diese Definition steht im Objektverzeichnis welches im
> CAN-Controller liegt?

Nicht im CAN Controller. Dazu ist der Speicher im CAN Controller zu 
klein und unflexibel. Das Objektverzeichnis verwaltet typisch der 
CANopen Protokollstack.


> Muss dann jeder CAN-Teilnhemer das
> Objektverzeichnis des anderen kennen? Oder haben alle das gleiche
> Objektverzeichnis?

Ein Kommunikationspartner muss nicht alle Details kennen, aber er sollte 
schon wissen, wo er Daten lesen oder schreiben kann und was dies 
bewirkt.
Vereinfacht wird dies durch die verschiedenen Profildefinitionen des CiA 
im CANopen. So legt z.B das Antriebsprofil 402 genau fest, auf welchem 
Objektverzeichniseintrag ich die Sollgeschwindigkeit eines Antriebs 
abzulegen habe und wo ich die Istgeschwindigkeit lesen kann

>
> Ich würde mich freuen wenn dazu jemand ein bisschen was erklären könnte
> und eventuell auf gute Literatur o.ä. verweisen könnte.

Zusätzlich zu den links von Alex unbedingt empfehlenswert

http://www.amazon.de/CANopen-Das-standardisierte-eingebettete-Netzwerk/dp/3800728451/ref=sr_1_2?ie=UTF8&qid=1372752120&sr=8-2&keywords=canopen

mit besten Grüßen
   Heinz

PS
Kannst oder darfst Du schreiben was Du vorhast?

von Christian (Gast)


Lesenswert?

> PS
> Kannst oder darfst Du schreiben was Du vorhast?

Ja, ich versuche den Stoff zu verstehen, den ich in der Vorlesung auf 
Anhieb nicht ganz verstanden habe ;-)

Gruß

Christian

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.