Zum Hauptinhalt springen

Motion Erweiterung

Diese Bibliothek erweitert die bestehenden Motion-Methoden innerhalb der Steuerung. Diese wird mit dem Engineering Framwork ProMaster standardmäßig mit ausgeliefert.

TB_DriveEncoder

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_EnableBOOL......TRUE: Freigabe des Bausteins.
di_VelDINT......Sollgeschwindigkeit in 1/100 Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask.
ud_UnitsUDINT......Anzahl der Anwendereinheiten für die gegebenen Motorumdrehungen (u_Revolution).
u_RevolutionUNIT......Anzahl der Motorumdrehungen für die gegebenen Anwendereinheiten (ud_Units).
_AxisAXIS_REF......An _Axis wird die Motion Control Achse angeschlossen.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein ist aktiv, die angegebene Sollgeschwindigkeit wird umgerechnet und an die Motion Control Achse übertragen.
x_ErrorBOOLTRUE: Fehler bei der Ansteuerung der Motion Control Achse erkannt.
w_ErrorldWORDFehlernummer des erkannten Fehlers. Siehe Motion Control ErrorId-Fehlerliste. Fehler 999: Keine Technologie-Lizenz. Abhilfe: PLC mit Technologie-Lizenz verwenden.
_AxisAXIS_REFMotion Control Achse.
Darstellung in FBD

TB_DriveState

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_EnableBOOL......TRUE: Freigabe des Bausteins.
_AxisAXIS_REF......An _Axis wird die Motion Control Achse angeschlossen.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_DriveRdyBOOLTRUE: 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_DriveComRdyBOOLTRUE: 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_StatuswordWORDStatuswort des Antriebs (P301).
i_StatusINTAntriebsstatus, 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_ErrorBOOLTRUE: Fehler bei der Ansteuerung der Motion Control Achse erkannt.
x_WarningBOOLTRUE: Antriebswarnung
x_LinkVoltBOOLTRUE: Netzspannung/Zwischenkreisspannung liegt an
x_HW_PulsEnableBOOLTRUE: Eingang Impulsfreigabe am Antrieb ist geschlossen
x_HW_QuickstopBOOLTRUE: Eingang Schnellhalt am Antrieb ist geschlossen
x_HW_SafetyRelaisBOOLTRUE: Unterspannung Sicherheitsrelais
x_ComErrorBOOLTRUE: 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.
_AxisAXIS_REFMotion Control Achse.
Darstellung in FBD

TB_EncoderActPos

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_EnableBOOL......TRUE: Freigabe des Bausteins.
d_EncoderDWORD......Winkelposition des Gebers in Inkrementen. 232 Inkremente entsprechen einer Umdrehung des Gebers.
ud_UnitsUDINT......Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution).
u_RevolutionUNIT......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_CycleINT......Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich.
us_FilterUSINT......Filterparameter für die Winkeländerung. Null bedeutet Filter inaktiv. Je größer der Wert, desto stärker wirkt der Filter.
di_PosDINT......Mechanische Position des Gebers in Anwendereinheiten.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein ist aktiv, die angegebene Sollgeschwindigkeit wird umgerechnet und an die Motion Control Achse übertragen.
di_Vel_TsDINTAusgabe der aktuellen Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask.
di_Vel_sDINTAusgabe der aktuellen Geschwindigkeit in Anwendereinheiten/s.
di_PosDINTPosition des Gebers in Anwendereinheiten.
Darstellung in FBD

TB_GetPosAbsEnc

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_EncPresetPosDWORD......Position des Gebers in Inkrementen bei der die mechanische Position (di_MechPresetPos) bekannt ist. Dieser Parameter wird bei der Inbetriebnahme festgelegt.
di_MechPresetPosDINT......Mechanische Position der Achse, wenn der Geber d_EncPresetPos ausgibt. Dieser Parameter wird bei der Inbetriebnahme festgelegt.
d_EncPosDWORD......Aktuelle Position des Gebers in Inkrementen. Zu dieser Position wird die mechanische Position der Achse in Anwendereinheiten ausgegeben.
ud_UnitsUDINT......Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution).
u_RevolutionUINT......Anzahl der Geberumdrehungen für die gegebenen Anwendereinheiten (ud_Units).
u_IncsPerRoundUINT......Anzahl der Inkremente pro Umdrehung des Gebers.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
TB_GetPosAbsEncDINTMechanische Position der Achse in Anwendereinheiten zu der Geberposition d_EncPos in Inkrementen.
Darstellung in FBD

