Welche CAN-Nachrichten IDs dürfen für Beckhoffbusklemmen verwendet werden?

mdn1982

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

es geht um das folgende Problem mit Beckhoffbusklemmen.

Bei mir am Prüfstand werden die Beckhoffbusklemmen als Schnittstelle zur Hardware verwendet. Die unterschiedlichen Busklemmen (Analog- und Digitaleingänge, Analog- und Digitalausgänge, PWM) werden mit einem CANOpen Buskoppler BK5151 gekoppelt und kommunizieren mit der externen Steuerung über CAN-Bus. Das heißt für die Kommunikation muss der CAN-Buskoppler entsprechend parametriert werden, indem jeder Busklemme eine CAN-Nachricht ID zugewiesen wird.

Das hat ganz gut funktioniert. Aber ich habe einen komischen Fall gehabt und zwar beim Ausstecken von einem Thermoelementen gingen manche digitale Ausgänge kurz an und aus. Ich konnte das zunächst nicht erklären, weil solch eine Reaktion bei der Thermoelementenausfall in der Steuerung nicht vorgesehen ist.

Nach langer Suche habe ich zum Schluss gekommen, dass sehr wahrscheinlich die Busklemmen selbst eigene ganz spezifische CAN-Nachrichten haben, die für die interne Kommunikation mit dem Buskoppler verwendet werden und die ich zufälligerweise in meiner Steuerung für die Ansteuerung der digitalen Ausgänge benutzt habe.

Eine dieser spezifischen CAN IDs war 0x180. Die Nachricht wird sehr wahrscheinlich für die Fehlerausgabe der Thermoelementenbusklemme verwendet. Das heißt in meinem Fall, wenn das Thermoelement ausgesteckt wird, dann merkt das die Busklemme und schickt kurz eine Nachricht mit CAN ID 0x180 an den Buskoppler und damit aktiviert auch meinen digitalen Ausgang, der die gleiche von mir vergebene ID hat. Somit kann man feststellen, dass man nicht alle CAN ID vergeben darf, was auch ganz logisch ist. Leider habe ich am Anfang darauf nicht geachtet und habe alle IDs wie gesagt nach meinem Geschmack vergeben.

Da der Support von Beckhoff mir nicht wirklich helfen konnte, wollte ich Euch fragen, ob jemand die Ahnung hat, welche CAN-IDs bei der Vergabe man überhaupt verwenden darf? Gibt es irgendwo die Liste der für Anwender frei zur Verfügung stehenden CAN-IDs?

Vielen Dank im Voraus für eure Hilfe!!
 
Zuletzt bearbeitet:
Hi,

also ich wundere mich, dass der Beckhof Support Dir da nichts sagen kann.
Ich kenne Bechoff auch nicht, aber ich würde doch mal vermuten, wenn Du die CAN Teilnehmer nach DS301 adressierst, sollte das auch im Sinne der Beckhoffklemmen sein.
Gibt in Deine Suchmaschine mal "CANopen Adressen" oder "DS301" oder "CANopen PDO" oder ... ein, dann bekommst Du die entsprechenden Adressbereiche.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die 0x180 könnte reserviert sein. Nach Standard werden die PDO-IDS ab 0x181 (bzw.0x180 +Node-ID) vergeben

vergl.

Communication
object

COB-ID(s) hex
Slave nodes
NMT node control
000
Receive only
Sync
080
Receive only
Emergency
080 + NodeID
Transmit
TimeStamp
100
Receive only
PDO
180 + NodeID
200 + NodeID
280 + NodeID
300 + NodeID
380 + NodeID
400 + NodeID
480 + NodeID
500 + NodeID
1. Transmit PDO
1. Receive PDO
2. Transmit PDO
2. Receive PDO
3. Transmit PDO
3. Receive PDO
4. Transmit PDO
4. Receive PDO
SDO
580 + NodeID
600 + NodeID
Transmit
Receive
NMT node monitoring (node guarding/heartbeat)
700 + NodeID
Transmit
LSS
7E4
7E5
Transmit
Receive

oder


http://infosys.beckhoff.com/index.php?content=../content/1031/bx5100/html/co_quickstart.htm&id=2746
 
Zuletzt bearbeitet:
Hi,
der Support konnte mir nicht helfen. Man sagte mir, dass ich das selbst in der Doku suchen sollte. Da ich nicht so viel Erfahrung mit Beckhoffbusklemmen habe, wollte ich, dass der Support mir erklärt, wie das alles funktioniert. War aber nicht der Fall.
Danke für die Antwort, ich habe schon im Internet nachgeschaut und habe einige Tabellen gefunden.
 
Zuletzt bearbeitet:
Hi,

in der Problembeschreibung habe ich aus Versehen das falsche Identifier genannt. Das war kein ID 0x180, sondern 0x81. Laut deiner Tabelle passt das genau. Dieses ID ist schon für EMERGENCY reserviert.

