Skip to main content

Umschalten zwischen Kurvenscheiben

Grundsätzlich können Sie jederzeit zwischen verschiedenen Kurvenscheiben umschalten. Dabei sollten Sie jedoch Folgendes beachten:

  • Im Kurvenscheibeneditor ist die Position des Slaves eindeutig definiert als Funktionswert der Kurvenscheibenfunktion. Diese Funktion ist auf dem Masterwertebereich definiert und kann folgendermaßen ausgedrückt werden:

    SlavePosition = CAM( MasterPosition )

  • Da die aktuelle Position des Masterantriebs üblicherweise vom Masterwertebereich abweicht, müssen Sie die Masterposition auf den Definitionsbereich der Kurvenscheibenfunktion skalieren, um ein gültiges Argument darzustellen:

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • In analoger Weise müssen Sie den Funktionswert (die Slaveposition) skalieren, wenn der Start der Kurvenscheibe im Modus absolute zu einem Sprung führen würde:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • Möglicherweise müssen Sie beide Skalierungen anwenden, woraus dann folgt:

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • Die geeigneten Werte für Skalierungs- und Offsetparameter können von Periode zu Periode variieren.

  • Ein Umschalten zwischen Kurvenscheiben kann auf drei Arten erfolgen:

    1. Die zweite Kurvenscheibe über eine zweite Instanz von MC_CamIn mit BufferMode = MC_BUFFER_MODE.Buffered, StartMode = relative, MasterAbsolute = FALSE und SlaveAbsolute = FALSE starten.

      Wichtig

      Ab CODESYS SoftMotion Version 4.17.0.0

    2. Start der neuen Kurvenscheibe über das Zuweisen von MC_CamIn.CamTableID auf die neue Kurvenscheibe (kein Neustart des Funktionsbausteins MC_CamIn erforderlich).

      Diese Variante wird empfohlen, wenn folgende Punkte auf Ihren Anwendungsfall zutreffen:

      • Alle folgenden Kurvenscheiben sollen relativ mit MasterAbsolute = FALSE oder SlaveAbsolute = FALSE ausgeführt werden.

      • Die neue Kurvenscheibe soll exakt am Ende der vorherigen beginnen.

      • Es werden keine weiteren Parameter (beispielsweise SlaveOffset) verändert.

        Wichtig

        • Der Sprung, der im nachfolgenden Beispiel für periodische Kurvenscheiben und SlaveAbsolute = FALSE erläutert wird, gilt nicht für diese Variante, da exakt an die Endpositionen der vorherigen Kurvenscheibe angesetzt wird.

        • Die neue Kurvenscheibe wird nur exakt an das Ende der vorherigen Kurvenscheibe angesetzt, wenn die Umschaltung zur neuen Kurvenscheibe im selben Zyklus erfolgt, in dem die vorherige Kurvenscheibe EndOfProfile = TRUE meldet.

    3. Start der neuen Kurvenscheibe über einen Neustart des Funktionsbausteins MC_CamIn.

      Diese Variante wird empfohlen, wenn für die korrekte Funktion der neuen Kurvenscheibe Parameter verändert werden müssen (beispielsweise SlaveOffset vom nachfolgenden Beispiel). Es gelten die Einschränkungen des nachfolgenden Beispiels.

Beispiel 9. Beispiel

In folgendem Beispiel wird von Kurvenscheibe CAM1 zu CAM2 gewechselt:

CAM1 besteht aus einem Polynom 5. Grades gefolgt von zwei Geradenstücken.

_sm_img_cam_switching_1.png

CAM2 besteht aus zwei Geradenstücken gefolgt von einem Polynom 5. Grades.

_sm_img_cam_switching_2.png

Beim Umschalten zwischen den beiden Kurvenscheiben sollten Sie Folgendes berücksichtigen:

  • Um Sprünge zu vermeiden, sollen die Werte von Geschwindigkeit und Beschleunigung am Endpunkt der ersten Kurvenscheibe mit den Werten am Anfangspunkt der zweiten Kurvenscheibe übereinstimmen. Im Beispiel ist diese Bedingung erfüllt, da dem Endpunkt von CAM1 und dem Startpunkt von CAM2 dieselbe Geschwindigkeit (=1) und Beschleunigung (=0) zugeordnet ist.

  • Sie können die zweite Kurvenscheibe im Modus relativ starten, wenn Sie die Startposition des Slaves mit 0 definiert haben. Dabei muss die erste Kurvenscheibe jedoch im Modus non-periodic laufen. Anderenfalls, wenn CAM1 periodisch wäre, resultiert die Einstellung relative in einem Sprung.

_sm_img_cam_switching_3.png

