leider zuerst im falschen Forum gepostet:
Moin, ich habe eine Frage zu einem CAN-DP-Gateway.
Es wird die CANopen- und Layer2-Funktionalität unterstützt.
Wenn man die ganz normale Layer2-Funtionalität nutzt (also nix mit
CANopen) kann die Profibus-SPS ja beliebige Telegramme senden.
Also z.B. ID = 412
len = 8
data[n] = n
Wird aber die CANOpen-Funktionalität benutzt, stehen nur jeweils 4 RX-
und TX-PDO's zur verfügung. Was heißt das genau? Können vom Gateway dann
nur Telegramme mit vier verschiedenen ID's gesendet werden oder wie muss
man das verstehen?
Es können auch mehr als 4 Nachrichten-IDs gesendet/empfangen werden.
Dazu müssen die jeweils 4 vorhandenen PDOs aber dynamisch umgemappt
werden.
Näheres kann ich dir aber gerade nicht dazu sagen. Musst du mal in die
CANOpen-Spezifikation schauen.
danke, aber mich würde interessieren, was es bedeutet 4 PDO's benutzen
zu können. Heit dies, dass ich 4 Identifier (etwa 100+ID, 200+ID,
300+ID, 400+ID) bei verschiedenen ID's benutzen kann, oder ist mit "es
stehen 4 PDO's zur verfügung" gemeint, dass Telegramme gesendet werden,
die zwar in ihren 8 Bytes frei sind, aber es nur 4 Möglichkeiten für
genau eine Adresse gibt?
Nicht ganz. Ein PDO ist ein ProzessDatenObjekt. Das bedeutet, du kannst
pro CANopen-TEilnehmer (Node) maximal vier PDOs (a)zyklisch mit der SPS
austauschen. (mit je max. acht Byte)
Diese PDOs haben folgende IDs:
PDO SPS => Node n Node n => SPS (n:Teilnehmer 1..127)
1 0x200 + n 0x180 + n
2 0x300 + n 0x280 + n
3 0x400 + n 0x380 + n
4 0x500 + n 0x480 + n
Andere IDs haben andere Bedeutungen!
Reichen diese 8x4=32Bytes an Prozessdaten nicht, können weitere Daten
per SDO, ServiceDatenObjekt, azyklisch angefordert werden:
SPS => Node n Node n => SPS (n:Teilnehmer 1..127)
0x600 + n 0x580 + n
(Die IDs haben bei CANopen festgelegte Bedeutungen!)
okay, aber beim Gateway ist festgelegt, das es 4 PDO's in jede Richtung
gibt, also so wie Du es dargestellt hast.
Dies schließt dann ber nicht aus, dass die SPS mir Nachrichten mit den
IDS 201, 202, 301, 310, 599 etc senden kann? Das bedeutet dann, dass n
NICHT die Node-ID des CAN-Gateways ist?
Klar, bei CANopen gibt es festgelegte bedeutungen, ich nutze das Gateway
aber nur zum Datenaustausch zwischen SPS und PC (CAN-Karte). Es soll
also nicht direkt ein CANopen-Node über das Gateway gesteuert werden.
Ich will eichfach nur in jede Richtung Telegramme senden, was dann
scheinbar mit jeder ID möglich ist, aber am Ende dann kein CANopen mehr
ist, richtig?
>Ich will eichfach nur in jede Richtung Telegramme senden, was dann>scheinbar mit jeder ID möglich ist, aber am Ende dann kein CANopen mehr>ist, richtig?
Richig. Dann muss du mit CAN (Layer2) und darfst nicht mit CANopen
(Laxer8) arbeiten.
Also alle Geräte (Gateways..) die nur CANopen können, sind somit
ungeeignet.
Angenommen, das Gateway hat die NodeID = 0x05,
dann kann das Gateway im Layer2-Modus Telegramme NUR auf 0x205, 0x305,
0x405 und 0x505 senden und verarbeitet nur Daten mit der ID 0x185,
0x285, 0x385 und 0x485.
Ist das damit gemeint, wenn es heißt, dass es 4 PDO's gibt?
So ähnlich.
Ließ dir die CAN-Open Spezifikationen der CiA durch.
Im Grunde könnte das Modul, wenn es den vollen Umfang von CAN-Open
unterstützt 127*4 PDOs haben.
Jeder Node-Id sind genau 4 Rx und 4 Tx PDOs zugeordnet.
Can-Open-Teilnehmer können aber auch mehrere Node-Ids haben, um somit
mehr PDOs zu benutzen.
Der Inhalt dieser PDOs ist frei wählbar bzw besitzt kein
Protokoll-Over-Head.
Zu dem Modul, das du sicher vor dir liegen hast, kann ich nun nicht
sagen, was es alles beherrscht, aber dafür gibt es Manuels, wo das alles
gut beschrieben ist. Ansonsten bei der CiA die Spezifikationen anfragen
und durchlesen(gute Englischkenntnisse sollte man schon mit bringen).
>Angenommen, das Gateway hat die NodeID = 0x05,>dann kann das Gateway im Layer2-Modus
Nein. Im Layer2 gibt es keine NodeIDs !
>Telegramme NUR auf 0x205, 0x305,>0x405 und 0x505 senden und verarbeitet nur Daten mit der ID 0x185,>0x285, 0x385 und 0x485.
Für CANopen ist das fast richtig: Du hast Sende und Empfangsrichtung
vertauscht. Sonst passt das für CANopen.
Also es kann empfangen: 0x185, 0x285, 0x385, 0x485 und empfangen die
anderen...
>Für CANopen ist das fast richtig: Du hast Sende und Empfangsrichtung>vertauscht. Sonst passt das für CANopen.>Also es kann empfangen: 0x185, 0x285, 0x385, 0x485 und empfangen die>anderen...
gut, dann habe ich das jetzt hoffentlich begriffen ;-) Danke für Eure
hilfe!
Warum es im Layer2 aber keine NodeID gibt, bleibt mir schleierhaft.....
Irgendwie muss man doch ein bestimmtes Modul ansprechen können.....
>Warum es im Layer2 aber keine NodeID gibt, bleibt mir schleierhaft.....>Irgendwie muss man doch ein bestimmtes Modul ansprechen können.....
Kann man nicht. Es ist umgekehrt, jeder Sender, jedes Datum hat eine
Absenderadresse welche das Datum eindeutig identifiziert. Jeder
Teilnehmer kann mithören. Multicast, 1 Producer - 1-n Consumer.
>Warum es im Layer2 aber keine NodeID gibt, bleibt mir schleierhaft.....>Irgendwie muss man doch ein bestimmtes Modul ansprechen können.....
Der Layer2, also das "normale" CAN selbst adressiert keine
Teilnehmeradressierung. Dort hat jede Nachricht eine "Nummerierung", die
COB-ID. Jeder Teilnehmer kann jede Nachricht erstmal empfangen und
anhand der COB-ID enscheiden, ob sie für ihn interessant ist oder nicht.