Zum Hauptinhalt springen

Skalierbare Kurvenscheiben

Diese Bibliothek stellt Funktionen zur Verfügung, mit denen eine synchrone Bewegungen aus skalierbaren Kurven erzeugt werden kann. Diese Kurven entstehen aus einer Stützpunkttabelle mit normierten Kurvenstützpunkten.

TB_CamAdd

TB_CamAdd

Dieser Baustein erzeugt zyklische Sollpositionen in Anwendereinheiten und kann in Verbindung mit Technologiebausteinen wie z.B. TB_CamStretch Zusatzpositionierungen ausführen.

Mit diesem Baustein können Kurven addiert werden. Die addierte Kurve darf nicht über das Ende der Grundkurve hinausgehen. Es können mehrere Additionskurven aneinander gehängt werden. Die letzte Additionskurve muss in einer Rast enden.

Um Ruck und Stoß zu vermeiden muss über die Skalierungen und den Offsets der Kurven sichergestellt sein, dass die Positionen und Steigungen am Ende und Anfang gleich sind.

Hinweis: Vor Benutzung dieses Bausteins muss der Baustein TB_Init ausgeführt werden.

Empfohlene Task: EVENT

Verwendete Bibliotheken: ARITHMETIC_xxbd00 oder höherTECH_TYPES_xxbd05 oder höherTECH_TOOLS_xxbd00 oder höher

Eingänge

Bezeichnung:Datentyp:Beschreibung:
x_EnableBOOLTRUE: Freigabe des Bausteins.
x_ExecuteBOOLPositive Flanke starte die Kurve.
di_xPosDINTAktuelle Leitposition in Anwendereinheiten.
ui_CamIdUINTLegt fest, welche Kurve zur Ausführung kommt. Anwenderkurven können zusätzlich in der Stützpunkttabelle a_CamTable abgelegt werden. Die erste Kurve sollte ab der Position 8192 abgelegt werden. An ui_CamId wird dann die Position des 1. Stützpunkts angegeben. Eine Kurve muss folgende Kriterien erfüllen: Sie muss in x- und y-Richtung auf 0…16.777.216 normiert sein. Die Krümmung am Anfang und Ende muss null sein. Es werden 512 Stützpunkte für die x-Positionen 0, 32.768, 65.536, …, 16.744.448 vorgegeben und der zugehörige y-Wert wird in der Tabelle _SyncCam abgelegt. Der x-Wert wird nicht abgelegt.
di_xOffsDINTStartposition der Leitachse für die Bewegung in Anwendereinheiten.
di_yOffsDINTOffset der Achse bis zum Start der Kurve in Anwendereinheiten. Damit die Achse ihre Position nach Kurvenstart nicht sprungartig ändert, sollte für di_yOffs die aktuelle Position der Achse angegeben werden.
di_xFactDINTStreckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird.
di_yFactDINTStreckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll.
i_kEndNumINTZähler Steigung der normierten Kurve am Kurvenende.
ui_kEndDenumUINTNenner Steigung der normierten Kurve am Kurvenende.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein ist aktiv, und wartet, dass die Leitposition die Startposition di_xOffs erreicht.
x_CamActiveBOOLTRUE: Die Bewegungsausführung ist gestartet. Die Achse bewegt sich in Abhängigkeit der Masterbewegung.
di_yPosDINTSollposition der Achse in 1/100 Anwendereinheiten. Diese Position kann z.B. direkt an die Technologiebausteine TB_SyncLin oder TB_SyncRot am Eingang di_yPosAdd angeschlossen werden.
x_ErrorBOOLTRUE: Der Baustein hat einen Fehler festgestellt.
w_ErrorIdWORDFehlernummer des Bausteins. Siehe Tabelle unten.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
a_CamTableCAM_TABLEStützpunkttabelle der normierten Kurven.
Darstellung in FBD

TB_CamGetPos

TB_CamGetPos

Dieser Baustein erzeugt zyklische Sollpositionen in Anwendereinheiten und kann in Verbindung mit Technologiebausteinen wie z.B. TB_CamStretch Zusatzpositionierungen ausführen.

Mit diesem Baustein können Kurven addiert werden. Die addierte Kurve darf nicht über das Ende der Grundkurve hinausgehen. Es können mehrere Additionskurven aneinander gehängt werden. Die letzte Additionskurve muss in einer Rast enden.

Um Ruck und Stoß zu vermeiden muss über die Skalierungen und den Offsets der Kurven sichergestellt sein, dass die Positionen und Steigungen am Ende und Anfang gleich sind.

Hinweis: Vor Benutzung dieses Bausteins muss der Baustein TB_Init ausgeführt werden.

Empfohlene Task: EVENT

