Motion Erweiterung
TB_DriveEncoder
Verbindet eine Technologiefunktion mit einer Motion Control Achse. Dazu wird der aus der Technologiefunktion vorgegeben Sollwert mit der angegebenen Übersetzung transformiert und als Lagesollwert an die Achse übertragen.
Achtung:
Bevor der Baustein ausgeführt werden kann, müssen alle relevanten Parameter mit dem Baustein TB_SyncLin_Init initialisiert werden.
Der FB TB_DriveEncoder kann nur in Verbindung mit Motion Control verwendet werden. Nur verwendbar in einer synchronisierten.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt wird die angelegte Geschwindigkeit (in 1/100 Anwendereinheiten/Ts) mit dem Getriebefaktor ud_Units/u_Revolution übersetzt und an die angeschlossene Achse ausgegeben.
Beispiel für die Bestimmung der Übersetzung: Spindel mit Steigung 12,5mm/U an einem Getriebe mit i=4. Als Anwendereinheiten werden 1/1000 mm gewünscht. Die Übersetzung ergibt sich zu 12,5mm/U * 1000Units/mm = 12500Units/U. Damit wird ud_Units=12500 und u_Revolution=4.
Empfohlene Task: EVENT
Verwendete Bibliotheken: ARITHMETIC_30bd00 oder höher MOTION_CONTROL_xxbd00 oder höherMOTION_MULTI_AXIS_xxbd00 oder höherTECH_TYPES_30bd06 oder höher TECH_TOOLS_30bd00 oder höher MOTION_TYPES_xxbd07 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. | |
| di_Vel | DINT | ... | ... | Sollgeschwindigkeit in 1/100 Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask. | |
| ud_Units | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen Motorumdrehungen (u_Revolution). | |
| u_Revolution | UNIT | ... | ... | Anzahl der Motorumdrehungen für die gegebenen Anwendereinheiten (ud_Units). | |
| _Axis | AXIS_REF | ... | ... | An _Axis wird die Motion Control Achse angeschlossen. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist aktiv, die angegebene Sollgeschwindigkeit wird umgerechnet und an die Motion Control Achse übertragen. |
| x_Error | BOOL | TRUE: Fehler bei der Ansteuerung der Motion Control Achse erkannt. |
| w_Errorld | WORD | Fehlernummer des erkannten Fehlers. Siehe Motion Control ErrorId-Fehlerliste. Fehler 999: Keine Technologie-Lizenz. Abhilfe: PLC mit Technologie-Lizenz verwenden. |
| _Axis | AXIS_REF | Motion Control Achse. |

TB_DriveState
Dieser Funktionsbaustein erfasst den Antriebsstatus, d.h. alle relevanten Informationen wie Hardware-Eingänge, Statuswort, Fehler oder Warnung.
Mit Hilfe dieser Informationen ist es möglich, z.B. vor dem Einschalten mit MC_PowerOn zu kontrollieren, ob der Antrieb einschaltbereit ist. Weiterhin kann ständig kontrolliert werden, ob Fehler oder Warnungen anstehen.
Empfohlene Task: zyklisch
Verwendete Bibliotheken: MOTION_CONTROL_30bd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. | |
| _Axis | AXIS_REF | ... | ... | An _Axis wird die Motion Control Achse angeschlossen. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_DriveRdy | BOOL | TRUE: Antrieb ist einschaltbereit. Dieser Ausgang ist eine Verknüpfung aus allen relevanten Zuständen. x_DriveRdy:= x_Enable AND x_DriveComRsy AND NOT x_Error AND x_LinkVolt AND x_HW_PulsEnable AND x_HW_QuickStop AND NOT x_HW_SafetyRelais; |
| x_DriveComRdy | BOOL | TRUE: Die Kommunikation zum Antrieb ist bereit. Hierbei wird überprüft, ob sowohl die Bedarfsdatenkommunikation als auch die zyklische Kommunikation (incl. UserMapping) bereit sind. Die Überprüfung erfolgt sowohl für eine lokale Achse, wie auch für eine Feldbusachse. |
| w_Statusword | WORD | Statuswort des Antriebs (P301). |
| i_Status | INT | Antriebsstatus, der der Zustandsmaschine des Antriebs entspricht und am Antriebsdisplay angezeigt wird. Es werden die Zustände 0 bis 4 und 15/F angezeigt, die Zustände 6 bis 7 und 14/E werden nicht angezeigt. 0: Nicht Einschaltbereit 1: Einschaltsperre 2: Einschaltbereit 3: Eingeschaltet 4: Betrieb freigegeben 15/F: Störung |
| x_Error | BOOL | TRUE: Fehler bei der Ansteuerung der Motion Control Achse erkannt. |
| x_Warning | BOOL | TRUE: Antriebswarnung |
| x_LinkVolt | BOOL | TRUE: Netzspannung/Zwischenkreisspannung liegt an |
| x_HW_PulsEnable | BOOL | TRUE: Eingang Impulsfreigabe am Antrieb ist geschlossen |
| x_HW_Quickstop | BOOL | TRUE: Eingang Schnellhalt am Antrieb ist geschlossen |
| x_HW_SafetyRelais | BOOL | TRUE: Unterspannung Sicherheitsrelais |
| x_ComError | BOOL | TRUE: Fehler Bedarfsdatenkommunikation des intern verwendeten FBs BM_ReadPar. Mit Hilfe der Bedarfsdatenkommunikation werden die Zustände des Antriebs gelesen, die nicht über die Struktur AXIS_REF geliefert werden. |
| _Axis | AXIS_REF | Motion Control Achse. |

TB_EncoderActPos
Erzeugt aus der Inkrementposition eines angeschlossenen Gebers die mechanische Istposition in Anwendereinheiten.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt werden die Winkeländerungen des angeschlossenen Gebers erkannt, in Anwendereinheiten gewandelt, ausgegeben und auf die an di_Pos angeschlossene Positionsvariable addiert. Die Position sollte einmalig durch den Anwender gesetzt werden.
Empfohlene Task: EVENT
Verwendete Bibliotheken: ARITHMETIC_30bd00 oder höher MOTION_CONTROL_xxbd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. | |
| d_Encoder | DWORD | ... | ... | Winkelposition des Gebers in Inkrementen. 232 Inkremente entsprechen einer Umdrehung des Gebers. | |
| ud_Units | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution). | |
| u_Revolution | UNIT | ... | ... | Anzahl der Geberumdrehungen für die gegebenen Anwendereinheiten (ud_Units). ACHTUNG: Abhängig der u_Revolution ist die interne Rechengenauigkeit der Leitachse. Je kleiner u_Revolution, desto höher die Auflösung: u_Revolution Auflösung der Leitachse 1 30 bits >= 2 29 bits >= 4 28 bits >= 8 27 bits >= 16 26 bits >= 32 25 bits >= 2^x 32-(x+2) bits = 30-x bits >= 4,096 18 bits >= 8,192 17 bits >= 16,384 16 bits >= 32,768 15 bits 0 = 65,536 14 bits u_Revolution=0 entspricht 65536! | |
| i_T_Cycle | INT | ... | ... | Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich. | |
| us_Filter | USINT | ... | ... | Filterparameter für die Winkeländerung. Null bedeutet Filter inaktiv. Je größer der Wert, desto stärker wirkt der Filter. | |
| di_Pos | DINT | ... | ... | Mechanische Position des Gebers in Anwendereinheiten. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein ist aktiv, die angegebene Sollgeschwindigkeit wird umgerechnet und an die Motion Control Achse übertragen. |
| di_Vel_Ts | DINT | Ausgabe der aktuellen Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask. |
| di_Vel_s | DINT | Ausgabe der aktuellen Geschwindigkeit in Anwendereinheiten/s. |
| di_Pos | DINT | Position des Gebers in Anwendereinheiten. |

TB_GetPosAbsEnc
Mit dieser Funktion kann die aktuelle mechanische Position einer Achse, die mit einem Absolutwertgeber ausgerüstet ist, errechnet werden. Dazu müssen bei der Inbetriebnahme der Achse die Geberposition und die zugehörige mechanische Position ermittelt werden.
Empfohlene Task: -
Verwendete Bibliotheken: ARITHMETIC_30bd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| d_EncPresetPos | DWORD | ... | ... | Position des Gebers in Inkrementen bei der die mechanische Position (di_MechPresetPos) bekannt ist. Dieser Parameter wird bei der Inbetriebnahme festgelegt. | |
| di_MechPresetPos | DINT | ... | ... | Mechanische Position der Achse, wenn der Geber d_EncPresetPos ausgibt. Dieser Parameter wird bei der Inbetriebnahme festgelegt. | |
| d_EncPos | DWORD | ... | ... | Aktuelle Position des Gebers in Inkrementen. Zu dieser Position wird die mechanische Position der Achse in Anwendereinheiten ausgegeben. | |
| ud_Units | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution). | |
| u_Revolution | UINT | ... | ... | Anzahl der Geberumdrehungen für die gegebenen Anwendereinheiten (ud_Units). | |
| u_IncsPerRound | UINT | ... | ... | Anzahl der Inkremente pro Umdrehung des Gebers. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| TB_GetPosAbsEnc | DINT | Mechanische Position der Achse in Anwendereinheiten zu der Geberposition d_EncPos in Inkrementen. |

TB_MasterEncoder
Der FB TB_MasterEncoder erzeugt aus einer Motion Control Achse (AXIS_REF), die durch die FBs TB_MasterEngine oder TB_PhysicalEncoder generiert wurde, eine Masterposition und -geschwindigkeit in Anwendereinheiten. Der Baustein wird verwendet, um aus einer Masterachse die Leitposition für die jeweilige „Technologie"-Achse (aus der Bibliothek TechLib) zu erzeugen. Diese Position dient z.B. den Technologiebausteinen SyncLin und SyncRot als Leitwert.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt werden die Positionsänderungen (in Anwendereinheiten/Ts) der angeschlossenen Achse erkannt, ausgegeben (di_MasterVel) und auf die angeschlossene Positionsvariable (di_MasterPos) addiert. Die Position sollte einmalig durch den Anwender gesetzt werden. Wird der TB_MasterEncoder in Verbindung mit einem Technologiebaustein (wie z.B. SyncLin oder SyncRot) verwendet, so wird die Position von dem Technologiebaustein manipuliert. Siehe dazu die Beschreibung der Technologiebausteine.
Empfohlene Task: EVENT
Verwendete Bibliotheken: MOTION_MULTI_AXIS_xxbd00 oder höherMOTION_TYPES_xxbd07 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. Die Position wird abhängig der Geschwindigkeit der angeschlossenen Achse verändert. Es findet aber kein Setzen der Position statt. | |
| di_MasterPos | DINT | ... | ... | Position des Masters in Anwendereinheiten. | |
| _Master | AXIS_REF | ... | ... | An _Master muss eine (globale) Variable vom Datentyp AXIS_REF angeschlossen werden. Sie enthält die Informationen der Masterachse. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv, Positionsänderungen der Masterachse bewirken eine Positionsänderung an di_MasterPos. |
| di_MasterVel | DINT | Ausgabe der aktuellen Master-Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask. |
| di_MasterPos | DINT | Position der Leitachse in Anwendereinheiten |
| _Master | AXIS_REF | Motion Control Achse |

TB_MasterEngine
Dieser Funktionsbaustein kann verwendet werden, um einen virtuellen Master zu erzeugen. Es können beliebige Nutzereinheiten (Einh) verwendet werden, somit ist es möglich die Mechanik z.B. in mm oder ° darzustellen. Weiterhin kann eine beliebige Periode angegeben werden, die z.B. 360° sein kann, um eine Rundbewegung zu erzeugen.
Beschreibungallgemein
Mit ud_AccStart_s kann eine separate Beschleunigung für den Start eingestellt werden. Nach dem Erreichen des Sollwertes wird ud_Acc_s verwendet. Möchte man z.B. die virtuelle Leitachse ohne Rampe starten, also sofort nach Start die gewählte Geschwindigkeit erreichen, danach jedoch über Rampe die Geschwindigkeit verändern, kann man ud_AccStart_s mit maximaler Beschleunigung belegen. Dieses Vorgehen ist möglich, wenn die Slaveachsen aufgrund der gewählten Technologie aus einer Rast starten, wie z.B. bei Kurven.
Die virtuelle Leitachse kann durch drei verschiedene Arten gestoppt werden.
- Die Sollgeschwindigkeit wird auf 0 gesetzt, die Leitachse rampt mit der eingestellten Verzögerung ab.
- x_Start wird auf FALSE gesetzt. Die Achse bremst mit ud_DecStop_s und stoppt auf der Stopposition ud_StopPos.
- x_StopRapid wird auf TRUE gesetzt. Die Achse stoppt sofort mit der Verzögerung ud_DecRapid_s.
Möchte man die virtuelle Leitachse nutzen, um MotionControl-FBs wie MC_GearIn oder MC_CamIn anzukuppeln, ist es nötig eine Resolution anzugeben, um den Bezug der Nutzereinheiten pro MC_Periode herzustellen. Diese Resolution wird per Bruch angegeben, z.B. in 360° / 1 MC_Periode oder 54554 mm / 1000 MC_Periods.
Nutzt man die virtuelle Leitachse um FBs aus der Technologie Bibliothek wie z.B. TB_SyncLin oder TB_SyncRot, ist es nicht nötig die Resolution anzugeben, da diese FBs mit Nutzereinheiten arbeiten.
Mit Hilfe des FBs TB_MasterEncoder wird aus der durch den FB MasterEngine belegten Struktur _Master (AXIS_REF) für jede einzelne Technologie-Achse eine eigene Masterposition generiert.
Um Vorsteuerberechnungen oder ähnliches zu ermöglichen, gibt der FB zusätzlich die aktuelle Geschwindigkeit und die Zielgeschwindigkeit in Nutzereinheiten, die restliche Beschleunigungszeit in ms wie auch die jeweils aktuelle Bremszeit (bezogen auf ud_DecStop_s) bis zum Stillstand aus. Diese Werte können bei Verwendung der FBs TB_TimeToTravel oder auch des Nockenbausteins mit Totzeitkompensation TB_CamSwitch verwendet werden.
Benötigte Rechenzeiten gemessen mit BM4_O_PLC01:
Ohne Resolution / ohne Period: 141µs
Ohne Resolution / mit Period: 152µs
Mit Resolution / ohne Period: 161µs
Mit Resolution / mit Period: 172µs
Empfohlene Task: EVENT
Verwendete Bibliotheken: MOTION_MULTI_AXIS_xxbd00 oder höherARITHMETIC_30bd00 oder höherMOTION_TYPES_xxbd07 oder höherTECH_TOOLS_30bd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: |
|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | Mit dem Eingang x_Enable=TRUE wird der Baustein initialisiert. War die Initialisierung erfolgreich, wird dies mit dem Ausgang x_Active=TRUE angezeigt. |
| x_Start | BOOL | ... | ... | Die virtuelle Leitachse wird gestartet mit x_Start=TRUE. Um starten zu können muss x_Active=TRUE und x_StopRapid=FALSE sein. Soll die Leitachse auf einer bestimmten Position stoppen, muss diese an ud_StopPos angeschlossen werden und dann x_Start=FALSE gesetzt werden. Es wird mit der Stoppverzögerung ud_DecStop_s verzögert. Der erfolgreiche Start der virtuellen Leitachse wird mit x_Motion=TRUE angezeigt, |
| x_StopRapid | BOOL | ... | ... | Der Eingang x_StopRapid muss FALSE sein, um die Leitachse starten zu können. Mit x_StopRapid=TRUE wird die Leitachse sofort gestoppt. Es wird mit der Stoppverzögerung ud_DecRapid_s verzögert. |
| di_Vel_s | DINT | ... | ... | Die Sollgeschwindigkeit wird in Einh/s am Eingang di_Vel_s angeschlossen. Um die Geschwindigkeit zu erreichen, wird mit den Beschleunigungen ud_Acc_s und ud_Dec_s in Einh/s² beschleunigt oder gebremst. |
| ud_Acc_s | UDINT | ... | ... | Beschleunigung in Einh/s². |
| ud_Dec_s | UDINT | ... | ... | Verzögerung in Einh/s². Wird der Eingang nicht belegt, wird ud_Acc_s verwendet. |
| ud_AccStart_s | UDINT | ... | ... | Beschleunigung in Einh/s², mit der die Leitachse bei x_Start=TRUE beschleunigt. Nach dem ersten Erreichen der Sollgeschwindigkeit wird ud_Acc_s verwendet. Die Beschleunigung wirkt also nur beim ersten Beschleunigungsvorgang nach steigender Flanke von x_Start. Wird der Eingang nicht belegt, wird ud_Acc_s verwendet. |
| ud_DecStop_s | UDINT | ... | ... | Verzögerung in Einh/s² mit der die Leitachse bei x_Start=FALSE abgebremst wird. Die angezeigte Bremszeit ud_TimeStop_ms bezieht sich auf diese Verzögerung. Wird der Eingang nicht belegt, wird ud_Dec_s verwendet. |
| ud_DecRapid_s | UDINT | ... | ... | Verzögerung in Einh/s², mit der die Leitachse bei x_StopRapid=TRUE, x_Enable=FALSE oder im Fehlerfall abgebremst wird. Die angezeigte Bremszeit ud_TimeStop_ms bezieht sich auf diese Verzögerung. Wird der Eingang nicht belegt, wird ud_Dec_s verwendet. |
| ud_StopPos | UDINT | ... | ... | Bei x_Start=FALSE wird auf die Position ud_StopPos positioniert. Wird die Position erreicht, wird der Ausgang x_StopPosReached=TRUE. Ist die Position nicht erreichbar, weil sie z.B. hinter der aktuellen Position liegt oder der Bremsweg länger ist als der Abstand zur Stoppposition, wird sofort gebremst, jedoch der Ausgang x_StopPosReached bleibt FALSE. |
| ud_StartPos | UDINT | ... | ... | Wenn x_Enable=TRUE, wird ud_MasterPos mit Startposition ud_StartPos initialisiert. |
| ud_Period | UDINT | ... | ... | Mit ud_Period wird die Auflösung der Leitachse vorgegeben. Die Auflösung kann beliebig sein, wie z.B. 360000 für 360,000 ° oder 735500 für 735,000 mm aber auch 5000 für 50,00 inch. |
| i_T_Cycle | INT | ... | ... | Aufrufintervall der Event-Task, in der TB_MasterEngine aufgerufen wird, in ms. Gültige Werte sind 1ms, 2ms, 4ms, 8ms. |
| ud_Units | UDINT | ... | ... | Möchte man die virtuelle Leitachse nutzen, um MotionControl-FBs wie MC_GearIn oder MC_CamIn anzukuppeln, ist es nötig eine Resolution anzugeben, um den Bezug der Nutzereinheiten pro Umdrehung des Motors bzw. der MC_Periode herzustellen. Diese Resolution wird in Einheiten / MC_Perioden als Bruch angegeben, wobei ud_Units der Zähler ist und u_MC_Periode der Nenner. Sollen MC_GearIn oder MC_CamIn nicht mit der erzeugten Leitachse genutzt werden, sollten die Eingänge nicht beschaltet werden. |
| u_MC_Periode | UINT | ... | ... | Siehe ud_Units! |
| _Master | AXIS_REF | ... | ... | Motion Control Achsvariable auf die die gerechnete Leitachsposition. Diese Achsvariable kann an der Kurvenscheibe oder dem elektronischen Getriebe als Master (Eingang Master) verwendet werden (wenn eine Resolution angegeben wurde). Weiterhin kann mit dem FB TB_MasterEncoder die Leitachsposition und –geschwindigkeit in Einh bzw. Einh/Ts ausgelesen werden (hierfür ist keine Resolution nötig). |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | Der Ausgang x_Active zeigt eine erfolgreiche Initialisierung von TB_MasterEngine. |
| x_Motion | BOOL | Der Ausgang x_Motion zeigt die aktive virtuelle Leitachse an. x_Motion wird erst FALSE, wenn auch Stillstand erreicht wurde. |
| ud_MasterPos | UDINT | Aktuelle Masterposition der virtuellen Leitachse in Einh. Die Position wird bei steigender Flanke von x_Enable auf ud_StartPos gesetzt. |
| di_MasterVel | DINT | Aktuelle Geschwindigkeit der virtuellen Leitachse in Einh/Ts. |
| di_MasterAcc | DINT | Aktuelle Beschleunigung der virtuellen Leitachse in Einh/Ts². |
| di_MaVelSet_s | DINT | Sollgeschwindigkeit der virtuellen Leitachse in Einh/s. |
| di_MaVelAct_s | DINT | Aktuelle Geschwindigkeit der virtuellen Leitachse in Einh/s. |
| ud_TimeStop_ms | UDINT | Zeit in ms, die zum Stoppen mit x_Start=FALSE von der aktuellen Geschwindigkeit benötigt wird. Mit Hilfe des FBs TB_TimeToTravel könnte damit der Bremsweg berechnet werden. |
| ud_TimeAcc_ms | UDINT | Zeit in ms, die noch benötigt wird, um die Sollgeschwindigkeit zu erreichen. Der Wert kann z.B. für den FB TB_CamSwitch verwendet werden, um die Beschleunigung bei der Totzeitkompensation berücksichtigen zu können. |
| i_SegNr | INT | 0: Virtuelle Leitachse im Stillstand 1: Virtuelle Leitachse beschleunigt 2: Virtuelle Leitachse bremst 3: Virtuelle Leitachse hat Sollgeschwindigkeit erreicht |
| x_StopPosReached | BOOL | Der Ausgang x_StopPosReached wird TRUE, wenn die Stoppposition erreicht wurde. Die Stoppposition wird dann nicht erreicht, wenn die Stoppposition hinter der aktuellen Position liegt oder der Bremsweg größer ist als die Differenzstrecke von der aktuellen Position zur Stoppposition. |
| x_Standstill | BOOL | Der Ausgang x_Standstill=TRUE, wenn sich die virtuelle Leitachse im Stillstand befindet. |
| x_Error | BOOL | alls ein Fehler auftritt, wird das Fehlerbit gesetzt und eine Fehlernummer ausgegeben. Tritt eine Warnung auf, wird nur eine Fehlernummer ausgegeben, das Fehlerbit wird nicht gesetzt. |
| i_Error | INT | siehe unten |
| _Master | AXIS_REF | Motion Control Achsvariable auf die die gerechnete Leitachsposition. Diese Achsvariable kann an der Kurvenscheibe oder dem elektronischen Getriebe als Master (Eingang Master) verwendet werden (wenn eine Resolution angegeben wurde). Weiterhin kann mit dem FB TB_MasterEncoder die Leitachsposition und –geschwindigkeit in Einh bzw. Einh/Ts ausgelesen werden (hierfür ist keine Resolution nötig). |

