Kurvenbeschreibung mit Konstruktoren erstellen

Zur Erstellung einer Kurvenbeschreibung aus dem IEC-Programm heraus ist es aus folgenden Gründen nicht ratsam direkt in die entsprechende Datenstruktur zu schreiben:

  • Die Daten sind möglicherweise nicht konsistent.
  • Es erfolgt keine Prüfung, ob die eingestellten Werte an den Grenzen mit der gewählten mathematischen Funktion überhaupt realisierbar sind. So könnte man beispielsweise eine lineare Funktion mit zwei verschiedenen Geschwindigkeiten an der linken und der rechten Segmentgrenze konfigurieren.
  • Es sind Doppelzuweisungen erforderlich.
  • Im Normalfall sind die Werte an der linken Grenze eines Segments identisch mit denen an der rechten Grenze des vorangehenden Segments. Im Falle eines direkten Zugriffs müsste man dafür Sorge tragen, dass ein Wert also immer korrekt an beiden Grenzen zugewiesen wird.
  • Mathematische Abhängigkeiten müssen vom Anwender berücksichtigt werden.
  • Durch das Verwenden von Konstruktoren, erhält man beispielsweise ein optimiertes symmetrisches Beschleunigungsprofil mit einem Polynom 5. Ordnung, wenn bestimmte Zusammenhänge zwischen den Werten an den Segmentgrenzen bestehen. Bei der direkten Eingabe muss der Anwender diese Zusammenhänge selber berechnen, um die Werte entsprechend zu bestimmen.

 

Statt des direkten Zugriffs in die Datenstruktur wird daher aus folgenden Gründen die Verwendung sogenannter "Konstruktoren" empfohlen:

  • Die Konstruktoren bieten nur eine der mathematischen Funktion angemessene Anzahl an Parameter. Die übrigen Parameter an den Segmentgrenzen werden konsistent berechnet.
  • Für das Anhängen eines Kurvensegments an ein bestehendes Segment steht der Konstruktor "Append" zur Verfügung. Dieser Konstruktor berechnet automatisch die Werte an der rechten Grenze des vorangehenden Segments.
  • Konstruktoren berücksichtigen mathematische Abhängigkeiten, sodass sich der Anwender nicht mehr darum kümmern muss.

Jede mathematische Funktion bringt einen zu ihr passenden Satz an Konstruktoren mit. Grundsätzlich werden folgende Typen von Konstruktoren unterschieden:

  • "RestRest"
  • Definiert ein Rast-Rast-Profil mit (Xa, Ya, Xe, Ye); Va = Ve = Aa = Ae = 0
  • "RestVelocity"
  • Definiert ein Rast-Geschwindigkeit-Profil mit (Xa, Ya, Xe, Ye, Ve); Va = Aa = Ae = 0
  • "VelocityRest"
  • Definiert ein Geschwindigkeit- Rast -Profil mit (Xa, Ya, Va, Xe, Ye); Ve = Aa = Ae = 0
  • "Common"
  • Definiert ein der mathematischen Funktion angemessenes allgemeines Profil. Die Anzahl der vorgegebenen Parameter hängt von der mathematischen Funktion ab.

Darüber hinaus werden 3 weitere Konstruktoren-Typen unterschieden:

  • "Add"-Konstruktoren, fügen der Kurvenbeschreibung ein Segment hinzu, wobei sich die Segmentgrenzen aus den dem Konstruktor übergebenen Parametern ergeben.
  • "Append"-Konstruktoren fügen der Kurvenbeschreibung ein Segment hinzu, wobei sich die Werte an der linken Grenze aus den Werten an der rechten Grenze des vorangehenden Segments ergeben.
  • "Assign"-Konstruktoren weisen der Kurvenbeschreibung ein Segment an beliebiger Position in der Kurvenbeschreibung zu. Falls an entsprechender Stelle bereits ein Segment definiert ist, wird dieses überschrieben.
  • HINWEIS: Hierbei erfolgt keine automatische Prüfung auf eine stetige oder zusammenhängende Kurvenbeschreibung. Die Prüfung liegt daher in der Verantwortung des Anwenders. Zur Prüfung der Kurvenbeschreibung kann die im Kapitel Kurvenbeschreibung auf Konsistenz prüfen beschriebene Methode verwendet werden.

Der Zugriff erfolgt über das Property itfConstructors an einer Variablen vom Typ "CamDescription". Hier ist die gewünschte mathematische Funktion auszuwählen:

Anschließend wählt man den gewünschten Konstruktor und definiert über die vorgegebenen Variablen die gewünschten Werte:

Alternativ kann der Weg über die Eingabehilfe ("F2") gewählt werden, wenn in der Textsuche die Bezeichnung eines Konstruktors (z. B. "Add") angegeben wird:

Die automatische Codegenerierung erzeugt für jede Achse, welche das MOVIKIT® MultiMotion Camming nutzt, eine Variable vom Typ "CamDescriptionScheduler". Dieser enthält zwei Kurvenbeschreibungen vom Typ "CamDescription", zwischen denen dann fliegend umgeschaltet werden kann. In diesem Fall werden die Kurvenbeschreibungen vom "CamDescriptionScheduler" administriert, d. h. eine der beiden Kurvenbeschreibungen ist möglicherweise gerade aktiv und sollte nicht konfiguriert werden.

Die Konstruktoren sind dazu gedacht, eine Kurvenbeschreibung aus dem Anwendungs-Programm zu konfigurieren. Die betreffende Kurvenbeschreibung darf zum Zeitpunkt der Konfiguration nicht aktiv sein. Dies ist sichergestellt, wenn die Betriebsart "Camming" nicht aktiv ist oder wenn die Konfiguration die Kurvenbeschreibung betrifft, welche am "CamDescriptionScheduler" über das Property "itfFreeCamDescription" erfragt wurde.

Der Anwender muss sich zunächst den Zugriff auf die gerade nicht genutzte Kurvenbeschreibung geben lassen und diesen in einer lokalen Variable vom Typ "ICamDescription2" abspeichern. Anschließend kann er über die lokal gespeicherte Variable auf den gewünschten Konstruktor zugreifen. Konstruktoren haben einen Rückgabewert vom Typ "BOOL", an dem erkennbar ist, ob die Konfiguration erfolgreich war.

HINWEIS

Ein Konstruktor fügt mit jedem erfolgreichen Aufruf der Kurvenbeschreibung ein Segment hinzu. Ein erfolgreicher Aufruf ist innerhalb eines PLC-Zyklus verarbeitet. Daher ist darauf zu achten, dass ein Konstruktor nicht in mehrere Zyklen hintereinander aufgerufen wird.
Soll mit Hilfe von Konstruktoren eine neue Kurvenbeschreibung erstellt werden, indem eine bestehende Kurvenbeschreibung überschrieben wird, muss zunächst durch Aufruf der Methode DeleteCamDescription() die bestehende Kurvenbeschreibung gelöscht werden.

Nachfolgend ist exemplarisch der Programmcode für die Konfiguration der Kurvenbeschreibung einer einfachen fliegenden Säge dargestellt:

Die Kurve setzt sich aus folgenden drei Segmenten zusammen:

  • Polynom 5 „Rast-Geschwindigkeit“
  • Gerade mit konstanter Geschwindigkeit
  • Polynom 5 „Geschwindigkeit-Rast“

Die mit den Konstruktoren konfigurierte Kurve stellt sich im Cam-Editor so dar:

In der Trace-Aufzeichnung sehen die Verläufe schließlich wie folgt aus:

[1]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrPosition

[2]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrVelocity

[3]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrAcceleration