# Interpoliertes Fahren mit Twincat NCI / Sollwerte aus C++ Anwendung



## Basde28 (1 April 2010)

Hallo SPS-Forum,

ich möchte in meiner Anwendung 3 Achsen interpoliert verfahren. Hierzu habe ich einen CX1030 mit Twincat NCI. Die Sollwerte (Position) kommen von einem externen Rechner über ein C++ Programm. Ich muss also die ADS-DLL verwenden. Nun ist mir aber nicht ganz klar ob ich ein NC Programm schreiben muss oder ob ich die NC über die SPS (mit den Libraries) bedienen kann und die Sollwerte der SPS übergeben kann.

Vielen Dank im Voraus!

Gruß
Basde28


----------



## cybertracepda (1 April 2010)

Hallo Basde28 !
Normal ist es so, dass die SPS über Funktionsbausteine die Sollwerte and die NC übergibt und die Achsen (die SPS benutzt die Bausteine für die Interpolation) startet.
Die Sollwerte brauchen eigentlich nur die Positionsziele, die Geschwindigkeiten, Beschleunigung und Verzögerungen sein, den Rest macht die NC selbst, also die Interpolationen und die Achsansteuerungen

Die Sollwerte kannst du über ADs an die SPS übergeben.


----------



## Basde28 (1 April 2010)

Hallo cybertracepda,

so in etwa habe ich mir das auch vorgestellt, schön dass es so funktioniert!

Vielen Dank!

Gruß
Basde28


----------



## Scrat (5 April 2010)

Hallo Basde28,

willst Du wirklich Achsen interpolieren (NCI), oder willst du nur auf bestimmte Positionen Fahren? (NC-PTP) Da gibt es ein Unterschied, denn die NCI ist etwas aufwendiger. Ich denke mal es ist nicht damit getan, ein par Parameter zu übertragen. Wenn Du wirklich die NCI verfahren willst brauchst Du ein NC-Programm im G-Code. Dort werden die Befehler für die interpolation abgesetzt, wie Kreisinterpolation, oder Kurveninterpolation.
In der Regel ist es so, dass die Programme im SystemManager geschrieben werden, und dann nur aus der SPS raus aufgerufen werden. Den Rest macht dann der Interpreter der NC selbst. Es ist aber auch möglich Parameter (R-Parameter) in das NC-Programm zu übergeben.
Darf man fragen was Du vor hast?

Gruß Scrat


----------



## StefanM (6 April 2010)

Hallo Basde28,
ich kann Scrat nur zustimmen. 
Grüße,
Stefan


----------



## Basde28 (12 April 2010)

Hallo Scrat und StefanM,

ich denke schon dass das Interpolation ist. Ich habe 3 Achsen, gebe eine Position vor und die 3 Achsen sollen zur Position fahren. Ein NC Programm zu schreiben hatte ich eigentlich nicht vor.

Was meint ihr dazu?

Grüße
Basde28


----------



## Chräshe (12 April 2010)

Hallo Basde28,

 wenn „nur“ die 3 Achsen von Punkt zu Punkt gefahren werden müssen, dann ist „TwinCAT NC PTP“ vollkommen ausreichend. Die Achsen können dann zeitgleich verfahren werden, jedoch versteht man darunter noch kein Interpoliertes fahren.  

 Die Positionslisten mit  ADS zu übergeben ist natürlich möglich.

Gruß
 Chräshe


----------



## Ralle (12 April 2010)

Aber dann  muß man zumindest selbst interpolieren oder so etwas ähnliches nachvollziehen. Wenn z.Bsp. Achse 3 eine Z-Achse ist, die von oben nach unten fährt, wäre es u.U. fatal, wenn alle 3 Achsen gleichzeitig und völlig unabhängig voneinander den gewünschten Punkt ansteuern und Achse 3 zuerst seine Position erreicht. Dann könnten die anderen beiden Achsen evt. ein Werkzeug o.ä. quer durch das zu bearbeitende Material ziehen.


