BM_MasterEngine

 

Beschreibung

Dieser Funktionsbaustein für Motion Control IRT_OB61 wird eingesetzt, um Sollwerte für eine virtuelle Leitachse zu generieren. Der Funktionsbaustein rechnet in jedem Aufrufzyklus (OB61-Task) eine Position entsprechend den Vorgaben für Geschwindigkeit und Beschleunigung ein.

Hinweis:
Die FB BM_MasterEngine Ausgangvariable kann als Eingangsvariable von BM_SyncIn verwendet werden, es muss beachtet werden, dass Eingangsvariable von BM_SyncIn 32bit Winkel Wert ist und Ausgangvariable von BM_MasterEngine 9--31bit Wert hat.

Parameter Eingang

Datentyp

Beschreibung

Enable

BOOL

Leitachse starten

CycleDuration

USINT
(9-31 Bit)

Auflösung der Leitachse, bei CPU300 umrechnen auf BYTE

MaxVelocityPositive

UDINT

Maximale positive Geschwindigkeit, bei CPU300 umrechnen auf DWORD

MaxVelocityNegative

UDINT

Maximale negative Geschwindigkeit (Betrag), bei CPU300 umrechnen auf DWORD

StartPosition

UDINT

Startposition, bei CPU300 umrechnen auf DWORD

Velocity

DINT

Sollgeschwindigkeit, Richtung über Vorzeichen

Acceleration

UDINT

Betrag der Beschleunigung, bei CPU300 umrechnen auf DWORD

Deceleration

UDINT

Betrag der Verzögerung, bei CPU300 umrechnen auf DWORD

Jerk

UDINT

Sprung, bei CPU300 umrechnen auf DWORD

Stop

BOOL

Kommando Stopp. Leitachse auf Stoppposition stoppen

StopPosition

UDINT

Stoppposition für Kommando Stopp, bei CPU300 umrechnen auf DWORD

StopVelocity

UDINT

Betrag der Stoppgeschwindigkeit für das Kommando Stopp, bei CPU300 umrechnen auf DWORD

StopRapid

BOOL

Kommando Schnellhalt. Leitachse mit Schnellhaltverzögerung ohne Einhaltung einer Stoppposition stoppen

StopRapidDeceleration

UDINT

Betrag der Schnellhaltverzögerung für das Kommando Schnellhalt, bei CPU300 umrechnen auf DWORD

 


Parameter Ausgang

Datentyp

Beschreibung

Done

BOOL

Leitachse aktiv

StopDone

BOOL

Leitachse mit Kommando Stopp oder Schnellhalt gestoppt

CyclePosition

UDINT

Leitachsposition, bei CPU300 is DWORD

CycleVelocity

DINT

Beschleunigung der Leitachse

 CycleAcceleration

DINT

Beschleunigung der Leitachse

Error

BOOL

Fehlerbit, Fehlerinfo ErrorID ist gültig

 ErrorID

WORD

ErrorID-Fehlerliste

 

 

Der FB BM_MasterEngine rechnet in jedem zyklischen Aufruf eine Leitachsposition für die virtuelle Leitachse. Die BM_MasterEngine Ausgang Parameter CyclePosition kann mit BM_SyncIn Eingangsparameter einbinden, aber es muss Auflösung von CyclePosition auf Eingang Wert von BM_SyncIn umgerechnet werden, der Eingangswert von BM_SyncIn ist 32bit Winkel Wert und CyclePosition ist 9—31bit Winkel Wert.

Mit Enable = TRUE wird sofort im ersten Zyklus mit der Berechnung der Leitachsposition begonnen. Der Ausgang Done = TRUE bestätigt die aktive zyklische Berechnung. Der Ausgang Done = TRUE sollte mit Velocity = Null zur Aktivierung (Eingang Execute) der Funktionsbausteine BM_SyncIn genutzt werden.

In Abhängigkeit der Eingänge Velocity, Acceleration, Deceleration und Jerk wird eine Leitachsposition errechnet. Die Auflösung der Leitachsposition wird am Eingang CycleDuration vorgegebenen (Auflösung 9-31 Bit).
Die gerechnete Leitachsposition wird am Ausgang CyclePosition ausgegeben.

Wenn der Eingang Stop = TRUE ist wird die Leitachse auf der StopPosition gestoppt. Dazu wird die Leitachse zuerst auf StopVelocity mit Deceleration und Jerk verzögert oder mit Acceleration und Jerk beschleunigt. Anschließend wird mit StopVelocity und Deceleration die StopPosition angefahren. Wenn die Leitachse gestoppt ist wird der Ausgang StopDone = TRUE gesetzt und der Ausgang Done = FALSE.

