MC_CamIn

Funktionsbeschreibung

Dieser Funktionsbaustein aktiviert die Master-Slave-Kopplung mit dem Profil für eine elektronische Kurve, die in einer Kurventabelle angegeben ist.

Die Bibliothek unterstützt die folgenden Kurventypen (Bewegungsgesetze) über die CommonMotionTypes-Bibliothek (nähere Informationen finden Sie unter ST_MultiCam und ET_CamType im CommonMotionTypes-Bibliothekshandbuch):

  • Gerade

  • Einfacher Sinus

  • Allgemeines Polynom fünften Grades

  • Standard-Polynom fünften Grades

ST_MultiCam ist die gleiche Datenstruktur, die von PacDrive3 verwendet wird, und kann daher auch mit demselben Kurveneditor (CAM-Editor) erstellt werden.

 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.

Bei absolutem Slave-Startmodus kann das Umschalten zwischen zwei Kurven mit bestimmten Kombinationen von Master- und Slave-Skalierung über die Eingänge MasterScaling und SlaveScaling zu Sprüngen in der Slave-Position führen, wenn zum Zeitpunkt des Umschaltens kein geeigneter Offset der Slave-Position eingestellt wird.

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
Stellen Sie sicher, dass Sie den richtigen Offset der Slave-Position eingestellt haben, wenn Sie im absoluten Slave-Startmodus zwischen zwei Kurven umschalten und die Master- und Slave-Skalierung über die Eingänge MasterScaling und SlaveScaling verwenden.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

Rampenmechanismus (Ramp-in)

Der Funktionsbaustein stellt einen Rampenmechanismus (Ramp-in) zur Verfügung. Der Rampenmechanismus wird durch Setzen des Eingangs SlaveStartMode auf RampIn aktiviert und über die Eingänge VelocityOffsetRampIn, AccelerationOffsetRampIn, DecelerationOffsetRampIn und JerkOffsetRampIn konfiguriert. Die Richtung der Rampe (Ramp-in) einer Modulo-Achse kann über den Eingang RampInDirection festgelegt werden.

Interpolierte Kurve

Mit dem Funktionsbaustein können Sie interpolierte Kurven implementieren. Es sind vier Typen von interpolierten Kurven verfügbar:

  • Lineare Interpolation

  • Interpolation mit Poly5-Kurvengesetz

  • Lineare, nicht äquidistante Interpolation

  • Kubische Interpolation

Die Kurve wird aus einem Array von Kurvenpunkten interpoliert. Um eine interpolierte Kurve zu verwenden, erstellen Sie in Ihrer Anwendung ein Array mit mindestens 3 und höchstens 10000 Punkten.

Lineare Interpolation:

Das Array beschreibt die Funktion der Kurve (Y = f(X)). Die Werte, die Sie für das Array angeben, sind die Y-Koordinaten der Kurvenpunkte. Diese Y-Werte werden in gleichen Abständen entlang der X-Achse verteilt. (Das bedeutet, dass die X-Koordinaten durch den Funktionsbaustein bestimmt werden). Die Array-Werte sind den einzelnen Punkten von links nach rechts in aufsteigender Reihenfolge zugeordnet, beginnend mit dem niedrigsten Array-Index als niedrigstem X-Wert.

Interpolation mit Poly5-Kurvengesetz:

Das Array beschreibt die Funktion der Kurve in Bezug auf die Master-Position (X), die Slave-Position (Y), die Geschwindigkeit am Kurvenpunkt (V, entspricht der Steigung) und die Beschleunigung am Kurvenpunkt (A, entspricht der Krümmung). Verwenden Sie für X streng monoton ansteigende Werte.

Lineare, nicht äquidistante Interpolation:

Mit der linearen, nicht äquidistanten Interpolation können Sie eine Kurve mit Punkten definieren, die unterschiedliche X-Koordinatenabstände zwischen zwei aufeinander folgenden Punkten aufweisen. Verwenden Sie für X streng monoton ansteigende Werte.