----------



## rostiger Nagel (12 April 2010)

kommt ja immer darauf an, wenn es point to point ist und er keine
Dynamik braucht. Kann er ja die Achsen in einer bestimmten Reihenfolge
verfahren, Z-Achse darf nur verfahren wenn X und Y in einen bestimmten
bereich ist und andersherum. Also eine Quasi Interpolation im SPS-
Programm.


----------



## Basde28 (12 April 2010)

Also bei der Anwendung ist es völlig egal wann welche Achse fährt. Sie sollen alle gemeinsam fahren und die Zielposition gleichzeitig erreichen...


----------



## rostiger Nagel (12 April 2010)

ziehe meine Antwort zurück


----------



## Chräshe (12 April 2010)

@Ralle:
  Wenn ich nur ein Handling oder ähnliches habe, brauche ich doch keine Interpolation. Dass ich Kollisionen vermeiden muss, ist ein ganz anderes Thema. Das gilt aber genauso für einen Roboter oder eine CNC-Maschine…

  @Helmut:
  Was hat das mit der Dynamik zu tun? Ich hätte gedacht, dass es ähnlich scheppert, wenn ich interpoliert oder per PTP durch die Wandung einer Gitterbox fahre!? 

  @ Basde28:
  Wieso muss die Zielposition gleichzeitig erreicht werden?
  Angenommen Y und Z starten gleichzeitig mit der selben Beschleunigung und Geschwindigkeit. Y fährt 250mm und Z muss sich nur 30mm bewegen. Dann ist bei PTP-Fahrt Z schon vor Y im Ziel…
  Am besten du beschreibst mal, was das werden soll, oder wendest dich direkt an den Vertrieb von Beckhoff…

  Gruß
  Chräshe


----------



## rostiger Nagel (12 April 2010)

Chräshe schrieb:


> @Ralle:
> @Helmut:
> Was hat das mit der Dynamik zu tun? Ich hätte gedacht, dass es ähnlich scheppert, wenn ich interpoliert oder per PTP durch die Wandung einer Gitterbox fahre!?


 
Wenn deine Achsen kein wenig Dynamik haben, wird eine Interpolation
sehr schwer. Z.b. Bei den CNC Maschinen die bei uns durch das Werk gehen
sind immer Servo Antriebe verbaut obwohl doch Drehströmer viel billiger
sind.


----------



## Basde28 (12 April 2010)

Erstmal vielen dank für die vielen konstruktiven Beiträge....

Naja wegem dem gleichzeitig ankommen meinte ich ja dass ich interpolieren muss. Die Anwendung ist 2-dimensional. Antrieb 1 und 2 sind ein Portal im Gantry-Verbund. Die 3. Achse sitzt auf dem Portal und kann dort hin und her fahren. Nun will ich eine Position anfahren und dass das ganze schöner aussieht sollen die Antriebe in einer Bahn dort hin fahren. Ich hoffe die Beschreibung hilft ein wenig weiter.


----------



## Basde28 (13 April 2010)

So, habe mit Beckhoff telefoniert. Um interpoliert zu fahren ist auf jeden Fall ein NC Programm nötig. Diesem  werden die Sollwerte von der SPS übergeben. Weiterhin wird das NC Programm von der SPS angestossen.


----------



## trinitaucher (13 April 2010)

Basde28 schrieb:


> Um interpoliert zu fahren ist auf jeden Fall ein NC Programm nötig. Diesem  werden die Sollwerte von der SPS übergeben. Weiterhin wird das NC Programm von der SPS angestossen.


Ja, so ist das.


Basde28 schrieb:


> Die Anwendung ist 2-dimensional. Antrieb 1 und 2 sind ein Portal im Gantry-Verbund. Die 3. Achse sitzt auf dem Portal und kann dort hin und her fahren. Nun will ich eine Position anfahren und dass das ganze schöner aussieht sollen die Antriebe in einer Bahn dort hin fahren. Ich hoffe die Beschreibung hilft ein wenig weiter.


