Lambda Template

Lambda Template 1:

Das Lambda Template leitet durch die Entwicklung einer Lambda Funktion. Innerhalb des Parameter-Bereichs befindet sich ein Control. Dieses Control enthält vier Buttons zum Konfigurieren, zum Programmieren und zum Publishen der Lambda Funktion. Der vierte Button ist zum Einsehen der Log-Dateien des Entwickelungsprozesses. Eine Statusleiste liefert zusätzliche Informationen während des Prozesses. Ein Drop-Down-Menü unten rechts bietet die Möglichkeit, zwischen einer Release- und einer Testing-Version der Lambda Funktion zu wählen.

Konfigurieren der Lambda Funktion

Der erste Button von links öffnet einen Wizard. Mithilfe dieses Wizards können Sie die Lambda Funktion konfigurieren.

Lambda Template 2:

Auf der ersten Seite können Sie zwischen drei Modi auswählen. Der erste Modus heißt Template. Mit diesem Modus können neue Lambda Funktionen entwickelt werden. Alle Dateien und Abhängigkeiten werden in einer Vorlage vorbereitet und können mit anwenderspezifischer Logik implementiert werden.

Lambda Template 3:

Der zweite Modus heißt Blueprint. Es gibt jeweils drei bereits implementierte Blueprints. Es gibt jeweils einen Blueprint für das Berechnen trigonometrischer Funktionen, zum Label Encoding und zur Berechnung der Kovarianz. Diese Blueprints dienen als beispielhafte Konfiguration und Implementierung einer Lambda Funktion. Genauere Informationen sind unter dem folgenden Link verfügbar (siehe: Lambda Blueprints).
Über den dritten Modus importieren Sie exportierte Lambda Funktionen. Mit einem Klick auf den Button Import Function, öffnet sich ein Datei-Öffnen-Dialog. Anschließend können Sie die exportierte Lambda Funktion, die als ZIP-Archiv vorliegen sollte, auswählen. Sobald die Lambda Funktion importiert ist, ist der Name zu erkennen und auf der nächsten Seite sind die konfigurierten Symbole dargestellt.
Der Name der Lambda Funktion ist individuell wählbar. Jedoch sollte die Versionierung im Namen der Lambda Funktion nicht angepasst oder verändert werden. Andernfalls kann die einwandfreie Nutzung der Lambda Funktionen beeinträchtigt werden. Ebenfalls sollte der Funktionsname mindestens vier Zeichen enthalten.
Auf der zweiten Seite des Wizard konfigurieren Sie die Symbole und Variablen der Lambda Funktion.
Bei dem Blueprint-Modus sind bereits einige Symbole vorkonfiguriert.

Lambda Template 4:

Bei dem Template-Modus ist die Liste der Symbole leer. Wie in der folgenden Abbildung dargestellt, können Sie anwenderspezifische Symbole konfigurieren.

Lambda Template 5:

Über die beiden Drop-Down-Boxen ganz oben auf der Seite wählen Sie jeweils den Datentyp und den Datenstrukturtyp aus.

Verfügbare Datentypen

LREAL

REAL

BOOL

WORD

INT

LINT

ULINT

LTIME

STRING(255)

 

Bei den Datenstrukturtypen kann zwischen primitiv und Array gewählt werden.
Fügen Sie über die Buttons rechts die Variablen mit dem ausgewählten Datentyp und Datenstrukturtyp hinzu.
Interne Variablen sind Member-Variablen. Sie werden in der Oberfläche des Algorithmus nicht dargestellt und können in der Analytics Workbench nicht verknüpft werden. Sie haben den Zweck, Variablenwerte über Zyklen zu speichern.
Wenn der Datenstrukturtyp Array bei einer Variablen ausgewählt ist, kann in der Spalte Count der Variable die Größe des Arrays angegeben werden. Um mehrdimensionale Arrays zu erstellen, müssen die Dimensionen mit dem Buchstaben „x“ separiert werden (Beispiel: 2x4).
Die Visualisierung des Symbols in der Workbench können Sie über das Drop-Down-Menü konfigurieren. Je nach Datentyp sind unterschiedliche Visualisierungen möglich. Undefinierte Visualisierungen sind nicht möglich. Bei den internen Variablen kann keine Visualisierung ausgewählt werden, weil sie in der Workbench nicht angezeigt werden. Die folgenden Visualisierungen sind bei den jeweiligen Datentypen für Eingänge, Ausgänge und Parameter möglich:

