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?