TB_MechActPos
Erzeugt aus einer Motion Control Achse die mechanische Istposition der Achse in Anwendereinheiten.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt werden die Positionsänderungen der angeschlossenen Achse erkannt, in Anwendereinheiten gewandelt, an di_Vel ausgegeben und auf die an di_Pos angeschlossene Positionsvariable addiert. Die Position sollte einmalig durch den Anwender gesetzt werden.
Empfohlene Task: EVENT
Verwendete Bibliotheken: ARITHMETIC_30bd00 oder höherMOTION_CONTROL_xxbd00 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. Die Position wird abhängig der Geschwindigkeit der angeschlossenen Achse verändert. Es findet aber kein Setzen der Position statt. | |
| ud_Units | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen Motorumdrehungen (u_Revolution). | |
| u_Revolution | UINT | ... | ... | Anzahl der Motorumdrehungen für die gegebenen Anwendereinheiten (ud_Units). | |
| i_T_Cycle | INT | ... | ... | Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich. | |
| di_Pos | DINT | ... | ... | Mechanische Position der Achse in Anwendereinheiten. | |
| _Axis | AXIS_REF | ... | ... | An _Axis wird die Motion Control Achse angeschlossen. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv, Positionsänderungen der Masterachse bewirken eine Positionsänderung an di_MasterPos. |
| di_Vel | DINT | Ausgabe der aktuellen Master-Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask. |
| di_Pos | DINT | Position der Achse in Anwendereinheiten, |
| _Axis | AXIS_REF | Motion Control Achse. |