Kubische Interpolation:

Im kubischen Interpolationsmodus können Sie nicht äquidistante Interpolationspunkte definieren, die für die Interpolation mit kubischen Splines verwendet werden. Äquidistante Interpolationspunkte können durch die explizite Definition von X- und Y-Werten angegeben werden. Verwenden Sie streng monoton ansteigende Werte für X. Ein natürlicher kubischer Standard-Spline wird für bis zu 100 Interpolationspunkte verwendet (Krümmung an Grenzpunkten ist gleich null). Dieser vorberechnete Algorithmus liefert eine kontinuierliche Krümmung. Bei mehr als 100 Interpolationspunkten wird eine kubische Spline-Interpolation von Hermite verwendet (keine kontinuierliche Krümmung). Vorberechnungen sind nicht erforderlich.

Um eine interpolierte Kurve zu starten, legen Sie den Eingang InterpolationPoints auf die Adresse des Arrays fest, in dem die Kurvenpunkte gespeichert sind. Wenn der Eingang InterpolationPoints ungleich null an einer positiven Flanke des Eingangs Execute ist, startet der Funktionsbaustein MC_CamIn eine interpolierte Kurve wie über den Eingang InterpolationParameter parametriert. Über den Eingang CamTableID bereitgestellte Daten werden ignoriert. Wenn der Eingang InterpolationPoints bei einer positiven Flanke des Eingang Execute gleich null ist, startet der Funktionsbaustein die Kurve und ignoriert die über den Eingang InterpolationParameter bereitgestellten Daten.

Der Datentyp MC_Interpolation_Parameter wird zur Parametrierung der interpolierten Kurve verwendet. Es handelt sich um ein Alias der Struktur ST_Interpolation_Parameter der MotionInterface-Bibliothek. Parametrierung:

  • udiNumCamPoints

    Anzahl der mit Kurvenpunkten gefüllten Array-Einträge. Wenn das Array größer als die Anzahl der gefüllten Kurvenpunkte ist, werden zusätzliche Array-Elemente ignoriert.

  • lrMinMasterPosition und lrMaxMasterPosition

    Bei einem Array zur linearen Interpolation wird der Positionsbereich des Masters über lrMinMasterPosition und lrMaxMasterPosition festgelegt. Der Kurvenpunkt im niedrigsten Array-Index entspricht lrMinMasterPosition. Der Kurvenpunkt im Array-Index, der über udiNumCamPoints festlegt wird, entspricht lrMaxMasterPosition. Die übrigen Kurvenpunkte sind gleichmäßig auf diese Master-Positionen verteilt. lrMinMasterPosition undlrMaxMasterPosition werden für die Poly5-Interpolation und die kubische Interpolation ignoriert.

  • etInterpolationMode

    Diese Enumeration gibt den Interpolationstyp an.

    • YArrayLinear (Die Kurve ist eine gerade Linie zwischen den einzelnen Kurvenpunkten.)

    • XYVAArrayPoly5 (Polynom 5. Grades)

    • XYArrayLinear (Die Kurve ist eine gerade Linie zwischen jedem der Kurvenpunkte, der X-Wert kann nicht äquidistant sein)

    • XYArrayCubic (kubische Interpolation)

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
  • Stellen Sie sicher, dass die Afestlegennzahl der Interpolationspunkte, die Sie für den Eingang InterpolationPoints festlegen, mit dem Wert übereinstimmt, den Sie für udiNumCamPoints der Struktur ST_InterpolationParameter angeben, die für den Eingang InterpolationParameter verwendet wird, wenn Sie eine interpolierte Kurve verwenden.
  • Vergewissern Sie sich, dass die Werte für X der Strukturen ST_InterpolationPointXYVA und ST_InterpolationPointXY strikt monoton ansteigen.
  • Stellen Sie sicher, dass die Daten im Array der Kurvenpunkte nicht geändert werden, während die Kurve gepuffert oder ausgeführt wird.
  • Stellen Sie sicher, dass keine Online-Änderungen ausgelöst werden, während die Kurve ausgeführt wird.
  • Stellen Sie sicher, dass ein potenzielles Positionsüberschwingen nach der Synchronphase der Achsen keine Bewegungen über den zulässigen Bewegungsbereich hinaus zur Folge hat, z. B. durch die Integration von Hardware-Endschaltern in Ihr Maschinendesign.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