TB_MasterEncoder

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_EnableBOOL......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_MasterPosDINT......Position des Masters in Anwendereinheiten.
_MasterAXIS_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_ActiveBOOLTRUE: Baustein aktiv, Positionsänderungen der Masterachse bewirken eine Positionsänderung an di_MasterPos.
di_MasterVelDINTAusgabe der aktuellen Master-Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask.
di_MasterPosDINTPosition der Leitachse in Anwendereinheiten
_MasterAXIS_REFMotion Control Achse
Darstellung in FBD

TB_MasterEngine

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.

  1. Die Sollgeschwindigkeit wird auf 0 gesetzt, die Leitachse rampt mit der eingestellten Verzögerung ab.
  2. x_Start wird auf FALSE gesetzt. Die Achse bremst mit ud_DecStop_s und stoppt auf der Stopposition ud_StopPos.
  3. 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_EnableBOOL......Mit dem Eingang x_Enable=TRUE wird der Baustein initialisiert. War die Initialisierung erfolgreich, wird dies mit dem Ausgang x_Active=TRUE angezeigt.
x_StartBOOL......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_StopRapidBOOL......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_sDINT......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_sUDINT......Beschleunigung in Einh/s².
ud_Dec_sUDINT......Verzögerung in Einh/s².
Wird der Eingang nicht belegt, wird ud_Acc_s verwendet.
ud_AccStart_sUDINT......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_sUDINT......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_sUDINT......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_StopPosUDINT......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_StartPosUDINT......Wenn x_Enable=TRUE, wird ud_MasterPos mit Startposition ud_StartPos initialisiert.
ud_PeriodUDINT......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_CycleINT......Aufrufintervall der Event-Task, in der TB_MasterEngine aufgerufen wird, in ms. Gültige Werte sind 1ms, 2ms, 4ms, 8ms.
ud_UnitsUDINT......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_PeriodeUINT......Siehe ud_Units!
_MasterAXIS_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_ActiveBOOLDer Ausgang x_Active zeigt eine erfolgreiche Initialisierung von TB_MasterEngine.
x_MotionBOOLDer Ausgang x_Motion zeigt die aktive virtuelle Leitachse an. x_Motion wird erst FALSE, wenn auch Stillstand erreicht wurde.
ud_MasterPosUDINTAktuelle Masterposition der virtuellen Leitachse in Einh. Die Position wird bei steigender Flanke von x_Enable auf ud_StartPos gesetzt.
di_MasterVelDINTAktuelle Geschwindigkeit der virtuellen Leitachse in Einh/Ts.
di_MasterAccDINTAktuelle Beschleunigung der virtuellen Leitachse in Einh/Ts².
di_MaVelSet_sDINTSollgeschwindigkeit der virtuellen Leitachse in Einh/s.
di_MaVelAct_sDINTAktuelle Geschwindigkeit der virtuellen Leitachse in Einh/s.
ud_TimeStop_msUDINTZeit 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_msUDINTZeit 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_SegNrINT0: Virtuelle Leitachse im Stillstand
1: Virtuelle Leitachse beschleunigt
2: Virtuelle Leitachse bremst
3: Virtuelle Leitachse hat Sollgeschwindigkeit erreicht
x_StopPosReachedBOOLDer 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_StandstillBOOLDer Ausgang x_Standstill=TRUE, wenn sich die virtuelle Leitachse im Stillstand befindet.
x_ErrorBOOLalls 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_ErrorINTsiehe unten
_MasterAXIS_REFMotion 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).
Darstellung in FBD