Datentyp

Visualisierung

Beispiel

STRING(255)

String (Input)

 

String (Output)

Lambda Template 6:

String (Parameter)

Lambda Template 7:

FileOpen/FileSave (Parameter)

Lambda Template 8:

ULINT

Timestamp (Output)

Lambda Template 9:

BOOL

Boolean (Input)

Lambda Template 10:

Boolean (Output)

Lambda Template 11:

Boolean (Parameter)

Lambda Template 12:

REAL

Input (Input)

Lambda Template 13:

Result (Output)

Lambda Template 14:

INT

Count (Output)

Lambda Template 15:

LINT

Timespan (Output)

Lambda Template 16:

 

Clock (Parameter)

Lambda Template 17:

Interval (Parameter)

Lambda Template 18:

WORD

DayOfWeekMask (Parameter)

Lambda Template 19:

LREAL

Input (Input)

Lambda Template 20:

Result (Output)

Lambda Template 21:

Level (Parameter)

Lambda Template 22:

Nach einem Klick auf den Create-Button wird das C++-Projekt im Hintergrund generiert und der Wizard wird geschlossen.

Programmieren der Lambda Funktion

Lambda Template 23:

Nachdem Sie den zweiten Button geklickt haben, wird das C++ Projekt in den Solution Explorer hinzugefügt. Das Projekt enthält alle Dateien, Abhängigkeiten und Konfiguration, um ein lauffähiges TcCOM-Modul für die Analytics Workbench als auch für die Nutzung im Echtzeit-Kontext zu entwickeln.

Lambda Template 24:

Die automatisch geöffnete Datei enthält merhere gekapselte Funktionen. Die sogenannte lambda_init-Methode ist für die Initialisierung von Variablen. Die lambda_handler-Methode wird zyklisch ausgeführt. Die lambda_uninit-Methode ist für die Deinitialisierung von Variablen. In den Methoden stehen die Inputs, Outputs, Parameter und interne Variablen als Strukturen in den Methodenparametern zur Verfügung. Die folgenden Eingänge und Ausgänge sind standardmäßig in den Lambda Funktionen verfügbar.

Kategorie

Symbolname

Datentyp

Beschreibung

Sichtbarkeit

Input

tTimestamp

ULINT

Die Variable enthält den TwinCAT Zeitstempel.

Versteckt

bReset

BOOL

Die Variable setzt die konfigurierten Symbole zurück.

Optional

bEnableExecution

BOOL

Die Variable aktiviert die lambda_handler-Methode.

Optional

Output

bNewResult

BOOL

Die Variable gibt an, ob der Algorithmus neue Ergebnisse liefert.

Optional

Variablen, die innerhalb der Methoden erstellt werden, verlieren ihren Inhalt nach einem Zyklus. Interne Variablen bieten die Möglichkeiten, Variablenwerte über Zyklen hinweg zu speichern. In den beiden Lambda-Methoden steht ein Objekt mit dem Namen „m_FileHandler“ zur Verfügung. Dieses Objekt müssen Sie einmalig initialisieren, sofern dies noch nicht geschehen ist. Anschließend können Sie die zwei Funktionen „ReadFile“ und „WriteFile“ des Objektes verwenden. Die Funktionen haben folgende Eigenschaften:

Funktionsname

Parameter

 

Rückgabewert

InitFileHandlingBase

ITComObjectServer* ipSrv

 

 

 

Hresult

ReadFile

PCCH filename

Std::string* value

bool* bNewResult

 

Hresult

WriteFile

PCCH filename

Std::string value

Std::string mode

bool* bIsWritten

Hresult

