Camming

Camming 1:

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.

Camming 2:

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.

Camming 3:

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.

WARNUNG

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:

Syntax:

FUNCTION_BLOCK FB_Camming EXTENDS FB_CorefunctionFeedback

Camming 4: 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.

[INTERN] UseAsPosition

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:
- Die Achse ist nicht freigegeben.
- Eine andere Corefunction ist aktiv.
- Die Corefunction unterstützt keine Kommandos.

Camming 5: Methoden

Name

Beschreibung

[INTERN] Cyclic()

Diese Methode wird zyklisch von der Achse aufgerufen.

FB_Camming

DoCamming()

Diese Methode wird zum Aktivieren und Deaktivieren der Kernfunktion verwendet.

SetGuidingValue()

Diese Methode wird zum Aktualisieren des Vorgabewerts verwendet.

SetLookupInterface()

Diese Methode muss verwendet werden, um eine Camming-Tabelle anzuschließen.

Camming 6: 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