Zum Hauptinhalt springen

KI-GESTÜTZTE DOKUMENTATION

Was möchten Sie wissen?

PLC-Kommunikationsdetails (EtherNet/IP)

Das OV20i-Bildverarbeitungssystem unterstützt die Echtzeitkommunikation mit EtherNet/IP-basierten PLCs. Dieser Leitfaden erläutert, wie zyklische I/O-Verbindungen konfiguriert, Datenstrukturen zugeordnet und die Node-RED-Tools von Overview zur Abfrage globaler sowie ROI-spezifischer Inspektionsergebnisse genutzt werden.

Videoanleitung

Sehen Sie sich dieses Thema in Aktion an: Auto-Integration Builder

hinweis

Grundlegende Verbindungshinweise finden Sie unter Connect to PLC (EtherNet/IP, PROFINET).


Übersicht​

Der OV20i fungiert als EtherNet/IP-Adapter, während Ihre PLC als Scanner (oder Master) arbeitet. Nach der Konfiguration tauschen die Geräte in jedem Zyklus strukturierte Daten in einem kompakten und vorhersehbaren Format aus.

Unterstützte Funktionen​

  • Zyklische I/O-Kommunikation – Unterstützung von Zykluszeiten zwischen 20 und 10.000 ms
  • Datendurchsatz – Bis zu 256 Bytes in jeder Richtung
  • Benutzerdefinierte Datenverarbeitung – Lesen/Schreiben von Node-RED-Daten als Bestandteil des aktiven Rezepts

Input Assembly (OV20i → PLC)​

Das Input Assembly enthält die Daten, die in jedem Zyklus vom OV20i an die PLC gesendet werden. Dazu gehören Systemstatus, Inspektionsergebnisse, Rezeptinformationen und optionale ROI-Aufschlüsselungen.

Byte- und Bit-Layout des OV20i-Input-Assemblys

Output Assembly (PLC → OV20i)​

Das Output Assembly enthält Steuerdaten, die von der PLC an den OV20i gesendet werden. Sie können es verwenden, um Inspektionen auszulösen, Rezepte zu wechseln oder benutzerdefinierte Parameter zu übergeben.

Byte- und Bit-Layout des OV20i-Output-Assemblys

Timing- und Handshake-Verhalten​

EtherNet/IP-Triggering-Zeitdiagramm

Unterstützung benutzerdefinierter Daten​

Der OV20i kann zusätzliche benutzerdefinierte Daten als Bestandteil Ihres Node-RED-Flows entgegennehmen oder zurückgeben.

PLC → OV20i​

  • Schreiben Sie externe Flags, Schwellenwerte oder Zähler, um die Logik in Node-RED zu beeinflussen

OV20i → PLC​

  • Geben Sie berechnete Werte, Messungen, Zeitstempel oder bedingte Ausgaben zurück

Benutzerdefinierte Daten passen in den erweiterten Bereich der Assemblys, beginnend nach den Kernsignalen und Rezeptinformationen.

ROI-Ergebnisaufschlüsselung (nur Classification Recipes)​

Bei Classification Recipes können Sie der PLC pro-ROI-Ergebnisse über den benutzerdefinierten Node-RED-Node von Overview bereitstellen: Format data for PLC.

Funktionsweise:​

  • Wird zwischen All Blocks Output Data und Send Data to PLC im Node-RED-Flow platziert

Beispiel für den Format-Data-for-PLC-Node-RED-Flow

  • Befüllt automatisch einen strukturierten ROI-Bereich beginnend bei Byte 16 im Input Assembly

  • Unterstützt bis zu 4 ROIs pro Inspektion

  • Jeder ROI enthält:

    • ROI-ID
    • Pass/Fail-Bit
    • Confidence Score
    • Reservierte Bytes für zukünftige Verwendung
warnung

Der Format Data for PLC-Node funktioniert ausschließlich mit Classification Recipes.

Byte- und Bit-Layout des OV20i-Output-Assemblys


Standard-PLC-Tag-Referenz​

Dieser Abschnitt enthält eine vollständige Referenz aller Tags in den Input- und Output-Assemblies, einschließlich Byte-Offsets, Bit-Positionen, Datentypen und Standardwerten. Verwenden Sie diese als verbindliche Bitmap bei der Konfiguration Ihres PLC-Programms.

