cab und die intelligente Fabrik:
Vernetzt kennzeichnen mit OPC UA
Anforderungen
In der Industrie basieren Produktions- und Logistikumgebungen immer mehr auf digitalen Prozessleitsystemen. Maschinen tauschen Informationen mit Menschen oder anderen Maschinen aus, verarbeiten produktionsrelevante Daten autonom, speisen diese ein oder leiten sie weiter. Individualisierung, Skalierbarkeit, schlanke und rückverfolgbare Prozesse sowie zuverlässige Geräte und Komponenten sind Schlüsselanforderungen.
Die den Leitsystemen zugrundeliegenden Applikationen oder Dienste werden mehrheitlich im Internet gehostet. Daten von Sensoren, Geräten oder Software landen in der Cloud und können so leicht zwischen Druckern oder Etikettierern, Robotern und IT-Systemen ausgetauscht werden – vorausgesetzt, diese sprechen alle dieselbe Sprache und verstehen einander.
Das Protokoll
Open Platform Communications Unified Architecture, kurz OPC UA, schafft die Voraussetzung für interagierende Maschinen und Komponenten unterschiedlicher Hersteller in einem industriellen Umfeld. Verschiedene Spezifikationen wurden in der OPC UA auf ein einheitliches Datenmodell portiert und so ein neuer Schnittstellenstandard geschaffen. OPC UA stößt Vernetzung, wie wir sie anhand von Netzwerk- und USB-Schnittstellen im Büro kennen, in der industriellen Fertigung an.
Vernetzung mit cab Geräten
Sie nehmen eine Produktionsanlage in Betrieb? Oder Sie planen, Ihre Materiallager entsprechend Industrie 4.0 zu vernetzen? Ist ein IP-fähiges Netzwerk vorhanden, kann OPC UA bereits als einheitliches Framework für den maschinenübergreifenden Informationszugriff genutzt werden. Für die Kennzeichnung von Bauteilen, Produkten oder Verpackungen innerhalb der Anlage sind cab Etikettendrucker der aktuellen Generation sowie die Etikettiergeräte IXOR bereits OPC UA-fähig. Sie sind dazu in der Lage, mit übergeordneten Steuerungen zu kooperieren.
Highlights auf einen Blick
- Fertigung auf Anforderung
- Prozessautomation
- Konfiguration von Geräten
- Fernsteuerung von Geräten
- Überwachung von Geräten
- Interoperabilität
- Prognosen und Analysen
- Rückverfolgbarkeit
- Vorrats- bzw. Bestandsoptimierung
- Wegeverkürzung
- Transparenz
Ereignisgesteuert kennzeichnen
Den Etikettendrucker per Tastendruck danach fragen, wie es ihm gerade geht, war gestern. Heute verständigen smarte Geräte automatisch darüber, dass sie gewartet werden wollen oder dass das zu bedruckende Material oder die Transferfolie im Gerät zur Neige gehen und ersetzt werden müssen. Etiketten lassen sich remote laden, ebenso Etiketteneigenschaften auslesen und Variablen für den Druck austauschen. Betriebsparameter wie die bisherige Laufleistung des Druckkopfs, dessen Temperatur oder die Zahl der im laufenden Auftrag noch zu druckenden Etiketten werden just in time mitgeteilt. Die Information wird vom Drucker an die Anlagensteuerung übergeben, von dieser erkannt und interpretiert und direkt die entsprechende Maßnahme initiiert.
OPC UA als übergeordnete Steuerung bietet hier den Vorteil, Produktionsdaten, Alarme, Ereignisse und historische Daten softwaregesteuert unter einem Dach zusammenzubringen. Sie integriert und vereinheitlicht die unterschiedlichen Adressräume und die Schnittstellen zum Zugriff.
OPC UA mit cab Druckern
Nachfolgend OPC UA-Leistungsmerkmale, die von cab Geräten* aktuell unterstützt werden:
- Kommunikationsstack
binäres OPC UA-Protokoll - Verschlüsselung
ohne
Basic128Rsa15
Basic256Sha256 - Authentifizierung
anonym
Benutzername/Passwort
Vollständig authentifizierte Benutzer erhalten Zugriff auf alle bereitgestellten Leistungsmerkmale. Anonyme Benutzer erhalten Leserechte für die Druckerknoten, das Aufrufen von Methoden ist jedoch nicht möglich - auch dann nicht, wenn die Druckerkonfiguration/der Druckerstatus hiervon unbetroffen bleiben.
- OPC UA Services
SecureChannel Service Set
Session Service Set
Attribute Service Set: Lesen/Schreiben von Attributen, Ereignisse, keine Datenhistorie
Method Service Set
MonitoredItem Service Set
Subscription Service Set
View Service Set
Der OPC UA Server kann unter Einstellungen / Schnittstellen / Netzwerkdienste aktiviert werden.
* Etikettendrucker SQUIX, MACH 4S, EOS2, EOS5, HERMES Q, PX Q, AXON 2, Etikettiergeräte IXOR
Informationsmodell
cab Drucker implementieren das Informationsmodell OPC UA Device Integration (DI). Es stehen zwei Namensräume zur Verfügung:
http://cab.de/Printer für die Überwachung und Steuerung von Druckaufträgen
http://cab.de/Printer/Setup für die Gerätekonfiguration
Die Funktionen auf den nachfolgenden Seiten entsprechen dem gegenwärtigen Stand und werden fortlaufend weiterentwickelt.
Namensraum http://cab.de/Printer
Dieser Namensraum ermöglicht den Zugriff auf den aktuellen Druckerstatus, einschließlich den Status der I/Os, Informationen zum Druckermodell oder jedwede Statusinformation zum laufenden Druckauftrag.
Bezeichnung des Knotens | Knotenklasse | Beschreibung |
---|---|---|
Printer | Objekt | Zentraler Einstiegspunkt zum Informationsmodell des Druckers |
FPGARevision, Manufacturer, Model, SerialNumber, SoftwareRevision, HardwareRevisionSerial |
Variable | Informationen zu den verbauten Hardware- und Softwareversionen |
Bitmap | Methode | Erlaubt den Zugriff auf das zuletzt gedruckte Etikett im .png-Format |
Screen | Methode | Liefert ein Bildschirmfoto des Druckerdisplays im .png-Format |
I/O | Objekt | Erlaubt den Zugriff auf die I/O-Schnittstelle des Druckers; löst IOStatusChangeEvent aus |
LBLWARN | Variable | Warnung vor Ende der Etiketten |
RIBERR | Variable | Transferfolie zu Ende |
RIBWARN | Variable | Warnung vor Ende Transferfolie |
SetInput | Methode | Eingang der I/O-Schnittstelle setzen: PAUSE, LBLROT |
LabelBitmap | Methode | Druckbild des aktuellen Etiketts im .png-Format. Im Gegensatz zur Bitmap-Methode sind hier Etikettenausrichtung und -größe berücksichtigt |
ENDPOS | Variable | Applikator befindet sich in der Position, aus der die Etikettenübertragung zum Produkt stattfindet |
ERROR | Variable | Fehler |
FEEDON | Variable | Papiertransport EIN |
HOMEPOS | Variable | Applikator befindet sich in der Position, aus der die Etikettenübernahme vom Drucker stattfindet |
JOBRDY | Variable | Druckauftrag bereit |
MEDERR | Variable | Papier- oder Transferfolienende |
PEELPOS | Variable | Etikett in Spendeposition |
READY | Variable | Drucker bereit |
I/O Status | Variable | Ausgangsstatus der I/O-Schnittstelle, definiert durch eine Kombination folgender Werte: RIBWARN 1 HOMEPOS 8 ERROR 64 RIBERR 512 ENDPOS 2 PEELPOS 16 READY 128 MEDERR 1024 FEEDON 4 JOBRDY 32 LBLWARN 256 (z.T. nur HERMES Q) |
TriggerInput | Methode | Eingang der I/O-Schnittstelle triggern: FSTLBL, REPRINT, START, LBLREM, JOBDEL, RSTERR, STOP, LBLFEED |
Interpreter | Objekt | Informationen zum aktuellen Job-Status; löst ErrorEvent, JobInfoEvent und JobFinishEvent aus |
JPhase | Variable | Aktueller Zustand des JScript Interpreters |
QueryObject | Methode | Abfrage vorhandener JScript Objekte |
Current Label | Objekt | Verfügbar, wenn ein Druckauftrag im Interpreter bearbeitet wird |
Current Id | Variable | Eindeutige Kennung des aktuellen Druckauftrags |
Current Name | Variable | Jobname; Name des aktuellen Druckauftrags gemäß Angabe im JScript j Kommando |
Current Content Fields | Objekt | Root-Knoten der dynamischen Felder im aktuellen Etikett. Der Inhalt der Felder kann mittels Setzen neuer Werte auf dem entsprechenden Knoten ersetzt werden. |
abc Status | Variable | Status des abc Basic Interpreters: Idle, Compiling, Running, RuntimeError oder SyntaxError |
Active | Variable | Drucker ist aktiv, z. B. Druckdaten interpretieren oder drucken |
Available Space | Variable | Für die Druckverarbeitung zur Verfügung stehender Speicherplatz in % |
ESCs | Variable | Zeichenkette analog zu JScript ESCs |
ESCz | Variable | Zeichenkette analog zu JScript ESCz |
Error | Variable | Analog zu ESCs; der numerische Wert muss als ASCII-Zeichen interpretiert werden, so bedeutet z. B. 45 == '-' Kein Fehler |
Labels To Print | Variable | Anzahl der zu druckenden Etiketten im aktuellen Druckauftrag |
Last Job | Variable | Name des zuletzt erfolgreich bearbeiteten Druckauftrags; vgl. das JScript-Kommando j |
Online | Variable | Drucker befindet sich im Zustand ONLINE, d.h., am Display wird der Startbildschirm angezeigt |
Paused | Variable | Drucker befindet sich im Zustand PAUSE |
CancelJob | Methode | Erlaubt den Abbruch des aktuellen Druckauftrags |
LoadLabel | Methode | Erlaubt das Laden einer Etikettendatei vom Speichermedium |
PrintData | Methode | Erlaubt das direkte Verarbeiten von gesendeten JScript-Daten |
TotalCancel | Methode | Erlaubt den Abbruch sämtlicher Druckaufträge |
Ribbon | Objekt | |
Ribbon RibbonDiameter | Variable | Errechneter Durchmesser der Transferfolienrestmenge am Abwickler in Millimeter |
Ribbon RibbonLow | Variable | Niedrige Transferfolienrestmenge gemäss Einstellung im Druckermenü |
Statistics | Objekt | |
Statistics Labels | Variable | Anzahl der Etiketten, die seit der Inbetriebnahme gedruckt wurden |
Statistics Operating Time | Variable | Betriebsdauer des Druckers in Minuten |
Statistics Thermal Direct | Variable | Im Thermodirektverfahren bisher bedruckte Papierlänge in Millimeter |
Statistics Thermal Transfer | Variable | Im Thermotransferverfahren bisher bedruckte Papierlänge in Millimeter |
Paper | ||
Paper Diameter | Variable | Errechneter Durchmesser der Etikettenrestmenge am Abwickler in Millimeter (nur HERMES Q) |
Paper Low | Variable | Niedrige Etikettenrestmenge gemäss Einstellung im Druckermenü (nur HERMES Q) |
SubDevices | Objekt | |
Applicator* | Objekt | |
Barcode Verifier* | Objekt | |
Cutter* | Objekt | |
Cutter* Can Perforate | Variable | Ein Perforationsmesser ist angeschlossen. |
Cutter* Has Stacking Box | Variable | Das angeschlossene Messer beinhaltet eine Stapelbox. |
Demand Sensor* | Objekt | |
Sensor Status | Variable | Aktueller Zustand der Lichtschranke |
Rewinder* | Objekt | |
Ribbon Saver* | Objekt | |
Ribbon Sync | Variable | Das Transferfoliensparmodul ist vollständig initialisiert. |
Ribbon Head State | Variable | Aktuelle Position des Druckkopfs, Printing oder Saving |
Ribbon Synchronize | Methode | Löst eine Synchronisierung des Transferfoliensparmoduls aus; nur relevant zu Servicezwecken |
Ribbon ToggleHead | Methode | Schaltet die Position des Druckkopfs um; nur relevant zu Servicezwecken |
TPH 1 | Objekt | Druckkopfinformationen |
TPH 1 Model | Variable | Typinformationen zum Druckkopf |
TPH 1 SoftwareRevision | Variable | |
TPH 1 Open | Variable | Status, ob Druckkopf geöffnet ist |
TPH 1 SerialNumber | Variable | Seriennummer des Druckkopfs |
TPH 1 Temperature | Variable | Aktuelle Druckkopftemperatur in °C |
TPH 1 Statistics | Objekt | Statistikinformationen zu diesem Druckkopf |
Storage | Objekt | |
FileDelete | Methode | Löscht eine Datei auf einen Datenträger des Druckers |
FileDownload | Methode | Lädt eine Datei auf einem Datenträger des Druckers zum Client herunter |
FileList | Methode | Listet alle Dateien eines Datenträgers des Druckers |
FileUpload | Methode | Lädt eine Datei des Clients auf einen Datenträger des Druckers |
FontList | Methode | Abfrage der auf dem Drucker zur Verfügung stehenden Schriftarten |
IFFS | Objekt | (I)nternal (F)lash (F)ile (S)ystem |
IFFS Available Space | Variable | Auf dem Dateisystem zur Verfügung stehender Speicherplatz in kB |
IFFS Capacity | Variable | Kapazität des Dateisystems in kB |
SD Card | Objekt | Abfrage der auf dem Drucker zur Verfügung stehenden Schriftarten |
SD Card Attached | Variable | Dateisystem ist eingehängt |
USB Memory | Objekt |
* Knoten als Option nur mit angeschlossenem Service Key
Wichtiger Hinweis: Methoden müssen gemäss der OPC UA Device Integration Spezifikation immer im MethodSet des Geräts aufgerufen werden, auch wenn sie zur besseren Zuordnung in separate FunctionalGroup verlinkt sind. Ein Aufruf über die Funktionsgruppe führt immer zu einem Fehler.
Namensraum http://cab.de/Printer/Setup
Dieser Namensraum bietet vollen Zugriff auf den Konfigurationsbaum des Druckers, der analog den Einstellungsebenen im Druckerdisplay aufgebaut ist. Die tatsächliche Position der Konfigurationsparameter innerhalb des Baums kann sich ändern, weshalb es unsicher ist, einen Knoten über seinen Stammpfad aufzurufen. Anstelle dessen sind Konfigurationsknoten am besten direkt über ihre eindeutige String-Kennung anzusprechen.
Bezeichnung des Knotens | Knotenklasse | Beschreibung |
---|---|---|
Setup | Objekt | Dieser Unterknoten des Knotens Printer stellt den zentralen Einstiegspunkt für den Zugriff auf die Druckereinstellungen dar; löst SetupValueChangeEvent und SetupVisibilityChangeEvent aus |
SetOpcUaClientUrl | Methode | Speicherung einer OPC UA Serveradresse für die Benutzung im Standalone Modus. |
ExportSettings | Methode | Exportiert Druckereinstellungen im .xml-Format |
ImportSettings | Methode | Importiert Druckereinstellungen im .xml-Format |
ImportCertificateTLS | Methode | Importiert ein TLS-Zertifikat |
ResetSettings | Methode | Einstellungen auf Werkszustand zurücksetzen |
ResetPasswords | Methode | Passwörter auf Werkszustand zurücksetzen |
< setupfolder> |
Objekt | Enthält Konfigurationsparameter oder weitere Ordner als Unterknoten |
< SetupValue> |
Objekt | Erlaubt den Zugriff auf einen Konfigurationsparameter |
IsActive | Variable | Zeigt an, ob dieser Konfigurationsparameter aktuell über die grafische Schnittstelle des Druckers zugreifbar ist |
Für das Setup stehen die folgenden Werte zur Verfügung:
- Boolesche Werte
- Aufzählungen
- String-Werte mit den Feldern
MinLen
MaxLen
Regex, ein optionaler regulärer Ausdruck, der bei einem Schreibvorgang auf den Wert des Attributs angewendet wird - Numerische Werte mit den Feldern
Range
Step
ToggleInt (optional, zum Zweck der Anzeige)
Unit (optional, zum Zweck der Anzeige) - Passwörter schließen, wie die String-Werte, Attribute zur minimalen und maximalen Länge ein
Wichtiger Hinweis: Methoden müssen gemäss der OPC UA Device Integration Spezifikation immer im MethodSet des Geräts aufgerufen werden, auch wenn sie zur besseren Zuordnung in separate FunctionalGroup verlinkt sind. Ein Aufruf über die Funktionsgruppe führt immer zu einem Fehler.
Events
Neben OPC UA-Standardevents bieten cab Drucker die nachfolgenden ergänzenden Events.
Bezeichnung des Knotens | Typ | Beschreibung |
---|---|---|
ErrorEvent | Wird beim Übergang in einen Fehlerzustand ausgelöst; ausgelöst durch den Knoten Interpreter | |
Message | LocalizedText | Fehlermeldung |
Detail1 | LocalizedText | Detailliertere Fehlerinformationen |
Detail2 | LocalizedText | Noch detailliertere Informationen |
JobInfoEvent | Wird für jedes zu druckende Etikett zu Druckbeginn ausgelöst; ausgelöst durch den Knoten Interpreter | |
LabelNo | Int32 | Nummer des Etiketts im aktuellen Druckauftrag |
JobSize | Int32 | Anzahl zu druckender Etiketten im aktuellen Druckauftrag |
IsTestPrint | Boolean | Zeigt an, dass es sich bei diesem Auftrag um einen Testdruck handelt |
JobFinishEvent | Wird am Auftragsende ausgelöst, sobald der Drucker zurück in den Idle-Zustand geht; ausgelöst durch den Knoten Interpreter | |
keine weiteren Felder | ||
SetupValueChangeEvent | Wird ausgelöst, sobald sich der Wert eines Konfigurationsparameters ändert; ausgelöst durch den Knoten Setup |
|
SourceName | String | Der Bezeichner des sich ändernden Konfigurationsparameters |
SetupVisibilityChangeEvent | Wird ausgelöst, sobald sich die Sichtbarkeit eines Konfigurationsparameters ändert, üblicherweise aufgrund von Äbhangigkeiten untereinander; ausgelöst durch den Knoten Setup | |
SourceName | String | Der Bezeichner des sich ändernden Konfigurationsparameters |
IOStatusChangeEvent | Wird bei Änderung des I/O-Status des Geräts ausgelöst; ausgelöst durch den Knoten I/O | |
Status | UInt32 | Neuer Druckerstatus wie beschrieben unter Printer->IO->Status |
Einschränkungen: Aktuell unterstützt der OPC UA-Server nicht die folgenden Funktionen:
- Monitored items - entweder Change notify oder Event notify - innerhalb einer einzelnen Subscription, auch wenn Monitored items in einer Subscription erlaubt sind
- Where clauses in Monitored items requests
- Alarms and conditions
OPC UA Client Support im Drucker
Mithilfe des JScript Spezialkommandos OPCUA kann der Drucker im Standalone Modus Daten von OPC UA Servern auslesen und in das Etikettenlayout einfügen:
m m
J
H 75,0
S l1;0,0,25,29,50
E OPCUA;opc.tcp://192.168.200.71:4840
T 20,20,0,3,10;[OPCUA:2:DeviceSet,3:Printer,2:SoftwareRevision]
A 1
Um mehrere OPC UA Server ansprechen zu können wird das Konzept eines Slots verwendet. An den Token OPCUA kann noch eine Slotnummer angefügt werden, so können bis zu fünf verschiedene Serversysteme abgefragt werden:
m m
J
H 75,0
S l1;0,0,25,29,50
; Verbindung mithilfe eines Benutzernamens und Passworts
E OPCUA-0;opc.tcp://opcuser:opcpass@192.168.200.71:4840
; anonyme Verbindung
E OPCUA-1;opc.tcp://192.168.200.53:4840
T 10,10,0,3,10;SW Rev Drucker 1: [OPCUA-0:2:DeviceSet,3:Printer,2:SoftwareRevision]
T 20,20,0,3,10;SW Rev Drucker 2: [OPCUA-1:2:DeviceSet,3:Printer,2:SoftwareRevision]
A 1
Alternativ zur Angabe des Browsepath können für die Datenabfrage im OPCUA Spezialbefehl auch Node-IDs angegeben werden:
m m
J
H 75,0
S l1;0,0,25,29,50
E OPCUA;opc.tcp://192.168.200.71:4840
T 20,20,0,3,10;[OPCUA:ns=3;i=50723]
T 10,10,0,3,10;[OPCUA:ns=4;s=ID_BACKFEED]
A 1
Folgende Datentypen werden unterstützt:
- ganzzahlige numerische Datentypen
- Fließkommawerte
- String, ByteString, XmlElement
- Boolesche Werte
- LocalizedText
- DateTime
- Range
- EUInformation
- Enumerationen
Die Verbindungsinformationen müssen nicht zwangsläufig im Etikett gespeichert werden sondern können stattdessen in der globalen Konfiguration des Druckers hinterlegt werden. Hierzu dient die OPC UA Funktion SetOpcUaClientUrl. Unter Angabe des gewünschten Slots und der zu verwendenden Adresse können auch hier bis zu 5 verschiedene Verbindungsinformationen gespeichert werden. In diesem Fall kann auf den E Befehl im Etikett verzichtet werden.
Für Entwickler
Unser GitHub-Repository enthält detaillierte technische Informationen und Beispielcode für unseren OPC UA Server. Verfügbar sind Implementierungen in C++ (mit der open62541 Bibliothek) und Python (mit der python-opcua Bibliothek).
cab modelliert Schnittstelle für Robotikanwendungen von morgen.
Januar 2021