Bibliotheksspezifische Datentypen

Datentyp Axis_Ref

Der Datentyp Axis_Ref ist ein Alias der Schnittstelle IF_Axis der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_AxisDirection

Der Datentyp MC_AxisDirection ist ein Alias der Enumeration ET_AxisDirection der Bibliothek MotionInterface. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_Buffer_Mode

Der Datentyp definiert die Methode für den Start einer neuen/gepufferten Bewegung im Hinblick auf die laufende Bewegung.

Name

Wert

Beschreibung

Aborting

0

Die laufende Bewegung wird abgebrochen, und die neue Bewegung wird sofort im nächstmöglichen Echtzeitzyklus ausgeführt.

Buffered

1

Die neue/gepufferte Bewegung wird ausgeführt, sobald die laufende Bewegung ihren stabilen Zustand erreicht hat. Je nach laufender Bewegung entspricht dies dem Funktionsbausteinausgang Done, InVelocity, InSync oder EndOfProfile. Der gepufferte Auftrag wird sofort im Echtzeitzyklus aktiv, sobald der vorherige Auftrag seinen stabilen Zustand erreicht hat. Es wird nicht gewartet, bis die Ausgänge anschließend im nächsten Anwendungstaskzyklus TRUE werden.

BlendingLow(1)

2

Die neue/gepufferte Bewegung wird ausgeführt, sobald die laufende Bewegung beendet wurde, jedoch ohne dazwischen eingetretenen Stillstand. Der Übergang erfolgt mit dem niedrigeren der beiden Geschwindigkeitswerte der laufenden Bewegung und der neuen/gepufferten Bewegung.

BlendingPrevious(1)

3

Die neue/gepufferte Bewegung wird ausgeführt, sobald die laufende Bewegung beendet wurde, jedoch ohne dazwischen eingetretenen Stillstand. Der Übergang erfolgt mit dem Geschwindigkeitswert der laufenden Bewegung.

BlendingNext(1)

4

Die neue/gepufferte Bewegung wird ausgeführt, sobald die laufende Bewegung beendet wurde, jedoch ohne dazwischen eingetretenen Stillstand. Der Übergang erfolgt mit dem Geschwindigkeitswert der neuen/gepufferten Bewegung.

BlendingHigh(1)

5

Die neue/gepufferte Bewegung wird ausgeführt, sobald die laufende Bewegung beendet wurde, jedoch ohne dazwischen eingetretenen Stillstand. Der Übergang erfolgt mit dem höheren der beiden Geschwindigkeitswerte der laufenden Bewegung und der neuen/gepufferten Bewegung.

StartAtMasterposition(1)

6

Bereitgestellt für die Pufferung einer Kurve, die an einer bestimmten Master-Position über MC_CamIn gestartet werden soll.

(1) Nur die Funktionsbausteine MC_MoveVelocity, MC_MoveAbsolute, MC_MoveAdditive und MC_MoveRelative

Die folgende Tabelle enthält nähere Informationen dazu, wie die Pufferung (MC_BufferMode.Buffered) für verschiedene Funktionsbausteine funktioniert:

Funktionsbaustein

Die Bewegung des Funktionsbausteins kann als gepufferte Bewegung angegeben werden.

Auf die Bewegung des Funktionsbausteins kann eine gepufferte Bewegung folgen.

Bedingung, damit der gepufferte Befehl aktiv wird.

MC_Power

Nein

Nein (1)

-

MC_Power ist kein Bewegungsfunktionsbaustein.

MC_MoveVelocity

Ja

Ja

InVelocity

MC_MoveAbsolute

Ja

Ja

Done

MC_MoveAdditive

Ja

Ja

Done

MC_MoveRelative

Ja

Ja

Done

MC_Home

Nein

Nein

Keine

MC_Stop

Nein

Ja

Done und Eingang Execute auf FALSE gesetzt.

MC_Halt

Ja

Ja

Done

MC_CamIn

Ja

Ja(1)

EndOfProfile unabhängig davon, ob der Eingang Periodic auf TRUE oder auf FALSE gesetzt ist.

MC_GearIn

Nein

Ja

InGear

MC_PhasingAbsolute

Nein

Nein

-

MC_MoveSuperImposed

Nein

