Beckhoff TwinCAT3 CNC HMI Anschluss Schrittmotor (Step/Dir)

techam

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

ich versuche aktuell einen Open-Loop Schrittmotor in meine Beckhoff CNC-Steuerung einzubinden, leider weiß ich nicht wirklich weiter.

Kurz zu den Gegebenheiten:

Desktop-PC mit TwinCAT3 und Beckhoff CNC HMI
AX5206 mit AM3033 Servo
EK1100
EL2004 2x
EL1014 2x
EL4004
EL3064

Leadshine DM856 + Nema23 Stepper

Die Steuerung läuft grundsätzlich und ich habe das auch schonmal mit zwei weiteren Servos zu einer Dreiachsmaschine verbunden, sodass ich G-Code testweise abfahren konnte.

Jetzt würde ich gerne noch Schrittmotoren einbinden, aber leider konnte ich dazu bisher keine brauchbaren Infos finden und auch mein Probieren mit der Steuerung hat zu keinen nennenswerten Resultaten geführt.

Ich hatte eigentlich gehofft, dass ich bei Achsentyp etwas auswählen kann, da gibt es auch die option Terminal welche mir dann die EL4004 Klemme als Auswahlmöglichkeit bietet, das verwundert mich allerdings zugegebenermaßen etwas, da ich für ein Step-Signal eine Digitale Ausgangsklemme erwarten würde und ein Dir-Signal konnte ich da bisher garnicht finden.

Bin ich da völlig auf dem Holzweg, oder übersehe ich etwas?

Wenn ihr noch weitere Infos braucht, bitte einfach sagen, dann liefere ich nach.

MfG Christian
 
Schrittmotoren: Ansteuerung über Beckhoff-Klemmen mit EL7037 o. EL7047 (die EL70x1 ist die ältere HW-Generation die ich nicht nehmen würde auch wenn die EL7031 ohne Encodereingänge daherkommt und somit etwas günstiger ist).
Bei Analogsignale muss der Motor die Spannung in Geschwindigkeit umsetzen.
Eine klassiche digitale Ausgangskemme ist für die Ansteuerung eines StepperMotors nicht geeignet. Du kannst ja nur pro Zyklus das Signal 1x toggeln.
Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort, die EL70XX Klemmen hatte ich auch gefunden, das sind dann aber ja auch gleich eigenständige Schrittmotortreiber. Ich habe die Leadshine-Endstufen aber ja schon hier liegen und hatte daher gehofft, dass ich die nötigen Schritt- und Richtungs-Signale der Steuerung über eine der digitalen oder analogen Ausgangsklemmen entlocken könnte. Da ich abschließend vier Schrittmotoren anzutreiben habe, schlägt selbst soein Satz EL7031 natürlich heftig ins Budget.

Ja, das mit der durch die Zykluszeit beschränkten maximalen Schrittfrequenz ist natürlich wahr, da die Schrittmotoren abschließend aber nur das Bett eines 3D-Druckers alle paar Minuten um einige zehntel Milimeter verfahren müssen und die Geschwindigkeit dabei unerheblich ist, hatte ich gehofft trotzdem mit diesem Ansatz davon zu kommen, ist man halt aus der Arduino-Welt so gewohnt.

Da werde ich mir wohl was überlegen müssen...

Danke für die Hilfe!

MfG Christian
 
Ja, das mit der durch die Zykluszeit beschränkten maximalen Schrittfrequenz ist natürlich wahr, da die Schrittmotoren abschließend aber nur das Bett eines 3D-Druckers alle paar Minuten um einige zehntel Milimeter verfahren müssen und die Geschwindigkeit dabei unerheblich ist, ...
... und Du die benötigten Teile und die erforderliche Geduld wohl schon hast, könntest Du es mit dieser einen ZeitlupenAchse ja mal versuchen.
Allerdings müsstest Du beachten, das die Eingänge des Treibers gegen 0 (GND) geschaltet werden, also NPN-Ausgänge statt der bei uns üblichen PNP-Ausgänge der Klemmen erwarten.
Die Treiber-Eingänge haben zwar bereits OptoKoppler, aber der Anschluss von PNP-Ausgängen an die Treiber-Eingänge wäre wohl mit 3 "externen" OptoKopplern am einfachten zu machen.
 