TB_MechActPos

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_EnableBOOL......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_UnitsUDINT......Anzahl der Anwendereinheiten für die gegebenen Motorumdrehungen (u_Revolution).
u_RevolutionUINT......Anzahl der Motorumdrehungen für die gegebenen Anwendereinheiten (ud_Units).
i_T_CycleINT......Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich.
di_PosDINT......Mechanische Position der Achse in Anwendereinheiten.
_AxisAXIS_REF......An _Axis wird die Motion Control Achse angeschlossen.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein aktiv, Positionsänderungen der Masterachse bewirken eine Positionsänderung an di_MasterPos.
di_VelDINTAusgabe der aktuellen Master-Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask.
di_PosDINTPosition der Achse in Anwendereinheiten,
_AxisAXIS_REFMotion Control Achse.
Darstellung in FBD

TB_PhysicalEncoder

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_EnableBOOL......TRUE: Freigabe des Bausteins.
d_EncoderDWORD......Winkelposition des Gebers in Inkrementen. 232 Inkremente entsprechen einer Umdrehung des Gebers.
ud_UnitsUDINT......Anzahl der Anwendereinheiten für die gegebenen Geberumdrehungen (u_Revolution).
u_RevolutionUINT......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_CycleINT......Parametrierte Zykluszeit der Sollwert-Eventtask in ms. Es sind 1, 2, 4 oder 8ms möglich.
us_FilterUSINT......Filterparameter für die Winkeländerung. Null bedeutet Filter inaktiv. Je größer der Wert, desto stärker wirkt der Filter.
ud_Units_1UDINT......Anzahl der Anwendereinheiten für die gegebenen MotionControl Perioden (u_MC_Periode).
u_MC_PeriodeUINT......Anzahl der MotionControl Perioden für die gegebenen Anwendereinheiten (ud_Units_1).
di_PosDINT......Mechanische Position des Gebers in Anwendereinheiten.
_MasterAXIS_REF......Motion Control Master-Achse.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein aktiv, Winkeländerungen des Gebers werden in Anwendereinheiten gewandelt und ausgegeben.
di_Vel_sDINTAusgabe der aktuellen Geschwindigkeit in Anwendereinheiten/Ts. Ts ist die parametrierte Zykluszeit der Sollwert-Eventtask.
di_Vel_TsDINTAusgabe der aktuellen Geschwindigkeit in Anwendereinheiten/s.
di_PosDINTPosition der Achse in Anwendereinheiten.
_MasterAXIS_REFMotion Control Master-Achse.
Darstellung in FBD

TB_ReadActualTorque

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_EnableBOOLSchaltet den Funktionsbaustein ein oder aus. Wenn FALSE, werden alle Ausgänge zurückgesetzt.
r_ActualCurrentREALAktueller Motorstrom in [A].

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
r_ActualTorqueREALAktuelles Motor-Drehmoment in [Nm].
x_ValidBOOLSignalisiert, dass der Funktionsblock aktiv ist und das Ausgangssignal r_ActualTorque gültig ist.
x_BusyBOOLSignalisiert, dass der Funktionsblock aktiv ist, aber das Ausgangssignal r_ActualTorque noch nicht gültig ist.
x_ErrorBOOLFehlerbit, das anzeigt, ob ein Fehler aufgetreten ist (der Fehlercode w_ErrorID ist gültig).
w_ErrorIDWORDFehlercode, der weitere Informationen über den aufgetretenen Motion-Control-Fehler enthält.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
_AxisAXIS_REFMotion Control Achsvariable
Darstellung in FBD

TB_ReadAxisStatus

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_EnableBOOLEingangssignal zur Aktivierung des Funktionsbausteins.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
i_StateIntGibt 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_LinkBOOLGibt an, ob die Zwischenkreisspannung (DC-Link) vorhanden ist.
x_ReadyToOperateBOOLGibt an, ob der Antrieb betriebsbereit ist.
x_OperationDisabledBOOLGibt an, ob der Betrieb des Antriebs aufgrund eines fehlenden PulsEnable-Signals deaktiviert ist.
x_PulseEnableBOOLGibt an, ob das PulsEnable-Signal aktiviert ist.
x_QuickStopBOOLGibt an, ob eine Anfrage für einen Schnellstopp vorliegt.
x_DriveWarningBOOLGibt an, ob eine Antriebswarnung erkannt wurde.
x_DriveErrorBOOLGibt an, ob ein Antriebsfehler erkannt wurde.
x_ActiveBOOLGibt an, ob der Funktionsbaustein aktiv ist.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
_AxisAXIS_REFReferenz zur Motion-Control-Achse
Darstellung in FBD

