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