... und Du die benötigten Teile und die erforderliche Geduld wohl schon hast, könntest Du es mit dieser einen ZeitlupenAchse ja mal versuchen.
Allerdings müsstest Du beachten, das die Eingänge des Treibers gegen 0 (GND) geschaltet werden, also NPN-Ausgänge statt der bei uns üblichen PNP-Ausgänge der Klemmen erwarten.
Die Treiber-Eingänge haben zwar bereits OptoKoppler, aber der Anschluss von PNP-Ausgängen an die Treiber-Eingänge wäre wohl mit 3 "externen" OptoKopplern am einfachten zu machen.
Stellt sich nur weiterhin die Frage, wie ich der Steuerung die (zeitlupen) Schritt- und Richtungssignale über eine der vorhandenen Klemmen entlocke. Bisher habe ich leider keinen brauchbaren Ansatz gefunden...

Das mit NPN und PNP ist aber ein guter Hinweis, da hatte ich mir bisher noch keine Gedanken drum gemacht. Danke.

MfG Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das benötigte Produkt ist EL2521 (es gibt mehrere Variationen). Es verbindet sich mit dem Schrittantrieb entweder mit CW/CCW-Pulsen oder Schritt-/Richtungssignalen. Es gibt eine Reihe von Impulsen mit spezifizierter Frequenz und Beschleunigungs-/Verzögerungsrampen aus. Ich glaube, es kann auch mit einer NC-Achse verbunden werden, aber ich habe das nicht versucht. Wenn Sie Glück haben, können Sie vielleicht nächstes Jahr einen bekommen. ;)

John
 
Wenn Sie Glück haben, können Sie vielleicht nächstes Jahr einen bekommen. ;)
... sofern man letztes Jahr schon bestellt hat? ;)

Das mit NPN und PNP ist aber ein guter Hinweis, da hatte ich mir bisher noch keine Gedanken drum gemacht. Danke.
Sorry, Christian, ich habe gerade gesehen, dass mein Hinweis nicht gut, sondern unsinnig/überflüssig war.
Die Anschlüsse der OptoKoppler im Treiber sind alle (z.B. DIR- und Dir+) herausgeführt und intern nicht miteinander verbunden.
Das, was ich gesehen habe, ist nur ein Beispiel für den Anschluss an "Open Collector" von NPN-Transistoren, also das was die bei uns üblichen Klemmen nicht haben, aber das ist ja keine feste Vorgabe und lässt sich anpassen.
Hier das passende Schema für PNP-Ausgänge.

TreiberAnPNP.jpg
Die Software für die Ansteuerung dürfte einem RampenBaustein ähneln.
SollPosition ausgeben. Der Baustein kennt den vorher zuletzt ausgebenen Sollwert und zählt dann in einem gewissen ZeitTakt zum neuen Sollwert hoch oder runter. Allerdings ist nicht die Position, die der Baustein berechnet relevant, sondern es müssen stattdessen das RichtungsSignal und die Zähl-Impulse ausgegeben werden.

Der Treiber kann alternativ im "double pulse mode" betrieben werden, dann werden an DIR die Impulse für die eine Richtung und an PUL die Impulse für die andere Richtung ausgegeben.

In welcher GrössenOrdnung liegt Deine ZyklusZeit?
 
Zuletzt bearbeitet:
Die EL2521 ist natürlich auch interessant, aber wenn ich was kaufen muss, dann würde ich wohl gleich die Klemmen mit integrierter Schrittmotorendstufe ala EL7037 nehmen, das gibt in meinen Augen einfach ein schlankeres System.