Verwendete Bibliotheken: ARITHMETIC_xxbd00 oder höherTECH_TYPES_xxbd05 oder höherTECH_TOOLS_xxbd00 oder höher

Eingänge

Bezeichnung:Datentyp:Beschreibung:
x_ExecuteBOOLPositive Flanke starte die Kurve.
ui_CamIdUINTLegt fest, welche Kurve zur Ausführung kommt. Anwenderkurven können zusätzlich in der Stützpunkttabelle a_CamTable abgelegt werden. Die erste Kurve sollte ab der Position 8192 abgelegt werden. An ui_CamId wird dann die Position des 1. Stützpunkts angegeben. Eine Kurve muss folgende Kriterien erfüllen: Sie muss in x- und y-Richtung auf 0…16.777.216 normiert sein. Die Krümmung am Anfang und Ende muss null sein. Es werden 512 Stützpunkte für die x-Positionen 0, 32.768, 65.536, …, 16.744.448 vorgegeben und der zugehörige y-Wert wird in der Tabelle _SyncCam abgelegt. Der x-Wert wird nicht abgelegt.
di_xOffsDINTStartposition der Leitachse für die Bewegung in Anwendereinheiten.
di_yOffsDINTOffset der Achse bis zum Start der Kurve in Anwendereinheiten. Damit die Achse ihre Position nach Kurvenstart nicht sprungartig ändert, sollte für di_yOffs die aktuelle Position der Achse angegeben werden.
di_xFactDINTStreckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird.
di_yFactDINTStreckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll.
i_kEndZINTZähler Steigung der normierten Kurve am Kurvenende.
ui_kEndNUINTNenner Steigung der normierten Kurve am Kurvenende.
di_xPosDINTAktuelle Leitposition in Anwendereinheiten.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ErrorBOOLTRUE: Der Baustein hat einen Fehler festgestellt.
w_ErrorIdWORDFehlernummer des Bausteins. Siehe Tabelle unten.
di_yPosDINTSollposition der Achse in 1/100 Anwendereinheiten. Diese Position kann z.B. direkt an die Technologiebausteine TB_SyncLin oder TB_SyncRot am Eingang di_yPosAdd angeschlossen werden.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
a_CamTableCAM_TABLEStützpunkttabelle der normierten Kurven.
Darstellung in FBD

TB_CamStretch

TB_CamStretch

Mit diesem Baustein können synchrone Bewegungen aus skalierbaren Kurven erzeugt werden. Die Achse bewegt sich dann synchron zu einer Masterposition.

Hinweis: Vor Benutzung dieses Bausteins muss der Baustein TB_NormCamCreate ausgeführt werden.

Beschreibungallgemein

Mit x_Enable=TRUE wird der Baustein frei geschaltet. Die Betriebsbereitschaft wird mit x_Active=TRUE angezeigt.

Mit einer positiven Flanke an x_Start wird die Bewegung gestartet. Dabei ist zu beachten, dass die Position der Achse (di_yPos) gleich dem Y-Offset (di_yOffs) und die Positon der Leitachse kleiner oder gleich dem X-Offset (di_xOffs) ist.

Danach wird abhängig von der Leitposition (di_xPos) der Sollwert (di_yPos) der Achse di_yPos berechnet. Befindet sich die Leitposition vor dem Startpunkt der Kurve (di_xPos<di_xOffs), so wird di_yOffs an di_yPos ausgegeben. Befindet sich die Leitposition hinter dem Endpunkt der Kurve (di_xPos>di_xOffs+di_xFact), so wird di_yOffs+di_yFact an di_yPos ausgegeben. Das Ende der Kurve wird durch x_CamDone=TRUE für einen Zyklus angezeigt. Damit kann die nächste Kurve gestartet werden. Am Ende der Kurve kann die Position der Achse und/oder Leitachse für den nächsten Zyklus manipuliert werden. Dazu werden die Positionen der Achse und der Leitachse entsprechend der Vorgaben an ui_SetPosMode, di_xSetPos und di_ySetPos manipuliert.

Die Bewegung entsteht aus der Skalierung der hinterlegten Kurve. Dazu werden der Startpunkt der Bewegung und die Länge in X- und Y-Richtung vorgegeben. Die Skalierung kann bei jedem Start verändert werden.

Empfohlene Task: EVENT

Verwendete Bibliotheken: ARITHMETIC_xxbd00 oder höherTECH_TYPES_xxbd05 oder höherTECH_TOOLS_xxbd00 oder höher

Eingänge