TB_PhysicalEncoder
Erzeugt aus Inkrementposition eines angeschlossenen Gebers die mechanische Istposition in Anwendereinheiten und gibt diese als MotionControl-Achse aus. Mit diesem Baustein kann ein mechanischer Geber als Leitgeber für synchrone Bewegungen verwendet werden. Dazu muss die 32-Bit Winkelposition (in Inkrementen)des Gebers als zyklischer Wert zur Verfügung stehen.
Mit x_Enable=TRUE wird der Baustein aktiviert. Die erfolgte Aktivierung wird mit TRUE am Ausgang x_Active gemeldet. Ab diesem Zeitpunkt werden die Winkeländerungen des angeschlossenen Gebers erkannt, in Anwendereinheiten gewandelt, ausgegeben und auf die an di_Pos angeschlossene Positionsvariable addiert und in der Achse _Master abgelegt. Die Position sollte einmalig durch den Anwender gesetzt werden. Die Masterachse kann direkt in Motion Control verwendet werden. Um Technologiebausteine (SyncLin, SyncRot, …) zu verwenden steht die Position di_Pos zur Verfügung.
Möchte man die reale Leitachse nutzen, um MotionControl-FBs wie MC_GearIn oder MC_CamIn anzukuppeln, ist es nötig eine Resolution anzugeben, um den Bezug der Anwendereinheiten pro MC_Periode herzustellen. Diese Resolution wird per Bruch angegeben, z.B. in 360° / 1 MC_Periode oder 54554 mm / 1000 MC_Periods.
Nutzt man die virtuelle Leitachse um FBs aus der Technologie Bibliothek wie z.B. TB_SyncLin oder TB_SyncRot, ist es nicht nötig die Resolution anzugeben, da diese FBs mit Anwendereinheiten arbeiten.
Mit Hilfe des FBs TB_MasterEncoder wird aus der durch den FB TB_PhysicalEncoder belegten Struktur _Master (AXIS_REF) für jede einzelne Technologie-Achse eine eigene Masterposition generiert. Siehe dazu „Applikationshandbuch Geberkonzept".
Empfohlene Task: EVENT
Verwendete Bibliotheken: MOTION_MULTI_AXIS_xxbd00 oder höherARITHMETIC_30bd00 oder höherMOTION_TYPES_xxbd07 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| x_Enable | BOOL | ... | ... | TRUE: Freigabe des Bausteins. | |
| d_Encoder | DWORD | ... | ... | Winkelposition des Gebers in Inkrementen. 232 Inkremente entsprechen einer Umdrehung des Gebers. | |
| ud_Units | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution). | |
| u_Revolution | UINT | ... | ... | Anzahl der Geberumdrehungen für die gegebenen Anwendereinheiten (ud_Units). Abhängig der u_Revolution ist die interne Rechengenauigkeit der Leitachse. Je kleiner u_Revolution, desto höher die Auflösung: u_Revolution Auflösung der Leitachse 1 30 bits >= 2 29 bits >= 4 28 bits >= 8 27 bits >= 16 26 bits >= 32 25 bits >= 2^x 32-(x+2) bits = 30-x bits >= 4,096 18 bits >= 8,192 17 bits >= 16,384 16 bits >= 32,768 15 bits 0 = 65,536 14 bits u_Revolution=0 entspricht 65536! | |
| i_T_Cycle | INT | ... | ... | Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich. | |
| us_Filter | USINT | ... | ... | Filterparameter für die Winkeländerung. Null bedeutet Filter inaktiv. Je größer der Wert, desto stärker wirkt der Filter. | |
| ud_Units_1 | UDINT | ... | ... | Anzahl der Anwendereinheiten für die gegebenen MotionControl Perioden (u_MC_Periode). | |
| u_MC_Periode | UINT | ... | ... | Anzahl der MotionControl Perioden für die gegebenen Anwendereinheiten (ud_Units_1). | |
| di_Pos | DINT | ... | ... | Mechanische Position des Gebers in Anwendereinheiten. | |
| _Master | AXIS_REF | ... | ... | Motion Control Master-Achse. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv, Winkeländerungen des Gebers werden in Anwendereinheiten gewandelt und ausgegeben. |
| di_Vel_s | DINT | Ausgabe der aktuellen Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask. |
| di_Vel_Ts | DINT | Ausgabe der aktuellen Geschwindigkeit in Anwendereinheiten/s. |
| di_Pos | DINT | Position der Achse in Anwendereinheiten. |
| _Master | AXIS_REF | Motion Control Master-Achse. |