Hier eine Übersicht meiner Aktuellen Cycle Times: Base Time ist 1ms
- CNC-Task GEO: 2ms
- CNC-Task SDA: 10ms
- I/O Idle Task: 1ms
- CNC-Task COM: 10ms
- PlcTask: 10ms
- PlcFastTask: 10ms
- PlcAuxTask: (keine)

Diese Werte waren alle so voreingestellt seitens des Servicemitarbeiters bei Beckhoff über den ich den Code für das CNC-Programm erhalten hab.

Ich hatte schon befürchtet, dass ich dafür selbst den entsprechenden Code schreiben werden muss, leider wüsste ich nichtmal wo ich da überhaupt anfangen könnte, denn das CNC-Steuerungsprogramm das ich von Beckhoff bekommen habe ich definitiv einige Größenordnungen über meiner Kompetenz. Ich habe mitlerweile den Code aller Unterprogramme durchgeschaut, aber verstehen kann ich davon nichts. Für eine ganze CNC-Steuerung ist das gefühlt viel zu wenig Code, und so Sachen wie Befehle für Achsen usw finde ich fast garnichts. Es gibt zwar das Programm CNCAxisHandler, aber da steht so gut wie nix drin nur ein paar Bedingungen wann die Achse eingeschaltet und wann ausgeschaltet werden soll 🤷‍♂️

Auch Variablen sind so gut wie keine definiert und vor Allem nichts das irgendwie nach einer Z-Achse aussieht. Ich wüste also garnicht wie ich dem Programm die nötigen Eingangsvariablen entlocken könnte und wohin ich diese wieder übergeben sollte. 🤔

Habe mich bisher in erster Linie mit den Videos von SquishyBrained beschäftigt, und auch schon probiert wie man mit entsprechenden PLCOpen-Blöcken soeine Achse ans Laufen bekommen könnte (gelungen ist es mir darüber leider noch nicht) Aber etwas das so ähnlich aussieht habe ich bisher im Code nicht gefunden. Kann es sein, dass sowas alles irgendwo im eigentlich CNC-Kernel/CNC-Bibliothek behandelt wird? Darin werde ich als Laie aber schlecht rumwerkeln können :confused:

MfG Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt zwei Ansätze.
#1: der Schrittmotor wird über das CNC-Programm bedient (G-Code). Dann muss die Achse natürlich als CNC-Achse definiert sein. In der Logik muss man dann natürlich sagen welche Achse im G-Code der Schrittmotor ist.
#2: Man hält das CNC-Programm an einer Stelle X an und bekommt in der SPS eine Rückmeldung über die Stelle X (nennt sich M-Funktion oder H-Funktion). Dann kann man "klassich" aus der SPS den Schrittmotor ansteuern und sagen "mache dies oder jenes". Wenn die SPS fertig ist mit dem Positionieren meldet sie es dann zur CNC.
In beiden Fällen musst du aber den Schrittmotor ansteuern. Und die SPS-Taskzyklus mit 10ms ist nicht so prickelnd. Da kommt man auf wenige Schritte / Sekunde wenn du es irgendwie über den digitalen Ausgang ansteuerst.
An den Zykluszeiten herumzuspielen ohne zu Wissen wie es leistungstechnisch aussieht würde ich aber absolut nicht. Und selbst wenn ich meine dass genug Leistungsreserven vorhanden sind würde ich die Finger davon lassen wenn ich den Code nicht kenne/verstehe.

Nicht böse sein, aber CNC ist auf jedenfall nichts was man so mal eben kurz macht ohne Hintergrundwissen.
Ich empfehle dir das Thema irgendwie wieder zurückzudeligieren bzw. um Unterstützung von Oben zu bitten.
 
