Erweiterte Arbeitsdaten: TcNcTrafoParameterExtCnc
Parameter der Methoden
Type = EcNcTrafoParameter_ExtCnc
Die Parameter für die einzelnen Methoden werden über folgende erweiterte Struktur TcCnCTrafoParameter übergeben. Die von der CNC bereitgestellte Datenstruktur wird anhand des Parametertyps kenntlich gemacht.
Type = EcNcTrafoParameter_ExtCnc
struct TcCncTrafoParameter : public TcNcTrafoParameter, TcCncParam
unsigned short kin_id; // in: used kinematic ID
unsigned long control; // in: control trafo calculation, e.g. EcCncTrafoCtrl_cartesianTrafoInactive
EcCncTrafoOption ret_option; // out: select option of transformation during TrafoSupported()
TcCncVersion CncInterfaceVersion; // Interface version TcCncVersionMajor.TcCncVersionMinor
// orientation
EcCnc_TrafoOriModeActual actual_orientation_mode; // Treatment of orientation, actual rotation sequence
EcCnc_TrafoModeSupported supported_modes; // modes supported by the TcCOM transforamtion
Hinweis:
Das Strukturelement EcCnc_TrafoModeSupported supported_modes ersetzt das bisherige Element EcCnc_TrafoOriModeSupported supported_orientation_modes. Aus Gründen der Abwärtskompatibilität wird dieses Datum weiterhin unterstützt.
// modulo configuration
ULONG dim_modulo; // dim of modulo vector
EcCnc_McsModulo * mcs_modulo;
EcCnc_AcsModulo * acs_modulo;
Identifikation des Aufrufers
Die aktive kinematische Transformation wird aktuell an mehreren Stellen in der CNC verwendet. Die unterschiedliche Aufrufstelle wird in den übergebenen Arbeitsdaten der Transformation vermerkt.
0 : EcCncTrafoCallerID_Undefined
1 : EcCncTrafoCallerID_Decode
2 : EcCncTrafoCallerID_ToolRadiusCorrection
3 : EcCncTrafoCallerID_PathPreparation
4 : EcCncTrafoCallerID_Interpolation
5 : EcCncTrafoCallerID_Display
6 : EcCncTrafoCallerID_BlockSearch
Hinweis
Mit der Kennung des Aufrufers (caller_id) kann die Transformation an unterschiedlichen Stellen mit Varianten durchgerechnet werden.
Beispiele siehe Anwenden und Nutzen der Caller-ID
Optionen der Transformation
Während der Initialisierung (method TrafoSupported) der Transformation können individuelle Optionen der CNC angewählt werden. Diese Optionen ändern die CNC Verwaltung der Schnittstelle und stellen evtl. zusätzliche Parameter bereit. Die einzelnen Optionen sind durch die CNC vordefiniert und müssen zur entsprechenden Transformation passen. Folgende Optionen sind verfügbar:
0 : EcCncTrafoOption_None
1 : EcCncTrafoOption_Interpolation_AddInput
Kontroll-Input
Folgende Informationen werden zyklisch an die kinematische Transformation übergeben
0x0000 0001 EcCncTrafoCtrl_cartesianTrafoInactive
Kartesische Transformation in der CNC ist inaktiv. Es erfolgt die direkte Winkelvorgabe durch die CNC.
0x0000 0010 EcCncTrafoCtrl_RTCPMode
Für eine singuläre kinematische Transformation wird der RTCP-Modus angefordert. Es erfolgt die direkte Winkelvorgabe durch die CNC auch in der singulären Achsstellung.
Die beiden oben aufgeführten Steuerinformationen können z.B. zur Umschaltung der Behandlung in der Singularität innerhalb der TcCOM-Transformation verwendet werden. Es erfolgt in diesen Fällen eine direkte Winkelvorgabe durch die CNC.
Im anderen Fall (beide oben aufgeführte Steuerinformationen nicht gesetzt) erfolgt die Belegung der Winkeleingangswerte über einen Werkzeugrichtungsvektor in Winkeldarstellung z.B. bei einem CA-Kopf: C: +-180 Grad, A: 0…90 Grad.
Versionsnummer CNC-Interface
Im Datum TcCncVersion überträgt die CNC die Versionsnummer des von ihr verwendeten Transformationsinterfaces:
struct TcCncVersion
{
Long major;
Long minor;
};
Weitere Informationen zur Versionsnummer: Versionskennung Transformationsinterface
Rotationsreihenfolge
Im Datum actual_rotation_mode überträgt die CNC die aktive Drehreihenfolge der Orientierungsachsen:
EcCncTrafoOri_None = 0
EcCncTrafoOri_YPR = 1
EcCncTrafoOri_CBC1 = 2
EcCncTrafoOri_CBA = 3
EcCncTrafoOri_CAB = 4
EcCncTrafoOri_AB = 5
EcCncTrafoOri_BA = 6
EcCncTrafoOri_CA = 7
EcCncTrafoOri_CB = 8
Die in der Transformation unterstützen Drehreihenfolgen werden der CNC im Datum supported_rotation_modes (siehe auch Drehreihenfolge) mitgeteilt:
typedef struct _EcCnc_TrafoModeSupported
{
unsigned long f_YPR : 1;
unsigned long f_CBC1 : 1;
unsigned long f_CBA : 1;
unsigned long f_CAB : 1;
unsigned long f_UniqueTrafo : 1;
unsigned long f_AB : 1;
unsigned long f_BA : 1;
unsigned long f_CA : 1;
unsigned long f_CB : 1;
unsigned long f_SingularOri : 1;
} EcCnc_TrafoModeSupported;
Eindeutige TcCOM-Transformation
Das Flag f_UniqueTrafo im Datum supported_modes ermöglicht dem Anwender die TcCOM- Transformation als eindeutig in Vorwärts- und Rückwärtsrichtung zu markieren. Das Flag kann in der Methode TrafoSupported vom Anwender gesetzt werden. Die CNC behandelt TcCOM-Transformationen standardmäßig als nicht eindeutig. Beim Initialisieren der Transformation wird das Flag f_UniqueTrafo geprüft.
Das Setzen des Flags beschleunigt alle Vorgänge, bei denen die CNC Positionen der Antriebe lesen muss, um einige Takte. Solche Vorgänge sind zum Beispiel das An- und Abwählen der Transformation, das Ändern von Koordinatensystemen bei aktiver TcCOM- Transformation oder die Verwendung von V.A.ACS.ABS Variablen.
Beispielcode zum Setzen des Flags:
virtual HRESULT TCOMAPI TrafoSupported(PTcCncTrafoParameter p, bool fwd)
{
p->supported_modes.f_UniqueTrafo = TRUE;
return S_OK;
};
Singuläre TcCOM-Transformation
Das Flag f_SingularOri im Datum supported_modes ermöglicht dem Anwender die TcCOM-Transformation als Kinematik mit singulärer Kopfstellung zu markieren. Das Flag kann in der Methode TrafoSupported vom Anwender gesetzt werden. Die CNC aktiviert dann bei Fünfachskinematiken mit CA-, CB-Kopf die Singularitätsbehandlung.
Beispielcode zum Setzen des Flags:
virtual HRESULT TCOMAPI TrafoSupported(PTcCncTrafoParameter p, bool fwd)
{
p->supported_modes.f_SingularOri = TRUE;
return S_OK;
};
Modulo-Einstellungen
Die Dimension der achsspezifischen Objekte mcs_modulo und acs_modulo stellt die CNC im Objekt dim_modulo bereit. Die Modulo-Behandlung im MCS Koordinatensystem wird im achsspezifischen Datum mcs_modulo der CNC mitgeteilt:
EcCnc_McsModulo_None = 0,
EcCnc_McsModulo_180_180 = 1,
Die erwartete Moduloeinstellung einer Achse im ACS-Koordinatensystem kann der CNC im Datum acs_modulo mitgeteilt werden:
EcCnc_AcsModulo_None = 0,
EcCnc_AcsModulo_180_180 = 1,
EcCnc_AcsModulo_0_360 = 2,
Beispiel
Schnittpunktberechnung ausschalten bei inaktivem #CS
Soll z.B. die kinematische Transformation variieren je nachdem ob eine übergeordnete kartesische Transformation aktiv ist, so kann dies anhand des Eingangsbits selektiert werden. Dies wird durch die Steuerung angezeigt.
Kinematische Transformation mit aktiver Schnittpunktberechnung (EcCncTrafoCtrl_cartesianTrafoInactive gelöscht)
Kinematische Transformation mit inaktiver Schnittpunktberechnung
(EcCncTrafoCtrl_cartesianTrafoInactive gesetzt)