TB_ReadActualTorque
Der Funktionsbaustein TB_ReadActualTorque berechnet das tatsächliche Drehmoment der Achse einschließlich Sättigung. Nach Aktivierung mit x_Enable = TRUE liest der FB grundlegende Motorparameter über Service-Datenkommunikation und startet die Umrechnung der Eingangsvariable r_ActualCurrent in das tatsächliche Drehmoment des Antriebs. Der berechnete Wert wird über die Ausgangsvariable r_ActualTorque ausgegeben.
Der Funktionsbaustein kann aus jedem Bewegungszustand aufgerufen werden und kann beliebig oft instanziiert werden.
Hinweis: Der Funktionsbaustein kann nicht für Antriebe mit Hohlwelle und Riemenübertragung verwendet werden.
Empfohlene Task: Event
Verwendete Bibliotheken: MOTION_TYPES_40bd11MOTION_CONTROL_40bd11SYSTEM2_PCC3_40bd04TECH_TOOLS_40bd08
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | Schaltet den Funktionsbaustein ein oder aus. Wenn FALSE, werden alle Ausgänge zurückgesetzt. |
| r_ActualCurrent | REAL | Aktueller Motorstrom in [A]. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| r_ActualTorque | REAL | Aktuelles Motor-Drehmoment in [Nm]. |
| x_Valid | BOOL | Signalisiert, dass der Funktionsblock aktiv ist und das Ausgangssignal r_ActualTorque gültig ist. |
| x_Busy | BOOL | Signalisiert, dass der Funktionsblock aktiv ist, aber das Ausgangssignal r_ActualTorque noch nicht gültig ist. |
| x_Error | BOOL | Fehlerbit, das anzeigt, ob ein Fehler aufgetreten ist (der Fehlercode w_ErrorID ist gültig). |
| w_ErrorID | WORD | Fehlercode, der weitere Informationen über den aufgetretenen Motion-Control-Fehler enthält. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Axis | AXIS_REF | Motion Control Achsvariable |