Kann es sein, dass sowas alles irgendwo im eigentlich CNC-Kernel/CNC-Bibliothek behandelt wird? Darin werde ich als Laie aber schlecht rumwerkeln können :confused:
Darin rumwerkeln ist sicherlich auch nicht im Sinne des Erfinders.
Aber es müsste eigentlich eine gut beschriebene Schnittstelle zu diesem Bereich geben, damit man damit arbeiten kann, ohne die "Black Box" knacken zu müssen. Vermutlich ist diese Beschreibung eher zu umfangreich, als dass man als Neuling darin einen Einstieg in die Materie finden kann.
Für eine ganze CNC-Steuerung ist das gefühlt viel zu wenig Code, und so Sachen wie Befehle für Achsen usw finde ich fast garnichts. Es gibt zwar das Programm CNCAxisHandler, aber da steht so gut wie nix drin nur ein paar Bedingungen wann die Achse eingeschaltet und wann ausgeschaltet werden soll 🤷‍♂️
Das was Du suchst, wird wohl wirklich in CNC-Kernel/CNC-Bibliothek "versteckt" sein.
 
Es gibt zwei Ansätze.
#1: der Schrittmotor wird über das CNC-Programm bedient (G-Code). Dann muss die Achse natürlich als CNC-Achse definiert sein. In der Logik muss man dann natürlich sagen welche Achse im G-Code der Schrittmotor ist.
#2: Man hält das CNC-Programm an einer Stelle X an und bekommt in der SPS eine Rückmeldung über die Stelle X (nennt sich M-Funktion oder H-Funktion). Dann kann man "klassich" aus der SPS den Schrittmotor ansteuern und sagen "mache dies oder jenes". Wenn die SPS fertig ist mit dem Positionieren meldet sie es dann zur CNC.
In beiden Fällen musst du aber den Schrittmotor ansteuern. Und die SPS-Taskzyklus mit 10ms ist nicht so prickelnd. Da kommt man auf wenige Schritte / Sekunde wenn du es irgendwie über den digitalen Ausgang ansteuerst.
An den Zykluszeiten herumzuspielen ohne zu Wissen wie es leistungstechnisch aussieht würde ich aber absolut nicht. Und selbst wenn ich meine dass genug Leistungsreserven vorhanden sind würde ich die Finger davon lassen wenn ich den Code nicht kenne/verstehe.

Nicht böse sein, aber CNC ist auf jedenfall nichts was man so mal eben kurz macht ohne Hintergrundwissen.
Ich empfehle dir das Thema irgendwie wieder zurückzudeligieren bzw. um Unterstützung von Oben zu bitten.

Ersterer Ansatz wäre sicherlich zu bevorzugen. In meiner Naivität hatte ich eigentlich darauf gehofft, dass ich dazu einfach bei Achsentyp etwas hätte auswählen können alá (Step/Dir signale) und dann hätte ich dort die gewünschten Klemmen auswählen können und hätte die Ausgänge dann halt parametrieren müssen, Schrittzahlen usw.
Mit dem Achsentyp Terminals hatte ich da ja auch einen vielversprechenden Kandidaten, der mir aber nur die EL4004 Analog-Ausgang-Klemme zur Auswahl gibt und alles was ich damit experimentiert habe hat keine sinnvollen Resultate geliefert. Da bin ich, zum Schutz der Komponenten, nichtmal dazu gekommen den Schrittmotortreiber anzuklemmen, denn die Klemme hat mir keine Signale geliefert. Der Rest wäre dann halt ganz normal vom Programm gehändelt worden wie das mit SERCOS-Achsen ja bisher auch funktioniert hat. Aber das war wohl zu naiv.

Zweiter Ansatz wird wohl realistischer sein, wenn auch wahrscheinlich nicht für mich. Ich bin Maschinenbauingenieur und plane gerade meine Masterarbeit. Idee war es einen Großraum-3D-Drucker auf Beckhoff-CNC umbauen. Aber ich merke schon, dass das wohl oberhalb meiner begrenzten Programmnierkenntnisse liegt. Das mit dem Zurückdeligieren wird also wohl keine allzu schlechte Idee sein, aber deshalb beschäftige ich mich ja auch aktuell damit um das im Vorhinein abschätzen zu können.

@ Heinileini:

Das würde ich mir auch niemals zutrauen in der Libary rumzuwerkeln, dafür ist der potenzielle Schaden zu Groß.