Weitere Informationen zur Parametrierung einer interpolierten Kurve über ST_InterpolationParameter finden Sie im MotionInterface-Bibliothekshandbuch.

Starten einer Kurve an einer bestimmten Master-Position

Der Eingang MasterStartPosition wird bereitgestellt, um eine Kurve an der festgelegten Master-Position zu starten. Dieser Eingang wird ignoriert, es sei denn, der Puffermodus wird über MC_BufferMode auf StartAtMasterPosition gesetzt.

Wenn MC_CamIn mit dem Puffermodus StartAtMasterPosition gestartet wird, dann muss die Slave-Achse eine andere Kurve ausführen. Ist dies nicht der Fall, dann stellt MC_CamIn einen Fehler fest, ohne die Bewegung der Slave-Achse zu beeinträchtigen. Der über den Eingang MasterStartPosition bereitgestellte Wert muss innerhalb des Bereichs von MasterAsSeenBySlave liegen, der durch die aktuell ausgeführte Kurve definiert wird. Ist dies nicht der Fall, dann stellt MC_CamIn einen Fehler fest, ohne die Bewegung der Slave-Achse zu beeinträchtigen.

Wenn bereits ein anderer Auftrag nach der aktuell ausgeführten Kurve gepuffert wird, sobald MC_CamIn mit dem Puffermodus StartAtMasterPosition gestartet wird (Eingang Execute auf TRUE gesetzt), dann wird der gepufferte Auftrag auf CommandAborted gesetzt, als hätte der Funktionsbaustein mit dem Puffermodus StartAtMasterPosition die ausgeführte Kurve mit dem Puffermodus Aborting unterbrochen.

Verhalten in Verbindung mit dem Ausgang EndOfProfile:
  • Wenn die ausgeführte Kurve das letzte Segment beendet (Ausgang EndOfProfile wird auf TRUE gesetzt), bevor die Position MasterStartPosition eines Funktionsbausteins mit dem Puffermodus StartAtMasterPosition erreicht wird, dann verhält sich die ausgeführte Kurve so, als wäre kein anderer Befehl gestartet worden.

  • Wenn die Position MasterStartPosition eines Funktionsbausteins mit dem Puffermodus StartAtMasterPosition erreicht wird, bevor die ausgeführte Kurve das letzte Segment beendet hat, dann verhält sich die ausgeführte Kurve so, als wäre sie durch den gepufferten Funktionsbaustein abgebrochen worden (CommandAborted wird auf TRUE gesetzt, EndOfProfile bleibt FALSE).

Verhalten von StartAtMasterPosition mit ausgeführter periodischer Kurve:
  • Wenn ein Funktionsbaustein MC_CamIn mit dem Puffermodus StartAtMasterPosition während der Ausführung einer ausgeführten periodischen Kurve ausgelöst wird und die ausgeführte Kurve das EndOfProfile erreicht, bevor die Position MasterStartPosition erreicht wird, dann „wendet“ die ausgeführte Kurve und setzt den Ausgang EndOfProfile für einen Zyklus auf TRUE.

  • Im nächsten Zyklus der ausgeführten periodischen Kurve wird die Position MasterStartPosition erreicht, bevor die ausgeführte periodische Kurve das EndOfProfile erreicht. Zu diesem Zeitpunkt wird die neue Kurve mit dem Puffermodus StartAtMasterPosition gestartet.

