PROFINET-Schnittstellenreferenz

Die PROFINET-Schnittstelle ermöglicht die Kommunikation zwischen LumiScan VGR und der SPS.

Dieses Kapitel beschreibt:

  • das Speicherlayout der ausgetauschten Signale

  • die PROFINET-Gerätemodule

  • den Prozessablauf für Funktionsaufrufe

  • die verfügbaren Funktionen

  • Rückgabecodes

  • Betriebsmodi

Eine Erläuterung zur Verwendung der Schnittstelle im Betrieb finden Sie in SPS-Einstellungen.

Speicherlayout

Der Signalspeicher ist in Slots organisiert.

Zwei Gruppen von Signalen werden ausgetauscht:

  • SPS-Eingänge (OUT_):* Von LumiScan VGR geschriebene und von der SPS gelesene Werte.

  • SPS-Ausgänge (IN_):* Von der SPS geschriebene und von LumiScan VGR gelesene Werte.

SPS-Eingänge (OUT_*)

Slot / Gruppe Byteadresse Bit Datentyp Name Beschreibung

Slot 1 - Systemsignale

0

0

bool

OUT_HeartBeat

Spiegelt den Wert von IN_HeartBeat.

Slot 1 - Systemsignale

0

1

bool

OUT_Error

Wird auf 1 gesetzt, wenn sich LumiScan VGR in einem Fehlerzustand befindet.

Slot 1 - Systemsignale

0

2

bool

OUT_ResetReady

Gibt an, ob die Reset-Funktion zur Ausführung bereit ist.

Slot 1 - Systemsignale

0

3

bool

OUT_ResetRunning

Gibt an, ob die Reset-Funktion derzeit ausgeführt wird.

Slot 1 - Systemsignale

0

4

bool

OUT_SetupReady

Gibt an, ob die Setup-Funktion zur Ausführung bereit ist.

Slot 1 - Systemsignale

0

5

bool

OUT_SetupRunning

Gibt an, ob die Setup-Funktion derzeit ausgeführt wird.

Slot 1 - Systemsignale

Reserviert

Slot 1 - Statussignale

4

byte/uchar

OUT_OperationMode

Enthält den aktuellen Betriebsmodus. Er kann über die Funktion Set Parameter geändert werden.
0 - IDLE: Es sind nur Funktionen zum Setzen von Parametern verfügbar.
1 - AUTOMATIC: Alle Verarbeitungsfunktionen sind verfügbar.
2 - MANUAL: LumiScan VGR wird über die Benutzeroberfläche gesteuert.

Slot 1 - Statussignale

5

0

bool

OUT_IsSetup

Gibt an, ob das System-Setup abgeschlossen wurde.

Slot 1 - Statussignale

Reserviert

Slot 1 - Triggersignale

8

0

bool

OUT_SetParameterReady

Gibt an, ob die Funktion Set Parameter bereit ist.

Slot 1 - Triggersignale

8

1

bool

OUT_SetParameterRunning

Gibt an, ob die Funktion Set Parameter ausgeführt wird.

Slot 1 - Triggersignale

9

0

bool

OUT_TriggerCameraReady

Gibt an, ob die Kameraauslösung bereit ist.

Slot 1 - Triggersignale

9

1

bool

OUT_TriggerCameraRunning

Gibt an, ob die Kameraauslösung ausgeführt wird.

Slot 1 - Triggersignale

10

0

bool

OUT_ComputeObjectsReady

Gibt an, ob die Objektberechnung bereit ist.

Slot 1 - Triggersignale

10

1

bool

OUT_ComputeObjectsRunning

Gibt an, ob die Objektberechnung ausgeführt wird.

Slot 1 - Triggersignale

11

0

bool

OUT_GetBestResultReady

Gibt an, ob die Berechnung des besten Ergebnisses bereit ist.

Slot 1 - Triggersignale

11

1

bool

OUT_GetBestResultRunning

Gibt an, ob die Berechnung des besten Ergebnisses ausgeführt wird.

Slot 1 - Triggersignale

12

0

bool

OUT_GripBestResultReady

Gibt an, ob die Funktion Grip Best Result bereit ist.

Slot 1 - Triggersignale

12

1

bool

OUT_GripBestResultRunning