Habe mitlerweile auch eine relativ definitive Aussage von Beckhoff zu dem Thema gefunden:

Schrittmotoren können durch die Klemmen
• Einkanalige Pulse-Train-Ausgangsklemmen
• Einkanalige Schrittmotorklemmen mit /ohne Inkremental-Encoder-Interface
an die CNC angebunden werden. Durch diese Klemmen werden von der CNC ausgegebene
Geschwindigkeitssollwerte in ein zur Ansteuerung von Schrittmotoren geeignetes Signalformat umgesetzt.
Die einkanalige Pulse-Train-Ausgangsklemme erzeugt hierbei ein zur Ansteuerung einer Schrittmotor-
Leistungsendstufe geeignetes Ausgangssignal (z.B. ein Puls-Richtungs-Signal). Die einkanalige
Schrittmotorklemme beinhalten bereits Leistungsendstufen zur direkten Ansteuerung von 2-Phasen
Schrittmotoren
Quelle: https://download.beckhoff.com/download/document/automation/twincat3/TF5200_commissioning_axis_de.pdf
S. 28

Irgendwas mit digitalen Klemmen oder so wird da wohl nicht möglich sein.

Ich bedanke mich auf jeden Fall schonmal bei euch für die Hilfe und werde wohl mal mit meinem Betreuer sprechen müssen.

MfG Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In meiner Naivität hatte ich eigentlich darauf gehofft, dass ich dazu einfach bei Achsentyp etwas hätte auswählen können alá (Step/Dir signale) und dann hätte ich dort die gewünschten Klemmen auswählen können und hätte die Ausgänge dann halt parametrieren müssen, Schrittzahlen usw.
Ich kenne nicht die CNC-Möglichkeiten bei BeckfoffSteuerungen, aber unter "AchsenTyp" hätte ich eher etwas wie RundAchse oder LinearAchse erwartet und nicht einen MotorTyp.
Bei StepperMotorTreibern sind Schnittstellen à la "Step/Dir-Signale" gang und gebe, aber bei FrequenzUmrichtern gibt es meines Wissens nichts annähernd Ähnliches.
StepperTreiber und Umrichter sind so gesehen nicht 1:1 "austauschbar" und die "Step/Dir-Signale" wären eine rein interne Angelegenheit eines "Umrichters", wenn es denn etwas Entsprechendes für StepperMotoren gäbe.
Bei den o.g. StepperTreibern fehlt einfach die "ZwischenSchicht" in der SignalBearbeitung/-Aufbereitung, die für einen "normalen" Anschluss an eine CNC erforderlich ist. Das ist insofern nicht verwunderlich, da die Stepper erst relativ spät und für manchen anscheinend überraschend in den "konventionellen" CNC-Bereich "eingedrungen" sind. SPS haben bei CNC-Steuerungen zwar einen wichtigen Anteil, aber nicht so sehr bei numerischen Achsen und nicht an so "Motor-naher" Stelle.
Die in Deinem Link beschriebene Klemme dürfte genau diese Lücke schliessen.
Wenn Deine "ZeitLupenAchse" wie eine "normale" CNC-Achse mit anderen Achsen interpolieren soll, würde ich unbedingt den Weg über diese Klemme wählen.

Wenn die Achse aber tatsächlich nur eine "HilfsAchse" darstellt und wirklich immer nur so langsam arbeiten muss, wie Du sagst, dann wäre die Steuerung per SPS und "normaler" AusgangsKlemme denkbar, z.B. über eine H-Funktion im NC-Programm, die jeweils die SollPosition vorgibt.

Da Deine Aufgabenstellung sich aber mittlerweile nicht mehr als "BastelProjekt" darstellt und wohl ausbaufähig gestaltet werden sollte:
Habe mitlerweile auch eine relativ definitive Aussage von Beckhoff zu dem Thema gefunden:
Quelle: https://download.beckhoff.com/download/document/automation/twincat3/TF5200_commissioning_axis_de.pdf
 