TB_ReadAxisStatus
Der Funktionsbaustein "TB_ReadAxisStatus" liest verschiedene Statusinformationen der Achse. Nach Aktivierung des FB mit x_Enable = TRUE startet das Lesen des Antriebsstatus.
Der Funktionsbaustein kann aus jedem Bewegungszustand aufgerufen werden und kann beliebig oft instanziiert werden.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: MOTION_TYPES_40bd11
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | Eingangssignal zur Aktivierung des Funktionsbausteins. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| i_State | Int | Gibt den aktuellen Zustand des Antriebs an (entsprechend der Zustandsmaschine). 0: Nicht Einschaltbereit 1: Einschaltsperre 2: Einschaltbereit 3: Eingeschaltet 4: Betrieb Freigegeben 15: Störung |
| x_DC_Link | BOOL | Gibt an, ob die Zwischenkreisspannung (DC-Link) vorhanden ist. |
| x_ReadyToOperate | BOOL | Gibt an, ob der Antrieb betriebsbereit ist. |
| x_OperationDisabled | BOOL | Gibt an, ob der Betrieb des Antriebs aufgrund eines fehlenden PulsEnable-Signals deaktiviert ist. |
| x_PulseEnable | BOOL | Gibt an, ob das PulsEnable-Signal aktiviert ist. |
| x_QuickStop | BOOL | Gibt an, ob eine Anfrage für einen Schnellstopp vorliegt. |
| x_DriveWarning | BOOL | Gibt an, ob eine Antriebswarnung erkannt wurde. |
| x_DriveError | BOOL | Gibt an, ob ein Antriebsfehler erkannt wurde. |
| x_Active | BOOL | Gibt an, ob der Funktionsbaustein aktiv ist. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Axis | AXIS_REF | Referenz zur Motion-Control-Achse |

TB_ReadWriteBM5Parameter
Der Funktionsbaustein BM_ReadWriteBM5Parameter ermöglicht den Lese- & Schreibzugriff auf alle Antriebsparameter der BmaXX 5000 Familie. Die Servicedatenkommunikation mit dem Slave läuft per CAN over Ethercat (CoE), durch die Verwendung eines eigenen Kommunikationskanals ist der FB vollkommen unabhängig von Motion Control.
Da der Baustein eine Ressourcenabhängigkeit aufweist, muss diese in der POE (Prozessobjektumgebung) in der der Funktionsbaustein instanziiert ist entsprechend konfiguriert werden.
Bei einer steigenden Flanke des Eingangs x_Execute wird der Lese-/Schreibvorgang gestartet. Der Baustein liest bzw. schreibt einen Parameterwert von oder zu einer Motion-Control-Achse, die durch die Eingangsvariable_Axis angegeben wird. Der Antriebsparameter wird durch die Parameter-IDs i_ParaID0 bis i_ParaID3 festgelegt.
Der Ausgang x_Busy zeigt an, ob der Baustein eine aktive Verarbeitung durchführt. Bei erfolgreicher Bearbeitung wird der Ausgang x_Done gesetzt. Falls ein Fehler auftritt, wird der Ausgang x_Error gesetzt, und die entsprechende Fehlernummer wird im Ausgang w_ErrorID angezeigt. Die Fehlerbeschreibung ist in der Baumüller Motion Control-Hilfe oder im „MC_ErrorInfo“ Funktionsbaustein zu finden.
Der Baustein unterstützt verschiedene Typen von Parametern, einschließlich DWORD, REAL und STRING. Der jeweilige Typ wird durch die Eingangsvariable si_ValueType angegeben. Die Anzahl der übertragenen Bytes wird im Ausgang si_ByteLength angezeigt, abhängig vom ausgewählten Parametertyp.
Empfohlene Task: Cyclic/Event
Verwendete Bibliotheken: MOTION_TYPES_40bd11SYSTEM2_PCC03_40bd04
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Execute | BOOL | Flankensensitiver Eingang zur Ausführung der Lese-/Schreiboperation. |
| x_Write | BOOL | Gibt an, ob die Operation ein Schreibvorgang ist (TRUE) oder nicht (FALSE). |
| si_ValueType | SINT | Typ des Soll- bzw. Ist-Werts (1: BYTE, 2: WORD, 4: DWORD, 5:REAL, 6: STRING). |
| i_ParaID0 | INT | Parameter-ID für den ersten Parameter. |
| i_ParaID1 | INT | Parameter-ID für den zweiten Parameter. |
| i_ParaID2 | INT | Parameter-ID für den dritten Parameter. |
| i_ParaID3 | INT | Parameter-ID für den vierten Parameter. |
| t_Timeout | TIME | Zeitlimit für die Übertragung. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| si_ByteLength | SINT | Anzahl der relevanten Bytes im übertragenen Wert. |
| x_Busy | BOOL | Gibt an, ob der Funktionsbaustein gerade beschäftigt ist. |
| x_Done | BOOL | Gibt an, ob die Operation erfolgreich abgeschlossen wurde. |
| x_Error | BOOL | Gibt an, ob ein Fehler aufgetreten und die Variable w_ErrorID gültig ist. |
| w_ErrorID | WORD | Nummer zur Identifizierung des aufgetretenen Motion-Control-Fehlers. |
Ein-/Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| _Axis | AXIS_REF | Referenz zur Motion-Control-Achse |
| s_Value_STRING | STRING | Soll- bzw. Ist-Wert als Zeichenkette (Sting) |
| dw_Value_DWORD | DWORD | Soll- bzw. Ist-Wert als DWord. |
| r_Value_REAL | REAL | Soll- bzw. Ist-Wert als Gleitkommazahl (Real). |