Gibt an, ob die Funktion Grip Best Result ausgeführt wird.

Slot 1 - Triggersignale

13

0

bool

OUT_GetParameterReady

Gibt an, ob die Funktion Get Parameter bereit ist.

Slot 1 - Triggersignale

13

1

bool

OUT_GetParameterRunning

Gibt an, ob die Funktion Get Parameter ausgeführt wird.

Slot 1 - Triggersignale

14

0

bool

OUT_ResetCameraReady

Gibt an, ob die Funktion Reset Camera bereit ist.

Slot 1 - Triggersignale

14

1

bool

OUT_ResetCameraRunning

Gibt an, ob die Funktion Reset Camera ausgeführt wird.

Slot 1 - Triggersignale

…

OUT_GripPriority

Greifpriorität des ausgewählten Ergebnisses.

Slot 2 - Daten

64

byte/uchar

OUT_ReturnCode

Enthält den Rückgabecode der zuletzt ausgeführten Funktion.

Slot 2 - Daten

65

byte/uchar

OUT_ObjectId

ID des Objekts gemäß Definition in den JSON-Einstellungen.

Slot 2 - Daten

66

6 x float

OUT_BBoxGripFrame

Nicht implementiert.

Slot 2 - Daten

90

6 x float

OUT_BBoxObjectFrame

Bounding box des Objekts im Objektkoordinatensystem:
[xmin, ymin, zmin, xmax, ymax, zmax] in Metern.

Slot 2 - Daten

114

float

OUT_PrevObjectDepth

Tiefe des zuvor gegriffenen Objekts in Metern. Nur gültig, wenn der Wert größer oder gleich 0.0 ist.

Slot 2 - Daten

118

byte/uchar

OUT_NumObjects

Anzahl der Objekte in der Szene, die noch nicht gegriffen wurden.

Slot 2 - Daten

…

Reserviert

Slot 3 - Daten

128

7 x float

OUT_PoseMoveInRobot

Pose des Move-Frames für einen Greifpunkt in Roboterkoordinaten:
[tx, ty, tz, r1, r2, r3, r4]
t steht für den Translationsanteil, r für den Rotationsanteil. Einheiten und Rotationskonventionen hängen von der Roboterkonfiguration ab. Verwendet die Rotationskonvention keine Quaternionen, enthält r4 keine Information.

Slot 3 - Daten

156

7 x float

OUT_PoseObjectInTcp

Pose des Objekts in TCP-Koordinaten. Verwendet dasselbe Pose-Format wie OUT_PoseMoveInRobot.

Slot 3 - Daten

…

Reserviert

Slot 4 - Daten

192

float

OUT_ObjectScore2D

Score des 2D-Objekterkennungsergebnisses.

Slot 4 - Daten

196

float

OUT_PrevObjectCurvature

Krümmung des zuvor gegriffenen Objekts.

Slot 4 - Daten

200

int

OUT_PrevObjectInnerNearestNeighbour

Nearest-Neighbor-Wert des zuvor gegriffenen Objekts.

Slot 4 - Daten

204

int

OUT_DepthLimitMM

Aktuell konfigurierte untere oder obere Tiefengrenze.

Slot 4 - Daten

208

int

OUT_ImageReference

Aktuell konfigurierte Bildreferenz.

Slot 4 - Daten

212

float

OUT_ObjectScore3D

Score des 3D-Objekterkennungsergebnisses.

Slot 4 - Daten

216

float

OUT_CameraTemperature

Aktuelle Kameratemperatur in °C. Der Wert wird bei jeder Bildaufnahme aktualisiert.

Slot 4 - Daten

…

Reserviert

SPS-Ausgänge (IN_*)

Slot / Gruppe Byteadresse Bit Datentyp Name Beschreibung

Slot 5 - Systemsignale

0

0

bool

IN_HeartBeat

Heartbeat-Signal von der SPS. OUT_HeartBeat folgt diesem Wert.

Slot 5 - Systemsignale

0

1

bool

IN_Error

Für SPS-Fehler reserviert.

Slot 5 - Systemsignale

0

2

bool

IN_ResetRequest

Fordert die Ausführung der Reset-Funktion an.

Slot 5 - Systemsignale

0

3

bool

IN_EnableAdminMode

