Forum: Mikrocontroller und Digitale Elektronik CANOpen Node-Id von Dunker Motoren ändern


von Andre S. (andre-s)


Lesenswert?

Hallo,

meine Idee ist es auf Basis eines AT90CAN128 ein kleines Gerät mit 
LCD-Display zu bauen mit dessen Hilfe ich die CANOpen Node-ID eines 
Dunker Motors auslesen (scannen) kann und auch eine neue Node-ID setzen 
kann. Der Motor soll dazu als einziger CAN-Bus Teilnehmer an dieses 
Gerät angeschlossen werden.

Bei uns im Betrieb sind jede Menge Dunker Motoren verbaut und da wäre so 
ein kleines Gerät hilfreich.

Soweit ich bisher gegoogelt habe verwenden die Dunker Motoren das 
CANOpen Protokoll.

Ich bin leider kein CAN-Bus Spezialist und kann daher nicht abschätzen 
ob sowas "einfach" zu realsieren ist, gibt es hier Spezialisten die mir 
dazu ein paar Info's geben könnten?

LG

André

von Clemens S. (zoggl)


Lesenswert?

wozu scannen? auf einen NMT MUSS das gerät reagieren (ID =700 +Node ID 
Daten =Status).
Dann hast du die ID. jetzt brauchst du nur noch einen SDo senden, der 
die ID anpasst.

das kannst du mit unterschiedlichen baudraten probieren, dann bsit du 
auf der sichern seite

dafür muss der Motor aber aus dem CAN netzwerk entfernt werden, sonst 
hast du zwei master.

dann kannst du ändern:
Baudrate:
2000/1 mit 6E657277 füllen (schreibzugriff erlauben)
und 2000/3 mit der neune Baudrate füllen 0-7 = 
1m,800k,500k,250k,125k,100k,50k,20k

adresse:
2000/1 mit 6E657277 füllen (schreibzugriff erlauben)
2000/2 mit adresse füllen (da hast du nur 2sec zeit!)

sg Clemens

von Martin (Gast)


Lesenswert?

Hallo André,

für diesen Motor muss es ein Object Dictionary(meist eine *.eds Datei).
Wenn in diesem OD ein Eintrag für die Node Id vorhanden ist, kannst du 
die Node Id mittels SDO setzen, falls erlaubt.

Bezüglich CANopen würde ich dir raten, auf eine fertige Implementierung 
zurückzugreifen, in den Artikel ist unter CAN ein freier Stack verlinkt.
Ob der brauchbar ist, kann ich dir nicht sagen, weil ich mit CANopen auf 
STM32 Controllern arbeite.

Mfg
Martin

von Clemens S. (zoggl)


Lesenswert?