Nur damit es "schöner aussieht"? Nicht wirklich, oder? Dafür ist eine interpolierende NC doch völlig überdimensioniert.
Zumal du das NC-Programm bei NC-i in G-Code schreiben musst. Du müsstest für jeden Fahrauftrag (sprich für jede Positionsänderung) ein neues NC-Programm starten. Allein das Programmhandling ist schon viel zu kompliziert für diese einfache Bewegung.

Mein Vorschlag:
NC-PTP nehmen, Achse 1 und 2 linear 1:1 koppeln (z.B. Achse 1 als Master, Achse 2 als Slave).
Wenn's schöner aussehen soll, kannst du dir die Verfahrzeit bis ins Ziel der Achse 1 in etwa ausrechnen. Das Ergebnis rechnest du in eine Geschwindigkeit für Achse 3 um. Dann sind die Achsen auch in etwa gleichzeitig im Ziel. ... ganz simpel.


----------



## Basde28 (13 April 2010)

Hallo trinitaucher,

danke für die Antwort. NCI und interpolierend nicht wegen des Aussehens, sondern auch weil noch andere Antriebe hinzukommen. Im ersten Schritt möchte ich aber nur das Portal mit dem Schlitten in Betrieb nehmen. 

Habt ihr schonmal etwas von der TwinCAT PLC Library: TcPlcInterpolation gehört?

Mit dieser soll es möglich sein verschiedene Fahraufträge, die nach Start nacheinander abgearbeitet werden, in eine Tabelle zu schreiben ohne G-Code zu benutzen. Klingt auf den ersten Blick auch ganz interessant.

Grüße
Basde28


----------



## Chräshe (13 April 2010)

Hallo Basde28,

 OK- verständlich, du konntest uns nicht alle Informationen zukommen lassen, weil dein Projekt der Geheimhaltung unterliegt... 

 Aber bitte beachte vollende Punkte:



Die „TwinCAT CNC“ unterstützt     in einem CNC-Kanal nur bis zu 32 Achsen simultan interpoliert.
 

Die Komponenten von Beckhoff sind     nicht freigegeben für die Luftfahrt, Raumfahrt, Kerntechnik oder     Rüstungsindustrie. (Hab ich mal wo auf einem Beipackzettel     gelesen...)
 

Die AX5xxx Servoverstärker sind     aktuell nur bis zu einer Leistungsklasse von 120 kW verfügbar.
 
 Gruß
 Chräshe


----------



## Scrat (14 April 2010)

Hallo Basde28,

ich würde dein Vorhaben genau so umsetzen wie trinitaucher das beschrieben hat. Alles andere macht auch aus meiner Sicht kein Sinn. 

@trinitaucher


> Zumal du das NC-Programm bei NC-i in G-Code schreiben musst. Du müsstest für jeden Fahrauftrag (sprich für jede Positionsänderung) ein neues NC-Programm starten


 
Das ist nicht ganz korrekt, da du im NC-Programm (G-Code) so viele Verfahrsätze hintereinander ausführen wie Du möchtest, so lange bis Du das Programm als beendet erklährst. Dann kannst Du das Programm erneut aufrufen, oder ein anderes Aufrufen.


Gruß Scrat


----------



## trinitaucher (14 April 2010)

Ich hab von der Beckhoff NC-i nicht so viel Ahnung. Habe das aus der Schulung aber so verstanden, dass man das komplette NC-Programm per SPS an die NC übergibt.

Wenn man aber nun einen neuen Fahrauftrag anstoßen möchte, also das NC-Programm ändern will, muss die NC erstmal fertig sein. Dann läd man das neue Programm und startest diese.
Also für jeden neuen Fahrauftrag müsste ein neues (abgeschlossenes) NC-Programm geladen werden. 

Oder kann man bei der Beckhoff NC-i ein laufendes Programm auf Kommando anhalten, partiell verändern und weiter abarbeiten lassen?


