Want to learn more?

Call us

Email us

Request support

cab and the Smart Factory:
Networked labeling with OPC UA


In the industrial sectors, more and more productional and logistic environments are based on digital process control systems. Machines exchange information with human beings or with other machines, process manufacture-relevant data autonomously, feed data or forward it. Individualization, scalability, lean and traceable processes as well as reliable devices and components are key requirements.

Most of the applications or services on which the control systems are based are hosted on the Internet. Data from sensors, devices or software are transferred to the Cloud and can easily be exchanged between printers or labeling systems, robots and IT systems - provided that they all speak the same language and understand one other.

The protocol

Open Platform Communications Unified Architecture, abbr. OPC UA, creates the basis for interacting machines and components from different manufacturers in an industrial surrounding. In the OPC UA, various specifications have been united to a consistent data model, thus creating a new interface standard. OPC UA triggers networking in industrial manufacturing, as we know it from network and USB interfaces in offices.


Connected with cab devices

You put a production plant into operation? Or you plan to network your material warehouses according to Industry 4.0? If an IP-ready network is available, OPC UA can already be used as a consistent framework for machine-to-machine information access. In the matter of marking components, products or packaging within a plant, cab label printers of the current generation as well as IXOR labeling devices are already OPC UA-ready. They are able to cooperate with superior control units.

Industrie 4.0

Highlights at a glance

  • On demand production
  • Automated processes
  • Device configuration
  • Remote device control
  • Device monitoring
  • Interoperability
  • Prognostics and analysis
  • Traceability
  • Inventory resp. stock optimization
  • Shortening of distances
  • Transparency

Event-driven labeling

Asking a label printer at the press of a button how he is doing is outfashioned. Today, smart devices automatically indicate that they want to be maintained or that the material to be printed resp. the ribbon are running short and must be replaced. Labels can be loaded remotely, as well as label characteristics can be read and variable data can be exchanged for printing. Operating parameters such as the print head's running performance so far, its temperature or the number of labels still to be printed in the current job are displayed just in time. Information is transferred by the printer to the plant control system, which identifies and interpretes the information and directly initiates the appropriate measure.

OPC UA as a superior control system offers the advantage of bringing together production data, alarms, events and data history controlled by software under one roof. It integrates and unifies various address spaces and the interfaces to be accessed.

Video OPC UA

Networked labeling with OPC UA

Watch video

OPC UA with cab printers

OPC UA features that are at present supported by cab devices* are as followed:

  •  Communication Stack
         OPC UA binary protocol
  • Encryption
  • Authentication
         user name/password

While fully authenticated users may have full access to the provided data model, anonymous users may only access printer nodes read-only and are not granted to call any method, even if the method does not change the printer's configuration or state.

  • OPC UA Services
         SecureChannel Service Set
         Session Service Set
         Attribute Service Set: reading/writing of attributes, events, no historical data access
         Method Service Set
         MonitoredItem Service Set
         Subscription Service Set
         View Service Set

The OPC UA Server can be activated under Settings / Interfaces / Network Services.

* cab label printers SQUIX, MACH 4S, EOS2, EOS5, HERMES Q, PX Q, labeling heads IXOR

Information model

cab printers implement the OPC UA Device Integration (DI) model. Two namespaces are provided:

http://cab.de/printer for print job monitoring and control
http://cab.de/printer/setup for device configuration

The functions displayed on the following pages correspond to the current status and are continuously further developed.

Industrie 4.0

Namespace http://cab.de/Printer

This namespace provides access to the current state of the printer, including the state of the I/Os, printer model information or any information about the current job status.

