TwinCAT Motion CanOpen Schrittmotor

philips0815

Level-2
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich möchte gerne CanOpen Schrittmotore mit TwinCAT betreiben.
Meine Erfahrung mit Beckhoff SPS und TwinCAT reichen für einfache Schaltungen. Das wars dann auch schon.
Möchte gerne später mal eine Eigenbau Fräse damit betreiben. Wie die Steuerung dann mal genau aussehen soll weiß ich noch nicht genau, hoffe das ergibt sich dann in weiterer Folge wenn ich mal mehr Erfahrung gesamelt habe. Soweit zu meinem Vorhaben.


Habe einen EK1100 Buskoppler mit einigen I/O's und einer EL6751 CAN Master Klemme.
Komponenten habe ich konfiguriert.
001.jpg

Die TxPDO's und RxPDO's habe ich soweit eingerichtet und kann diese auch im TwinCat sehen.
002.jpg003.jpg


Nun möchte ich gerne mal versuchen mit den Achsen zu verfahren.
Kann ich das auch ohne PLC?

Ich vermute ich muss noch eine Verknüpfung der jeweiligen PDO's zur NC Achse herstellen, oder?

Kann mir jemand damit weiterhelfen??

Schon mal Danke im Voraus.

Lg
 
Soweit es aussieht folgt dein Antrieb dem DSP 402 Profil.
Zwei Ansätze:

#1: Google nach DSP 402 dann weisst du wie das Control / STatuswort aussieht um deinen Antrieb anzusteuern. Konfig im Antrieb muss entsprechend passend (z.B. Mode of Operation...)

#2: Füge einen AX2000 hinzu als Vorlage. Der dürfte (aus dem Gedächtnis) positionsgesteuert fahren/konfiguriert sein (kann man aber ändern). Hintergrund ist das du die dort automatisch erstellen Veknüpfungen zur NC als Vorlage nimmst und diese manuell auf deinem Antrieb zu einer anderen Achse erstellst. Per NC hast du aber dann noch Skalierungsfaktoren zu beachten....


Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Danke für deine Antwort.
Controlword und Statusword habe ich von der canopen Doku des Antriebs. Muss ich die selbst noch wo eintragen, dachte die sind schon vergeben aufgrund des dsp 402 Standards?

Habe versucht den Antrieb als AX2000-B900 zu konfigurieren, jedoch wird bei mir nichts automatisch verknüpft. Habe nur leere Ein. Und Ausgänge bei den Achsen.

Ich kann auch unter can Device CanMessages schreiben und OpMode ändern und den Antrieb bewegen.
Nur unter dem Tab Online im Achsenmenü habe ich keine Verbindung.

Vieleicht stehe ich auch nur auf der Leitung ;)


Gesendet von meinem SM-P600 mit Tapatalk
 
Prinzipiell kannst du den Antrieb über die NC fahren oder über die PLC.
Wenn du es über die NC machst muss Control + Status sowie die TargetVel oder Pos sowie die aktuelle Position mit der NC-Achse verknüpft werden. Die Chance dass TwinCAT dir die Verknüpfungen erstellt sind quasi null (müsste in der EDS definert sein).
Doku findest du dazu nicht im Infosys. Es verbleibt die Möglichkeit an einem existierenden Beispiel dich entlangzuhangeln - deshalb Variante #2 einen AX2000 zu konfigurieren. Hier werden die Verknüpfungen zur Achse automatisch erzeugt.

Schick mir doch mal per PM mal deine *.tsm Datei. Wenn ich Montag etwas Zeit finde könnte ich schauen dir die Verknüpfungen zu erstellen....
Interessant/relevant sind zudem
- Encoder ja/nein; Was für eine Auflösung / Umdrehung (wegen NC Config)
- In was für einen Betriebsmodi soll der Antrieb gefahren werden (sollpos oder sollVel).
- Genaue Bezeichnung des Antriebs falls ich noch Daten ergoogeln müsste.

Guga
 
Hallo!

Habe nochmal versucht einen AX2000 zu konfigurieren. Hat soweit mit den Verknüpfungen funktioniert.
Ich habe im Internet eine Anleitung für einen Dunkermotor mit CanOpen gefunden. Die PDO's sind im Grunde dieselben wie bei meinem Antrieb.
Jedoch sind das Statusword und Controlword bei dem Dunkermotor 1 Byte lang und bei meinem haben diese 2 Byte.

