TcCOM
Die Nutzung eines TcCOM zur Inferenz eines ML-Modells in TwinCAT liefert eine sehr einfache Möglichkeit, trainierte Modelle in der TwinCAT-XAR auszuführen. Prinzipiell ist das gesamte Vorgehen bereits im Schnellstart dokumentiert, sodass im Folgenden zunächst die dort beschriebenen Schritte wiederholt und nachfolgend ein paar weitere Details gegeben werden.
Einbeziehung eines Modelles mittels TcCOM-Objekt
In diesem Abschnitt wird die Ausführung von Modellen des Maschinellen Lernens mittels eines vorbereiteten TcCOM-Objektes behandelt. Diese Schnittstelle bietet eine einfache und übersichtliche Möglichkeit, Modelle zu laden, in Echtzeit auszuführen und mittels des Prozessabbilds entsprechende Verknüpfungen in die eigene Applikation zu erzeugen.
Vorbereitetes TcCOM-Objekt TcMachineLearningModelCycal erzeugen
- 1. Selektieren Sie dazu den Knoten TcCOM Objects mit der rechten Maustaste und wählen Sie Add New Item…
Unter Tasks eine neue TwinCAT Task erzeugen und der neu erzeugten Instanz des TcMachineLearningModelCycal diesen Task-Kontext zuweisen
- 2. Gehen Sie dazu auf den Reiter Context des erzeugten Objekts.
- 3. Wählen Sie im Drop-Down-Menü Ihre erzeugte Task aus.
- Die Instanz des TcMachineLearningModelCycal verfügt über einen Reiter ML model configuration. Hier können Sie die Beschreibungsdatei des ML Algorithmus (XML oder BML) laden und bekommen im Anschluss daran verfügbare Datentypen für Ein- und Ausgänge des selektierten Modells angezeigt.
- Die Datei muss sich nicht auf dem Zielsystem befinden. Es kann vom Entwicklungssystem aus selektiert werden und wird dann beim Aktivieren der Konfiguration auf das Zielsystem überspielt.
- Es wird zwischen präferierten und unterstützen Datentypen unterschieden. Der Unterschied ist lediglich, dass zur Laufzeit eine Konvertierung des Datentyps erfolgt, sollte ein nicht präferierter ausgewählt werden.
Dies kann bei Verwendung nicht-präferierter Datentypen zu minimalen Performance-Einbußen führen. - Automatisch werden die Datentypen für Ein- und Ausgänge zunächst auf den präferierten Datentypen gesetzt. Durch einen Klick auf Generate IO wird das Prozessabbild des selektierten Modells erstellt. Entsprechend erhalten Sie durch das Laden der KerasMLPExample_cos.xml ein Prozessabbild mit einem Input vom Typ REAL und ein Output vom Typ REAL.
Projekt auf Target aktivieren
- 1. Bevor Sie das Projekt auf einem Target aktivieren, müssen Sie im Projektbaum unter System>License im Tab Manage Licenses die TF3810 Lizenz manuell anwählen, da Sie ein Mehrlagiges Perzeptron laden möchten.
- 2. Aktivieren Sie die Konfiguration.
- Sie können nun das Modell durch händisches Schreiben auf dem Input testen.
Ist das Prozessabbild größer, d.h. existieren viele Ein- oder Ausgänge, kann es hilfreich sein, nicht jeden Eingang einzeln als PDO zu erzeugen, sondern einen Eingang oder einen Ausgang als Array-Typ zu definieren. Aktvieren Sie dazu die Checkbox Generate IO as array und klicken Sie auf Generate IO.
Modelle mit mehreren Engines, vgl. XML Tag Parameters, können geladen werden, jedoch wird nur EngineId = 0 verwendet. Ein Umschalten zwischen den EngineIds ist mit der TcCOM API nicht vorgesehen.
Die verwendete ML-Beschreibungsdatei wird automatisch vom Engineering System auf das Runtime System bei Aktivieren der Konfiguration übertragen. Details zum Dateimanagement sind im Abschnitt Dateimanagement der ML-Beschreibungsdateien beschrieben.