Nein

-

MC_CustomJob

Ja

Ja

InSteadyState

(1) Abweichend von den Spezifikationen nach PLCopen Motion Control Part 1, Version 2.0.

Die Steuerung führt die Benutzeranwendungstask (in der Funktionsbausteine der Bewegungssteuerung aufgerufen werden) in einer Task aus, die vom Echtzeit-Bewegungsprozess getrennt ist (bei der beispielsweise zyklische Referenz- und Zielwerte berechnet werden). Um einen Funktionsbaustein im selben Sercos-Zyklus zu starten, in dem der aktive Funktionsbaustein seinen stabilen Zustand erreicht (Done, inVelocity, EndOfProfile, InGear), muss der Funktionsbaustein vorzeitig gepuffert werden. Wenn Sie den Start (Execute) des nachfolgenden Funktionsbausteins z. B. über das EndOfProfile-Signal des vorhergehenden Funktionsbausteins auslösen, statt ihn zu puffern, ergeben sich ein oder mehrere Verzögerungszyklen, in denen kein Funktionsbaustein aktiv ist und die Achse im Stillstand bleibt. Nähere Informationen finden Sie unter Task-Konzept.

Datentyp MC_CamSwitch

Der Datentyp MC_CamSwitch ist ein Alias der Struktur ST_CamSwitch der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_CamSwitchMode

Der Datentyp MC_CamSwitchMode ist ein Alias der Enumeration ET_CamSwitchMode der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_CamSwitch_Ref

Der Datentyp MC_CamSwitch_Ref ist ein Alias der Struktur ST_CamSwitch_Ref der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_CAM_ID

Der Datentyp MC_CAM_ID ist ein Alias der Struktur ST_MultiCam der CommonMotionTypes-Bibliothek. Detaillierte Informationen finden Sie im CommonMotionTypes-Bibliothekshandbuch.

Datentyp MC_Direction

Der Datentyp bestimmt die Richtung der Bewegung.

Bei MC_MoveVelocity und MC_MoveRelative kehrt die Richtung die Bewegungsrichtung um (durch Umkehren des Vorzeichens der Geschwindigkeit oder Distanz). Dies ist unabhängig von Achstyp (Modulo oder linear).

Für MC_MoveAbsolute und die Rampenfunktionalität (Ramp-in) von MC_CamIn gibt der Richtungseingang die Richtung an, in der die absolute Zielposition angefahren wird. Bei diesen Funktionsbausteinen wird die Richtung nur für Modulo-Achsen berücksichtigt. Sie wird für lineare Achsen ignoriert (da absolute Positionen auf Linearachsen in der einzig mathematisch möglichen Richtung angefahren werden).

Name

Wert

Beschreibung

PositiveDirection

0

Positive Bewegungsrichtung

NegativeDirection

1

Negative Bewegungsrichtung

ShortestWay(1)

2

Die Bewegungsrichtung hängt davon ab, ob die positive oder die negative Bewegungsrichtung den kürzesten Abstand zur Zielposition hat.

(1) Nur die Funktionsbausteine MC_MoveAbsolute und MC_CamIn.

Datentyp MC_Interpolation_Mode

Der Datentyp MC_Interpolation_Mode ist ein Alias der Enumeration ET_InterpolationMode der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_Interpolation_Parameter

Der Datentyp MC_Interpolation_Parameter ist ein Alias der Struktur ST_Interpolation_Parameter der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_Master_Start_Mode

Name

Wert

Beschreibung

Absolute

0

Die Kurve beginnt bei der X-Koordinate, die der absoluten Position der Master-Achse zum Zeitpunkt des Starts entspricht.

Relative

1

Die Kurve beginnt bei der X-Koordinate, die dem X des ersten Kurvenpunkts entspricht, der vermutlich mit der Position der Master-Achse zum Zeitpunkt des Starts korreliert.

HINWEIS: In PLCopen Motion Control Part 1, Version 2.0 gibt es den Datentyp MC_Start_Mode sowie die beiden booleschen Flags MasterAbsolute und SlaveAbsolute. Zur Verbesserung der Genauigkeit implementiert diese Bibliothek stattdessen die beiden Datentypen MC_Master_Start_Mode (eine Kombination aus MC_Start_Mode und MasterAbsolute) und MC_Slave_Start_Mode (eine Kombination aus MC_Start_Mode und SlaveAbsolute). Letzterer enthält außerdem den Modus RampIn.

