CANopen-Kommunikation
Printed in the Federal Republic of Germany
©
TR-Electronic GmbH 2007, All Rights Reserved
05/16/2007
TR - EMO - BA - DGB - 0013 - 00
Page 19 of 260
4.2 CANopen
4.2.1 Allgemeines zu CAN und CANopen
Der CAN-Bus ist ein Multi-Master-System, bei dem jeder Teilnehmer selbstständig
Daten senden kann. Es kann vorkommen, dass mehrere Teilnehmer gleichzeitig
senden. In diesem Fall setzt sich bei CAN
die Nachricht
mit der höheren Priorität
durch. Die Priorität einer Nachricht wird durch den so genannten
Identifier
festgelegt,
welcher am Beginn der Nachricht übertragen wird. Der Identifier hat bei CAN 2.0A
eine Länge von 11 Bit, bei CAN 2.0B eine Länge von 29 Bit.
encoTRive verwendet den 11-Bit-Identifier gemäß CAN 2.0A.
Die Priorität einer Nachricht ist umso höher, je kleiner der Identifier ist.
Ein Teilnehmer kann mehrere Identifier verwenden und damit verschiedenartige
Nachrichten senden. Es muss jedoch sichergestellt sein, dass die Identifier
verschiedener Teilnehmer unterschiedlich sind.
Um zu verhindern, dass eine hochpriore Nachricht den Bus permanent belegt und so
die Übertragung von Nachrichten niedriger Priorität verhindert, kann man einem
Identifier eine so genannte
Inhibit Time
zuordnen. Diese definiert die Mindestpause,
die zwischen zwei Übertragungen einer Nachricht mit dem gleichen Identifier liegen
muss.
Um in diesem nachrichtenbasierten System auch
Teilnehmer
ansprechen zu können,
wie es insbesondere erforderlich ist, wenn bei einem Antrieb eine Positionierung
gestartet werden soll, wird der Identifier
bei CANopen
in zwei Teile zerlegt:
Die niederwertigen 7 Bit enthalten die
Knotenadresse
(
Node ID
), die restlichen Bit den so genannten
Funktionscode, der den
Zweck
der Nachricht angibt:
Funktionscode
Node ID
Bit 10
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Tabelle 1: Identifier mit Node ID und Funktionscode
Bei CANopen wird der so aufgeteilte Identifier als
COB-ID (Communication Object
Identifier)
bezeichnet. Da der Funktionscode die höherwertigen Bits der COB-ID
belegt, steuert der Funktionscode die Übertragungsprioritäten:
Je kleiner der Funktionscode, umso höher die Priorität.
Die Node ID identifiziert einen Teilnehmer in einem CANopen-Netzwerk.
Beim encoTRive werden die Node ID und Übertragungsgeschwindigkeit fest über
DIP-Schalter eingestellt, definiert in den gerätespezifischen Steckerbelegungen.
CANopen verwendet bei der Übertragung von Zahlenwerten stets das
Little Endian
Format
:
Das niederwertige Byte wird in der Nachricht zuerst abgelegt.