Wenn der Eingang StopRapid = TRUE ist, wird die Leitachse mit StopRapidDeceleration auf Geschwindigkeit null abgebremst. Es wird nicht die StopPosition angefahren. Wenn die Leitachse gestoppt ist wird der Ausgang StopDone = TRUE gesetzt und der Ausgang Done = FALSE gesetzt.

Zustandskontrolle über BM_ReadStatus:
Aus Zustand: Alle Zustände.
Nach Zustand: -.

Empfohlene Task: Nur einsetzbar in OB61.

Ausführung solange freigegeben:
Das Kommando wird solange ausgeführt wie Enable = TRUE ist. Mit Enable = FALSE und einer CycleVelocity ungleich Null wird die Schnellhaltfunktion ausgelöst und die CycleVelocity auf Null reduziert.

 

Eingang Enable:
Am Eingang Enable wird die Positionsberechnung freigegeben. Solange Enable = TRUE ist wird die Leitachsposition errechnet und in die Achsvariable eingetragen. Für eine definierte Leitachspositionierung ist daher zuvor die Geschwindigkeit (Eingang Velocity) Null zu setzen oder ein Kommando Stopp (Eingang Stop, StopRapid) auszuführen.

Eingang CycleDuration:
Am Eingang CycleDuration wird die Auflösung, 9-31 Bit, der Positionsberechnung angegeben, z.B. 16-Bit = USINT#16 entspricht einem Wertebereich 0 .. 65535. Die nachfolgenden Eingangsparameter haben einen Wertebereich entsprechend dieser Vorgabe.

Eingang MaxVelocityPositive:
Maximale positive Eingangsgeschwindigkeit. Die Eingangsgeschwindigkeit wird auf diesen Wert überwacht.

Einheit: [Inc/cycle] oder [Inc/Abtastung]

Eingang MaxVelocityNegative:
Maximale negative Eingangsgeschwindigkeit. Die Eingangsgeschwindigkeit wird auf diesen Wert überwacht. Der Wert ist als Betrag vorzugeben.

Einheit: [Inc/cycle] oder [Inc/Abtastung]

Eingang StartPosition:
Startposition von der die Leitachse gestartet wird. Der Wertebereich ist die vorgegebene Auflösung (Eingang CycleDuration).
Beispiel: CycleDuration=USINT#16 Bit, StartPosition=UDINT# 32767 entspricht 180° Winkel.

Einheit: [Inc]

 

Eingang Velocity:
Sollgeschwindigkeit der Leitachse in Inc/Abtastung. Die Richtung wird entsprechend dem Vorzeichen bestimmt. Der Wert kann in jedem Zyklus geändert werden. Der Wertebereich ist durch die vorgegebene Auflösung bestimmt (Eingang CycleDuration).

Einheit: [Inc/cycle] oder [Inc/Abtastung]

Eingang Acceleration:
Beschleunigung der Leitachse in Inc/Abtastung² als Betrag. Der Wertebereich ist durch die vorgegebene Auflösung bestimmt (Eingang CycleDuration) und den Betrag des Einganges Velocity und StopVelocity.

Einheit: [Inc/cycle²] oder [Inc/Abtastung²]

Eingang Deceleration:
Verzögerung der Leitachse in Inc/Abtastung² als Betrag. Der Wertebereich ist durch die vorgegebene Auflösung bestimmt (Eingang CycleDuration) und den Betrag des Einganges Velocity und StopVelocity.

Einheit: [Inc/cycle²] oder [Inc/Abtastung²]

Eingang Jerk:
Sprung je Abtastung der Leitachse in Inc/Abtastung³ als Betrag. Der Wertebereich ist durch die vorgegebene Auflösung bestimmt (Eingang CycleDuration) und den Betrag der Eingänge Acceleration und Deceleration.

Einheit: [Inc/cycle³] oder [Inc/Abtastung³]

Eingang Stop:
Stop = TRUE startet das Kommando Stopp.
Die Leitachse wird auf der StopPosition gestoppt.

Eingang StopPosition:
Stoppposition für Kommando Stopp.
Der Wertebereich ist von der Auflösung (Eingang CycleDuration) abhängig.
Beispiel: CycleDuration=USINT#16 Bit, StopPosition=UDINT# 65535 entspricht 360° Winkel.

Einheit: [Inc]

Eingang StopVelocity:
Stoppgeschwindigkeit für das Kommando Stopp.
Stoppgeschwindigkeit in Inc/Abtastung. Der Wertebereich ist abhängig von der vorgegebenen Auflösung (Eingang CycleDuration).
Bei aktivem Kommando Stopp wird die Leitachse auf StopVelocity verzögert oder beschleunigt. Ist die StopVelocity erreicht wird auf die StopPosition positioniert. Der Eingang StopVelocity sollte sehr viel kleiner sein als die Velocity.