Wenn system/enableExternalAdminModeControl in den JSON-Einstellungen auf true gesetzt ist, kann mit diesem Signal der Admin-Modus aktiviert oder deaktiviert werden.
Die SPS sollte diesen Wert nur ändern, wenn derzeit keine Funktion ausgeführt wird.

Slot 5 - Systemsignale

0

4

bool

IN_SetupRequest

Fordert die Ausführung der Setup-Funktion an.

Slot 5 - Systemsignale

Reserviert

Slot 5 - Statussignale

4

Reserviert

Slot 5 - Statussignale

…

Slot 5 - Triggersignale

8

0

bool

IN_SetParameterRequest

Fordert die Ausführung der Funktion Set Parameter an.

Slot 5 - Triggersignale

9

0

bool

IN_TriggerCameraRequest

Fordert ein neues Bild der aktiven Kamera an.

Slot 5 - Triggersignale

10

0

bool

IN_ComputeObjectsRequest

Fordert die Objektberechnung an.

Slot 5 - Triggersignale

11

0

bool

IN_GetBestResultRequest

Fordert die Berechnung des besten Greifergebnisses an.

Slot 5 - Triggersignale

12

0

bool

IN_GripBestResultRequest

Fordert die Bestätigung des besten Greifergebnisses an.

Slot 5 - Triggersignale

13

0

bool

IN_GetParameterRequest

Fordert einen Parameterwert an.

Slot 5 - Triggersignale

14

0

bool

IN_ResetCameraRequest

Fordert einen Reset der angegebenen Kamera an.

Slot 5 - Triggersignale

…

Reserviert

Slot 6 - Daten

64

byte/uchar

IN_ParamId

Gibt den von der Funktion Set Parameter oder Get Parameter verwendeten Parameter bzw. Vorgang an.

Slot 6 - Daten

65

byte/uchar

IN_ParamArgByte

Byte-Argument, das von Parameterfunktionen verwendet wird.

Slot 6 - Daten

66

int

IN_ParamArgInt

Ganzzahl-Argument, das von Parameterfunktionen verwendet wird.

Slot 6 - Daten

70

float

IN_ParamArgFloat

Float-Argument, das von Parameterfunktionen verwendet wird.

Slot 6 - Daten

74

32 x byte/uchar

IN_ParamArgString

String-Argument, das von Parameterfunktionen verwendet wird.

Slot 6 - Daten

…

Reserviert

Slot 7 - Daten

128

7 x float

IN_PoseMoveInRobot

Aktuelle Pose in Roboterkoordinaten unter Verwendung des Move-Frames. Dieser Wert sollte immer verfügbar sein.

Slot 7 - Daten

…

Reserviert

Slot 8 - Reserviert

192

Reserviert

Slot 8 - Reserviert

…

Reserviert

Gerätemodule

Eingänge

Slot Modul Typ Länge Adresse

1

64 Byte Eingang

QB

64

0

2

64 Byte Eingang

QB

64

64

3

64 Byte Eingang

QB

64

128

4

64 Byte Eingang

QB

64

192

Ausgänge

Slot Modul Typ Länge Adresse

5

64 Byte Ausgang

IB

64

0

6

64 Byte Ausgang

IB

64

64

7

64 Byte Ausgang

IB

64

128

8

64 Byte Ausgang

IB

64

192

Prozessablauf

Jeder Prozess verwendet drei Signale:

  • OUT_*Ready

  • IN_*Request

  • OUT_*Running

Die Ausführungsreihenfolge ist für alle Funktionen gleich.

Schritt OUT IN Hinweis

1

Warten, bis OUT_*Ready == 1

Gilt nicht für Reset-Funktionen

2

IN_*Request → 1 setzen

3

Prüfen, ob IN_*Request == 1

4

OUT_*Ready → 0 setzen

5

OUT_*Running → 1 setzen

6

Warten, bis OUT_*Ready == 0

Gilt nicht für Reset-Funktionen

7

Prüfen, ob OUT_*Running == 1

Andernfalls wird der Trigger verworfen

8

IN_*Request → 0 setzen

9

Warten, bis IN_*Request == 0

10

Angeforderte Funktion ausführen

11

Ausgabevariablen setzen

12