Node name Node class Description
Printer Object The primary entry point for accessing the printer's information model
FPGARevision, Manufacturer,
Model, SerialNumber,
Variable Supply hardware and software versioning information
Bitmap Method Returns the last printed label in .png format
Screen Method Returns a screenshot of the printer's display in .png format
I/O Object Provides software access to the printer's I/O; generates
LBLWARN Variable Warning before end of labels
RIBERR Variable Transfer ribbon to end
RIBWARN Variable Warning before end transfer ribbon
SetInput Method Set input of I/O interface: PAUSE, LBLROT
LabelBitmap Method Print image of the current label in .png format. Unlike the bitmap method, label orientation and size are taken into account here
ENDPOS Variable Applicator is in labeling position
ERROR Variable The printer is in error state
FEEDON Variable A feed is currently in progress, i.e. paper is moving
HOMEPOS Variable Applicator is in home position
JOBRDY Variable Print data is available
MEDERR Variable End of paper or ribbon
PEELPOS Variable Label is in peel position
READY Variable Printer is ready
I/O Status Variable Output status of the I/O interface, defined by a combination of the following values:
(partly only HERMES Q)
TriggerInput Method Allowing to trigger an I/O input, one of
Interpreter Object Job status information; generates
ErrorEvent, JobInfoEvent and JobFinishEvent
JPhase  Variable Current state of the JScript interpreter
QueryObject Methode Query of existing JScript objects
Current Label Object Available whenever a job is executed by the Interpreter
Current Id Variable Unique job Id of current job
Current Name Variable Job name; name of the current job in Interpreter as provided by JScript j command
Current Content Fields Object Root node of named label content fields. They may be replaced by setting the value of the content nodes.
abc Status Variable Current status of integrated abc basic interpreter:
one of Idle, Compiling, Running, RuntimeError oder SyntaxError
Active Variable Indicates printer is active, i.e. interpreting or printing
Available Space Variable Available print queue memory in %
ESCs Variable String containing the result of JScript's ESCs command
ESCz Variable String containing the result of JScript's ESCz command
Error Variable Provides detailed error information as in the ESCs command;
the numeric value may be interpreted as an ASCII char, e.g. 45 == '-' No error
Labels To Print Variable Labels to be printed within the current job
Last Job Variable Name of last job; see the corresponding direct JScript command j
Online Variable Printer is ONLINE, i.e. the graphical user interface shows the home screen
Paused Variable Printer is in PAUSE
CancelJob Method Allows the cancellation of the current print job
LoadLabel Method Allows to load a label from any printer storage
PrintData Method Allows to send JScript print data directly to the printer
TotalCancel Method Cancels all print jobs scheduled or currently printed by the printer
Ribbon Object  
Ribbon RibbonDiameter Variable Detected ribbon diameter in millimeters
Ribbon RibbonLow Variable Indicates whether the ribbon is considered to be low in reference to the corresponding printer setting
Statistics Object  
Statistics Labels Variable Number of labels printed
Statistics Operating Time Variable Uptime of printer in minutes
Statistics Thermal Direct Variable Printed thermal direct material in millimeters
Statistics Thermal Transfer Variable Printed thermal transfer material in millimeters
Paper Diameter Variable Calculated diameter of the label remnant at the unwinder in millimeters (HERMES Q only)
Paper Low Variable Low label residual quantity according to setting in printer menu (HERMES Q only)
SubDevices Object  
Applicator* Object  
Barcode Verifier* Object  
Cutter* Object  
Cutter* Can Perforate Variable The attached cutter device may be used for perforation.
Cutter* Has Stacking Box Variable The attached cutter device has a stacking box.
Demand Sensor* Object  
     Sensor Status Variable Photo sensor status
Rewinder* Object  
Ribbon Saver* Object Detected ribbon diameter in millimeters
Ribbon Sync Variable Ribbon Saver is initialized and fully operational.
Ribbon Head State Variable Current state of the print head, one of Printing or Saving
Ribbon Synchronize Method Issues a ribbon saver synchronization command; only relevant for service tasks
Ribbon ToggleHead Method Toggles the head state up or down; only relevant for service tasks
TPH 1 Object Print head information
TPH 1 Model Variable Human readable description string of the installed print head
TPH 1 SoftwareRevision Variable  
TPH 1 Open Variable Open state
TPH 1 SerialNumber Variable Serial string of print head
TPH 1 Temperature Variable Current print head temperature in °C
TPH 1 Statistics Object Statistics correlated with the print head
Storage Object  
FileDelete Method Deletes a file on a disk of the printer
FileDownload Method Downloads a file on a disk of the printer to the client
FileList Method Lists all files on a disk of the printer
FileUpload Method Downloads a file of the client to a disk of the printer
FontList Method Queries the fonts available on the printer
IFFS Object (I)nternal (F)lash (F)ile (S)ystem
IFFS IFFS Available Space Variable Space available on the file system in kB
IFFS Capacity Variable Capacity of the file system in kB
SD Card Object  
SD Card SD Card Attached Variable Indicates whether the file system is attached or not
USB Memory Object  

* Optional node, only available with service key attached

Important note: According to the OPC UA Device Integration specification, methods must always be called in the MethodSet of the device, even if they are linked in separate FunctionalGroup for better assignment. A call via the FunctionalGroup always leads to an error.

Namespace http://cab.de/Printer/Setup

This namespace provides full access to the printer's configuration tree, which is modeled in the same way as the setting levels of the graphical user interface. The actual position of configuration parameters within the tree is subject to change, so it is not safe to look up a node via it's browse path. Instead, configuration nodes may be directly accessed by their unique string identifier.

