Camming

Die Eigenschaft bietet zwei Optionen: Camming.Pos für Position-Camming und Camming.Velo für Geschwindigkeit-Camming. Dazu werden zwei Klassen desselben Typs instanziiert, jedoch mit unterschiedlicher Parametrierung.

Beide Camming-Arten verwenden eine Führungsgröße, um einen Stellwert innerhalb einer Camming-Stützstellentabelle zu identifizieren. Für weitere Informationen siehe CammingLookUp.
Als Führungsgröße können alle sinnvollen Informationen dienen. Übliche Optionen sind eine Zeit (LREAL-Variable, die mit 0 beginnt und zyklisch durch Addition der Zykluszeit der SPS-Tasks aktualisiert wird) oder die Position einer anderen Achse.
| |
Unerwartete Reaktionen der gesteuerten Achse Ungeeignete Führungsgrößen oder Tabellenpunkte können zu unerwarteten Reaktionen der Achse führen. Entsprechend können diese zu Unfällen oder Schäden führen. |
Die Verwendung von Camming erfordert mehrere Schritte:
- Die Camming-Stützstellentabelle muss initialisiert werden. Sofern sie die interne Tabelle verwenden (empfohlen), müssen Sie mindestens die Interpolationsart vorgeben und die Anzahl an Punkten der Tabelle definieren. Ein Beispiel zur Initialisierung finden Sie oder im Beispiel weiter unten.
- Die Tabelle muss durch Vorgabe aller Tabellenpunkte definiert werden. Vergewissern Sie sich, dass die Punktdaten der Camming-Art (Position, Geschwindigkeit) entsprechen, für die sie verwendet werden sollen.
- Im Falle von äquidistanten Punkten muss der Tabelle zusätzlich ein Minimal- und Maximalwert für den
GuidingValuezugewiesen werden. - Eine initiale Führungsgröße sollte vor der Aktivierung des Cammings mittels der Eigenschaft
GuidingValuevorgegeben werden. - Verwenden Sie zum richtigen Zeitpunkt
DoCamming(TRUE), um die Funktion zu aktivieren. Stellen Sie sicher, dass sich die Achse in einem Zustand (Position, Geschwindigkeit) befindet, der mit der Führungsgröße der Camming-Tabelle übereinstimmt. - Achten Sie auf eine zyklische Aktualisierung der Führungsgröße.
- Verwenden Sie zum richtigen Zeitpunkt
DoCamming(FALSE), um die Funktion zu deaktivieren. Achten Sie auf den Zustand (Position, Geschwindigkeit) der Achse.
Syntax:
FUNCTION_BLOCK FB_Camming EXTENDS FB_CorefunctionFeedback
Eigenschaften
Name | Typ | Zugriff | Beschreibung |
|---|---|---|---|
InitState | BOOL | Get, Set | Die Corefunction ist nicht vollständig und erfolgreich initialisiert. |
FB_Camming | |||
GuidingValue | LREAL | Get, Set | Die aktuelle Führungsgröße des Cammings. Dieser Wert sollte durch die Applikation mit der Häufigkeit der Achs-Zykluszeit aktualisiert werden. |
I_CammingLookUp | Get, Set | Die Camming-Stützstellentabelle, die für die Ausführung verwendet wird. Nach der Initialisierung oder sobald | |
Overrun | BOOL | Get | TRUE, wenn die aktuelle Führungsgröße nicht im Bereich der Camming-Stützstellentabelle liegt. |
Synchronize | BOOL | Get, Set | Bei |
Synchronized | BOOL | Get | TRUE, wenn |
[ | BOOL | Get, Set | Diese Eigenschaft definiert die Camming-Regel. Ein TRUE bewirkt, dass die Corefunction als Position-Camming fungiert. Ein FALSE bewirkt, dass es sich um Geschwindigkeit-Camming handelt. Diese Eigenschaft wird beim Starten festgelegt. Die Anwendung darf diese Einstellung nicht ändern. |
FB_CorefunctionFeedback | |||
AbortedState | BOOL | Get, Set | Signalisiert den Abbruch eines Kommandos durch eine andere Corefunction. |
BusyState | BOOL | Get, Set | Signalisiert die aktive Ausführung eines Kommandos. |
DoneState | BOOL | Get, Set | Signalisiert die erfolgreiche Ausführung eines Kommandos. |
IdleState | BOOL | Get, Set | Die Corefunction ist betriebsbereit und kommandierbar. |
IsCommanded | BOOL | Get | Signalisiert das Anstehen eines Kommandos. |
FB_Corefunction | |||
FailedState | BOOL | Get, Set | Wenn gleichzeitig IsActivated TRUE ist: Signalisiert das Fehlschlagen eines akzeptierten Kommandos. Wenn gleichzeitig IsActivated FALSE ist: Signalisiert die Ablehnung eines Kommandos. |
HasFeedback | BOOL | Get | Die Corefunction hat auf ein anstehendes Kommando reagiert. |
IsActivated | BOOL | Get | Die Corefunction hat ein akzeptiertes Kommando anstehen. |
IsLocalCmd | BOOL | Get | Signalisiert, dass die Achse mit einem Kommando dieser Corefunction belegt ist. |
ReadyState | BOOL | Get, Set | Die Corefunction ist betriebsbereit, aber zu diesem Zeitpunkt nicht kommandierbar. Mögliche Gründe sind: |
Methoden
Name | Beschreibung |
|---|---|
[ | Diese Methode wird zyklisch von der Achse aufgerufen. |
FB_Camming | |
Diese Methode wird zum Aktivieren und Deaktivieren des Cammings verwendet. | |
Diese Methode wird zum Aktualisieren der Führungsgröße verwendet. Alternative: | |
Diese Methode kann verwendet werden, um eine Camming-Tabelle anzuschließen. Alternative: | |
1 Obsolete
Schnittstellen
Typ | Beschreibung |
|---|---|
I_Corefunction | Standardschnittstelle auf FB_Corefunction. |
I_Camming | Standardschnittstelle auf FB_Camming |
I_CorefunctionFeedback | Standardschnittstelle auf FB_CorefunctionFeedback. |
Beispiel:
// For this example, the axis should currently be in the fCenter position
CASE nState OF
0: // Define camming curve
fCenter := 100.0; // [mm]
fAmplitude := 100.0; // [mm]
fCycleTime := 0.002; // [s]
// parameterise the lookup table
iAxisBase.Camming.Pos.LookUp.Equidistance := TRUE;
iAxisBase.Camming.Pos.LookUp.Interpolation := E_LookupMode.eSecondOrder;
iAxisBase.Camming.Pos.LookUp.SetPoints(401);
iAxisBase.Camming.Pos.LookUp.MinGuidingValue := 0.0;
iAxisBase.Camming.Pos.LookUp.MaxGuidingValue := 15.0;
// Create a sinusoidal curve over 15 seconds
FOR i := 1 TO 401 DO
fCamTime := 15.0 * (i - 1) / 400.0;
fPoint := fCenter + fAmplitude * SIN(2.0 * PI * fCamTime / 15.0);
IF FAILED(iAxisBase.Camming.Pos.LookUp.SetPoint(i, fPoint, 35.0)) THEN
nState := -1;
END_IF;
END_FOR
// check table validation
IF NOT iAxisBase.Camming.Pos.LookUp.Valid THEN
nState := -1;
END_IF
// assign initial camming value
iAxisBase.Camming.Pos.GuidingValue := 0.0;
fTime := 0.0;
IF nState >= 0 THEN
nState := nState + 1;
END_IF
1: // start camming
IF FAILED(iAxisBase.Camming.Pos.DoCamming(TRUE)) THEN
nState := -1;
END_IF
IF nState > 0 THEN
nState := nState + 1;
END_IF
2: // operate camming
fTime := MIN(fTime + fCycleTime, 15.0);
iAxisBase.Camming.Pos.GuidingValue := fTime;
IF iAxisBase.Camming.Pos.FailedState THEN
nState := -1;
ELSIF fTime >= 15.0 THEN
nState := nState + 1;;
END_IF
3, // camming done
-1: // error
fTime := 0.0;
iAxisBase.Camming.Pos.DoCamming(FALSE);
END_CASEVoraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
|---|---|---|
TwinCAT v3.1.4024.71 | PC oder CX (x64, x86) | Tc3_PlasticFunctions (>= v12.14.0.0) |
