Transformation

Transformation 1:

Exklusive Funktion für transformierende Achsen

Diese Corefunction ist ausschließlich bei transformierenden Achsen verfügbar.

Transformation 2:

Diese Corefunction verwaltet die Kopplung der zwei internen Achsen einer transformierenden Achse.

Hierfür arbeitet die Transformation intern mit drei Übersetzungswegen:

  1. Antriebstabelle – Antriebsposition in eine Lastposition.
  2. Lasttabelle – Lastposition in eine Antriebsposition.
  3. Antriebstabelle – Rückübersetzung einer Antriebsposition in eine Lastposition.

Syntax:

FUNCTION_BLOCK FB_NcTransformation EXTENDS FB_TrafoCorefunction

Transformation 3: Eigenschaften

Name

Typ

Zugriff

Beschreibung

InitState

BOOL

Get, Set

Die Corefunction ist nicht vollständig und erfolgreich initialisiert.

FB_NcTransformation

IsUpdating

BOOL

Get

TRUE, solange eine zuvor übergebene Tabelle intern verarbeitet wird.

LowerLimit

LREAL

Get, Set

Untere Begrenzung ab der die Lasttabelle linearisiert wird.

Reversed

LREAL

Get, Set

Reserviert für zukünftige Verwendung.

Table

I_CammingLookUp

Get, Set

Schnittstelle für die zu übergebene Transformationstabelle.

UpperLimit

LREAL

Get, Set

Obere Begrenzung ab der die Lasttabelle linearisiert wird.

Valid

BOOL

Get

Die übergebene Tabelle wurde erfolgreich geladen.

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.

Transformation 4: Methoden

Name

Beschreibung

[INTERN] Cyclic()

Diese Methode wird zyklisch von der Achse aufgerufen.

FB_NcTransformation

GetSlot()

Reserviert den Index eines Slots für asynchrone Übersetzungsfunktion und gibt ihn zurück.

ReleaseSlot(nSlot)

Gibt einen reservierten Slot wieder frei.

TranslateFromDrive()

Übersetzt eine Antriebsposition in eine Lastposition durch die Lasttabelle.

TranslateFromLoad()

Reserviert für zukünftige Verwendung.

TranslateToDrive()

Übersetzt eine Lastposition in eine Antriebsposition durch die Lasttabelle.

TranslateToLoad()

Übersetzt eine Antriebsposition in eine Lastposition durch die Antriebstabelle.

UpdateToLinLoad()

Übersetzt eine Position linearisiert, abhängig von der eingestellten LowerLimit Eigenschaft.

[INTERN] TranslateToDrivePrio()

Priorisierte Ausführung der TranslateToDrive() Methode.

[INTERN] TranslateToLoadPrio()

Priorisierte Ausführung der TranslateToLoad() Methode.

Transformation 5: Schnittstellen

Typ

Beschreibung

I_Corefunction

Standardschnittstelle auf FB_Corefunction.

I_Transformation

Standardschnittstelle auf FB_NcTransformation.

I_CorefunctionFeedback

Standardschnittstelle auf FB_CorefunctionFeedback.

Beispiel:

// Get specific interface I_AxisTrafoBase from general interface I_AxisBase
IF __QUERYINTERFACE(iAxisBase, iAxisTrafoBase) THEN
    
    CASE nState OF
    0:  // define transformation mechanics (e.g. a crank shaft)
        fbCrankTableGenerator.DriveArm := 50.0;         // [mm]
        fbCrankTableGenerator.LoadArm := 200.0;         // [mm]
        fbCrankTableGenerator.HeightOffset := 0.0;      // [mm]
        fbCrankTableGenerator.DriveLowEnd := 0.0;       // [°]
        fbCrankTableGenerator.DriveHighEnd := 180.0;    // [°]
        
        // configure a table in which the generated characteristic curve is stored
        fbCammingLookup.Equidistance := TRUE;
        fbCammingLookup.Interpolation := E_LookupMode.eSecondOrder;
        fbCammingLookup.SetPoints(181);        // Resultion => 1 point per degree [°]
        fbCrankTableGenerator.LookUp := fbCammingLookup;
        
        // Start table generation
        IF fbCrankTableGenerator.DefineTable() THEN
            nState := nState + 1;
        ELSE
            nState := -1;
        END_IF
        
    1:  // assign the caracteristics curve to the axis
        iAxisTrafoBase.Transformation.Table := fbCrankTableGenerator;
        
        IF iAxisTrafoBase.Transformation.Valid THEN
            nState := nState + 1;
        ELSIF NOT iAxisTrafoBase.Transformation.IsUpdating THEN
            nState := -1;
        END_IF
        
    2:  // transformation is ready to use.

        // Activate full transformation to linearise load side behavior
        iAxisTrafoBase.Synchronise := TRUE;
    
    -1: // error
        
    END_CASE
ELSE
    // interface is not set to an instance deriving FB_AxisTrafoBase (e.g. FB_AxisNcTrafoBase)
    bIncompatible := TRUE;
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.55

PC oder CX (x64, x86)

Tc3_PlasticFunctions (>= v12.6.1.0)