Einheit: [Inc/cycle] oder [Inc/Abtastung]

 

Eingang StopRapid:
StopRapid = TRUE startet das Kommando Schnellhalt.
Die Leitachse wird mit StopRapidDeceleration auf Geschwindigkeit null verzögert.
Wird anschließend StopRapid = FALSE wird sofort wieder auf die anstehende Sollgeschwindigkeit (Eingang Velocity) beschleunigt.

Eingang StopRapidDeceleration:
Betrag der Stoppverzögerung für das Kommando Schnellhalt.
Stoppverzögerung in Inc/Abtastung². Der Wertebereich ist abhängig von der vorgegebenen Auflösung (Eingang CycleDuration).

Einheit: [Inc/cycle²] oder [Inc/Abtastung²]

Ausgang Done:
Done = TRUE: Errechnung der Leitachsposition ist aktiv und Leitachse wurde nicht gestoppt.

Ausgang StopDone:
StopDone = TRUE: Leitachse wurde mit Kommando Stopp (Stop) oder Kommando Schnellhalt (StopRapid) gestoppt. Der Ausgang Done wird FALSE.

Ausgang CyclePosition:
Ausgabe der Leitachsposition mit dem Wertebereich der parametrierten Auflösung (Eingang CycleDuration).

Einheit: [Inc]

Ausgang CycleVelocity:
Ausgabe der Leitachsgeschwindigkeit (in Inc/Abtastung) mit dem Wertebereich der parametrierten Auflösung (Eingang CycleDuration). Der Wert wird parallel in der Achsvariable (Eingang Master) hinterlegt und wird entsprechend der Richtung mit Vorzeichen ausgegeben.

Einheit: [Inc/cycle] oder [Inc/Abtastung]

Ausgang CycleAcceleration:
Ausgabe der positiven oder negativen Leitachsbeschleunigung (in Inc/Abtastung²). Der Wert wird entsprechend der Richtung mit Vorzeichen ausgegeben.

Einheit: [Inc/cycle²] oder [Inc/Abtastung²]

Ausgang Error:

TRUE:  Fehler aktiv. Info an ErrorID gültig.
FALSE: Kein Fehler aktiv.


 

Ausgang ErrorID:

ErrorID

ErrorID in Hexadez.

Beschreibung

0

16#0000

ungültige Fehlernummer, wenn Error = TRUE

27

16#001B

Stopposition des Virtual Masters ist größer als Cycleduration

28

16#001C

Deceleration des Virtual Master ist größer als StopVelocity

29

16#001D

Acceleration des Virtual Master ist größer als StopVelocity

30

16#001E

Jerk des Virtual Master ist größer als Deceleration

31

16#001F

Jerk des Virtual Master ist größer als Acceleration

32

16#0020

Jerk des Virtual Master <= 0

33

16#0021

'Virtual Master: CycleVelocity > Maximum Velocity'

37

16#0025

Wert muss eine 2-er Potenz sein – minimal 512

41

16#0029

Maximalgeschwindigkeit größer als halbe 'CycleDuration'

108

16#006C

Achstyp ist real – Funktion nicht möglich

110

16#006E

Achstyp ist virtuell – genutzt von BM_CreateMaster

 

Auflösung der Geschwindigkeiten

Die Auflösung der Eingänge Velocity, StopVelocity ergeben sich aus der CycleDuration und der Abtastung (Aufrufzyklus des FBs).

Geschwindigkeit in [U/min] =
Velocity[Inc]/Abtastung[ms] * 1[U]/2^CycleDuration[Inc] * 60000 [ms/min]

Geschwindigkeit [U/min]

Velocity [Inc]

CycleDuration

Abtastung [ms]

3000

3276

16

1

3000

6553

16

2

3000

13107

16

4

3000

26214

16

8

3000

107374182

31

1

3000

214748364

31

2

3000

429496729

31

4

3000

858993459

31

8

 

Auflösung der Beschleunigungen und Verzögerungen

Die Auflösung der Eingänge Acceleration, Deceleration und StopRapidDeceleration ergeben sich aus der CycleDuration und der Abtastung (Aufrufzyklus des FBs).

Beschleunigung in [U/s²] =
Acceleration[Inc]/(Abtastung[ms])² * 1[U]/2^CycleDuration[Inc] * 1000000[ms²]/1s²

Auflösung des Rucks

Die Auflösung des Eingangs Jerk ergibt sich aus der CycleDuration und der Abtastung (Aufrufzyklus des FBs).

Ruck in [U/s³] =
Jerk[Inc]/(Abtastung[ms])³ * 1[U]/2^CycleDuration[Inc] * (1000 [ms])³/1[s³]

 

 

Zurück zur Übersicht