Bezeichnung:Datentyp:Beschreibung:
x_EnableBOOLTRUE: Freigabe des Bausteins.
x_ExecuteBOOLEine positive Flanke startet die Kurvenausführung.
x_BreakBOOLTRUE: Die Kurvenausführung wird sofort abgebrochen.
di_yPosAddDINTHier kann ein Zusatzsollwert in 1/100 Einheiten der Achse angeschlossen werden. Es stehen die Baustein TB_PosAdd und TB_CamAdd zur Verfügung.
ui_CamIdUINTLegt fest, welche Kurve zur Ausführung kommt. Anwenderkurven können zusätzlich in der Stützpunkttabelle a_CamTable abgelegt werden. Die erste Kurve sollte ab der Position 8192 abgelegt werden. An ui_CamId wird dann die Position des 1. Stützpunkts angegeben. Eine Kurve muss folgende Kriterien erfüllen: Sie muss in x- und y-Richtung auf 0…16.777.216 normiert sein. Die Krümmung am Anfang und Ende muss null sein. Es werden 512 Stützpunkte für die x-Positionen 0, 32.768, 65.536, …, 16.744.448 vorgegeben und der zugehörige y-Wert wird in der Tabelle _SyncCam abgelegt. Der x-Wert wird nicht abgelegt.
di_xOffsDINTStartposition der Leitachse für die Bewegung in Anwendereinheiten.
di_yOffsDINTOffset der Achse bis zum Start der Kurve in Anwendereinheiten. Damit die Achse ihre Position nach Kurvenstart nicht sprungartig ändert, sollte für di_yOffs die aktuelle Position der Achse angegeben werden.
di_xFactDINTStreckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird.
di_yFactDINTStrStreckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll.
di_yEndDINTEnde-Position der Kurve in Anwendereinheiten. Wird der Eingang nicht angeschlossen, so wird di_yEnd=di_yOffs+di_yFact gesetzt. Der Eingang muss nur dann verwendet werden, wenn die maximale Position nicht am Kurvenende ist.
i_kEndNumINTZähler Steigung der normierten Kurve am Kurvenende.
ui_kEndDenumUINTNenner Steigung der normierten Kurve am Kurvenende.
di_xSetPosDINTSetzwert der Position der Masterachse in Anwendereinheiten der Masterachse.
di_ySetPosDINTSetzwert der Position der Achse in Anwendereinheiten.
us_SetPosModeUSINTLegt fest, wie die Positionen verändert werden sollen.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein ist frei gegeben (x_Enable=TRUE) und aktiv.
x_CamActiveBOOLTRUE: Kurve ist in Bearbeitung.
x_CamDoneBOOLTRUE: Kurve beendet. x_CamDone ist genau für einen Zyklus TRUE.
di_VelDINTSoll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts. Ts ist die Zykluszeit der Sollwert-Eventtask.
di_AccDINTSoll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts. Ts ist die Zykluszeit der Sollwert-Eventtask.
x_ErrorBOOLTRUE: Der Baustein hat einen Fehler festgestellt.
w_ErrorIdWORDFehlernummer des Bausteins. Siehe Tabelle unten.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
di_xPosDINTPosition der Leitachse in Anwendereinheiten.
di_yPosDINTSollposition der Achse in Anwendereinheiten.
a_CamTableCAM_TABLEStützpunkttabelle der normierten Kurven.
Darstellung in FBD

TB_PosRel

TB_PosRel

Dieser Baustein führt eine relative Positionierung mit gegebener max. Beschleunigung/Verzögerung und Geschwindigkeit aus. Die Bewegungsparameter werden in Anwendereinheiten angegeben. Mit einer positiven Flanke am Eingang x-Start wird eine relative Positionierung der Achse ausgeführt. Die Bewegung erfolgt ruckfrei mit Polynomen 5. Grades. Die max. Beschleunigung wird erreicht, aber nie überschritten, die max. Geschwindigkeit kann erreicht werden, wird aber ebenfalls nie überschritten. Ist der Verfahrweg kurz, wird die max. Geschwindigkeit nicht erreicht. Beim erstmaligen Durchlaufen des Bausteins nach Programmstart wird die Kurventabelle geladen. Dieser Vorgang dauert ca. 1 ms (BM4_O_PLC01).

Achtung: Der FB TM_PosRel kann nur in einer synchronisierten Sollwert-Event Task verwendet werden.

Empfohlene Task: EVENT

Verwendete Bibliotheken: ARITHMETIC_PLC02_xxbd00 oder höher

Eingänge