Datentyp MC_OperationMode

Der Datentyp MC_OperationMode legt die Betriebsart für den Funktionsbaustein MC_MoveVelocity über den Eingang OperationMode fest.

Name

Wert

Beschreibung

Position

0

Geschwindigkeitskontrolle mit aktivem Lageregelkreis im Antrieb (zyklisch synchrone Position).

Velocity

1

Zyklisch synchrone Geschwindigkeit, reine Geschwindigkeitskontrolle.

Der Wert Position führt eine Bewegung mit der am Eingang Velocity des Funktionsbausteins MC_MoveVelocity festgelegten Geschwindigkeit aus. In dieser Betriebsart bleibt der Lageregelkreis des Antriebs aktiv (Cyclic Synchronous Position). Dies ist die standardmäßige Betriebsart für den Funktionsbaustein MC_MoveVelocity.

Der Wert Velocity aktiviert die Betriebsart Cyclic Synchronous Velocity. In dieser Betriebsart ist der Lageregelkreis des Antriebs nicht aktiv (reine Geschwindigkeitskontrolle).

Die Betriebsart Cyclic Synchronous Velocity wird gestartet, wenn der Wert am Eingang OperationMode des Funktionsbausteins MC_MoveVelocity = Velocity und der Wert am Eingang Execute von FALSE zu TRUE wechselt.

Das Kontrollkästchen VelocityOperationMode auf der Registerkarte „Funktionskonfiguration“ muss aktiviert werden, um die Betriebsart Cyclic Synchronous Velocity zu aktivieren.

Das Ausführen von MC_MoveVelocity mit der Betriebsart Cyclic Synchronous Velocity für eine Achse, deren Antrieb diese Betriebsart nicht unterstützt oder für die diese nicht aktiviert wurde, führt zu einem festgestellten Fehler durch MC_MoveVelocity, ohne das Verhalten der Achse zu beeinträchtigen.

Wenn die aktive Betriebsart Cyclic Synchronous Velocity ist und die Funktionsbausteine MC_Stop oder MC_Halt ausgeführt werden oder ein Fehler erkannt wurde, der zu einem Wechsel in den Betriebszustand ErrorStop führt, dann bleibt die Betriebsart Cyclic Synchronous Velocity aktiv.

Wenn versucht wird, einen Bewegungsfunktionsstein (z. B. MC_MoveAbsolute) zu starten, während MC_MoveVelocity in der Betriebsart Cyclic Synchronous Velocity ausgeführt wird, dann wird dieser Bewegungsfunktionsbaustein nicht ausgeführt und dessen Ausgang Error wird auf TRUE gesetzt. MC_MoveVelocity wird weiterhin in der Betriebsart Cyclic Synchronous Velocity ausgeführt.

Um von der Betriebsart Cyclic Synchronous Velocity in eine andere Betriebsart zu wechseln, muss die Achse mit dem Funktionsbaustein MC_Stop oder MC_Halt angehalten werden. Wird ein anderer Bewegungsfunktionsbaustein als MC_MoveVelocity ausgeführt, wechselt die Betriebsart von Cyclic Synchronous Velocity in die von diesem Funktionsbaustein verwendete Betriebsart. Wenn Sie beispielsweise von der Betriebsart Cyclic Synchronous Velocity in die Betriebsart Cyclic Synchronous Position wechseln möchten, ohne eine Bewegung zu starten, dann können Sie den Funktionsbaustein MC_MoveRelative mit einem Abstand von 0 ausführen. Wenn Sie von der Betriebsart Cyclic Synchronous Velocity in eine andere Betriebsart wechseln möchten, ohne einen Bewegungsfunktionsbaustein auszuführen, dann müssen Sie die Endstufe des Antriebs über den Funktionsbaustein MC_Power deaktivieren und anschließend erneut aktivierten.

Wenn die angeforderte Betriebsart vom Antrieb nicht innerhalb von 30 Sercos-Zyklen bestätigt wird, dann wird ein Fehler festgestellt (Ausgang Error des anfragenden Funktionsbausteins wird auf TRUE gesetzt).