Anzeige der Standard-Tags in der Kamera-UI​

  1. Öffnen Sie die OV20i-Weboberfläche (z. B. http://192.168.1.100).
  2. Navigieren Sie in der linken Seitenleiste zu Industrial Ethernet.
  3. Wählen Sie Ihr aktives Protokoll aus (EtherNet/IP oder PROFINET).
  4. Die Seite zeigt die aktuelle Assembly-Konfiguration an, einschließlich der Input-/Output-Datengrößen und des Verbindungsstatus.
  5. Das auf dieser Seite angezeigte Standard-Tag-Layout entspricht den nachstehenden Tabellen.

Input-Assembly-Tags (OV20i → PLC)​

Diese Tags werden von der PLC gelesen. Die Kamera schreibt sie in jedem I/O-Zyklus.

Byte 0 -- Status-Flags​

BitPLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
0I.Data[0].0Trigger ReadyBOOLKamera ist bereit, einen Trigger anzunehmen. Muss HIGH sein, bevor eine Trigger-Anforderung gesendet wird.0 (wird nach dem Start HIGH)
1I.Data[0].1Trigger AcknowledgeBOOLKamera hat die Trigger-Anforderung empfangen und akzeptiert.0
2I.Data[0].2Recipe Switch AcknowledgeBOOLKamera hat die Rezeptwechselanforderung empfangen und abgeschlossen.0
7I.Data[0].7Online / Startup CompleteBOOLKamera hat den Bootvorgang abgeschlossen und ist online.0 (wird nach dem Booten HIGH)

Byte 1 -- Fehler- und Status-Flags​

BitPLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
0I.Data[1].0Trigger ErrorBOOLWährend des Triggerzyklus ist ein Fehler aufgetreten. Bleibt gespeichert, bis er zurückgesetzt wird.0
1I.Data[1].1Recipe Switch ErrorBOOLWährend des Rezeptwechsels ist ein Fehler aufgetreten. Bleibt gespeichert, bis er zurückgesetzt wird.0
6I.Data[1].6BusyBOOLKamera verarbeitet aktuell (Inspektion läuft oder Rezeptwechsel). Während HIGH keine neuen Befehle senden.0

Byte 2 -- Inspektionsergebnis-Flags​

BitPLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
0I.Data[2].0Exposure CompleteBOOLBildbelichtung wurde abgeschlossen.0
1I.Data[2].1Inspection Completed / Result AvailableBOOLDie Inspektionsverarbeitung ist abgeschlossen und die Ergebnisse sind gültig.0
2I.Data[2].2Inspection PassBOOLEndgültiges Pass/Fail-Ergebnis. HIGH = Pass, LOW = Fail. Nur gültig, wenn Result Available HIGH ist.0

Bytes 3--7 -- Reserviert​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
3I.Data[3]ReservedBYTEFür zukünftige Verwendung reserviert.0x00
4I.Data[4]ReservedBYTEFür zukünftige Verwendung reserviert.0x00
5I.Data[5]ReservedBYTEFür zukünftige Verwendung reserviert.0x00
6--7I.Data[6]--I.Data[7]ReservedBYTEFür zukünftige Verwendung reserviert.0x00

Bytes 8--9 -- Current Recipe ID​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
8--9I.Data[8]--I.Data[9]Current Recipe IDUINT (16-Bit)Die ID des aktuell aktiven Rezepts. Vergleichen Sie mit O.Data[4], um zu überprüfen, ob ein Rezeptwechsel abgeschlossen wurde.0

Bytes 10--11 -- Reserved​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
10--11I.Data[10]--I.Data[11]ReservedBYTEReserviert für zukünftige Verwendung.0x00

Bytes 12--13 -- Inspection ID​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
12--13I.Data[12]--I.Data[13]Inspection IDUINT (16-Bit)Fortlaufender 16-Bit-Zähler, der bei jeder Inspektion inkrementiert wird. Wird verwendet, um Ergebnisse mit bestimmten Triggern zu korrelieren.0

Bytes 14--15 -- Reserved​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
14--15I.Data[14]--I.Data[15]ReservedBYTEReserviert für zukünftige Verwendung.0x00

Bytes 16--256 -- ROI Results Assembly / Custom Data from Node-RED​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
16--256I.Data[16]--I.Data[256]ROI Results / Custom DataBYTE[]Bei Verwendung des Node-RED-Blocks "Format Data for PLC" wird dieser Bereich mit strukturierten ROI-Ergebnissen befüllt. Andernfalls steht er für benutzerdefinierte Daten aus Node-RED-Flows zur Verfügung.0x00

Output Assembly Tags (PLC → OV20i)​

Diese Tags werden von der PLC geschrieben. Die Kamera liest sie in jedem I/O-Zyklus.

Byte 0 -- Control Flags​

BitPLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
0O.Data[0].0Trigger RequestBOOLAuf HIGH setzen, um eine Inspektion auszulösen. Halten, bis Trigger Acknowledge (I.Data[0].1) auf HIGH wechselt, dann zurücksetzen.0
1O.Data[0].1Recipe Switch RequestBOOLAuf HIGH setzen, um einen Rezeptwechsel zu der in O.Data[4] angegebenen ID anzufordern. Halten, bis Recipe Switch Ack (I.Data[0].2) auf HIGH wechselt, dann zurücksetzen.0

Bytes 1--3 -- Reserved​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
1O.Data[1]ReservedBYTEReserviert für zukünftige Verwendung.0x00
2O.Data[2]ReservedBYTEReserviert für zukünftige Verwendung.0x00
3O.Data[3]ReservedBYTEReserviert für zukünftige Verwendung.0x00

Bytes 4--5 -- Recipe ID​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibungStandardwert
4--5O.Data[4]--O.Data[5]Recipe IDUINT (16-Bit)Die Rezept-ID, zu der gewechselt werden soll. Tragen Sie hier die gewünschte Rezeptnummer ein, bevor Sie das Bit Recipe Switch Request setzen.0

Bytes 6--256 -- Custom Data for Node-RED​

Byte(s)PLC Tag AddressTag NameData TypeDescriptionDefault Value
6--256O.Data[6]--O.Data[256]Custom Data for Node-REDBYTE[]Benutzerdefinierte Daten, die Node-RED-Flows lesen können. Verwenden Sie diesen Bereich, um Seriennummern, Schwellenwerte, Teil-IDs oder andere Parameter an die Kamera zu übergeben.0x00

Bit-Mapping-Diagramme​

Die folgenden textbasierten Diagramme zeigen das vollständige Byte-/Bit-Layout für beide Assemblies. Jede Zeile repräsentiert ein Byte (oder einen Byte-Bereich), und jede Spalte repräsentiert eine Bit-Position (Bit 7 links, Bit 0 rechts).

Input Assembly Bit Map (OV20i → PLC)​

Byte │ Bit 7          │ Bit 6  │ Bit 5 │ Bit 4 │ Bit 3 │ Bit 2              │ Bit 1                      │ Bit 0
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
0 │ Online/Startup │ --- │ --- │ --- │ --- │ Recipe Switch Ack │ Trigger Ack │ Trigger Ready
│ Complete │ │ │ │ │ │ │
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
1 │ --- │ Busy │ --- │ --- │ --- │ --- │ Recipe Switch Error │ Trigger Error
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
2 │ --- │ --- │ --- │ --- │ --- │ Inspection Pass │ Inspection Completed / │ Exposure
│ │ │ │ │ │ │ Result Available │ Complete
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
3-5 │ --- │ --- │ --- │ --- │ --- │ --- │ --- │ ---
─────┼────────────────┼────────┼───────┼───────┼───────┼────────────────────┼────────────────────────────┼──────────────────
6-7 │ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
8-9 │ Current Recipe ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
10-11│ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
12-13│ Inspection ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
14-15│ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
16- │ ROI Results Assembly or Custom Data from Node-RED │
256 │ │

Output Assembly Bit Map (PLC → OV20i)​

Byte │ Bit 7 │ Bit 6 │ Bit 5 │ Bit 4 │ Bit 3 │ Bit 2 │ Bit 1                 │ Bit 0
─────┼───────┼───────┼───────┼───────┼───────┼───────┼───────────────────────┼────────────────
0 │ --- │ --- │ --- │ --- │ --- │ --- │ Recipe Switch Request │ Trigger Request
─────┼───────┼───────┼───────┼───────┼───────┼───────┼───────────────────────┼────────────────
1-3 │ Reserved │
─────┼──────────────────────────────────────────────────────────────────────────────────────────
4-5 │ Recipe ID (16-bit unsigned integer) │
─────┼──────────────────────────────────────────────────────────────────────────────────────────
6- │ Custom Data for Node-RED │
256 │ │

ROI Results Assembly – Details (Bytes 16--55)​

Wenn der Node-RED-Block Format Data for PLC mit Klassifizierungsrezepten verwendet wird, werden die Bytes ab Byte 16 des Input Assembly mit strukturierten Aligner- und ROI-spezifischen Daten wie folgt befüllt:

Aligner-Abschnitt (Bytes 16--23)​

Byte(s)PLC-Tag-AdresseTag-NameDatentypBeschreibung
16, Bit 0I.Data[16].0Aligner SuccessBOOLHIGH, wenn der Aligner das Teil erfolgreich lokalisiert hat.
17--18I.Data[17]--I.Data[18]Aligner ConfidenceUINT (16-Bit)Konfidenzwert der Ausrichtung (0--65535).
19--20I.Data[19]--I.Data[20]Aligner AngleINT (16-Bit, vorzeichenbehaftet)Übereinstimmender Winkel relativ zum Template.
21--23I.Data[21]--I.Data[23]Reserved (Aligner)BYTEReserviert für zukünftige Aligner-Daten.

ROI-Ergebnisblöcke (Bytes 24--55)​

Jede ROI belegt 8 Bytes. Es werden bis zu 4 ROIs unterstützt (ROI 0 bis ROI 3).

Struktur eines ROI-Blocks (wiederholt sich alle 8 Bytes):

Offset innerhalb des BlocksTag-NameDatentypBeschreibung
+0ROI IDUINT8 (8-Bit)Eindeutige numerische Kennung der ROI.
+1, Bit 0ROI PassBOOLHIGH = diese ROI bestanden, LOW = diese ROI nicht bestanden.
+2 bis +3ROI ConfidenceUINT (16-Bit)Konfidenzwert der Klassifizierung dieser ROI (0--65535).
+4 bis +7ReservedBYTEReserviert für zukünftige ROI-spezifische Daten.

Startadressen der ROIs:

ROIStart-BytePLC-AdressbereichID-AdressePass-AdresseConfidence-Adresse
ROI 024I.Data[24]--I.Data[31]I.Data[24]I.Data[25].0I.Data[26]--I.Data[27]
ROI 132I.Data[32]--I.Data[39]I.Data[32]I.Data[33].0I.Data[34]--I.Data[35]
ROI 240I.Data[40]--I.Data[47]I.Data[40]I.Data[41].0I.Data[42]--I.Data[43]
ROI 348I.Data[48]--I.Data[55]I.Data[48]I.Data[49].0I.Data[50]--I.Data[51]

Pufferkonfiguration​

Anzeigen der Standard-Tags in der Kamera-UI​

Das Standard-Tag-Layout wird durch die Kamera-Firmware definiert und entspricht den oben aufgeführten Tabellen. So zeigen Sie die aktuelle Konfiguration an:

  1. Öffnen Sie die OV20i-Weboberfläche.
  2. Navigieren Sie im linken Menü zu Industrial Ethernet.
  3. Wählen Sie Ihr Protokoll aus (EtherNet/IP oder PROFINET).
  4. Die Seite zeigt:
    • Verbindungsstatus und Geräteinformationen
    • Größen der Input- und Output-Assemblies (bis zu 256 Bytes pro Richtung)
    • Den Download-Link für die EDS- bzw. GSDML-Datei (in der auch die Standard-Assembly-Struktur kodiert ist)

Sowohl die EDS-Datei (für EtherNet/IP) als auch die GSDML-Datei (für PROFINET) definieren die Standard-Datengrößen. Wenn Sie das Kameramodul in Studio 5000 oder TIA Portal hinzufügen, bestimmen die Assembly-Größen aus diesen Beschreibungsdateien, wie viele Bytes pro Zyklus ausgetauscht werden.

Erstellen eines benutzerdefinierten Datenpuffers​

Um benutzerdefinierte Daten (über die Standard-Status-/Ergebnis-Tags hinaus) zwischen Kamera und PLC zu senden, verwenden Sie den Node-RED-Block "Format Data for PLC":

  1. Öffnen Sie Node-RED über die Kamera-Weboberfläche (navigieren Sie zum Node-RED-Editor).
  2. Platzieren Sie in Ihrem Rezept-Flow den Node "Format Data for PLC" zwischen dem Node "All Blocks Output Data" und dem Node "Send Data to PLC".
  3. Konfigurieren Sie die Byte-Reihenfolge:
    • Little-endian für Allen-Bradley- / Rockwell-PLCs
    • Big-endian für Siemens-PLCs
  4. Der Block formatiert Klassifikations-ROI-Ergebnisse automatisch in das strukturierte Layout ab Byte 16 der Input Assembly (siehe Abschnitt ROI Results Assembly Detail oben).

Für vollständig benutzerdefinierte Datenpuffer (ohne Verwendung des Standard-ROI-Formats):

  1. Verwenden Sie in Ihrem Node-RED-Flow einen Function-Node, um einen msg.payload-Buffer mit Ihrem gewünschten Byte-Layout zu erstellen.
  2. Verbinden Sie diesen mit dem Node "Send Data to PLC".
  3. Ihre benutzerdefinierten Bytes belegen die Input Assembly ab Byte 16.
  4. Lesen Sie auf PLC-Seite die entsprechenden Adressen I.Data[16] bis I.Data[256].

Ändern von Tag-Zuweisungen​

Die Kern-Tags (Bytes 0--15 der Input Assembly und Bytes 0--5 der Output Assembly) sind durch die Kamera-Firmware festgelegt und können nicht neu zugewiesen werden. Dies sind die Signale auf Systemebene (Trigger, Rezeptwechsel, Status, Fehler, Rezept-ID und Inspektions-ID).

Der konfigurierbare Bereich ist:

  • Input Assembly Bytes 16--256: Werden von Node-RED befüllt. Sie steuern, welche Daten hier abgelegt werden, indem Sie Ihren Node-RED-Flow konfigurieren. Der Block "Format Data for PLC" füllt diesen Bereich standardmäßig mit ROI-Ergebnissen, oder Sie können beliebige Daten mithilfe von Function-Nodes schreiben.
  • Output Assembly Bytes 6--256: Werden von Node-RED gelesen. Sie können beliebige Daten aus der PLC in diese Bytes schreiben und sie anschließend in Ihrem Node-RED-Flow über die entsprechenden Input-Nodes lesen. Dies ist nützlich, um Seriennummern, Los-IDs, Schwellenwerte oder andere Parameter von der PLC an die Kamera zu übertragen.

Senden benutzerdefinierter Daten von der PLC an die Kamera (Output Assembly)​

Um benutzerdefinierte Daten von der PLC an Node-RED zu übergeben:

  1. Schreiben Sie in Ihrem PLC-Programm Werte in O.Data[6] bis O.Data[256].
  2. Verwenden Sie in Node-RED auf der Kamera die PLC-Input-Daten-Nodes, um diese Bytes zu lesen.
  3. Nutzen Sie die Werte in Ihrer Flow-Logik (z. B. Schwellenwerte, Seriennummern, bedingte Parameter).

Schnellreferenz: Tag-Adressen-Spickzettel​

Die folgende Tabelle fasst die am häufigsten verwendeten Tags an einem Ort zusammen, um sie während der SPS-Programmierung schnell nachschlagen zu können:

SPS-AdresseRichtungSignalnameVerwendung
I.Data[0].0Kamera → SPSTrigger ReadyVor dem Auslösen prüfen
I.Data[0].1Kamera → SPSTrigger AcknowledgeTrigger zurücksetzen, nachdem dieses HIGH wird
I.Data[0].2Kamera → SPSRecipe Switch AckRezeptanforderung zurücksetzen, nachdem dieses HIGH wird
I.Data[0].7Kamera → SPSOnline / Startup CompleteBestätigen, dass die Kamera gebootet ist
I.Data[1].0Kamera → SPSTrigger ErrorAuf Trigger-Fehler überwachen
I.Data[1].1Kamera → SPSRecipe Switch ErrorAuf Rezeptwechsel-Fehler überwachen
I.Data[1].6Kamera → SPSBusyKeine Befehle senden, solange HIGH
I.Data[2].0Kamera → SPSExposure CompleteBild aufgenommen
I.Data[2].1Kamera → SPSResult AvailablePass/Fail kann sicher gelesen werden
I.Data[2].2Kamera → SPSInspection PassHIGH = Pass, LOW = Fail
I.Data[8]--I.Data[9]Kamera → SPSCurrent Recipe IDRezept nach Wechsel verifizieren
I.Data[12]--I.Data[13]Kamera → SPSInspection IDErgebnisse mit Triggern korrelieren
O.Data[0].0SPS → KameraTrigger RequestHIGH halten, um auszulösen
O.Data[0].1SPS → KameraRecipe Switch RequestHIGH halten, um Rezept zu wechseln
O.Data[4]--O.Data[5]SPS → KameraRecipe IDGewünschte Rezeptnummer einstellen
O.Data[6]+SPS → KameraCustom DataBenutzerdefinierte Daten für Node-RED
I.Data[16]+Kamera → SPSROI Results / Custom DataROI-Ergebnisse oder benutzerdefinierte Node-RED-Ausgabe