Bezeichnung:Datentyp:Beschreibung:
x_ExecuteBOOLPositive Flanke startet die Bewegung.
x_BreakBOOLPositive Flanke stoppt die Bewegung sofort. Es wird mit di_BreakDec gestoppt.td>
di_DistanceDINTVerfahrweg in Anwendereinheiten.
di_MaxVelDINTMax. Geschwindigkeit in Anwendereinheiten/s
di_MaxAccDINTMax. Beschleunigung in Anwenderleinheiten/s2
di_MaxDecDINTMax. Verzögerung in Anwendereinheiten/s2
di_BreakDecDINTMax. Verzögerung bei Abbruch in Anwendereinheiten/s2
i_T_CycleINTZykluszeit der Sollwert-Eventtask in ms. Es können 1, 2, 4 oder 8 ms angegeben werden.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_RunningBOOLTRUE: Bewegung wird ausgeführt.
x_DoneBOOLTRUE für einen Zyklus: Bewegung beendet.
di_VelINTSoll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts.
Ts: Zykluszeit der Sollwert-Eventtask.
di_AccDINTSoll-Beschleunigung der Achse in 1/100 Anwendereinheiten/Ts2.
Ts: Zykluszeit der Sollwert-Eventtask
x_ErrorrBOOLTRUE: Fehler erkannt.
w_ErrorIdWORDFehlernummer. Siehe Fehlertabelle.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
di_PosDINTMechanische Sollposition der Achse in Anwendereinheiten.
Darstellung in FBD

TB_Spline

TB_Spline

Dieser Baustein erstellt aus gegebenen Punkten eine Stützpunkttabelle mit normierten Kurvenstützpunkte. Dazu wird ein kubischer Spline verwendet. Es wird sichergestellt, dass jeder Stützpunkt erreicht wird. Diese Stützpunkttabelle kann dann mit dem TB_CamStretch ausgeführt werden.

Die Stützpunkte werden als x/y-Position festgehalten. X ist dabei die Masterposition und y die zugehörige Achsposition. Der Baustein erstellt dann daraus eine normierte Stützpunkttabelle mit 512 Stützpunkten. Diese kann dann direkt mit dem TB_CamStretch ausgeführt werden. Der verwendete kubische Spline stellt sicher, dass ruckfrei verfahren, und dass jeder Stützpunkt erreicht wird.

Die Berechnung erfolgt in einem Zyklus und benötigt ca. 10 ms (SH03-30 und 10 Stützpunkten). Die Berechnung sollte in einer zyklischen Task erfolgen. Eine neue Kurve kann online berechnet und übernommen werden.

Hinweis: Dem TB_CamStretch sollte eine neue Kurve nur am Anfang (mit x_Execute) übergeben werden, da dieser direkt die angeschlossenen Stützpunkte(und keine lokale Kopie) verwendet. Ansonsten kann es zu Ruck oder Stoß in der Sollwertgenerierung kommen.

Empfohlene Task: zyklisch

Verwendete Bibliotheken: TECH_TYPES_xxbd05 oder höherTECH_TOOLS_xxbd00 oder höher

Eingänge

Bezeichnung:Datentyp:Beschreibung:
x_ExecuteBOOLMit einer positiven Flanke wir die Kurvenberechnung gestartet und in einem Zyklus ausgeführt. Die Ausführungszeit liegt bei einer SH03-30 und 10 Stützpunkten bei ca. 10ms.
ui_CamIdUINTPosition des ersten normierten Kurvenstützpunkts in a_CamTable. Es werden 512 Stützpunkte erzeugt. Die Position kann zwischen 8192 und 15872 gewählt werden. Sinnvollerweise sollte sie ein Vielfaches von 512 sein.
di_k1_NumDINTZähler der Kurvensteigung am Anfang der Kurve.
di_k1_DenumDINTNenner der Kurvensteigung am Anfang der Kurve.
di_knNumDINTZähler der Kurvensteigung am Ende der Kurve.
di_knDenumDINTNenner der Kurvensteigung am Ende der Kurve.
di_yMaxDINTMaximalwert der Kurve (für Skalierung)

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_DoneBOOLTRUE: Berechnung erfolgreich beendet. Normierte Kurvenstützpunkte erstellt.
x_ErrorBOOLTRUE: Bei der Berchnung wurde ein Fehler festgestellt.
w_ErrorIdWORDFehlernummer. Siehe Fehlertabelle.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
_SplineSPLINE_DATATabelle der Kurvenpunkte. Die x-Werte müssen aufsteigend angegeben werden. die y-Werte können beliebig gewält werden. Beide Werte werden in den gewählten Anwendereinheiten angegeben. Es können bis zu 256 Punkte vorgegeben werden. Die x-Punkte müssen nicht äquidistant sein. Im folgenden Beispiel wird eine Splinekurve erzeugt, die die Achse von 0 Grad auf 360° und wieder zurück positioniert, während sich der Master von 0 bis 100 mm bewegt hat.
a_CamTableCAM_TABLEStützpunkttabelle der normierten Kurven.
Darstellung in FBD