Datentyp MC_Slave_Start_Mode

Name

Wert

Beschreibung

Absolute

0

Zum Starten der Kurve wird die Position der Slave-Achse direkt auf den ersten berechneten Y-Wert gesetzt. Die Position der Slave-Achse wird auf der Grundlage der Kurvendefinition und ausgehend vom „Master aus der Sicht des Slaves“ berechnet. Im Gegensatz zu den Slave-Startmodi Relative und RampIn gibt es keine Offsets und überlagerten Bewegungen. Die Referenzgeschwindigkeit und die Beschleunigung werden basierend auf der Kurvendefinition berechnet.

Wenn eine Positionsdifferenz zwischen der Position des Slaves und seiner berechneten Startposition (Y-Wert) für die Kurve besteht, und wenn diese Startposition nicht innerhalb eines Taskzyklus erreicht werden kann, wird ein Fehler erkannt. Kann diese Startposition jedoch trotz der Positionsdifferenz erreicht werden, erfolgt die Bewegung möglicherweise als plötzlicher Positionssprung.

Relative

1

Die Kurve beginnt bei der Y-Koordinate, die durch f(X-Start) definiert ist, wobei f() die Kurvenfunktion ist und der X-Start durch den Master-Startmodus bestimmt wird (MC_Master_Start_Mode). Diese Y-Koordinate ist mit der aktuellen Position der Slave-Achse korreliert.

RampIn

2

Es wird davon ausgegangen, dass die absolute Position der Slave-Achse gleich der Y-Koordinate der Kurve sein soll, damit die Kurve synchron ist..

Zu Beginn startet die Kurve wie ein relativer Slave, d. h. f(X-Start) wird beim Start der Kurve mit der absoluten Position der Slave-Achse korreliert. Anschließend wird eine Rampenbewegung (Ramp-In) durchgeführt, die die Slave-Achse versetzt, um das Koordinatensystem der Achsposition mit dem Koordinatensystem von Y auszurichten.

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
Überprüfen Sie die physische Position der Slaveachse am Anfang der Kurve und vergewissern Sie sich, dass sie der Position in der Kurvendefinition entspricht.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.
HINWEIS: In PLCopen Motion Control Part 1, Version 2.0 gibt es den Datentyp MC_Start_Mode sowie die beiden booleschen Flags MasterAbsolute und SlaveAbsolute. Zur Verbesserung der Genauigkeit implementiert diese Bibliothek stattdessen die beiden Datentypen MC_Master_Start_Mode (eine Kombination aus MC_Start_Mode und MasterAbsolute) und MC_Slave_Start_Mode (eine Kombination aus MC_Start_Mode und SlaveAbsolute). Letzterer enthält außerdem den Modus RampIn.

Datentyp MC_Track_Ref

Der Datentyp MC_Track_Ref ist ein Alias der Struktur ST_Track_Ref der MotionInterface-Bibliothek. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

Datentyp MC_Trigger_Ref

MC_Trigger_Ref ist ein Alias von DAL.IF_Trigger. Dies ist ein Eingangstyp für MC_TouchProbe und MC_AbortTrigger, um die Funktionsbausteine mit den entsprechenden TouchProbe-Eingängen zu verbinden, ähnlich wie Axis_Ref.

Die Schnittstelle MC_Trigger_Ref/DAL.IF_Trigger stellt eine CaptureEdge-Eigenschaft des Typs UINT zur Verfügung, die einen Wert zwischen 0 und 2 haben kann.

Name

Wert

Beschreibung

FallingEdge

0

Fallende Flanke

RisingEdge

1

Steigende Flanke

BothEdges

2

Beide Flanken, steigend und fallend

VAR
fb_MC_TriggerRef: PLCO.MC_Trigger_Ref;
fb_MC_Touchprobe : PLCO.MC_TouchProbe;
END_VAR

fb_MC_TriggerRef := DRV_Lexium32S.triggerCap1;
fb_MC_TriggerRef.CaptureEdge := MOIN.ET_CaptureEdge.RisingEdge;
fb_MC_Touchprobe(Axis := DRV_Lexium32S.Axis, ifTrigger := fb_MC_TriggerRef);