Die folgende Abbildung stellt dieses Verhalten dar:

Legende:

  • MSP = Position MasterStartPosition

  • SAMP = MC_CamIn mit Puffermodus StartAtMasterPosition wird ausgelöst

  • EOP = Position bei EndOfProfile

Verhalten von StartAtMasterPosition mit ausgeführter einmaliger Kurve:
  • Wenn ein Funktionsbaustein MC_CamIn mit dem Puffermodus StartAtMasterPosition während der Ausführung einer einmaligen Kurve ausgelöst wird und die ausgeführte Kurve das EndOfProfile erreicht, bevor die Position MasterStartPosition erreicht wird, dann setzt die ausgeführte Kurve den Ausgang EndOfProfile auf TRUE und bleibt an der Position, als würde keine andere Kurve ausgelöst werden.

  • Wenn der Master „wendet“ und die Position MasterStartPosition erreicht wird, dann wird der Funktionsbaustein MC_CamIn mit dem Puffermodus StartAtMasterPosition gestartet. CommandAborted wird auf TRUE gesetzt, EndOfProfile bleibt FALSE.

Die folgende Abbildung stellt dieses Verhalten dar:

Legende:

  • MSP = Position MasterStartPosition

  • SAMP = MC_CamIn mit Puffermodus StartAtMasterPosition wird ausgelöst

  • EOP = Position bei EndOfProfile

  • MTA = Master “wendet”

Grafische Darstellung

Eingänge

Eingang

Datentyp

Beschreibung

Master

Axis_Ref

Verweis auf die Achse, für die der Funktionsbaustein ausgeführt werden soll.

Slave

Axis_Ref

Verweis auf die Achse, für die der Funktionsbaustein ausgeführt werden soll.

Execute

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

Eine steigende Flanke des Eingangs Execute startet den Funktionsbaustein. Der Funktionsbaustein setzt die Ausführung fort, und der Ausgang Busy wird auf TRUE gesetzt.

Dieser Funktionsbaustein kann während seiner Ausführung neu gestartet werden. Die Zielwerte werden zum Zeitpunkt des Auftretens der steigenden Flanke durch die neuen Werte überschrieben.

CamTableID

MC_CAM_ID

Der Bezeichner der zu verwendenden Kurventabelle.

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

BufferMode

MC_Buffer_Mode

Standardwert: Aborting

Puffermodus.

Mögliche Werte:

  • Wert Aborting

  • Wert Buffered

Eine Beschreibung der Werte finden Sie unter MC_Buffer_Mode.

Periodic

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

TRUE startet den periodischen Modus für MC_CamIn. In diesem Modus wird die Ausführung der Kurve kontinuierlich wiederholt.

FALSE startet die Kurve in einem Single-Shot-Modus (einmaliges Vorkommnis). Die Slave-Achsposition der nächstgelegenen Flanke (erster oder letzter Kurvenpunkt) wird eingefroren, wenn sie außerhalb des definierten Bereichs liegt, d. h. die Slave-Achse befindet sich im Stillstand (aber immer noch im Zustand SynchronizedMotion), wenn die Kurve außerhalb des definierten Bereichs liegt.

HINWEIS: Unabhängig davon, ob eine Kurve im periodischen Modus oder im Single-Shot-Modus gestartet wird, signalisiert sie EndOfProfile, und ein gepufferter Bewegungsauftrag (sofern ein solcher Auftrag existiert) wird aktiv, wenn EndOfProfile erreicht ist (selbst wenn die Kurve als periodisch definiert ist).

MasterScaling

LREAL

Wertebereich: Ein positiver LREAL-Wert

Standardwert: 1

Der MasterScaling-Faktor wird verwendet, um die Position des Masters aus der Sicht des Slaves durch Multiplikation der Master-Position (im absoluten Startmodus) oder des Offsets der Master-Position (im relativen Startmodus) zu berechnen.

