top of page

OTX-Scripting Support

  • Autorenbild: Jörg Supke
    Jörg Supke
  • vor 3 Tagen
  • 3 Min. Lesezeit

Rechenintensive Aufgaben effizient auslagern - In vielen Projekten der Fahrzeugdiagnose und Testautomatisierung hat sich OTX als leistungsfähige Beschreibungssprache etabliert. OTX ist bewusst als domänenspezifische Sprache (DSL) für Test- und Diagnoseabläufe in der Automobilindustrie konzipiert. Die Sprache ist Turing-vollständig, sodass sich prinzipiell jede Art von Logik in OTX formulieren lässt. In der Praxis zeigt sich jedoch: Nicht jede Aufgabe sollte auch tatsächlich in OTX implementiert werden. Gerade bei rechenintensiven Algorithmen oder bei Funktionen, die außerhalb der eigentlichen Diagnoseprozesse liegen, ist der Einsatz einer spezialisierten Skriptsprache oft deutlich effizienter, ohne dabei die Prozesssicherheit zu vernachlässigen. Daher wurde die OTX-Toolkette um einen Scripting-Support erweitert.


Inhalt

Warum OTX nicht immer die beste Wahl ist

OTX wurde primär dafür entwickelt um:


  • Diagnose- und Testabläufe zu beschreiben

  • Fahrzeugkommunikation zu orchestrieren

  • Prüfabläufe strukturiert und nachvollziehbar zu modellieren


Für diese Aufgaben ist OTX hervorragend geeignet. Anders sieht es bei Aufgaben aus wie:


  • komplexe mathematische Berechnungen

  • Datenanalyse oder Signalverarbeitung

  • spezialisierte Algorithmen

  • Nutzung vorhandener Bibliotheken


Solche Funktionen lassen sich oft in klassischen Skriptsprachen deutlich kompakter und performanter implementieren.


Erweiterung der OTX-Toolkette

Um diese Lücke zu schließen, wurde die EMOTIVE OTX-Toolkette erweitert. OTX-Sequenzen können nun externe Skripte in Lua und Python aufrufen:


  1. Lua

    Wenn es um Schlankheit und Performance geht, insbesondere beim Einsatz von OTX in embedded Systemen, ist Lua die beste Wahl. Da die OTX-Runtime Lua bereits verwendet, sind keine weiteren Systemvoraussetzungen notwendig.

  2. Python

    Aufgrund des großen Ökosystems an Bibliotheken lassen sich komplexe Berechnungen effizient in Python implementieren.


Somit lassen sich spezialisierte Funktionen einfach aus der OTX-Sequenz heraus nutzen. Das Prinzip ist bewusst einfach gehalten:


  1. Die OTX-Sequenz ruft eine definierte Skriptfunktion auf

  2. Parameter werden übergeben

  3. Das Skript führt die Berechnung aus

  4. Ergebnisse werden an OTX zurückgegeben


So bleibt die Orchestrierung weiterhin vollständig in OTX, während spezialisierte Logik in einer geeigneten Sprache umgesetzt wird.


Neutrale Anbindung über das OTX Mapping

Die Verbindung zwischen OTX und dem Skript erfolgt über das OTX-Mapping. Dabei werden die aufzurufende Funktion, die Parameter und die Rückgabewerte plattformneutral an OTX-Signaturen gebunden.


Abbildung 1: OTX-Mapping
Abbildung 1: OTX-Mapping

Der Vorteil dieses Ansatzes:


  • klare Schnittstelle zwischen OTX und Skript

  • keine Abhängigkeit zu einer spezifischen Funktion

  • wiederverwendbare Integrationsmechanismen


Skripte werden mit dem PTX verteilt

Ein weiterer wichtiger Punkt ist die Verteilung der Skripte. Die Skriptdateien werden innerhalb der PTX-Datei self-contained transportiert. Sie können somit direkt ausgeführt werden. Eine separate Installation ist nicht erforderlich. Der Anwender erhält also ein vollständig lauffähiges PTX, inklusive aller benötigten Skripte.


Typische Einsatzfälle

Die Integration der Skriptsprachen in OTX eröffnet eine Reihe praktischer Möglichkeiten:


  1. Rechenintensive Algorithmen - beispielsweise:

    • Kryptographie

    • Signalverarbeitung

    • statistische Auswertungen

    • sicherheitskritische Berechnungen

  2. Nutzung vorhandener Bibliotheken - Gerade Python bietet ein großes Ökosystem an Bibliotheken für:

    • Datenanalyse

    • Visualisierung

    • mathematische Berechnungen

  3. Erweiterung der OTX-Funktionalität - Aufgaben, die aktuell nicht direkt in OTX abbildbar sind, können unkompliziert ausgelagert werden.


Beispiel

Das Beispiel zeigt ein Lua-Skript zur Berechnung einer Liste aus Zufallszahlen, siehe Funktion RandomList. Diese Liste wird dann in der Funktion QuickSort sortiert. Der Kommentar oberhalb der Funktionen dient dem Mapping der Lua-Funktionen auf die DeviceServiceSignature von OTX.

Im folgenden OTX-Beispiel werden die beiden Lua-Funktionen an zwei DeviceServiceSignature gebunden und über die OTX-Action ExecuteDeviceService aufgerufen.

Best of Both Worlds

Mit der neuen Scripting-Unterstützung kombiniert die OTX-Toolkette die Stärken zweier Welten:

  • OTX für strukturierte Test- und Diagnoseabläufe

  • Skriptsprachen für spezialisierte und rechenintensive Funktionen


Das Ergebnis ist eine flexiblere, leistungsfähigere Testarchitektur, ohne die Vorteile der standardisierten OTX-Beschreibung aufzugeben.


bottom of page