Skalierbare Kurvenscheiben
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_Enable | BOOL | TRUE: Freigabe des Bausteins. |
| x_Execute | BOOL | Positive Flanke starte die Kurve. |
| di_xPos | DINT | Aktuelle Leitposition in Anwendereinheiten. |
| ui_CamId | UINT | Legt 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_xOffs | DINT | Startposition der Leitachse für die Bewegung in Anwendereinheiten. |
| di_yOffs | DINT | Offset 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_xFact | DINT | Streckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird. |
| di_yFact | DINT | Streckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll. |
| i_kEndNum | INT | Zähler Steigung der normierten Kurve am Kurvenende. |
| ui_kEndDenum | UINT | Nenner Steigung der normierten Kurve am Kurvenende. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist aktiv, und wartet, dass die Leitposition die Startposition di_xOffs erreicht. |
| x_CamActive | BOOL | TRUE: Die Bewegungsausführung ist gestartet. Die Achse bewegt sich in Abhängigkeit der Masterbewegung. |
| di_yPos | DINT | Sollposition 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_Error | BOOL | TRUE: Der Baustein hat einen Fehler festgestellt. |
| w_ErrorId | WORD | Fehlernummer des Bausteins. Siehe Tabelle unten. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| a_CamTable | CAM_TABLE | Stützpunkttabelle der normierten Kurven. |

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_Execute | BOOL | Positive Flanke starte die Kurve. |
| ui_CamId | UINT | Legt 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_xOffs | DINT | Startposition der Leitachse für die Bewegung in Anwendereinheiten. |
| di_yOffs | DINT | Offset 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_xFact | DINT | Streckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird. |
| di_yFact | DINT | Streckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll. |
| i_kEndZ | INT | Zähler Steigung der normierten Kurve am Kurvenende. |
| ui_kEndN | UINT | Nenner Steigung der normierten Kurve am Kurvenende. |
| di_xPos | DINT | Aktuelle Leitposition in Anwendereinheiten. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Error | BOOL | TRUE: Der Baustein hat einen Fehler festgestellt. |
| w_ErrorId | WORD | Fehlernummer des Bausteins. Siehe Tabelle unten. |
| di_yPos | DINT | Sollposition 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_CamTable | CAM_TABLE | Stützpunkttabelle der normierten Kurven. |

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_Enable | BOOL | TRUE: Freigabe des Bausteins. |
| x_Execute | BOOL | Eine positive Flanke startet die Kurvenausführung. |
| x_Break | BOOL | TRUE: Die Kurvenausführung wird sofort abgebrochen. |
| di_yPosAdd | DINT | Hier kann ein Zusatzsollwert in 1/100 Einheiten der Achse angeschlossen werden. Es stehen die Baustein TB_PosAdd und TB_CamAdd zur Verfügung. |
| ui_CamId | UINT | Legt 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_xOffs | DINT | Startposition der Leitachse für die Bewegung in Anwendereinheiten. |
| di_yOffs | DINT | Offset 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_xFact | DINT | Streckungsfaktor der Leitachse in Anwendereinheiten der Leitachse. Festlegung des Leitwegs während der die Kurve ausgeführt wird. |
| di_yFact | DINT | StrStreckungsfaktor der Achse in Anwendereinheiten. Festlegung des Achswegs der mit der Kurve verfahren werden soll. |
| di_yEnd | DINT | Ende-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_kEndNum | INT | Zähler Steigung der normierten Kurve am Kurvenende. |
| ui_kEndDenum | UINT | Nenner Steigung der normierten Kurve am Kurvenende. |
| di_xSetPos | DINT | Setzwert der Position der Masterachse in Anwendereinheiten der Masterachse. |
| di_ySetPos | DINT | Setzwert der Position der Achse in Anwendereinheiten. |
| us_SetPosMode | USINT | Legt fest, wie die Positionen verändert werden sollen. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist frei gegeben (x_Enable=TRUE) und aktiv. |
| x_CamActive | BOOL | TRUE: Kurve ist in Bearbeitung. |
| x_CamDone | BOOL | TRUE: Kurve beendet. x_CamDone ist genau für einen Zyklus TRUE. |
| di_Vel | DINT | Soll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts. Ts ist die Zykluszeit der Sollwert-Eventtask. |
| di_Acc | DINT | Soll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts. Ts ist die Zykluszeit der Sollwert-Eventtask. |
| x_Error | BOOL | TRUE: Der Baustein hat einen Fehler festgestellt. |
| w_ErrorId | WORD | Fehlernummer des Bausteins. Siehe Tabelle unten. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| di_xPos | DINT | Position der Leitachse in Anwendereinheiten. |
| di_yPos | DINT | Sollposition der Achse in Anwendereinheiten. |
| a_CamTable | CAM_TABLE | Stützpunkttabelle der normierten Kurven. |

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_Execute | BOOL | Positive Flanke startet die Bewegung. |
| x_Break | BOOL | Positive Flanke stoppt die Bewegung sofort. Es wird mit di_BreakDec gestoppt.td> |
| di_Distance | DINT | Verfahrweg in Anwendereinheiten. |
| di_MaxVel | DINT | Max. Geschwindigkeit in Anwendereinheiten/s |
| di_MaxAcc | DINT | Max. Beschleunigung in Anwenderleinheiten/s2 |
| di_MaxDec | DINT | Max. Verzögerung in Anwendereinheiten/s2 |
| di_BreakDec | DINT | Max. Verzögerung bei Abbruch in Anwendereinheiten/s2 |
| i_T_Cycle | INT | Zykluszeit der Sollwert-Eventtask in ms. Es können 1, 2, 4 oder 8 ms angegeben werden. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Running | BOOL | TRUE: Bewegung wird ausgeführt. |
| x_Done | BOOL | TRUE für einen Zyklus: Bewegung beendet. |
| di_Vel | INT | Soll-Geschwindigkeit der Achse in 1/100 Anwendereinheiten/Ts. Ts: Zykluszeit der Sollwert-Eventtask. |
| di_Acc | DINT | Soll-Beschleunigung der Achse in 1/100 Anwendereinheiten/Ts2. Ts: Zykluszeit der Sollwert-Eventtask |
| x_Errorr | BOOL | TRUE: Fehler erkannt. |
| w_ErrorId | WORD | Fehlernummer. Siehe Fehlertabelle. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| di_Pos | DINT | Mechanische Sollposition der Achse in Anwendereinheiten. |

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_Execute | BOOL | Mit 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_CamId | UINT | Position 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_Num | DINT | Zähler der Kurvensteigung am Anfang der Kurve. |
| di_k1_Denum | DINT | Nenner der Kurvensteigung am Anfang der Kurve. |
| di_knNum | DINT | Zähler der Kurvensteigung am Ende der Kurve. |
| di_knDenum | DINT | Nenner der Kurvensteigung am Ende der Kurve. |
| di_yMax | DINT | Maximalwert der Kurve (für Skalierung) |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Done | BOOL | TRUE: Berechnung erfolgreich beendet. Normierte Kurvenstützpunkte erstellt. |
| x_Error | BOOL | TRUE: Bei der Berchnung wurde ein Fehler festgestellt. |
| w_ErrorId | WORD | Fehlernummer. Siehe Fehlertabelle. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Spline | SPLINE_DATA | Tabelle 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_CamTable | CAM_TABLE | Stützpunkttabelle der normierten Kurven. |