TB_Result
Der Status der Achsbausteine TB_xxx_CY steht als Strukturvariable am Ausgang _Result zur Verfügung. Der FB TB_Result dient dazu, diesen Status aufzuschlüsseln und darzustellen. Damit steht nicht nur der Status des Achsbausteins, sondern auch der Status des Antriebs in vollem Umfang zur Verfügung.
Dieser Funktionsbaustein dient der Diagnose des Achsbausteins und des Antriebs. Die Struktur _Result, die am Ausgang des Achsbausteins zur Verfügung steht, dient als Schnittstelle.
Die Ausgänge, die den Status des Antriebs beschreiben, wurden im Achsbaustein vom FB TB_DriveState generiert.
>Die Ausgänge, die den Status des Achsbausteins beschreiben, werden im Achsbaustein in der Aktion „Output" generiert. Die Fehlermeldungen können ja nach Applikation erweitert oder verändert werden. Der Fehlercode ist wie folgt aufgebaut:
dw_Result:
Bit 0..15: Fehlernummer des gestörten FBs
Bit 16..23: Nummer des Moduls/FBs
Bit 24..32: Mode-Nr des Achsbausteins
Hiermit ist es möglich, z.B. folgende Fehlermeldung zu übergeben:
Im Mode (Bit 24..32) „Automatic" hat der „3." FB (Bit 16..23) die Fehlernummer „-110" (Bit 0..15).
Empfohlene Task: zyklisch
Verwendete Bibliotheken: TECH_TYPES_30bd05 oder höher
Eingänge
| Bezeichnung: | Datentyp: | Anfangswert: | Wertebereich: | Beschreibung: | |
|---|---|---|---|---|---|
| _Result | DriveStateType | ... | ... | Status eines Achsbausteins. |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_DriveRdy | BOOL | TRUE: Antrieb ist einschaltbereit. (Näheres siehe FB TB_DriveState). |
| x_DriveComRdy | BOOL | TRUE: Die Kommunikation zum Antrieb ist bereit. (Näheres siehe FB TB_DriveState). |
| w_Statusword | WORD | Statuswort des Antriebs (P301). (Näheres siehe FB TB_DriveState). |
| i_Status | INT | Antriebsstatus, der der Zustandsmaschine des Antriebs entspricht und am Antriebsdisplay angezeigt wird. (Näheres FB siehe TB_DriveState). |
| x_Error | BOOL | TRUE: Antriebsstörung |
| x_Warning | BOOL | TRUE: Antriebswarnung |
| x_LinkVolt | BOOL | TRUE: Netzspannung/Zwischenkreisspannung liegt an. |
| x_HW_PulsEnable | BOOL | TRUE: Eingang Impulsfreigabe am Antrieb ist geschlossen. |
| x_HW_Quickstop | BOOL | TRUE: Eingang Schnellhalt am Antrieb ist geschlossen. |
| x_HW_SafetyRelais | BOOL | TRUE: Unterspannung Sicherheitsrelais. |
| x_ComError | BOOL | TRUE: Fehler Bedarfsdatenkommunikation des intern verwendeten FBs BM_ReadPar. |
| i_MC_Mode | INT | Modenummer, siehe Tabelle unter Beschreibung allgemein. |
| s_MC_ModeTxt | STRING | Text Modenummer. |
| i_ModuleId | INT | Modulnummer, z.B. 3. FB im Mode „Automatic". |
| i_MC_MessageId | INT | Fehlernummer/Messagenummer des gestörten FBs. |

TB_VirtualDriveEncoder
Erzeugt aus einer Geschwinkigkeit in 1/100 Anwendereinheiten/Ts eine Motion Control Achse und die mechanische Istposition der Achse in Anwendereinheiten.
Allgemeine Beschreibung
Erzeugt aus einer Geschwinkigkeit in 1/100 Anwendereinheiten/Ts eine Motion Control Achse und die mechanische Istposition der Achse in Anwendereinheiten.
| Resourcenbindung: | - |
| Empfohlene Task: | EVENT |
| Verwendete Bibliotheken: | ARITHMETIC_40bd00 oder höher MOTION_CONTROL_40bd10 oder höher TECH_TYPES_40bd10 oder höherbr> |
Eingänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Enable | BOOL | Freigabe des Bausteins |
| di_Vel | DINT | Geschwindigkeit in 1/100 Einheiten/Ts |
| ud_Units | UDINT | Anzahl der Anwendereinheiten je … |
| u_MC_Periode | UINT | … Anzahl der MC_Umdrehung |
| di_Pos | DINT | Position der Achse in Anwendereinheiten |
Ausgänge
| Bezeichnung: | Datentyp: | Beschreibung: |
|---|---|---|
| x_Active | BOOL | TRUE: Baustein aktiv |
| di_Pos | DINT | Position der Achse in Anwendereinheiten |
Ein-/Ausgänge
| Marking: | Datatype: | Description: |
|---|---|---|
| _Master | AXIS_REF | Motion Control Achse |
