Externe Sollwertgenerierung
Die externe Sollwertvorgabe kann genutzt werden, um ein eigenes neues Sollwertprofil zu implementieren, das in der TwinCAT MC3 nicht standardmäßig verfügbar ist. Dieses Profil kann mathematisch sehr einfach oder auch beliebig komplex sein. Bei der externen Sollwertgenerierung werden die Sollwerte in Funktionsblöcken bzw. TcCOM-Modulen generiert, die die Schnittstelle ITcMcExternalSetpointGenerator implementieren. Diese wird aus dem MC-Kontext aufgerufen.
Der zentrale Eingang ist ExternalSetpointGenerator vom Typ ITcMcExternalSetpointGenerator. Diese Schnittstelle definiert Methoden, die implementiert werden müssen (z. B. von einem PLC-FB). Diese Methoden werden vom MC-Task-Kontext (MET-Task) über einen Callback-Mechanismus aufgerufen. Dieser Mechanismus ist die Basis für eine Entkopplung von MC-Task und PLC-Task bei der externen Sollwertgenerierung. Dieses grundlegende Funktionsprinzip ist in der nachfolgenden Abbildung dargestellt.

Mit der MC3 ist es möglich, PLC und MC3-Achsen bei der externen Sollwertgenerierung in unterschiedlichen Kontexten mit unterschiedlichen Zykluszeiten auszuführen. Die Update-Rate der Daten, die in den Callback Methoden verwendet werden, wenn AllowOtherContext aktiviert ist, ist zu beachten.
Es ist möglich, dass die MC3 die berechneten Sollwerte auf Konsistenz prüft (vom vorherigen Zyklus zum aktuellen Zyklus unter Berücksichtigung der maximalen dynamischen Parameter der Achse). Dazu muss EnableDynamicChecks := TRUE gesetzt werden.
Die Interpretation der Eingangsvariable InvokeId vom Typ XWORD ist kundenspezifisch. Zum Beispiel kann ein beliebiger numerischer Wert oder die Adresse (Pointer) auf eine kundenspezifische Datenstruktur übergeben werden. Diese InvokeId wird jeder, von der Schnittstelle inkludierten Methode, als Input übergeben.
Die enthaltenen Callback-Methoden im Interface ITcMcExternalSetpointGenerator werden vom MC-Task-Kontext (MET-Task) in der aufgeführten Reihenfolge aufgerufen:
OnPreparation (invokeId : XWORD)- Wird direkt aufgerufen, wenn MC_ActivateExternalSetpointGeneration.Execute = TRUE
- Die Methode kann zum Beispiel zur Initialisierung der Sollwertgenerierung verwendet werden.
OnStartPointInitialization (invokeId : XWORD, startDcTime : LINT, position : LREAL, velocity : LREAL, acceleration : LREAL)- Wird aufgerufen, kurz bevor der externe Sollwertgenerator aktiv wird und der nächste Sollwert zum ersten Mal von diesem Generator generiert wird.
- Die Methode kann zum Beispiel zur Initialisierung der Sollwertgenerierung verwendet werden.
- Der letzte Sollwert (Position und Dynamik) und der entsprechende Zeitstempel des vorherigen Befehls (zu diesem Zeitpunkt beendet) werden an diese Methode übergeben. Der nächste Sollwert/Zyklus wird durch den externen Sollwertgenerator berechnet.
ABSTRACT OnCyclicSetpointGeneration (invokeId : XWORD,
timeInGeneration : LREAL, position : REFERENCE TO LREAL,
velocity : REFERENCE TO LREAL, acceleration : REFERENCE TO LREAL)- Diese Methode muss implementiert werden.
- Die Methode wird zyklisch aufgerufen, wenn MC_ActivateExternalSetpointGeneration
.Active = TRUE. - Die Methode wird zur Berechnung des Sollwerts für den angegebenen Zeitstempel verwendet.
- Die Eingangsvariable
timeInGenerationbeinhaltet die verstrichene Zeit, während die externe Sollwertgenerierung aktiv ist. - Position, Geschwindigkeit und Beschleunigung müssen auf die Werte für den aktuellen Zyklus der Sollwertgenerierung gesetzt werden.
OnDeactivation (invokeId : XWORD)- Die Methode ist für die für letzte Schritte vorgesehen, wenn die externe Sollwertgenerierung durch einen anderen Fahrbefehl beendet wird.
- Sie kann z. B. verwendet werden, um Speicherplatz, der während der externen Sollwertgenerierung allokiert wurde, wieder freizugeben.
Der FB MC_ExternalSetpointGenerator stellt die API zur Realisierung einer externen Sollwertgenerierung aus der PLC-Umgebung zur Verfügung. Das nachfolgende Komponentendiagramm stellt die Zusammenhänge der Module dar. Der Generator selbst ist ein TcCOM-Objekt, das zur Laufzeit angelegt und im TwinCAT-System registriert wird (TcBaseModuleRegistered). Methoden zur Behandlung von Online-Change Vorgängen werden von diesem Generator-FB bereits implementiert. Als Basisfunktionalität implementiert er den ITcMcExternalSetpointGenerator (erweitert ITcUnknown).