In der TwinCAT Analytics Workbench ist der Dateizugriff synchron, wohingegen er in der Analytics Runtime asynchron ist. Diese Besonderheit wird in den Methoden automatisch unterschieden. Bei einem asynchronen Lesezugriff liefert die Methode nicht im selben Zyklus den gelesenen Wert. Erst sobald der Parameter bNewResult den Wert true zurückliefert, enthält der Parameter value den gelesenen Wert. Bei dem asynchronen Schreibzugriff werden die Daten intern gespeichert und bei der nächsten Gelegenheit geschrieben. Sobald die Daten geschrieben wurden, liefert der Parameter bIsWritten den Wert true zurück. Die beiden Parameter bNewResult und bIsWritten können Sie bei einem synchronen Dateizugriff analog verwenden. Die folgende Abbildung zeigt eine beispielhafte Verwendung des Dateizugriffes in den Lambda Funktionen:

Lambda Template 25:

Erstellen Sie das Projekt wie gewohnt in Visual Studio®, um die Syntax zu prüfen.

In der Header-Datei in dem Ordner „Lambda Function Files“ können Sie anwenderspezifische Objekte und Methoden deklarieren.

Lambda Template 26:

Oberhalb der Klasse „LambdaExtension“ können Bibliotheken inkludiert werden. Innerhalb der Klasse können Objekte und Methoden deklariert und in den Lambda Funktionen verwendet werden. Die neu deklarierten Methoden können unterhalb der beiden Lambda Funktionen implementiert werden.

Lambda Template 27:

Nachdem die Logik integriert wurde, müssen Sie das Projekt speichern. Wechseln Sie danach zum Lambda Template im Analytics Projekt zurück.
Falls ausreichend Know-how im Umgang mit TcCOM-Modulen vorhanden ist, kann das C++-Projekt individuell erweitert werden. Bei unsachgemäßer Verwendung der TcCOM-Module, können bei nachfolgenden Schritten der Lambda Funktionen Fehler auftreten. Weitere Informationen zu der Entwicklung von TcCOM-Modulen sind unter dem folgenden Link zu finden TwinCAT C++ Entwicklung.

Publishen der Lambda Funktion

Vor dem Publishen können Sie den Typ der Lambda Funktion über das Drop-Down-Menü unten rechts konfigurieren.

Lambda Template 28:

Eine Lambda-Funktion von Typ „testing“ enthält das Control mit den vier Buttons zum Entwickeln von Lambda Funktionen. Dieser Typ bietet sich während der Entwicklung- und Testphase an.

Lambda Template 29:

Sobald die Lambda Funktion funktioniert, wählen Sie den Typ „release“ aus. Nach dem Klick auf den dritten Button öffnet sich ein Release Wizard.

Lambda Template 30:

Der Wizard bietet die Möglichkeit, einen finalen Namen zu vergeben und individuelle Icons auszuwählen. Es muss jeweils ein Icon mit 256 x 256 Pixel und ein Icon mit 16 x 16 Pixel ausgewählt werden. Alternativ können Sie die Lambda-Icons weiterverwenden. Mit dem Drop-Down-Menü ordnen Sie die Lambda Funktion einer bestimmten Gruppe in der Toolbox zu. Standardmäßig ist die Gruppe „C++ Lambda Functions“ ausgewählt. So kann eine final Lambda Funktion beispielsweise in der Toolbox in den Bereich "Analytics - Base" eingeordnet werden. Wenn die Checkbox "Map HMI Control" aktiviert ist, öffnet sich nach dem Publishen ein Wizard zum Verknüpfen von HMI Controls mit der Lambda Funktion. Beim Analytics HMI Control Manager werden die Punkte zur Modulauswahl direkt mit der entsprechenden Lambda Funktion vorausgewählt (siehe auch Mapping Wizard). Über den Create-Button generieren Sie die Lambda Funktion.

Lambda Template 31:

Nach dem erfolgreichen Publishen wird das Lambda Template automatisch durch die neu generierte Lambda Funktion ersetzt.

Einsehen der Log-Dateien

Sollte beim Publishen der Lambda Funktion ein Fehler auftreten, wird es in der Statusanzeige dargestellt und die Log-Datei kann über den vierten Button eingesehen werden.