Camming
![]() | Corefunction wird nicht von Umrichterachsen unterstützt Diese Corefunction wird von Umrichterachsen nicht unterstützt. Jede Verwendung wird DEVICE_NOTINIT melden und eine Fehlermeldung auslösen. |

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 unterschiedlichen Parametrierungen.

Alle diese Funktionen gehören zu der Gruppe der statisch gesteuerten Corefunctions.
Beide Camming-Arten verwenden einen Vorgabewert, um einen Stellwert innerhalb einer Camming-Stützstellentabelle zu identifizieren. Für weitere Informationen siehe CammingLookUp.
Als Vorgabewert können alle sinnvollen Informationen dienen. Übliche Optionen sind eine Zeit (LREAL
-Variable, die mit Null beginnt und zyklisch durch Addition der Zykluszeit der SPS-Tasks aktualisiert wird) oder die Position einer anderen Achse.
| |
Unerwartete Reaktionen der gesteuerten Achse Ungeeignete Vorgabewerte oder Tabellenpunkte können zu unerwarteten Reaktionen der gesteuerten Achse führen. Dies kann die Gefahr von Unfällen oder Schäden mit sich bringen. |
Die Verwendung von Camming erfordert mehrere Schritte:
- Es muss eine Camming-Stützstellentabelle instanziiert werden. Für die Anzahl dieser Tabellen gibt es keine Regel. Eine einmal verwendete Tabelle kann zu einem späteren Zeitpunkt erneut verwendet werden, indem die folgenden Schritte wiederholt werden.
- Die Tabelle muss durch Laden der Tabellenpunkte definiert werden. Vergewissern Sie sich, dass die Punktdaten der Camming-Art (Position, Geschwindigkeit) entsprechen, für die sie verwendet werden sollen.
- Die Eigenschaften der Tabelle müssen aktualisiert werden.
- Die Tabelle muss dem Camming mit der Methode
SetLookupinterface()
zugewiesen werden. Zu diesem Zeitpunkt darf das Camming nicht kommandiert sein. - Ein erster Vorgabewert muss mit der Methode
SetGuidingValue()
angegeben werden. - Verwenden Sie zum richtigen Zeitpunkt
DoCamming(TRUE)
, um die Funktion zu aktivieren. Stellen Sie sicher, dass sich die Achse in einer Situation (Position, Geschwindigkeit) befindet, die mit der Situation der Camming-Tabelle übereinstimmt. - Achten Sie auf eine zyklische Aktualisierung des Vorgabewerts.
- Verwenden Sie zum richtigen Zeitpunkt
DoCamming(FALSE)
, um die Funktion zu deaktivieren. Achten Sie auf die Situation (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 | |||
Overrun | BOOL | Get | TRUE, wenn der aktuelle Vorgabewert nicht im Bereich der Camming-Stützstellentabelle liegt. |
Synchronize | BOOL | Get, Set | Bei Synchronize=FALSE soll die Achse jeder Sollwertänderung sofort folgen. Ein TRUE erfordert, dass die Achse Sollwertänderungen in Bezug auf die dynamischen Grenzparameter folgt. |
Synchronized | BOOL | Get | TRUE, wenn Synchronize=TRUE und die Sollwertänderungen innerhalb der Grenzen der dynamischen Parameter der Achse liegen. |
[ | BOOL | Get, Set | Diese Eigenschaft definiert die Camming-Regel. Ein TRUE bewirkt, dass die Kernfunktion als Position-Camming fungiert. Ein FALSE bewirkt, dass es sich um Geschwindigkeit-Camming handelt. Diese Eigenschaft wird beim Starten festgelegt. Die Anwendung darf ihre 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 der Kernfunktion verwendet. | |
Diese Methode wird zum Aktualisieren des Vorgabewerts verwendet. | |
Diese Methode muss verwendet werden, um eine Camming-Tabelle anzuschließen. |
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
fbCammingLookup.Equidistance := TRUE;
fbCammingLookup.Interpolation := E_LookupMode.eSecondOrder;
fbCammingLookup.SetPoints(401);
fbCammingLookUp.MinGuidingValue := 0.0;
fbCammingLookUp.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(fbCammingLookUp.SetPoint(i, fPoint, 35.0)) THEN
nState := -1;
END_IF;
END_FOR
// check table validation
IF NOT fbCammingLookup.Valid THEN
nState := -1;
// assign camming table to camming function
ELSIF FAILED(iAxisBase.Camming.Pos.SetLookupInterface(fbCammingLookUp)) THEN
nState := -1;
// assign initial camming value
ELSIF FAILED(iAxisBase.Camming.Pos.SetGuidingValue(0.0)) THEN
nState := -1;
END_IF
IF nState >= 0 THEN
nState := nState + 1;
END_IF
1: // start camming
IF FAILED(iAxisBase.Camming.Pos.DoCamming(TRUE)) THEN
nState := -1;
END_IF
fTime := 0.0;
IF nState > 0 THEN
nState := nState + 1;
END_IF
2: // operate camming
fTime := MIN(fTime + fCycleTime, 15.0);
IF iAxisBase.Camming.Pos.FailedState THEN
nState := -1;
ELSIF FAILED(iAxisBase.Camming.Pos.SetGuidingValue(fTime)) 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_CASE
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.35 | PC oder CX (x64, x86) | Tc3_PlasticFunctions v3.12.4.26 oder höher |