Ich kenne nicht die CNC-Möglichkeiten bei BeckfoffSteuerungen, aber unter "AchsenTyp" hätte ich eher etwas wie RundAchse oder LinearAchse erwartet und nicht einen MotorTyp.
Bei StepperMotorTreibern sind Schnittstellen à la "Step/Dir-Signale" gang und gebe, aber bei FrequenzUmrichtern gibt es meines Wissens nichts annähernd Ähnliches.
StepperTreiber und Umrichter sind so gesehen nicht 1:1 "austauschbar" und die "Step/Dir-Signale" wären eine rein interne Angelegenheit eines "Umrichters", wenn es denn etwas Entsprechendes für StepperMotoren gäbe.
Bei den o.g. StepperTreibern fehlt einfach die "ZwischenSchicht" in der SignalBearbeitung/-Aufbereitung, die für einen "normalen" Anschluss an eine CNC erforderlich ist. Das ist insofern nicht verwunderlich, da die Stepper erst relativ spät und für manchen anscheinend überraschend in den "konventionellen" CNC-Bereich "eingedrungen" sind. SPS haben bei CNC-Steuerungen zwar einen wichtigen Anteil, aber nicht so sehr bei numerischen Achsen und nicht an so "Motor-naher" Stelle.
Die in Deinem Link beschriebene Klemme dürfte genau diese Lücke schliessen.
Wenn Deine "ZeitLupenAchse" wie eine "normale" CNC-Achse mit anderen Achsen interpolieren soll, würde ich unbedingt den Weg über diese Klemme wählen.

Wenn die Achse aber tatsächlich nur eine "HilfsAchse" darstellt und wirklich immer nur so langsam arbeiten muss, wie Du sagst, dann wäre die Steuerung per SPS und "normaler" AusgangsKlemme denkbar, z.B. über eine H-Funktion im NC-Programm, die jeweils die SollPosition vorgibt.

Da Deine Aufgabenstellung sich aber mittlerweile nicht mehr als "BastelProjekt" darstellt und wohl ausbaufähig gestaltet werden sollte:

Warum das AchsenTyp genannt wird kann ich natürlich nicht sagen, nach dem was ich davon verstehe ich das eher eine Auswahl des KommunikationsTyps zur Achse. Die Auswahlmöglichkeiten sind:

- Simulation
- SERCOS Achse (EtherCAT, SoE Drive, AX2xxx-B750)
- Profidrive MC
- AX2xxx-B200 Antrieb (Lightbus)
- AX2xxx-B900 Antrieb (Ethernet)
- CANopen DS402 / MDP 742 ( EtherCAT CoE Antrieb...)
- Terminals (Encoder / Drive)
- TcCom Axis

Für einen FU wäre eine vergleichbare Schnittestelle denke ich ein +/-10V Drehzahlsignal. Das ist dann ja auch eine Wertübermittling ohne Feedback. Das scheint auch der Grund zu sein, warum ich bei der Auswahl: Terminals (Encoder / Drive) von den bei mir installierten Klemmen nur die EL4004 zur Auswahl bekomme, diese wäre ja durchaus für ein 0-10V Drehzahlsignal an einen FU geeigent nehme ich an, aber das geht jetzt denke ich am Thema vorbei und hilft mir in diesem Fall nicht weiter.

Ich bin aktuell noch fleisig dabei dir Beckhoff Doku zur CNC-Steuerung zu durchstöbern, aber weiter komme ich damit bisher nicht. Ohne die Verwendung der vor Beckhoff vorgesehenen Klemmen scheint das Einbinden von Schrittmotoren in die CNC-Steuerung nicht möglich zu sein.
Bleibt wohl nur der Weg darüber sich selbst irgendetwas auf der SPS-Seite zu schreiben. Ich werde mich mal etwas über die von dir erwähnte H-Funktion informieren. Aktuell tun sich mir aber bei dem Ansatz mehr Fragen auf, als dass ich Lösungen sehe.