vergiss die fertige implementierung. du willst genau 3 Nachrichten 
senden
(NMT und 2 SDOs) und 3 empfangen (Antwort auf NMT und die beiden 
antworten auf die SDOs. Sich da über eine CANopen implementierung 
gedanken zu machen ist absoluter overkill. klopf die fix ins programm 
und gut is.

von Andre S. (andre-s)


Lesenswert?

Hallo Clemens,

Du scheinst dich ja gut auszukennen, ich kenne mich im Bereich CAN-Bus 
eigentlich garnicht aus.

Ich habe versucht mich in das Thema einzulesen, allerdings finde ich per 
Google da nicht wirklich viel.

Folgendes PDF erscheint mir da ein bischen hilfreich:
http://www.a-m-c.com/download/sw/dw300_3-0-3/CAN_Manual300_3-0-3.pdf

Folgende Fragen hätte ich noch:

Clemens S. schrieb:
> wozu scannen? auf einen NMT MUSS das gerät reagieren (ID =700 +Node ID
> Daten =Status).

So wie das gelesen habe muss ich beim senden vom NMT doch eine Node ID 
mit angeben, oder? Dann antwortet der Slave mit 700+NodeID, richtig?? 
Oder senden alle Slaves beim Power-Up einen NMT (Boot-Up Message?), dann 
bräuchte ich ja nur darauf warten.

> dafür muss der Motor aber aus dem CAN netzwerk entfernt werden, sonst
> hast du zwei master.

Der Motor würde als einziger Teilnehmer an meinem kleinen Gerät hängen, 
das sollte also so gehen.

> adresse:
> 2000/1 mit 6E657277 füllen (schreibzugriff erlauben)
> 2000/2 mit adresse füllen (da hast du nur 2sec zeit!)

Wie kommst Du auf den Wert 6E657277 ? Kann man das irgendwo nachlesen? 
Ist das Dunker-Motor spezifisch oder CANOpen?

Bin mir nicht sicher ob ich das ganze hinbekomme, ich werde es trotzdem 
mal probieren. Dazu habe ich mir mal von Olimex das AT90CAN128 
Development Board 
(https://www.olimex.com/Products/AVR/Development/AVR-CAN/) bestellt.

Motoren haben wir bei uns im Ersatzteillager rumliegen, wir haben auch 
noch einen CAN-Bus USB-Stick (miCan-Stick), soweit ich weiss kann man 
damit auch den Bus belauschen - das ist vielleicht für eine Fehlersuche 
hilfreich.

Andre

von Heinz-Jürgen O. (Firma: emtas) (hjo)


Lesenswert?

Hallo Andre,

Es gibt prinzipiell zwei mir bekannte Möglichkeiten die Knoten Nummer zu 
setzen.
- über ein Objekt im Objektverzeichnis mittels SDO Transfer.
  Entweder direkt, oder eventuell erst über ein weiteres Objekt
  (Password Schutz) den Schreibzugriff freischalten
- über die CANopen Layer Setting Services LSS
  (Das ist der vom CiA empfohlene Mechanismus)

Wenn alle Geräte die gleiche  Baudrate haben, kann man auf die Boot-Up 
warten, welche bei einer Konfigurierten Node-Id die Id 0x700+Node-Id 
hat.
Hat man die Boot-Up verpasst, hilft ein NMT Reset Node an alle Knoten 
von Deinem Tool gesendet. Das ist eine CAN Message mit Id 0 und den 
beiden Datenbytes 0x81 0x00. Daraufhin führt das angeschlossene Gerät 
(oder alle) einen Reset aus und meldet sich mit der Boot-Up.

Um zu entscheiden, welcher Weg für das Gerät gangbar ist, hilft nur das 
Handbuch, oder wie schon erwähnt, das Electronic Data Sheet (EDS Datei) 
des Gerätes.

     Heinz

von Heinz-Jürgen O. (Firma: emtas) (hjo)


Lesenswert?

Andre,

das Handbuch von AMC ist nicht schlecht. Zumindest kann man es benutzen 
um prinzipiell NMT Kommandos zu bauen oder SDO Zugriffe zu generieren.
Das beschriebene Gerät kann über Objekt:
100Bh: Stored Node-ID
eine neu Node-Id erhalten, wenn ein Hardware-Schalter auf Software 
Setting gestellt ist.

Ich möchte noch auf die vielen links zum Thema CANopen auf 
http://www.can-wiki-info hinweisen.

 Heinz

von Andre S. (andre-s)


Lesenswert?

Heinz-Jürgen Oertel schrieb:

> Das beschriebene Gerät kann über Objekt:
> 100Bh: Stored Node-ID
> eine neu Node-Id erhalten, wenn ein Hardware-Schalter auf Software

Hallo Heinz,

das PDF hatte ich über Google gefunden, hat aber nichts mit den bei uns 
eingesetzten Dunker Motoren zu tun, ich fand nur die generellen Infos 
darin interessant.

Ich muss mir erstmal die Dunker-Dokumentation für unsere Motoren 
besorgen, leider scheinen die nötigen Infos nicht über die Dunker 
Website verfügbar zu sein (auch nach einer Registrierung dort habe ich 
nichts finden können).

Allerdings scheint es so zu gehen wie Clemens bereits weiter oben schon 
beschrieben hat, dazu habe ich folgende Info gefunden (auch nicht direkt 
von Dunker, bezieht sich aber darauf):

Seite 7 -> 
http://www.ief-werner.de/downloads/APP5024_DE_1092606_TwinCAT_dunMOT.pdf

Dann warte ich mal auf mein Olimex CAN-Board und schau mal wie weit ich 
komme.

André

von Heinz-Jürgen O. (Firma: emtas) (hjo)


Lesenswert?

Andre S. schrieb:
> ..
> das PDF hatte ich über Google gefunden, hat aber nichts mit den bei uns
> eingesetzten Dunker Motoren zu tun, ich fand nur die generellen Infos
> darin interessant.

meine ich auch.

> http://www.ief-werner.de/downloads/APP5024_DE_1092606_TwinCAT_dunMOT.pdf

Da steht allerdings nicht, wie TwinCAT die Node-Id ändert.

Viel Glück - und Frohe Ostern

 Heinz

von zoggl (Gast)


Lesenswert?

das dokument hast du ja bereits gefunden (den link hatte ich leider 
vergessen).

von dunker gibt es ja ein service tool, um das alles einzustellen.
welchen CAN/USB umsetzer verwendet ihr da? bei dem ding von peak und 
ixxat kanst du über den jeweiligen can view zusehen was das tool so 
treibt. das kopierst du dann einfach in dein eigenes programm.

einen vollständigen stack zu implementieren ist für die 5 nachrichten 
ein overkill.

hast du eine funktionierende gegenstelle, die du lesen kannst?

sg

von Andre S. (andre-s)


Lesenswert?

Hallo Clemens,

unsere Motoren werden ohne Zubehör an uns geliefert, kommen quasi direkt 
vom Hersteller der Anlage wo auch die Motoren eingebaut sind.

In dieser Anlage sitzen TCP/IP - CAN Gateways - im Normalfall werden die 
neu eingebauten Motoren dann über den Steuerungsrechner parametriert - 
also Auslieferungs Node-Id von 127 auf x gesetzt. CAN-Bus Baudrate 
bleibt wie im Auslieferungszusand auf 125k.

d.h. wir verwenden das Dunker-Service Tool (Drive Assistant) nicht.

Es kommt aber häufiger vor das ein Motor ausgebaut wurde und sich im 
nachhinein rausstellt das der garnicht defekt war... Nur hat der 
ausgebaute Motor dann leider nicht mehr die Auslieferungs Node-Id von 
127, dazu wollte ich mein kleines Gerätchen bauen.

Zum testen hätte ich einen/mehrere Motoren und den miCAN USB-Stick.

Wenn ich alles richtig interpretiert habe scheint es ja relativ einfach 
zu sein.

NMT senden:
COB-Id: 000h - 81h 00h - Reset all Nodes

Antwort vom Motor:
COB-Id: 700h+NodeId - 00h

Damit hätte ich die momentane Node-Id.

Dann 2 expedited SDO's senden:
2000/1 mit 6E657277 füllen (schreibzugriff erlauben) ->

COB-Id:600h+NodeId - 23h 00h 20h 01h 77h 72h 65h 6eh
Antwort darauf :
COB-Id:580h+NodeId - 60h 00h 20h 01h

2000/2 mit neuer Node-Id füllen ->

COB-Id:600h+NodeId - 2fh 00h 20h 02h Node-Id 00h 00h 00h
Antwort darauf :
COB-Id:580h+NodeId - 60h 00h 20h 02h

Der Motor übernimmt wie ich gelesen habe die neue Node-Id erst nach 
einem Power-Cycle. Vielleicht reicht ja auch nochmal ein NMT zum 
resetten...

André

von Clemens S. (zoggl)


Lesenswert?

Andre S. schrieb:
> Zum testen hätte ich einen/mehrere Motoren und den miCAN USB-Stick.

na dann los und auf an den motor. klof die paar zeilen mal händisch in 
deinen PC und schau zu was passiert. kaputtgehen kan da eigentlich 
nichts ;)

Andre S. schrieb:
> Der Motor übernimmt wie ich gelesen habe die neue Node-Id erst nach
> einem Power-Cycle. Vielleicht reicht ja auch nochmal ein NMT zum
> resetten...

probieren geht über studieren...

sg

von Holger Zeltwanger (Gast)


Lesenswert?

Hallo CANopen-Freunde,

die Node-ID mit SDOs zu ändern ist zwar eine gängige Praxis, aber 
Vorsicht: wenn das CANopen-Gerät die Restore-Funktion (zurücksetzen auf 
die Fabrikeinstellungen) unterstützt, muss man darauf achten, dass die 
Einstellungen der node-ID permanent gespeichert werden und bei einem 
eventuellen Zurücksetzen nicht auf den Default-Wert gesetzt werden. 
Ansonsten gibt es eventuell zwei Geräte mit der gleichen node-ID im 
Netz, was gegebenenfalls zu einer unauflösbaren Buskollision führen 
kann. Es geht dann ein Teilnehmer in den Bus-off-Zustand.

Beste Grüße

Holger Zeltwanger

von hal9000 (Gast)


Lesenswert?

Versuche es doch mal über LSS.
Die Spec heisst DS306 und kann bei der CiA gesaugt werden.

von Netzwerker (Gast)


Lesenswert?

Hallo André,

solch ein Gerät zum Verstellen der Node-ID und der Baudrate gibt es 
schon, siehe www.canfigurino.de
Es spricht CiA306.

von Netzwerker (Gast)


Lesenswert?

Korrektur: CiA305, Layer set t ing services (LSS)

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