Transformation
![]() | Exklusive Funktion für transformierende Achsen Diese Corefunction ist ausschließlich bei transformierenden Achsen verfügbar. |

Diese Corefunction verwaltet die Kopplung der zwei internen Achsen einer transformierenden Achse.
Hierfür arbeitet die Transformation intern mit drei Übersetzungswegen:
- Antriebstabelle – Antriebsposition in eine Lastposition.
- Die Antriebstabelle selbst besteht aus den Punkten der übergebenen Tabelle.
- Wird als Grundlage zur Erzeugung der virtuellen Geberposition der Lastseite verwendet.
- Lasttabelle – Lastposition in eine Antriebsposition.
- Ist die Inverse Funktion der übergebenen Last-Tabelle.
- Wird in der Volltransformation für die Synchronisation der Antriebsseite verwendet.
- Wird in der Halbtransformation zur Konvertierung der Kommandopositionen verwendet
- Wird linearisiert, wenn
LowerLimit
und/oderUpperLimit
innerhalb des Lastpositionen liegen - Antriebstabelle – Rückübersetzung einer Antriebsposition in eine Lastposition.
- Wird verwendet, um eine Zielposition ohne Linearisierung auf Gültigkeit zu überprüfen.
Syntax:
FUNCTION_BLOCK FB_NcTransformation EXTENDS FB_TrafoCorefunction
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 | 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: |
Methoden
Name | Beschreibung |
---|---|
[ | 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( | Gibt einen reservierten Slot wieder frei. |
Übersetzt eine Antriebsposition in eine Lastposition durch die Lasttabelle. | |
Reserviert für zukünftige Verwendung. | |
Übersetzt eine Lastposition in eine Antriebsposition durch die Lasttabelle. | |
Übersetzt eine Antriebsposition in eine Lastposition durch die Antriebstabelle. | |
Übersetzt eine Position linearisiert, abhängig von der eingestellten LowerLimit Eigenschaft. | |
[ | Priorisierte Ausführung der |
[ | Priorisierte Ausführung der |
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) |