Werde dir ein PM schicken mit den Dateien schicken. Wäre spitze wenn du mal drüber schauen könntest.
Vielen Dank.

Lg philips0815
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Control & Status sind nach dem DSP auch 2 Byte lang. Die top-infos liegen im 1-Byte... darum könnte/wird es wohl auch mit dem Dunker-Motor funktionieren.
Beim AX2000 sind ziemlich sicher jeweils 2 Byte verlinkt.

Guga
 
Auf Basis deines Projektes und der Dokus:

Laut Doku zu deinem StepIM Antrieb:

-Mode of Operation = 8 (Cyclic Synchronous Position).
-Die SollPos aus der NC ist im Objekt 0x607A (TargetPosition) => PDO muss somit als Sync definiert sein (was schon der Fall war).
- Encoderauflösung = 4096


Automatisch verknüpft sich da nichts – das müsste in der *.eds stehen und das ist Standard da Beckhoff spezifisch.
Als Typ muss du DSP402 waehlen.


Verknüpft zur NC sind nun:
Encoder
Aktuelle Position
Drive
Schleppfehler (optional)
Status (auf 2 Einträge mit je 1 Byte in der NC verknüpft)

TargetPos
CommandValue (auf 2 Einträge mit je 1 Byte in der NC verknüpft)