MfG Christian
 
Die Auswahlmöglichkeiten sind:

- Simulation
- SERCOS Achse (EtherCAT, SoE Drive, AX2xxx-B750)
- Profidrive MC
- AX2xxx-B200 Antrieb (Lightbus)
- AX2xxx-B900 Antrieb (Ethernet)
- CANopen DS402 / MDP 742 ( EtherCAT CoE Antrieb...)
- Terminals (Encoder / Drive)
- TcCom Axis
Diese Auswahl klingt nach Schnittstellen, die sehr viel mehr als nur 2 oder 3 Bit an Information übertragen können. Positionen, Geschwindigkeiten etc., die erst vom Empfänger noch weiterverarbeitet werden müssen, ehe sie an den Motor ausgegeben werden können.
Diese "Schicht" der InformationsVerarbeitung fehlt ganz einfach bei einem StepperTreiber, der darauf angewiesen ist, jeden einzelnen Step vorgeschrieben zu bekommen.
Für einen FU wäre eine vergleichbare Schnittestelle denke ich ein +/-10V Drehzahlsignal. Das ist dann ja auch eine Wertübermittling ohne Feedback.
Genau, ein ±10V AnalogSignal beinhaltet ja mehr Information als nur 1 oder 2 Bit..
Die Relevanz des von Dir genannten "Feedback" sehe ich jedoch nicht.
Feedback im dem Sinne, dass z.B. die aktuelle RotorPosition zurückgemeldet werden müsste, ist bei einem Stepper, der nicht "überfordert" wird, eher Luxus. Man unterstellt einfach, dass er das auch ausführt, was ihm aufgetragen wird.
Ich werde mich mal etwas über die von dir erwähnte H-Funktion informieren. Aktuell tun sich mir aber bei dem Ansatz mehr Fragen auf, als dass ich Lösungen sehe.
H-Funktionen kenne ich von Siemens CNCs und habe nur unterstellt, dass es diese oder etwas Vergleichbares auch bei anderen, z.B. Beckhoff, geben dürfte.
Sie ermöglichen, ZahlenWerte an die SPS zu übergeben. Dies könnte z.B. die ZielPosition für das Fahren einer HilfsAchse sein.
Es gibt natürlich auch andere Funktionen, die ZahlenWerte übergeben können, die aber schon fest mit bestimmten Bedeutungen "verheiratet" sind (SpindelDrehzahl, VorschubGeschwindigkeit).
Ich hoffe, ich habe Dich mit meinen Gedanken nicht "in den Wald geschickt". Es war als NotLösung gedacht und ich war voreingenommen, weil ich das Gefühl hatte, es sei eine einfache, kostengünstige "BastelLösung" mit ohnehin verfügbaren Mitteln (Klemmen) gesucht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zur "Achskonfiguration".

Beckhoff arbeitet hier nach dem Zwiebelprinzip. Die Achkonfiguration beschreibt letztendlich das Protokoll mit dem die physikalische Achse angesprochen wird. Die CNC sagt somit nur "bewege deinen Arsch" und eine Schicht darunter spricht über das ausgewählte Protokoll dann die Achse an. Wie das Innere der Zwiebel aufgebaut ist (also wie die Achse physikalisch aufgebaut ist) interessiert den äußeren Zwiebelring also nicht.
Das Interface zwischen der NC und der HW ändert sich entsprechend bzw. was/wie/wo abgelegt ist wird also auf Basis der Achskonfiguration abgeändert. Wenn man sich auskennt dann kann man als Nutzer auch dazwischen grätschen...
 