TB_ReadWriteBM5Parameter

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_ExecuteBOOLFlankensensitiver Eingang zur Ausführung der Lese-/Schreiboperation.
x_WriteBOOLGibt an, ob die Operation ein Schreibvorgang ist (TRUE) oder nicht (FALSE).
si_ValueTypeSINTTyp des Soll- bzw. Ist-Werts (1: BYTE, 2: WORD, 4: DWORD, 5:REAL, 6: STRING).
i_ParaID0INTParameter-ID für den ersten Parameter.
i_ParaID1INTParameter-ID für den zweiten Parameter.
i_ParaID2INTParameter-ID für den dritten Parameter.
i_ParaID3INTParameter-ID für den vierten Parameter.
t_TimeoutTIMEZeitlimit für die Übertragung.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
si_ByteLengthSINTAnzahl der relevanten Bytes im übertragenen Wert.
x_BusyBOOLGibt an, ob der Funktionsbaustein gerade beschäftigt ist.
x_DoneBOOLGibt an, ob die Operation erfolgreich abgeschlossen wurde.
x_ErrorBOOLGibt an, ob ein Fehler aufgetreten und die Variable w_ErrorID gültig ist.
w_ErrorIDWORDNummer zur Identifizierung des aufgetretenen Motion-Control-Fehlers.

Ein-/Ausgänge

Bezeichnung:Datentyp:Beschreibung:
_AxisAXIS_REFReferenz zur Motion-Control-Achse
s_Value_STRINGSTRINGSoll- bzw. Ist-Wert als Zeichenkette (Sting)
dw_Value_DWORDDWORDSoll- bzw. Ist-Wert als DWord.
r_Value_REALREALSoll- bzw. Ist-Wert als Gleitkommazahl (Real).
Darstellung in FBD

TB_Result

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:
_ResultDriveStateType......Status eines Achsbausteins.

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_DriveRdyBOOLTRUE: Antrieb ist einschaltbereit. (Näheres siehe FB TB_DriveState).
x_DriveComRdyBOOLTRUE: Die Kommunikation zum Antrieb ist bereit. (Näheres siehe FB TB_DriveState).
w_StatuswordWORDStatuswort des Antriebs (P301). (Näheres siehe FB TB_DriveState).
i_StatusINTAntriebsstatus, der der Zustandsmaschine des Antriebs entspricht und am Antriebsdisplay angezeigt wird. (Näheres FB siehe TB_DriveState).
x_ErrorBOOLTRUE: Antriebsstörung
x_WarningBOOLTRUE: Antriebswarnung
x_LinkVoltBOOLTRUE: Netzspannung/Zwischenkreisspannung liegt an.
x_HW_PulsEnableBOOLTRUE: Eingang Impulsfreigabe am Antrieb ist geschlossen.
x_HW_QuickstopBOOLTRUE: Eingang Schnellhalt am Antrieb ist geschlossen.
x_HW_SafetyRelaisBOOLTRUE: Unterspannung Sicherheitsrelais.
x_ComErrorBOOLTRUE: Fehler Bedarfsdatenkommunikation des intern verwendeten FBs BM_ReadPar.
i_MC_ModeINTModenummer, siehe Tabelle unter Beschreibung allgemein.
s_MC_ModeTxtSTRINGText Modenummer.
i_ModuleIdINTModulnummer, z.B. 3. FB im Mode „Automatic".
i_MC_MessageIdINTFehlernummer/Messagenummer des gestörten FBs.
Darstellung in FBD

TB_VirtualDriveEncoder

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_EnableBOOLFreigabe des Bausteins
di_VelDINTGeschwindigkeit in 1/100 Einheiten/Ts
ud_UnitsUDINTAnzahl der Anwendereinheiten je …
u_MC_PeriodeUINT… Anzahl der MC_Umdrehung
di_PosDINTPosition der Achse in Anwendereinheiten

Ausgänge

Bezeichnung:Datentyp:Beschreibung:
x_ActiveBOOLTRUE: Baustein aktiv
di_PosDINTPosition der Achse in Anwendereinheiten

Ein-/Ausgänge

Marking:Datatype:Description:
_MasterAXIS_REFMotion Control Achse
Darstellung in FBD