Ich gehe davon aus das das EA-Abbild des Antriebs aus der *.eds herausbekommen hast.
Persönlich würde ich nun alle Werte die du nicht brauchst entfernen (bedeutet aber in der SDO-Startup-Liste einige Werte zu setzen, und in diesem Fall auch den Betriebsmode auf die 8 setzen und aus dem zyklischen Interface herausnehmen.
die Ergonomie ist hier suboptimal und ohne entsprechendes CAN-Wissen wird es nicht funktionieren….
Wenn du aber Rx-PDOs hat die du nicht verwendest so stelle sie doch auf Transmisstion Type 255. Das reduziert die Last auf dem CAN. Habe ich hier gemacht auf der RxPdO3, musst du also eventuell rückgängig machen.

Gearbeitet habe ich auf der Achse1 und dem Antrieb 101. Probiere es aus, wenn OK ziehe es in den anderen Antrieben/Achsen nach.
Du musst aber wie gesagt den Mode_of_Operation auf 8 setzen.

Ich habe dir in der NC auch ein paar Parameter umgestrickt.
-> Enc: Encoder SubMask = 0x000FFF (=12 Bit = 4096 Punkte/Umdrehung)
Du bist aber hier nicht fertig. Als Skalierungsfaktor sagst du 0.09 mm/inc, also 0,331776mm/Umdrehung.
Doku sagt das bei ~1400 RPM aber Schluss ist…
 
Zuletzt bearbeitet:
Hallo!

Habe das Projekt ausprobiert. Mit der Betriebsart 8 cyclic synchronous position mode bekomme ich den Antrieb nicht in den Enabled Status(grüne Led blinkt).
Die Reglerfreigabe habe ich gesetzt. Wenn ich auf Bewegung - oder + klicke bekomme ich den einen Antriebsfehler im Messagefenster - Fehlercode 0x4225
Habe ich etwas vergessen?


Den Skalierungsfaktor habe ich falsch Berechnet. Müsste 4mm(Steigung der Antriebsspindel) durch 4096 sein -> 4/4096 = 0,0009765625mm/inc

lg Philips0815
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut deiner Drive-Doku (StepIM von Servotronics) bedeutet eine grüne blinkende LED das der Antrieb "the drive is ready to be enabled and operational"

Wenn du den die Reglerfreigabe setzt (und den Override -> d.h. einfach "all" drücken, kommt der Fehler dann schon?
Oder erst wenn du tatsächlich versuchst ihn zu bewegen?
Wann setzt du die Betriebsart?
Welcher Wert ist für das Tippen (Geschwinndigkeit) in der NC aktuell definiert? Bitte auf einen realistischen Wert setzen (z.B. 1 (mm/sec) = 60 RPM).


Mach doch einmal einen Screenshot des OnlinePanels nach Reglerfreigabe (bevor du ihn bewegst).
Hast du Zugriff auf den Motor per externer SW ? Was sagt diese?

Ich brauche mehr Info... mit den paar Brotkrümeln die ich bisher habe ist die Glaskugel ziemlich trüb.
Also lieber etwas mehr Info als zu wenig..

Guga
 
Nein der Fehler komm wenn ich auf eine Fahrtrichtung klicke -> z.B. F2- oder F3+
Unbenannt1.jpg

Die Betriebsart setze ich bevor ich die Reglerfreigabe setzte. Die Betriebsart wird auch gesetzt im TxPDO Modes of Operation - siehe Foto.
Unbenannt2.jpg

Die Geschwindigkeit habe ich gesetzt mit 2mm und 5mm.
Unbenannt3.png

Im Diag-Tab von Antrieb 1 steht folgendes:
BoxState: Node is Operational but not all TxPDOs were received
TX-PDO 4 missed

Verknüpft ist ja nur der Schleppfehler auf PDO4 und den gibt's ja ohne Bewegung nicht also ok oder?

In den anderen Betriebsarten kann ich den Motor verfahren mit Externer Software.

Endschalter Funktion ist in den Parametern auf false also können die auch nicht das Problem sein.

Hoffe die Glaskugel sieht nun etwas klarer :ROFLMAO:

lg philips0815
 
So. Man sieht das das ControlWord dem Antrieb sagt "Enable" (aus dem Online-Tab), als Status kommt aber nicht die entsprechende Rückmeldung.

Im Controlword müsste/ist
Bit3, Bit2 und Bit1 = TRUE sein

Statuswort (aus deinem Wert 54/ als bitcodierter Wert):
Bit 2 Operation Enabled =FALSE
Bit 1 Switched On = TRUE
Bit 0 Ready to Switch On = TRUE

Absolut unklar ist warum der Antrieb nicht in Enable geht (sichtbar z.B. im Online Tab von deinen Screenshot).
Fehler wirft der Antrieb ebenfalls nicht. Frag doch mal beim Hersteller nach ob er weiss was die Ursache sein könnte.
Du kannst auch mal der Anleitung folgen (Kapitel 8.2) und auf dem Antrieb das Controlword auf 0x6, danach auf 0x7 und dann auf 0xf forcen (und dir jeweils das StatusWord anschauen).
Wie gesagt bin ich erst mal ratlos.

Off topic: Der Overwrite muss 100 (%) sein. Bei 0% würde sich nichts bewegen so wie du ihn gesetzt hat.
Ach ja - und der Schleppfehler TxPdo4 ist wie du korrekterweise sagst nicht wichtig.

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen Abend!

Ich denke der Fehler liegt irgendwo bei mir bzw. an Twincat.

Habe nun eine Verbindung mit einem CanBus Modul hergestellt und in VS 2015 in C# eine kleine App erstellt und gebe die CanOpen Messeges manuell ein.

Bekomme folgende Stats:

2B 40 60 00 0E 01 00 00 -> 60 40 60 00 00 00 00 00 Antrieb deaktivieren
2F 60 60 00 08 00 00 00 -> 60 60 60 00 00 00 00 00 Modus auf 8 ändern
2B 40 60 00 8E 00 00 00 -> 60 40 60 00 00 00 00 00 Fehler rücksetzen
2B 40 60 00 06 01 00 00 -> 60 40 60 00 00 00 00 00 Antrieb Shut down
2B 40 60 00 0F 01 00 00 -> 60 40 60 00 00 00 00 00 Antrieb einschalten

Danach habe ich als Statusword 623 -> 1001101111
Das sollte doch so passen oder??

Wenn ich in Twincat den Modus ändere auf 8 funktioniert es nicht.

Die CANErr Led an der EL6751 blinkt auch im Sekundentakt, im Diag-Fenster steht jedoch kein Fehler - Normal?

Könnte es an falsch konfigurierten Drive Objekten liegen??


Wie könnte ich die Fahrt nun manuel starten?

lg philips0815
 
Zuletzt bearbeitet:
LED: Mindestens ein Box State ist ungleich null (z. B. Teilnehmer nicht gefunden, falsche Konfiguration,Teilnehmer in Störung).
Woher das nun kommt: Keine Ahnung, schau in der Diagnose der Klemme. Wobei das auch durch durch die Konfig der PDO4 stammen könnte.
Du könntest z.B. alle anderen Antriebe einmal deaktivieren und auch die PDO4 löschen. Wobei Configuration und Feature des Gerätes übereinstimmen müssten.
Dazu braucht man aber zumindest mal Einblick in die *.eds-Datei.
Deine Liste oben: Woher kommt sie/was soll sie sagen.

Them Thema Operation Modi: Du setzt sie oben per SDO. Kannst du aus TwinCAT auch: Online über den Reiter ADS. Musst halt Index/Subindex + Länge eingeben. Ich würde somit mal 0x6060:0 erst lesen und dann setzen (und danach überprüfen ob auch geschrieben wurde.
Bisher bin ich aber davon ausgegangen das dies über das Prozessabbild abgebildet wurde/wird... Wenn die entsprechende PDO aber zyklisch übertragen wird (weiss ich jetzt nicht auswendig wie es in deinem Projekt gesetzt wird) dann sind SDO-Schreib-Zugriffe aber ziemlich witzlos.

Also: Reich mal die *.eds rüber.

Guga
 
Hallo!

Die Eds File habe ich dir ber PN geschickt.

Die Liste oben beinhaltet die Einstellungen im Antrieb. Ausgelesen mit externer Software.Sind einmal die gesetzten Werte und die Default Werte.

Das mit dem Online ADS kannte ich noch nicht - Danke!
Der Transmission Typ im RxPDO1 für Controlword und Modes of Operation ist auf 1. Ist das richtig?

Werde mich noch heute nochmals etwas damit befassen und dann berichten.

lg Philips0815
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir die *.eds nun endlich einmal angeschaut.
Einen offensichtlichen Fehler finde ich nicht.


RxPDO1 = Sync1 ist der Default und korrekt.
Wie du jetzt auf den Mode of Operation von 1 kommst ist mir aber unklar. Es müsste die 8 sein.
Weiter oben sagst du doch auch das es mit der 8 schon einmal funktioniert hat (mit ext. SW).


Die LED ist ziemlich sicher auf den TxPDO4 zurückzuführen..


Im Moment muss erst einmal der Drive sich zurückmelden das er Enabled ist bevor irgend etwas anderes zu tun ist.
Prüfe doch also noch einmal den Betriebsmodi.

Guga
 
Hallo!

Nach längerer Pause habe ich mich mal wieder meinem Antrieb gewidmet.
:D

Ich bekomme den Antrieb nun im Modus Cyclic synchronous Position mode auf Enabled.
Fehler lag anscheinend an einer falschen Parametrierung im Antrieb von Parameter 60C2-Interpolation Time Period.
Habe nun die Werte 2 und -3 in diesem Parameter eingetragen.

Jedoch wenn ich jetzt mit dem Antrieb verfahren will bekomme ich den Fehler am Antrieb "PLL Lock lost".


Fehlerbeschreiben in der Anleitung:
PLL lock lost In synchronous motion the drive
phase locked loop (PLL) on sync signal
has failed.
Check CAN sync cycle parameter
(object 60C2h) and increase it if
needed.


Screenshots von der Onlinesteurung sind im Anhang.​

Bild1 - Vor der Bewegung1.jpg
Bild2 - Nach der Bewegung2.jpg
Bild3 - GeneralDiag3.PNG
Bild4 - Sync Diag4.PNG

Könnte dies noch immer an einer falschen Parametrierung liegen?
 
Zuletzt bearbeitet:
Hallo!

Bin nun einen Schritt weiter.
Habe die Cycletime Einstellung in Twincat und im Antrieb angepasst.
Wenn ich nun den Antrieb aktiviere geht der kurz auf ein macht einen minimalen Ruck und fällt mit dem Fehler 18000 aus.
Im Fehlerspeicher des Antriebes steht der Fehler Position error.

Bild1.PNG

Könnte dies noch an einer falschen Parametrierung in den Twincat Einstellungen liegen.
Ich denke die Konfiguration an sich sollte so funktionieren.

Lg Philips0815
 
Zurück
Oben