Kurvenbeschreibung fliegend umschalten
HINWEIS
Es liegt in der Verantwortung des Anwenders, dass im Moment der Umschaltung ein stetiger Sollwertverlauf erreicht wird. Im Beispiel sind Position, Geschwindigkeit und Beschleunigung im Umschaltpunkt alle gleich 0.
In manchen Situationen ist es erforderlich, das Kurvenprofil einer Achse im laufenden Betrieb umzuschalten. Voraussetzung dafür ist die Verwendung einer Instanz der Klasse CamDescriptionScheduler. Die automatische Codegenerierung erzeugt für jede Achse, die das MOVIKIT® MultiMotion Camming verwendet, eine Instanz davon in der globalen Variablenliste SEW_GVL.
Der CamDescriptionScheduler beinhaltet zwei Kurvenbeschreibungen vom Typ CamDescription. Er administriert diese automatisch so, dass im laufenden Betrieb eine davon aktiv und eine frei für die Erstellung eines neuen Kurvenprofils ist. Die gerade aktive Kurvenbeschreibung wird in der Variablen uiCamDescriptionActive angezeigt:
Solange die Betriebsart Camming nicht aktiv ist, wird beim Einlesen einer Kurvendatei deren Kurvenbeschreibung in CamDescription[1] hinterlegt. Mit Aktivierung der Betriebsart Camming wird diese als aktiv markiert. Wird nun erneut eine Kurvendatei eingelesen, landet deren Kurvenbeschreibung in der Struktur CamDescription[2].
Für die fliegende Umschaltung müssen noch einige Parameter in der Konfiguration eingestellt werden. Typischerweise würde man nicht mitten im Takt umschalten sondern mit Beginn des nächsten Taktes. Dazu wären folgende Einstellungen vorzunehmen:
Damit ist konfiguriert, dass der Kurvenwechsel mit Referenzposition 0 (also mit Beginn des nächsten Taktes) und in positiver Bewegungsrichtung des Masters erfolgen soll. Die Umschaltung wird durch Setzen des Signals xGetNewCamDescription angestoßen. Als Rückmeldung gibt xGetNewCamDescriptionDone den Wert "TRUE" aus.
Nachfolgende Trace-Aufzeichnung zeigt exemplarisch den Verlauf dieser Konfiguration. Nach dem Setzen von xGetNewCamDescription auf "TRUE" wird mit Beginn des nächsten Taktes das Kurvenprofil umgeschaltet und xGetNewCamDescriptionDone gibt den Wert "TRUE" aus.
[1] | SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrPosition |
[2] | SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrVelocity |
[3] | SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrAcceleration |
[4] | SEW_GVL.Interface_Axis2.ProfileGeneration.Camming.IN.xGetNewCamDescription |
[5] | SEW_GVL.Interface_Axis2.ProfileGeneration.Camming.OUT. xGetNewCamDescriptionDone |
[6] | SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrPosition |
[7] | SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrVelocity |
[8] | SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrAcceleration |