---
title: "PROFINET-Schnittstellenreferenz"
product: "LumiScan VGR"
component: "lumiscan-vgr-de"
version: "1.8.4"
display_version: "1.8.4.6"
latest_version: true
language: "de"
url: "https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/profinet.html"
---

# PROFINET-Schnittstellenreferenz – LumiScan VGR

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](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html).

## 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.<br> `0` - `IDLE`: Es sind nur Funktionen zum Setzen von Parametern verfügbar.<br> `1` - `AUTOMATIC`: Alle Verarbeitungsfunktionen sind verfügbar.<br> `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:<br> `[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:<br> `[tx, ty, tz, r1, r2, r3, r4]`<br> `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.<br> 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](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#process-flow).

## 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`<br> `IN_ParamArgByte`<br> `IN_ParamArgInt`<br> `IN_ParamArgFloat`<br> `IN_ParamArgString` | `OUT_ReturnCode` | Setzt einen Parameter. `IN_ParamId` gibt an, welcher Parameter geändert wird:<br><br><br>`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.<br><br><br>`1` - `SET_CAMERA_ID`: Setzt die aktive Kamera auf die in `IN_ParamArgString` angegebene ID.<br><br><br>`2` - `SET_PIPELINE_ID`: Setzt die aktive Pipeline auf die in `IN_ParamArgString` angegebene ID.<br><br><br>`3` - `SET_ROBOT_ID`: Setzt den aktiven Roboter auf die in `IN_ParamArgString` angegebene ID. | `OUT_OperationMode = AUTOMATIC` oder `IDLE` |
| `OUT_GetParameter` | `IN_ParamId`<br> `IN_ParamArgByte`<br> `IN_ParamArgInt`<br> `IN_ParamArgFloat`<br> `IN_ParamArgString` | `OUT_ReturnCode` sowie die durch den ausgewählten Parameter bestimmte Ausgabe | Liest einen Parameter. `IN_ParamId` gibt den angeforderten Wert an:<br><br><br>`0` - `GET_NUM_OBJECTS_2D_TOTAL`: Gibt die Gesamtzahl der in 2D erkannten Objekte über `OUT_NumObjects` zurück.<br><br><br>`1` - `GET_NUM_OBJECTS_3D_TOTAL`: Gibt die Anzahl der in 3D erkannten und noch nicht gegriffenen Objekte über `OUT_NumObjects` zurück.<br><br><br>`2` - `GET_NUM_OBJECTS_2D_TYPE`: Gibt die Anzahl der in 2D erkannten Objekte des in `IN_ParamArgString` angegebenen Typs zurück.<br><br><br>`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.<br><br><br>`4` - `GET_DEPTH_MIN_MM`: Gibt die minimale Tiefe über `OUT_DepthLimitMM` zurück.<br><br><br>`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`<br> `IN_ParamArgFloat` | `OUT_ReturnCode`<br> `OUT_ObjectId`<br> `OUT_ObjectScore2D`<br> `OUT_ObjectScore3D`<br> `OUT_BBoxGripFrame`<br> `OUT_BBoxObjectFrame`<br> `OUT_PrevObjectDepth`<br> `OUT_PrevObjectCurvature`<br> `OUT_PrevObjectInnerNearestNeighbour`<br> `OUT_NumObjects`<br> `OUT_PoseMoveInRobot`<br> `OUT_PoseObjectInTcp`<br> `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.<br><br>Ist eine Pfadplanung konfiguriert, können die Eingangsargumente verwendet werden, um die Trajektorie an einem bestimmten Punkt auszuwerten:<br><br>\* `IN_ParamArgByte`: ID des Pfadsegments (`0` bis `n - 1`) \* `IN_ParamArgFloat`: Interpolationsfaktor von `0.0` bis `1.0`<br><br>`0.0` steht für den Anfang des Pfadsegments, `1.0` für das Ende.<br><br>Das Pfadsegment `0` existiert immer, auch wenn keine Pfadplanung konfiguriert ist. In diesem Fall wird für alle Interpolationsfaktoren ein konstantes Ergebnis zurückgegeben.<br><br>Werden ungültige Argumente übergeben, werden sie vor der Ausführung auf `0` gesetzt. In diesem Fall wird kein Fehler zurückgegeben.<br><br>`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`<br> `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](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/plc-settings.html#status-information) 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](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/_images/profinet-example-process.png)

### 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](https://docs.hdvisionsystems.com/de/lumiscan-vgr-de/1.8.4/manual-mode.html).

### 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. |