So, jetzt habe ich auch verstanden was mit H-Funktion gemeint ist, Hilfsbefehle im G-Code. Die soll es scheinbar auch bei Beckhoff geben. Ich dachte schon das wäre ein Programmierbaustein in der SPS-Programmierung =D
Das wird wohl leider rausfallen, da die G-Codeerstellung mittels slicer (Programm zur Erstellung von G-Code für 3D-Drucker) funktionieren muss und dafür extra einen "Postprozessor" programmieren um das Einfügen von H-Befehlen zu automatisieren erhöht dann nurnoch die Anzahl meiner Baustellen und widerspricht dem Gedanken das ganze einigermaßen Anwenderfreundlich zu gestalten.
Die Steuerung muss also schon mit "normalem" DIN66025 Code klarkommen, sprich die "Hilfsachse" sollte korrekterweise auf Z-Koordinaten ansprechen ohne zusätzlichen SPS-Aufruf.

Ja genau so hatte ich mir das mit dem Achstyp auch vorgestellt, dass man dort auswählt mit welchem "Protokoll" die Daten übermittelt werden, Step/Dir wäre ja auch nichts anderes als ein mögliches, wenn auch sehr rudimentäres, "Protokoll".

Ich hatte nun gehofft unter den Achstypen ein entsprechendes Protokoll zu finden, dass die Umwandlung in Step/Dir übernimmt, aber das scheint es bei Beckhoff auf der Ebene wohl nicht zu geben, da diese Umwandlung ja scheinbar erst in den entsprechenden Klemmen stattfindet. Ist natürlich auch verständlich, wann hat man denn schonmal eine CNC-Maschine, bei der eine der Hauptachsen so langsam verfahren kann und dann auchnoch ohne Feedback-loop ist.

Ich werde die Tage mal mit meinem Betreuer sprechen wie man da am Besten weiter vorgeht.

Euch schonmal vielen Dank!

MfG Christian
 
Ich möchte nach all der Zeit dann doch nochmal ein Feedback geben.

Für die Übertragung der Z-Werte von der CNC in die SPS-Ebene hat mir der Support helfen können. Es muss eine Simulationsachse für die Z-Achse auf CNC-Ebene erstellt werden, dann simuliert diese Achse den Weg der Z-Achse auf Grundlage des G-Code. Die Ist und Soll-Werte dieser Achse werden dann in das High Level Interface geschrieben und können über den entsprechenden Variablennamen in der SPS abgegriffen werden. Dort kann man diese dann in seinen eigenen Code einfügen und beispielsweise PLCOpen-Funktionsblöcke damit füttern. Nur eine Feedbackloop ist auf diese weise nicht zu realisieren. Wäre in meinem Fall für den OpenLoop-Achse aber ja ohnehin nicht von Relevanz.

Für die STEP und DIR erzeugung bin ich nach langem suchen in TwinCAT für PTP-Achsen auf SPS-Eben auf den Achstyp Low-Cost-Schrittmotorachse gestoßen, dieser macht quasi genau das was ich gesucht hatte.
Darüber war ich in der Lage die STEP und DIR Signale mit erträglicher Frequenz (Motion-Umgebungs-Zykluszeit 1ms) an den Schrittmotortreiber über die EL2004 Klemme zu übertragen.
Beckhoff Information System

Auf diese weise war es mir sogar möglich den Schrittmotor mittels MC_Home zu referenzieren, alles weitere wie MC_Jog, MC_Absolute, MC_Relative etc habe ich jedoch nicht zum Laufen bekommen und wurde mit Fehlermeldungen quittiert.

Nach langem Gespräch mit dem Beckhoff-Support (der ist wirklich spitzenklasse!), konnte mir dann einer der "alten Hasen" den Grund sagen:
Die Low Cost Schrittmotorachse ist so alt, die unterstützt die aktuelle Tc2_MC2 Bibliothek nicht, er meinte aus der Erinnerung, dass die ältere Tc2_NC Bibliothek funktionieren könnte. Die mit der Überschrift "Nicht mehr verwenden"

Ich habe das Projekt dann an der Stelle zurückgegeben, da ich mich nicht in der Lage gesehen habe das in einer zufriedenstellenden Weise ans Laufen zu bekommen und auch meine Betreuer sich das wohl anders vorgestellt haben.

Ich bedanke mich dennoch herzlich für all eure Hilfe.

MfG Christian
 
Zurück
Oben