ONNX für die Verwendung mit TwinCAT Machine Learning Server vorbereiten

Interfacebeschreibungen für die SPS erzeugen

Um eine ONNX mit dem FB_MlSvrPrediction in der TwinCAT SPS nutzen zu können, werden Interfaceinformationen benötigt. Diese werden durch den TwinCAT Machine Learning Model Manager erzeugt.

Angaben zum unterstützten ONNX Opset und Einschränkungen finden Sie hier: ONNX Support.

ONNX für die Verwendung mit TwinCAT Machine Learning Server vorbereiten 1:

JSON-File

Das JSON-File beinhaltet Meta-Informationen, welche der Funktionsbaustein FB_MlSvrPrediction benötigt. Darüber hinaus können Nutzer dem JSON-File eigene Meta-Informationen über die Custom-Attributes mitgeben. Das JSON-File wird vom Funktionsbaustein geladen, siehe Configure-Methode. Sowohl das JSON-File als auch die ONNX-Datei müssen auf dem Laufzeit-PC zum Laden verfügbar sein, siehe Modellbeschreibungsdateien auf Server-Device verfügbar machen.

PlcOpenXml

Das PlcOpenXml beinhaltet die SPS-Typbeschreibung der Input- und Output Nodes. Die automatisch generierten Input-/Output-Strukturen (DUTs) spiegeln die Input-/Output-Definition der von Ihnen bereitgestellten ONNX-Datei wider. Stellen Sie daher sicher, dass Sie aussagekräftige Namen für die Input- und Output Nodes in ihrer ONNX verwenden.

Die Nutzung dieser erstellen Datentypen ist empfohlen.

Beispiel zur Namensgenerierung in der PlcOpenXml:

ONNX für die Verwendung mit TwinCAT Machine Learning Server vorbereiten 2:

Dateiname: lemon_model.onnx

Name Input node: input.1

Name Output node: 367

Es werden zwei DUTs vom Typ STRUCT erzeugt mit den Namen ST_lemon_modelInput und ST_lemon_modelOutput. Die Datenbereich-Elemente werden entsprechend der Input- und Output Nodes benannt, im obigen Fall in in_input1 und out_367. In der SPS nicht gestattete Zeichen werden automatisch entfernt. Besitzt ein KI-Modell mehrere Input- oder Output Nodes, werden diese jeweils als Element des STRUCT dargestellt.

Beispiel für den generierten Inputdatentypen

TYPE ST_lemon_modelInput :
STRUCT
   in_input1 : ARRAY[0..0,0..2,0..223,0..223] OF REAL;
END_STRUCT
END_TYPE

Die Namen der Elemente des STRUCT können bei Bedarf angepasst werden, jedoch nicht deren Reihenfolge im STRUCT und auch nicht die Größe des ARRAY.

Import einer PlcOpenXml in TwinCAT 3

Die generierte PlcOpenXml kann in der SPS mit Rechtklick auf einen Ordner (z. B. DUTs) über das Feld „Import PLCopenXML“ in das SPS-Projekt übernommen werden.

ONNX für die Verwendung mit TwinCAT Machine Learning Server vorbereiten 3:

Hinweis

Betrieb des Machine Learning Servers über generierte Eingangs- und Ausgangsmodelltypen empfohlen

Bitte beachten Sie, dass die Verwendung der in der mitgelieferten PlcOpen-Datei definierten Eingangs-/Ausgangsmodelltypen empfohlen, aber nicht zwingend erforderlich ist. Die Daten müssen korrekt sortiert sein und die richtige Größe besitzen.