Node name Node class Description
Setup Object This sub-node of the Printer node is the primary entry point for accessing the printer's setup; generates SetupValueChangeEvent and SetupVisibilityChangeEvent aus
SetOpcUaClientUrl Method Storage of an OPC UA server address for use in standalone mode.
ExportSettings Method Exports printer configuration in .xml format
ImportSettings Method Imports printer configuration in .xml format
ImportCertificateTLS Method Imports a custom TLS certificate
Reset Method Reset to factory defaults
ResetPasswords Method Reset passwords to factory defaults
<SetupFolder> Object Contains setup values
             <SetupValue> Object A setup value which can be edited
                    IsActive Variable This setup parameter is currently accessible in the printer's graphical user interface.

The following setup value types are available:

  • Boolean values
  • Enumerations
  • String values contain the fields
    Regex, an optional regular expression which will be applied to a write operation on the attribute's value
  • Numeric values contain the fields
    ToggleInt (optional, for display purpose)
    Unit (optional, for display purpose)
  • Passwords contain minimum and maximum length attributes just like string values

Important note: According to the OPC UA Device Integration specification, methods must always be called in the MethodSet of the device, even if they are linked in separate FunctionalGroup for better assignment. A call via the FunctionalGroup always leads to an error.


Beyond OPC UA standard events, cab printers provide the following supplementary events.

Event name Type Description
ErrorEvent   Emitted whenever a printer error occurs; generated by node Interpreter
Message LocalizedText Error message
Detail1 LocalizedText More details about the supplied error
Detail2 LocalizedText Even more details about the supplied error
JobInfoEvent   Emitted whenever a label is printed; generated by node Interpreter
LabelNo Int32 Number of label within current job
JobSize Int32 Size of job
IsTestPrint Boolean Indices that currently printed label is a test print
JobFinishEvent   Emitted whenever a job is finished and the printer returns to Idle; generated by node Interpreter
no further fields    
SetupValueChangeEvent   Emitted whenever a setup value changes; generated by node Setup
SourceName String The name of the affected setup parameter
SetupVisibilityChangeEvent   Emitted whenever a setup value changes its visibility state, typically due to interdependencies; generated by node Setup
SourceName String The name of the affected setup parameter
IOStatusChangeEvent   Emitted whenever the I/O status of the device changes; generated by node I/O
Status UInt32 New printer status as described in Printer->IO->Status

Limitations: The OPC UA stack implementation currently does not support:

  • Different kinds of Monitored items - either Change notify or Event notify - within a single subscription though multiple Monitored items of the same kind in a subscription is allowed
  • Where clauses in Monitored items requests
  • Alarms and conditions

OPC UA Client Support in the printer

Using the JScript special command OPCUA the printer can read data from OPC UA servers in standalone mode and insert it into the label layout:

   m m
   H 75,0
   S l1;0,0,25,29,50
   E OPCUA;opc.tcp://
   T 20,20,0,3,10;[OPCUA:2:DeviceSet,3:Printer,2:SoftwareRevision]
   A 1

In order to be able to address several OPC UA servers, the concept of a slot is used. A slot number can be added to the token OPCUA, so that up to five different server systems can be queried:

   m m
   H 75,0
   S l1;0,0,25,29,50

   ; Connection using a user name and password
   E OPCUA-0;opc.tcp://opcuser:opcpass@

   ; Anonymous connection
   E OPCUA-1;opc.tcp://

   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

As an alternative to specifying the browsepath, node IDs can also be specified for the data query in the OPCUA special command:

   m m
   H 75,0
   S l1;0,0,25,29,50
   E OPCUA;opc.tcp://
   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

The following data types are supported:

  •      integer numeric data types
  •      floating point values
  •      String, ByteString, XmlElement
  •      Boolean values
  •      LocalizedText
  •      DateTime
  •      Range
  •      EUInformation
  •      Enumerations

The connection information does not necessarily have to be stored in the label but can be stored in the global configuration of the printer instead. The OPC UA function SetOpcUaClientUrl is used for this purpose. By specifying the desired slot and the address to be used, up to 5 different connection information can also be stored here. In this case the E command in the label can be omitted.

For developers

Our GitHub repository provides detailed technical information and sample code for our OPC UA server. Implementations are available in C++ (using the open62541 library) and Python (using the python-opcua library).

Industrie 4.0 with cab devices



January 2021

cab Produkttechnik GmbH & Co KG

Wilhelm-Schickard-Str. 14
76131 Karlsruhe

Call us
Email us
Request support

cab Newsletter

Our cab newsletter will inform you regulary about the topic marking by email. You can cancel the newsletter at any time.

subscribe now!

Find cab on:

Live Chat