SlaveScaling

LREAL

Wertebereich: -2147483648 bis 2147483647

Standardwert: 1

Der SlaveScaling des Slaves wird durch Multiplikation der Slave-Position, die sich aus der Kurve ergibt (im absoluten Startmodus), oder des Offsets der Slave-Position (im relativen Startmodus) angewendet.

MasterStartMode

MC_Master_Start_Mode

Standardwert: Absolute

Mögliche Werte:

  • Wert Absolute

  • Wert Relative

Eine Beschreibung der Werte finden Sie unter MC_Master_Start_Mode.

SlaveStartMode

MC_Slave_Start_Mode

Standardwert: Relative

Mögliche Werte:

  • Wert Relative

  • Wert RampIn

  • Wert Absolute

Eine Beschreibung der Werte finden Sie unter MC_Slave Start_Mode.

RampInDirection

MC_Direction

Richtung der Rampe (Ramp-in) für die Kopplung, wenn die Slave-Achse eine Modulo-Achse ist. Die Richtung ist die Richtung zum absoluten Ziel des Rampenmechanismus (Ramp-in) (dabei wird MC_CamIn als InSync angesehen) von der Position der Slave-Achse aus betrachtet, nicht die Y-Periode des Kurvenprofils.

Wenn die Slave-Achse keine Modulo-Achse ist, haben die Werte für diesen Eingang keine Auswirkung.

Standardwert: PositiveDirection

Mögliche Werte:

  • Wert PositiveDirection:

  • Wert NegativeDirection

  • Wert ShortestWay

Eine Beschreibung der Werte finden Sie unter MC_Direction.

VelocityOffsetRampIn

LREAL

Wertebereich: -2147483648 bis 2147483647

Standardwert: 0

Geschwindigkeits-Offset für Rampenmechanismus (Ramp-in) in Benutzereinheiten.

AccelerationOffsetRampIn

LREAL

Wertebereich: Ein positiver LREAL-Wert

Standardwert: 0

Beschleunigungs-Offset für Rampenmechanismus (Ramp-in) in Benutzereinheiten.

DecelerationOffsetRampIn

LREAL

Wertebereich: Ein positiver LREAL-Wert

Standardwert: 0

Verzögerungs-Offset für Rampenmechanismus (Ramp-in) in Benutzereinheiten.

JerkOffsetRampIn

LREAL

Wertebereich: Ein positiver LREAL-Wert und null

  • Positive Werte: Ruckbegrenzung (in Einheiten/s 3 ) (maximaler Ruck, mit dem die Beschleunigung geändert wird).

  • null: Ruckbegrenzung deaktiviert. Die Beschleunigung springt sofort von null auf die maximale Beschleunigung (unendlicher Ruck).

Standardwert: 0

InterpolationPoints

POINTER TO BYTE

Speicheradresse eines Arrays mit einer Länge von 3 bis 10.000. Der Array-Typ richtet sich nach dem Wert von etInterpolationMode für den Eingang InterpolationParameter, entweder ARRAY OF LREAL oder ARRAY OF ST_InterpolationPointXYVA.

Wertebereich: 0 und 3 ... 10000

Standardwert: 0

HINWEIS: Der Wert muss derselbe sein wie für udiNumCamPoints von ST_InterpolationParameter, der vom Eingang InterpolationParameter verwendet wird. Detaillierte Informationen finden Sie im MotionInterface-Bibliothekshandbuch.

InterpolationParameter

MC_Interpolation_Parameter

Verwendet MC_InterpolationParameter für die Parametrierung einer interpolierten Kurve. Weitere Informationen finden Sie unter MC_InterpolationParameter.

MasterStartPosition

LREAL

Wertebereich: -2147483648 bis 2147483647

Standardwert: 0

Position des Masters (aus der Sicht des Slaves) einer vorherigen Kurve, wenn eine neue Kurve aktiv wird.