OUT_*Running → 0 setzen

13

OUT_*Ready → 1 setzen

14

Warten, bis OUT_*Running == 0

15

Rückgabecode prüfen

16

Ausgabevariablen lesen

Eine detailliertere Erläuterung des Handshake-Verhaltens finden Sie in SPS-Einstellungen: Prozessablauf.

Funktionsbeschreibungen

Funktion Eingang Ausgang Beschreibung Voraussetzung

IN_Reset

Setzt alle OUT_*-Variablen auf ihre Standardwerte zurück. Alle Ausgabewerte werden auf null gesetzt, und OUT_OperationMode wird auf IDLE gesetzt.

OUT_Reset

Setzt alle IN_*-Variablen auf ihre Standardwerte zurück.

OUT_SetParameter

IN_ParamId
IN_ParamArgByte
IN_ParamArgInt
IN_ParamArgFloat
IN_ParamArgString

OUT_ReturnCode

Setzt einen Parameter. IN_ParamId gibt an, welcher Parameter geändert wird:

0 - SET_OPERATION_MODE: Setzt OUT_OperationMode auf den Wert von IN_ParamArgByte. Die SPS kann das System nicht aus dem manuellen Modus herausschalten; der manuelle Modus muss über die Benutzeroberfläche beendet werden.

1 - SET_CAMERA_ID: Setzt die aktive Kamera auf die in IN_ParamArgString angegebene ID.

2 - SET_PIPELINE_ID: Setzt die aktive Pipeline auf die in IN_ParamArgString angegebene ID.

3 - SET_ROBOT_ID: Setzt den aktiven Roboter auf die in IN_ParamArgString angegebene ID.

OUT_OperationMode = AUTOMATIC oder IDLE

OUT_GetParameter

IN_ParamId
IN_ParamArgByte
IN_ParamArgInt
IN_ParamArgFloat
IN_ParamArgString

OUT_ReturnCode sowie die durch den ausgewählten Parameter bestimmte Ausgabe

Liest einen Parameter. IN_ParamId gibt den angeforderten Wert an:

0 - GET_NUM_OBJECTS_2D_TOTAL: Gibt die Gesamtzahl der in 2D erkannten Objekte über OUT_NumObjects zurück.

1 - GET_NUM_OBJECTS_3D_TOTAL: Gibt die Anzahl der in 3D erkannten und noch nicht gegriffenen Objekte über OUT_NumObjects zurück.

2 - GET_NUM_OBJECTS_2D_TYPE: Gibt die Anzahl der in 2D erkannten Objekte des in IN_ParamArgString angegebenen Typs zurück.

3 - GET_NUM_OBJECTS_3D_TYPE: Gibt die Anzahl der in 3D erkannten Objekte des in IN_ParamArgString angegebenen Typs zurück, die noch nicht gegriffen wurden.

4 - GET_DEPTH_MIN_MM: Gibt die minimale Tiefe über OUT_DepthLimitMM zurück.

5 - GET_DEPTH_MAX_MM: Gibt die maximale Tiefe über OUT_DepthLimitMM zurück.

OUT_OperationMode = AUTOMATIC

OUT_TriggerCamera

OUT_ReturnCode

Nimmt ein Bild mit der aktuell aktiven Kamera auf.

OUT_OperationMode = AUTOMATIC

OUT_ComputeObjects

OUT_ReturnCode

Berechnet die Posen aller erkannten Objekte aus dem zuletzt aufgenommenen Bild unter Verwendung der aktiven Pipeline.

OUT_OperationMode = AUTOMATIC

OUT_GetBestResult

IN_ParamArgByte
IN_ParamArgFloat

OUT_ReturnCode
OUT_ObjectId
OUT_ObjectScore2D
OUT_ObjectScore3D
OUT_BBoxGripFrame
OUT_BBoxObjectFrame
OUT_PrevObjectDepth
OUT_PrevObjectCurvature
OUT_PrevObjectInnerNearestNeighbour
OUT_NumObjects
OUT_PoseMoveInRobot
OUT_PoseObjectInTcp
OUT_GripPriority

Berechnet Greifpunkte für den aktiven Roboter aus den zuletzt berechneten Objektposen und gibt Informationen zum gültigen Greifvorgang mit der höchsten Priorität zurück.