Verstehe ich dann richtig, dass man für eigene Zwecke nur PDO Adressen verwenden darf?

Wie funktioniert es mit den Receive und Transmit PDOs? Wenn ich z. B. die Daten von einer Analogeingangbusklemme auslesen will, dann muss ich bei der Parametrierung für diese unbedingt eines von PDO Transmit Ids (sendet die Istwerte an die Steuerung) und für einen Analogausgang PDO Receive (empfängt die Sollwerte von der Steuerung) vergeben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Verstehe ich dann richtig, dass man für eigene Zwecke nur PDO Adressen verwenden darf?

Wie funktioniert es mit den Receive und Transmit PDOs? Wenn ich z. B. die Daten von einer Analogeingangbusklemme auslesen will, dann muss ich bei der Parametrierung für diese unbedingt eines von PDO Transmit Ids (sendet die Istwerte an die Steuerung) und für einen Analogausgang PDO Receive (empfängt die Sollwerte von der Steuerung) vergeben?

Hallo,
eigentlich ja. Die Clients (also die Slaves) können meistens in irgend einer Form parametriert werden, damit verschiedene Datenpunkte auf einen PDO aufgelegt werden können (sind ja 8 Byte lang maximal).

Da jeder Client eine eigene ID haben muss, können gleiche Clients ganz identisch konfiguriert werden.

Es gibt immer (glaube ich) eine Default Konfiguration wo 4 PDOs parametriert sind für den Datenaustausch (in jede Richtung), das könnte aber auch erweitert werden da bei diesem CAN Open ziemlich herumgedreht werden kann.

Wichtig in diesem Punkt ist auch noch wann du die Daten übertragen willst (zyklisch, auf Veränderung usw.) das hängt auch wieder vom Client ab, was hier unterstützt wird.

Willst du den Client selber über den MASTER konfigurieren, kannst du die SDOs verwenden, wo du im Prinzip die Parameter-Adresse angibst und den Parameter Wert, so kann der Master den Client im Prinzip selber konfigurieren...


bg
bb
 
Zuletzt bearbeitet:
Nach langer Suche habe ich zum Schluss gekommen, dass sehr wahrscheinlich die Busklemmen selbst eigene ganz spezifische CAN-Nachrichten haben, die für die interne Kommunikation mit dem Buskoppler verwendet werden und die ich zufälligerweise in meiner Steuerung für die Ansteuerung der digitalen Ausgänge benutzt habe.

Eine dieser spezifischen CAN IDs war 0x180. Die Nachricht wird sehr wahrscheinlich für die Fehlerausgabe der Thermoelementenbusklemme verwendet. Das heißt in meinem Fall, wenn das Thermoelement ausgesteckt wird, dann merkt das die Busklemme und schickt kurz eine Nachricht mit CAN ID 0x180 an den Buskoppler und damit aktiviert auch meinen digitalen Ausgang, der die gleiche von mir vergebene ID hat. Somit kann man feststellen, dass man nicht alle CAN ID vergeben darf, was auch ganz logisch ist. Leider habe ich am Anfang darauf nicht geachtet und habe alle IDs wie gesagt nach meinem Geschmack vergeben.
Das kommt der Sache zwar nahe, stimmt aber nicht ganz. Nur der Buskoppler ist ein CanOpen-Teilnehmer, die einzelnen Klemmen dagegen nicht. Die kommunizieren über den internen K-Bus mit dem Koppler. Der Koppler erzeugt ein der Reihenfolge der Klemmen entsprechendes I/O-Abbild. Ich gehe davon aus, dass er dabei wie WAGO digitale und analoge Daten getrennt behandelt. Die Daten dieses I/O-Abbildes kann man bei Beckhoff dann recht freizügig auf PDO's verteilen, die zur Echtzeit-Kommunikation des Kopplers mit dem Master dienen. Die PDO's sind allerdings grundsätzlich Broadcast-Nachrichten. Nicht nur der Master empfängt sie, sondern alle Teilnehmer, auch der sendende Buskoppler. In Deinem Fall hat die Thermoelement-Klemme das Senden des Emergency-PDO's 0x81 durch den Koppler verursacht. Der Koppler hat dieses PDO aufgrund Deiner ID-Vergabe aber auch selbst empfangen und als Sollwerte für die Digital-Ausgänge interpretiert.
Du brauchst nicht für jede Klemme ein eigenes PDO anlegen, sondern kannst jedes PDO mit beliebigen Daten vollpacken (max. 8 Byte/PDO). Ich würde allerdings vermeiden, digitale und analoge Eingangsdaten im selben PDO zu senden, weil man für analoge Eingangssignale in der Regel eine Sendesperrzeit festlegt, um eine zu hohe Buslast durch ein Flackern des LSB's zu verhindern.
 
Zurück
Oben