Dieser Eingang wird ignoriert, es sei denn, StartAtMasterPosition wird für MC_BufferMode verwendet.

Ausgänge

Ausgang

Datentyp

Beschreibung

InSync

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Wenn die Achsen nicht gekoppelt sind und die Kurve nicht verarbeitet wurde.

  • TRUE: Wenn die Achsen gekoppelt sind und die Kurve verarbeitet wurde.

Busy

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Der Funktionsbaustein wird nicht ausgeführt.

  • TRUE: Der Funktionsbaustein wird ausgeführt.

Active

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Der Funktionsbaustein steuert die Bewegung der Achse nicht.

  • TRUE: Der Funktionsbaustein steuert die Bewegung der Achse.

CommandAborted

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Die Ausführung wurde nicht abgebrochen.

  • TRUE: Die Ausführung wurde durch einen anderen Funktionsbaustein abgebrochen.

Error

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Der Funktionsbaustein wird ausgeführt. Während der Ausführung wurde kein Fehler erkannt.

  • TRUE: Bei der Ausführung des Funktionsbausteins ist ein Fehler aufgetreten.

ErrorID

ET_Result

Diese Aufzählung stellt Diagnoseinformationen zur Verfügung.

EndOfProfile

BOOL

Wertebereich: FALSE, TRUE.

Standardwert: FALSE.

  • FALSE: Das letzte Segment der Kurve wurde nicht abgeschlossen.

  • TRUE: Nachdem das letzte Segment der Kurve abgeschlossen wurde.

RampInDuration

TIME

Gibt die verbleibende Zeit an, bis das Rampenverfahren (Ramp-in) abgeschlossen ist und der Ausgang InSync auf TRUE gesetzt wurde.

Hinweise

Im Gegensatz zu den Spezifikationen von PLCopen Motion Control Part 1, Version 2.0 stellt die Bibliothek keinen separaten Funktionsbaustein MC_CamTableSelect zur Verfügung. Die Kurventabelle wird als Eingang von MC_CamIn angegeben.

Die Bibliothek stellt keinen separaten Funktionsbaustein MC_CamOut zur Verfügung. Ein ausgeführter Funktionsbaustein kann durch einen anderen Funktionsbaustein ersetzt werden.

Dieser Funktionsbaustein bietet eine hohe Flexibilität für absolute und relative Bewegungen. Beispielsweise besteht nicht zwangsläufig eine Beziehung zwischen dem Modulo eine Master-Achse (oder Slaveachse) und der Anwendungsperiode einer Kurve in X-Richtung (oder Y-Richtung). Daher können Offset-Korrekturen bei laufendem Betrieb vorgenommen werden, indem die Anwendungsperiode des Kurvenprofils leicht in X- oder Y-Richtung korrigiert wird. Dies wäre mit dem Achsen-Modulo nicht möglich, das nicht geändert werden kann, während die Achse einen Funktionsbaustein ausführt.

Die Funktionen FC_GetCamSlaveMovementFromGivenMasterForInterpolatedCam und FC_GetCamSlaveMovementFromGivenMasterForMultiCam der MotionInterface-Bibliothek unterstützen Sie bei der Wiederherstellung der Achsposition nach einer Unterbrechung oder einem Stopp einer Bewegung infolge eines erkannten Fehlers. Diese Funktionen berechnen die Zielposition, Geschwindigkeit und Beschleunigung einer Slave-Achse zum Zeitpunkt der Ausführung der Funktion, wenn diese Achse mit der Bewegung einer Master-Achse durch eine Kurve gekoppelt ist. Die Slave-Achse wird nicht bewegt oder ist anderweitig betroffen. Diese Funktionen können nur einmal aufgerufen werden, um die Startbedingungen für den Slave zu ermitteln, damit dieser nicht rampenförmig wird. Sie können nicht zyklisch zum fortlaufenden Lesen der Slave-Werte verwendet werden.