Die Vergrößerung zeigt den Übergang von CAM1 zu CAM2. Die blauen Linien markieren die Auswertungen der Kurvenscheibenfunktionen an den Masterpositionen x1 und x2.

Wir betrachten zunächst den ungünstigen periodic Fall:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

Der Aufruf bedingt eine Auswertung der Kurvenscheibe an der Masterposition x1, die kleiner ist als die Endposition des Masters von CAM1. So erfolgt die Auswertung von CAM1 standardmäßig und liefert Punkt 1 als Position für den Slave.

CAM(x2, CAM1, PERIODIC:=TRUE);

Beim folgenden Aufruf des Moduls liegt die Masterposition x2 außerhalb des Masterwertebereichs von CAM1, dessen Grenze durch die grüne gestrichelte Linie markiert ist und mit der Abszisse des Punkts 3p übereinstimmt. Demzufolge ist das Flag EndOfProfile gesetzt. Da CAM1 im Modus periodic gestartet wurde, erfolgt ihr Neustart am Ende des Wertebereichs, was schließlich den Punkt 2p als Ergebnis des Modulaufrufs liefert.

CAM(EXECUTE:=FALSE);

Wechsel zur neuen Kurvenscheibe

CAM(x2, CAM2, PERIODIC:=TRUE);

Zweite Auswertung an der Masterposition x2. Diesmal wird die neue Kurvenscheibe CAM2 ausgewertet. Nachdem CAM2 im Modus relative gestartet wurde, wird die aktuelle Position (2p) des Slaves als Offset zum Bild der Kurvenscheibenfunktion von CAM2 addiert. Dadurch wird der Startpunkt ihres Graphen verschoben auf den Punkt 3p und ihre Auswertung an der Masterposition x2 liefert den Punkt 4p und somit einen unerwünschten Sprung.

Wählen Sie den Modus non-periodic um Sprünge zu vermeiden:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

Der Aufruf bedingt eine Auswertung der Kurvenscheibe an der Masterposition x1, die kleiner ist als die Endposition des Masters von CAM1. So erfolgt die Auswertung von CAM1 standardmäßig und liefert Punkt 1 als Position für den Slave.

CAM(x2, CAM1, PERIODIC:=FALSE);

Beim folgenden Aufruf des Moduls liegt die Masterposition x2 außerhalb des Masterwertebereichs von CAM1, dessen Grenze durch die grüne gestrichelte Linie markiert ist und mit der Abszisse des Punktes 3n übereinstimmt. Demzufolge ist das Flag EndOfProfile gesetzt.  Da CAM1 im Modus non-periodic gestartet wurde, ist die der Masterposition x2 zugeordnete Slaveposition (2n) identisch mit der Position des Slaves beim Erreichen des Endes des Wertebereichs von CAM1 (3n).

CAM(EXECUTE:=FALSE);

Wechsel zur neuen Kurvenscheibe.

CAM(x2, CAM2, PERIODIC:=FALSE);

Zweite Auswertung an der Masterposition x2. Diesmal wird die neue Kurvenscheibe CAM2 ausgewertet. Nachdem CAM2 im Modus relative gestartet wurde, wird die aktuelle Position (2n) des Slaves als Offset zum Bild der Kurvenscheibenfunktion von CAM2 addiert. Dadurch wird der Startpunkt ihres Graphen verschoben auf den Punkt 3n und ihre Auswertung an der Masterposition x2 liefert den Punkt 4n, der auf der durch die Punkte 1 und 3n bestimmten Geraden liegt.

Wenn Sie die Kurvenscheiben im Modus absolute starten wollen, müssen Sie auf eine passende Startposition des Slaves achten. Falls der Wertebereich des Masters gerade mit der Periode des Slaves übereinstimmt, wird der Wechsel zwischen den Kurvenscheiben keinerlei Komplikationen mit sich bringen, unabhängig davon, ob die Kurvenscheiben periodisch sind oder nicht.

In obigem Beispiel können Sie CAM2 im Modus absolute starten, wenn die Perioden von Master und Slave mit dem Masterwertebereich von CAM2 übereinstimmen, also jeweils 360° betragen.

Ansonsten, beispielsweise wenn die Periode des Slaves 270° beträgt (angedeutet durch die hellblauen Linien), ist die Option absolute nicht zulässig, ohne weitere Maßnahmen zu treffen.

_sm_img_cam_switching_4.png

In diesem Fall befindet sich der Slave beim Wechsel von CAM1 zu CAM2 bei 90°. Der Start von CAM2 im Modus absolute bewirkt seinen Sprung auf 0° (angezeigt durch graue Gerade).

Der Sprung kann allerdings verhindert werden, indem Sie den Offset des Slaves auf den passenden Wert von 90° setzen.