Einbettung über Schnittstellen

Das gesamte Virtualisierungsprinzip der TF8560 Plastic Technology Functions basiert auf der Verwendung von Schnittstellen. Daher bietet die Bibliothek für jeden Achstyp und gemeinsame Basistypen ein entsprechendes INTERFACE an. Eine allgemeine Beschreibung zu Schnittstellen finden Sie im INTERFACE-Konzept der TwinCAT PLC Programmierung.

Anwendungsspezifische Abstraktion

Für die Einbettung einer TF8560 Achse in eine Applikation empfiehlt es sich die Schnittstelle mit der größten Schnittmenge an Variante zu wählen. Konkret lässt sich das an folgenden Anwendungsfällen verdeutlichen:

Über den Abstraktionszweck hinaus bieten die Schnittstellen jedes Achstyps eine vorgefilterte Auswahl an Achsfunktionen, wodurch das IntelliSense-geführte Programmieren in TwinCAT deutlich erleichtert wird.

Greifen Sie daher in Ihrem Programmcode nicht direkt auf eine Achse zu, sondern nutzen Sie Schnittstellen und initialisieren Sie diese mit den vorgesehen Achsinstanzen.

fPosition := fbNcAxis1.Actuals.Position   // not preferred
fPosition := iAxisBase.Actuals.Position   // preferred

Abfrage des Achstyps und variantenspezifische Handhabung

Im manchen Fällen kann es trotz der Abstraktion durch z. B. I_AxisBase dazu kommen, dass die spezifische Funktion eines Achstyps benötigt wird. Beispielsweise kann dies bei hydraulischen Achsen auftreten, wenn die Kennlinienvermessung gestartet werden soll. In diesem Fall reicht der Zugriff auf eine I_AxisBase-Schnittstelle bereits aus. Mithilfe der Systemfunktion QUERYINTERFACE kann diese Abfrage durchgeführt und gleichzeitig auch der Zugriff erlangt werden:

In dem folgenden Beispiel gibt der Rückgabewert der QUERYINTERFACE-Anweisung darüber Auskunft, ob die Instanz hinter iAxisBase mit der Schnittstelle iAxisHydraulicBase (I_AxisHydraulicBase) kompatibel ist. Dies trifft z.B. für eine FB_AxisHydraulicBase zu. Dementsprechend kann mit der Anweisung geprüft werden, ob in iAxisBase eine hydraulische Achse hinterlegt ist. Wenn dies der Fall ist (__QUERYINTERFACE(…) = TRUE), kann auf die zu prüfende Schnittstelle direkt zugegriffen werden, da die Achse bei der Überprüfung durch QUERYINTERFACE bereits zugewiesen wird.

IF __QUERYINTERFACE(iAxisBase, iAxisHydraulicBase) THEN
    iAxisHydraulicBase.AutoIdent.DoAutoIdent(TRUE);
ELSE
    ;    // Axis is not hydraulic
END_IF

Weitere Erläuterungen zu der Funktion von QUERYINTERFACE() finden Sie im entsprechenden Abschnitt der TwinCAT Dokumentation.

Für vollen Zugriff auf eine Achse verfügt jede zur Verfügung gestellte Achs-Schnittstelle auch über eine erweiterte Dev Variante. Diese sollte im Regelfall nicht verwendet werden, da sie alle Eigenschaften und Methoden einer Achse zur Verfügung stellt. Unter diesen befinden sich auch solche, die zur regulären Verwendung durch die Applikation nicht vorgesehen sind.

Übersicht der verfügbaren Schnittstellen

Das folgende UML-Diagramm zeigt die verfügbaren Schnittstellen der einzelnen Achsen und dessen Vererbungstruktur.

Einbettung über Schnittstellen 1:

Name

Beschreibung

I_MotionBase

Allgemeine Bewegungseinheit

I_MotionBaseDev

I_AxisBase

Allgemeine Achse

I_AxisBaseDev

I_AxisNcBase

NC-basierte Achse

I_AxisNcBaseDev

I_AxisHydraulicBase

Hydraulik-basierte Achse.

.

I_AxisHydraulicBaseDev

I_AxisInvBase

Umrichter-basierte Achse

I_AxisInvBaseDev

I_AxisTrafoBase

Allgemeine Transformationsachse

I_AxisTrafoBaseDev

I_AxisNcTrafoBase

NC-basierte Transformationsachse

I_AxisNcTrafoBaseDev

I_ActuatorBase

Digitaler Linear-Aktuator

I_ActuatorBaseDev