Ist eine Pfadplanung konfiguriert, können die Eingangsargumente verwendet werden, um die Trajektorie an einem bestimmten Punkt auszuwerten:

* IN_ParamArgByte: ID des Pfadsegments (0 bis n - 1) * IN_ParamArgFloat: Interpolationsfaktor von 0.0 bis 1.0

0.0 steht für den Anfang des Pfadsegments, 1.0 für das Ende.

Das Pfadsegment 0 existiert immer, auch wenn keine Pfadplanung konfiguriert ist. In diesem Fall wird für alle Interpolationsfaktoren ein konstantes Ergebnis zurückgegeben.

Werden ungültige Argumente übergeben, werden sie vor der Ausführung auf 0 gesetzt. In diesem Fall wird kein Fehler zurückgegeben.

OUT_GripPriority gibt die Priorität des ausgewählten Greifpunkts an. Die Priorität wird für jeden Greifpunkt eines Objekts konfiguriert.

OUT_OperationMode = AUTOMATIC

OUT_GripBestResult

IN_ParamArgByte
IN_ParamArgFloat

Führt dieselbe Berechnung wie OUT_GetBestResult durch und teilt dem System zusätzlich mit, dass das ausgewählte Ergebnis gegriffen wurde bzw. wird.

OUT_OperationMode = AUTOMATIC

OUT_ResetCamera

IN_ParamArgString

Setzt die Kamera zurück, deren ID in IN_ParamArgString angegeben ist. Nach dem Zurücksetzen der Kamera muss Setup erneut ausgeführt werden.

OUT_OperationMode = AUTOMATIC

Rückgabecodes

Die Rückgabecodes sind in SPS-Einstellungen: Statusinformationen beschrieben.

Anwendungsbeispiel

Das folgende Diagramm zeigt einen Beispielprozess mit einer Kamera, einer Pipeline und einem Roboter.

Das Beispiel geht davon aus, dass sich der Betriebsmodus während des Prozesses nicht ändert. Prüfen Sie nach jedem Funktionsaufruf den Rückgabecode und behandeln Sie einen gemeldeten Fehler, bevor Sie fortfahren.

Ist in der Konfiguration die automatische Belichtung aktiviert, wird sie nach jeder Bildaufnahme angewendet. Bei einer veränderten Szene kann daher vor Beginn des Greifprozesses zunächst ein Anfangsbild aufgenommen werden, um die Belichtung anzupassen.

Aus einem einzelnen aufgenommenen Bild können mehrere Objekte gegriffen werden. Je nach erforderlicher Taktzeit kann es auch zweckmäßig sein, vor jedem Greifvorgang ein neues Bild aufzunehmen.

Beispielhafter PROFINET-Prozess mit einer Kamera, einer Pipeline und einem Roboter

Manueller Modus

Während des Betriebs kann der manuelle Modus über die Benutzeroberfläche aktiviert werden. Der Betriebsmodus wechselt dann zu MANUAL (2).

Während der manuelle Modus aktiv ist, können Verarbeitungsfunktionen nicht von der SPS aus gestartet werden.

Beim Verlassen des manuellen Modus wechselt das System zu IDLE (0). Um die automatische Verarbeitung fortzusetzen, stellen Sie den Betriebsmodus über die SPS wieder auf AUTOMATIC ein.

Siehe auch Manueller Modus.

Mehrere Komponenten

Alle Berechnungen verwenden die aktuell aktive Kamera, Pipeline und den aktuell aktiven Roboter.

Enthält ein Projekt mehrere Kameras, Pipelines oder Roboter, stellen Sie sicher, dass vor der Ausführung jeder Funktion die richtigen aktiven Komponenten über OUT_SetParameter ausgewählt sind.

Referenzlisten

Betriebsmodi

ID Modus Beschreibung

0

IDLE

Das System befindet sich im Leerlauf. Verarbeitungsfunktionen sind nicht verfügbar.

1

AUTOMATIC

Automatischer SPS-gesteuerter Betrieb. Verarbeitungsfunktionen sind verfügbar.

2

MANUAL

Manueller Betrieb über die Benutzeroberfläche.

3

SHUTDOWN

Die Anwendung wird heruntergefahren.