----------



## Scrat (14 April 2010)

Hallo trinitaucher,

ein NC-Programm besteht meist aus mehreren Fahrbefehlen. (Fahre von X nach Y und/oder führe die Funktion M10 aus). Von diesen Befehlen kann ich bliebig viele aneinander hängen. Ein laufendes NC-Programm anzuhalten ist so einfach nicht möglich. Ist es einmal gestoppt, muss man wieder von vorne beginnen. Die NC-Programme werden dann aus der SPS heraus aufgerufen. Erstellt werden die NC-Programme im Systemmanager.
Mann kann sich aber behelfen, indem man den Kanal-Override aus der SPS raus auf 0% stellt, wodurch alle im NC-Kanal befindliche Achsen zum Stillstand kommen. Dann kann man Parameter, (z.B. R-Parameter) verändern, und dann den Kanal-Override wieder auf 100% oder was auch immer stellen, und das Programm läuft weiter.

Gruß Scrat


----------



## trinitaucher (14 April 2010)

Scrat schrieb:


> Hallo trinitaucher,
> 
> ein NC-Programm besteht meist aus mehreren Fahrbefehlen. (Fahre von X nach Y und/oder führe die Funktion M10 aus). Von diesen Befehlen kann ich bliebig viele aneinander hängen. Ein laufendes NC-Programm anzuhalten ist so einfach nicht möglich. Ist es einmal gestoppt, muss man wieder von vorne beginnen. Die NC-Programme werden dann aus der SPS heraus aufgerufen. Erstellt werden die NC-Programme im Systemmanager.
> Mann kann sich aber behelfen, indem man den Kanal-Override aus der SPS raus auf 0% stellt, wodurch alle im NC-Kanal befindliche Achsen zum Stillstand kommen. Dann kann man Parameter, (z.B. R-Parameter) verändern, und dann den Kanal-Override wieder auf 100% oder was auch immer stellen, und das Programm läuft weiter.
> ...


OK, aber für die Anwendung von Basde28 ist das je keine praktikable Lösung.
Für einen Fahrauftrag mit X-, Y-Koordinaten müsste doch für jede neue anzufahrende Position der G-Code geändert werden. Sprich ein neues NC-Programm geladen werden, wenn die Positionen nicht vorab bekannt sind.
Um einfach nur "hübsch zusammen anzukommen" macht es keinen Sinn.

Aber danke, Scrat, für die Info bzgl. der NC-i.


----------



## Scrat (14 April 2010)

Hallo Trinitaucher,



trinitaucher schrieb:


> Um einfach nur "hübsch zusammen anzukommen" macht es keinen Sinn.


 
Ganz genau so sehe ich das ja auch. Eine interpolation sollte ich wirklich nur einsetzen, wenn ich sie auch benötige. Die PTP ist auch wesentlich einfacher zu handhaben. Außerdem ist es auch eine Preisfrage, denn die NCI ist um einiges teurer als die PTP. 

Gruß Scrat


----------



## Basde28 (20 April 2010)

Hallo,

vielen Dank allen Benutzern für die konstruktiven Beiträge...
Ich werde jetzt mal mit der Umsetzung beginnen und wieder berichten.

Gruß
Sebastian


----------



## Basde28 (1 Juli 2010)

Läuft alles wunderbar...


----------



## Chräshe (1 Juli 2010)

Hallo Basde28,

  freut mich, dass bei dir alles wunderbar funktioniert.







  Auch schön, dass du eine Rückmeldung gibst.







  Jetzt wäre nur noch die Frage: Was läuft wunderbar? *ROFL*
  Ist es das komplexe TwinCAT NCI, nur das NC oder 
  ganz einfach PTP?
  Hatte sonst wer noch eine andere Lösung 
  und wie sieht die dann aus?

  Gruß
  Chräshe


----------



## Basde28 (1 Juli 2010)

Ja das läuft über Twincat NCI...


----------

