5 Stacklights
5.1 Overview
A stacklight is used to visually or acoustically indicate the state or a specific event of an automation component. It is widely used in various areas of industrial automation. In Figure 1, examples of stacklights are given. They can vary in colours they display or acoustical signals they produce.

This section defines base modelling constructs to represent stacklights in an OPC UA Information Model. It does not define the relations to the triggers of a specific visualization or acoustic signal, like an Alarm or a specific Value of a Variable.
5.2 OPC UA ObjectTypes
5.2.1 BasicStacklightType

The BasicStacklightType is the entry point to a stacklight. It contains the elements of the stacklight as well as additional information valid for the whole unit. In Figure 2, a graphical overview is given. It is formally defined in Table 12.
| Attribute | Value | ||||
| BrowseName | BasicStacklightType | ||||
| IsAbstract | False | ||||
| Description | Entry point to a stacklight containing elements of the stacklight as well as additional information valid for the whole unit. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:OrderedListType, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasProperty | Variable | StacklightMode | StacklightOperationMode | 0:PropertyType | M |
| 0:HasComponent | Object | StackLevel | StackLevelType | O | |
| 0:HasComponent | Object | StackRunning | StackRunningType | O | |
| 0:HasOrderedComponent | Object | 0:<OrderedObject> | StackElementType | OP | |
StacklightMode shows in what way (stack of individual lights, level meter, running light) the stacklight unit is used.
StackLevel is only valid if the stacklight is used in “Levelmeter” StacklightMode. If so, the whole stack is controlled by a single percentual value. In this case, the SignalOn parameter of any <OrderedObject> of StackElementLightType has no meaning.
StackRunning is only valid if the stacklight is used in “Running_Light” StacklightMode.
The ordered component(s) <OrderedObject> represent the stack elements (lamps and acoustic elements) the stacklight is composed of. The HasOrderedComponent Reference shall represent the ordering from the base of the stacklight.
The InstanceDeclarations of the BasicStacklightType have the Attribute values defined in Table 13.
| Source Path | Value | Description |
| StacklightMode | - | Shows in what way (stack of individual lights, level meter, running light) the stacklight unit is used. |
| StackLevel | - | Valid if the stacklight is used in “Levelmeter” StacklightMode. If so, the whole stack is controlled by a single percentual value. In this case, the SignalOn parameter of any stack element of StackElementLightType has no meaning. |
| StackRunning | - | Valid if the stacklight is used in “Running_Light” StacklightMode. |
| 0:<OrderedObject> | - | Represent the stack elements (lamps and acoustic elements) the stacklight is composed of. The HasOrderedComponent Reference shall represent the ordering from the base of the stacklight. |
5.2.2 StacklightType

The StacklightType is a subtype of the BasicStacklightType. It adds the possibility to show the stacklight’s health status. In Figure 3, a graphical overview is given. It is formally defined in Table 14.
| Attribute | Value | ||||
| BrowseName | StacklightType | ||||
| IsAbstract | False | ||||
| Description | Entry point to a stacklight with the possibility to show the stacklight’s health status. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the BasicStacklightType defined in 5.2.1, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasInterface | ObjectType | 2:IDeviceHealthType | |||
| Properties of the 2:IDeviceHealthType | |||||
| 0:HasComponent | Variable | 2:DeviceHealth | 2:DeviceHealthEnumeration | 0:BaseDataVariableType | O |
| 0:HasComponent | Object | 2:DeviceHealthAlarms | 0:FolderType | O | |
DeviceHealth, defined in IDeviceHealthType, indicates the health status of the stacklight and shall be used as specified in OPC 10000-100.
DeviceHealthAlarms, defined in IDeviceHealthType, can be used to expose alarm instances and shall be used as specified in OPC 10000-100.
The InstanceDeclarations of the StacklightType have the Attribute values defined in Table 15.
| Source Path | Value | Description |
| 2:DeviceHealth | - | Contains the health status information of the stacklight. |
| 2:DeviceHealthAlarms | - | Contains alarms of the stacklights providing more detailed information on the health of the stacklight. |
5.2.3 StackLevelType

The StackLevelType contains the information relevant to a stacklight operating as a level meter. The whole stack is controlled by a percentual value. In Figure 4, a graphical overview is given. It is formally defined in Table 16.
| Attribute | Value | ||||
| BrowseName | StackLevelType | ||||
| IsAbstract | False | ||||
| Description | Contains information relevant to a stacklight operating as a level meter. The whole stack is controlled by a percentual value. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:BaseObjectType defined in OPC 10000-5, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasComponent | Variable | LevelPercent | 0:Float | 0:AnalogItemType | M |
| 0:HasComponent | Variable | DisplayMode | LevelDisplayMode | 0:BaseDataVariableType | M |
LevelPercent shows the percentual value the stacklight is representing. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent.
DisplayMode indicates in what way the percentual value is displayed with the stacklight.
The InstanceDeclarations of the StackLevelType have the Attribute values defined in Table 17.
| Source Path | Value | Description |
| LevelPercent | - | Shows the percentual value the stacklight is representing. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent. |
| DisplayMode | - | Indicates in what way the percentual value is displayed with the stacklight. |
5.2.4 StackRunningType
The StackRunningType contains the information relevant to a stacklight operating as a running light. This base type does not define any specific information, but can be extended. This Object is only of relevance when the StacklightMode is in mode “Running_Light”. It is formally defined in Table 18.
| Attribute | Value | ||||
| BrowseName | StackRunningType | ||||
| IsAbstract | False | ||||
| Description | Contains information relevant to a stacklight operating as a running light. This base type does not define any specific information, but can be extended. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node. | |||||
5.2.5 StackElementType

The StackElementType is the base class for elements in a stacklight. The elements are used in an ordered list. In Figure 5, a graphical overview is given. It is formally defined in Table 19.
| Attribute | Value | ||||
| BrowseName | StackElementType | ||||
| IsAbstract | True | ||||
| Description | Base class for elements in a stacklight. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasInterface | ObjectType | 0:IOrderedObjectType | |||
| 0:HasProperty | Variable | SignalOn | 0:Boolean | 0:PropertyType | O |
| 0:HasProperty | Variable | IsPartOfBase | 0:Boolean | 0:PropertyType | O |
| 0:HasProperty | Variable | 0:NumberInList | 0:UInteger | 0:PropertyType | M |
SignalOn indicates if the signal emitted by the stack element is currently switched on or not.
IsPartOfBase indicates, if the element is contained in the mounting base of the stacklight. All elements contained in the mounting base shall be at the beginning of the list of stack elements.
NumberInList is defined in the IOrderedObjectType and used in conjunction with the HasOrderedComponent Reference of the BasicStacklightType. It shall contain the same ordering information as the Reference and enumerate the stacklight elements counting upwards beginning from the base of the stacklight.
The InstanceDeclarations of the StackElementType have the Attribute values defined in Table 20.
| Source Path | Value | Description |
| SignalOn | - | Indicates if the signal emitted by the stack element is currently switched on or not. |
| IsPartOfBase | - | Indicates, if the element is contained in the mounting base of the stacklight. All elements contained in the mounting base shall be at the beginning of the list of stack elements. |
| 0:NumberInList | - | Enumerate the stacklight elements counting upwards beginning from the base of the stacklight. |
5.2.6 StackElementLightType

The StackElementLightType represents a lamp element in a stacklight. In Figure 6, a graphical overview is given. It is formally defined in Table 21.
| Attribute | Value | ||||
| BrowseName | StackElementLightType | ||||
| IsAbstract | False | ||||
| Description | Represents a lamp element in a stacklight. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the StackElementType defined in 5.2.5, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasComponent | Variable | SignalColor | SignalColor | 0:BaseDataVariableType | O |
| 0:HasComponent | Variable | SignalRGBWValue | RGBWDataType | 0:BaseDataVariableType | O |
| 0:HasComponent | Variable | SignalMode | SignalModeLight | 0:BaseDataVariableType | O |
| 0:HasComponent | Variable | Intensity | 0:Float | 0:AnalogItemType | O |
| 0:HasComponent | Object | <ControlChannel> | ControlChannelType | OP | |
For the StackElementLightType, either the Variables SignalColor, SignalOn, SignalMode and Intensity shall be used to indicate the respective values for the lamp element or separate ControlChannels per available and individually controllable colour channel shall be used (e.g. in RGB or RGBW lamp elements). The two concepts shall not be used in conjunction in a single StackElementLightType instance.
SignalColor indicates the colour the lamp element has when switched on.
The optional SignalRGBWValue provides a more precise representation of the SignalColor. It may be provided in addition to the SignalColor and shall not contradict it, i.e., it shall be at least a nearby colour of the SignalColor. The SignalRGBWValue shall not be provided when the SignalColor is not provided.
SignalMode shows in what way the lamp is used (continuous light, flashing, blinking) when switched on.
Intensity shows the intensity of the lamp, thus its brightness. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent.
The list of <ControlChannel> instances shows the control information for each independent colour channel of the stacked element.
The InstanceDeclarations of the StackElementLightType have the Attribute values defined in Table 22.
| Source Path | Value | Description |
| SignalColor | - | Indicates the colour the lamp element has when switched on. |
| SignalMode | - | Shows in what way the lamp is used (continuous light, flashing, blinking) when switched on. |
| Intensity | - | Intensity of the lamp, thus its brightness. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent. |
| <ControlChannel> | - | The list of <ControlChannel> instances shows the control information for each independent colour channel of the stacked element. |
5.2.7 StackElementAcousticType

The StackElementAcousticType represents an acoustic element in a stacklight. In Figure 7, a graphical overview is given. It is formally defined in Table 23.
| Attribute | Value | ||||
| BrowseName | StackElementAcousticType | ||||
| IsAbstract | False | ||||
| Description | Represents an acoustic element in a stacklight. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the StackElementType defined in 5.2.5, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasComponent | Variable | OperationMode | 0:UInteger | 0:BaseDataVariableType | M |
| 0:HasComponent | Variable | Intensity | 0:Float | 0:AnalogItemType | O |
| 0:HasComponent | Object | AcousticSignals | 0:OrderedListType | M | |
OperationMode indicates what signal of the list of AcousticSignalType nodes is played when the acoustic element is switched on. It shall contain an index matching the NumberInList Property of the respective AcousticSignalType Object of AcousticSignals.
Intensity indicates the sound pressure level of the acoustic signal when switched on. This value shall only have positive values. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent.
AcousticSignals contains a list of audio signals used by this acoustic stacklight element.
The components of the StackElementAcousticType have additional References which are defined in Table 24.
| Source Path | References | NodeClass | BrowseName | DataType | TypeDefinition | Others |
| AcousticSignals | 0:HasOrderedComponent | Object | 0:<OrderedObject> | AcousticSignalType | MP |
The InstanceDeclarations of the StackElementAcousticType have the Attribute values defined in Table 25.
| Source Path | Value | Description |
| OperationMode | - | Indicates what signal of the list of AcousticSignalType nodes is played when the acoustic element is switched on. It shall contain an index into the NumberInList of the respective AcousticSignalType Object of AcousticSignals. |
| Intensity | - | Indicates the sound pressure level of the acoustic signal when switched on. This value shall only have positive values. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent. |
| AcousticSignals | - | Contains a list of audio signals used by this acoustic stacklight element. |
| - | Represents an acoustic signal. |
5.2.8 ControlChannelType

The ControlChannelType is used for control channels of single colour elements within a stack element (e.g. RGB elements would use three ControlChannels, one for each controllable colour). In Figure 8, a graphical overview is given. It is formally defined in Table 26.
| Attribute | Value | ||||
| BrowseName | ControlChannelType | ||||
| IsAbstract | False | ||||
| Description | Used for control channels of single colour elements within a stack element (e.g. RGB elements would use three ControlChannels, one for each controllable colour). | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:BaseObjectType defined in OPC 10000-5 i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasProperty | Variable | SignalOn | 0:Boolean | 0:PropertyType | M |
| 0:HasComponent | Variable | ChannelColor | SignalColor | 0:BaseDataVariableType | M |
| 0:HasComponent | Variable | SignalMode | SignalModeLight | 0:BaseDataVariableType | M |
| 0:HasComponent | Variable | Intensity | 0:Float | 0:AnalogItemType | O |
SignalOn indicates if the colour is switched on.
ChannelColor shows the channel’s colour.
SignalMode indicates in what mode (continuously on, blinking, flashing) the channel operates when switched on.
Intensity shows the channel’s intensity, thus its brightness. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent.
The InstanceDeclarations of the ControlChannelType have the Attribute values defined in Table 27.
| Source Path | Value | Description |
| SignalOn | - | Indicates if the colour is switched on. |
| ChannelColor | - | Indicates in what mode (continuously on, blinking, flashing) the channel operates when switched on. |
| SignalMode | - | Contains a list of audio signals used by this acoustic stacklight element. |
| Intensity | - | Shows the channel’s intensity, thus its brightness. The mandatory EURange Property of the Variable indicates the lowest and highest value and thereby allows to calculate the percentage represented by the value. The lowest value is interpreted as 0 percent, the highest is interpreted as 100 percent. |
5.2.9 AcousticSignalType

The AcousticSignalType represents an acoustic signal. It is used in an ordered list. In Figure 9, a graphical overview is given. It is formally defined in Table 28.
| Attribute | Value | ||||
| BrowseName | AcousticSignalType | ||||
| IsAbstract | False | ||||
| Description | Represents an acoustic signal. | ||||
| References | Node Class | BrowseName | DataType | TypeDefinition | Other |
|---|---|---|---|---|---|
| Subtype of the 0:BaseObjectType defined in OPC 10000-5, i.e. inheriting the InstanceDeclarations of that Node. | |||||
| 0:HasInterface | ObjectType | 0:IOrderedObjectType | |||
| 0:HasProperty | Variable | 0:NumberInList | 0:UInteger | 0:PropertyType | M |
| 0:HasComponent | Variable | AudioSample | 0:AudioDataType | 0:BaseDataVariableType | O |
The Description Attribute of each Object of type AcousticSignalType should be used as textual description of the audio signal, e.g. “Buzzer 100Hz”.
NumberInList is defined in IOrderedObjectType and used in conjunction with the HasOrderedComponent Reference of the AcousticSignals Object. Instances of StackElementAcousticType index into this number using the OperationMode Property.
AudioSample contains the audio data, e.g. for devices capable of audio playback.
The InstanceDeclarations of the AcousticSignalType have the Attribute values defined in Table 29.
| Source Path | Value | Description |
| 0:NumberInList | - | Enumerate the acoustic signals. Instances of StackElementAcousticType index into this number using the OperationMode Property. |
| AudioSample | - | Contains the audio data, e.g. for devices capable of audio playback. |
5.3 OPC UA DataTypes
5.3.1 StacklightOperationMode
The StacklightOperationMode Enumeration DataType contains the values used to indicate how a stacklight (as a whole unit) is used. The contents of its EnumStrings are defined in Table 30.
| Name | Value | Description |
|---|---|---|
| Segmented | 0 | Stacklight is used as stack of individual lights |
| Levelmeter | 1 | Stacklight is used as level meter |
| Running_Light | 2 | The whole stack acts as a running light |
| Other | 3 | Stacklight is used in a way not defined in this version of the specification |
Its representation in the AddressSpace is defined in Table 31.
| Attribute | Value | |||||
| BrowseName | StacklightOperationMode | |||||
| IsAbstract | False | |||||
| Description | Contains the values used to indicate how a stacklight (as a whole unit) is used. | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of the 0:Enumeration type defined in OPC 10000-3 | ||||||
| 0:HasProperty | Variable | 0:EnumValues | 0:EnumValueType[] | 0:PropertyType | ||
5.3.2 LevelDisplayMode
The LevelDisplayMode Enumeration DataType contains the values used to indicate how a percentual value is displayed if the stacklight unit works in Levelmeter mode. The contents of its EnumStrings are defined in Table 32.
| Name | Value | Description |
|---|---|---|
| Dimmed | 0 | Uses dimming to display fractions. |
| Blinking | 1 | Uses blinking to display fractions. |
| Other | 2 | Display fractions in a way not defined in this version of the specification. |
Its representation in the AddressSpace is defined in Table 33.
| Attribute | Value | |||||
| BrowseName | LevelDisplayMode | |||||
| IsAbstract | False | |||||
| Description | Contains the values used to indicate how a percentual value is displayed if the stacklight unit works in Levelmeter mode. | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of the 0:Enumeration type defined in OPC 10000-3 | ||||||
| 0:HasProperty | Variable | 0:EnumValues | 0:EnumValueType[] | 0:PropertyType | ||
5.3.3 SignalColor
The SignalColor Enumeration DataType holds the possible colour values for stacklight lamps. The contents of its EnumStrings are defined in Table 34.
| Name | Value | Description |
|---|---|---|
| Off | 0 | Element is disabled. |
| Red | 1 | This value indicates a red lamp colour. |
| Green | 2 | This value indicates a green lamp colour. |
| Blue | 3 | This value indicates a blue lamp colour. |
| Yellow | 4 | This value indicates a yellow lamp colour (R+G). |
| Purple | 5 | This value indicates a purple lamp colour (R+B). |
| Cyan | 6 | This value indicates a cyan lamp colour (G+B). |
| White | 7 | This value indicates a white lamp colour (R+G+B). |
Its representation in the AddressSpace is defined in Table 35.
| Attribute | Value | |||||
| BrowseName | SignalColor | |||||
| IsAbstract | False | |||||
| Description | Holds the possible colour values for stacklight lamps. | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of the 0:Enumeration type defined in OPC 10000-3 | ||||||
| 0:HasProperty | Variable | 0:EnumValues | 0:EnumValueType[] | 0:PropertyType | ||
5.3.4 SignalModeLight
SignalModeLight contains the values used to indicate in what way a lamp behaves when switched on. The contents of its EnumStrings are defined in Table 36.
| Name | Value | Description |
|---|---|---|
| Continuous | 0 | This value indicates a continuous light. |
| Blinking | 1 | This value indicates a blinking light (blinking in regular intervals with equally long on and off times). |
| Flashing | 2 | This value indicates a flashing light (blinking in intervals with longer off times than on times, per interval multiple on times are possible). |
| Other | 3 | The light is handled in a way not defined in this version of the specification. |
Its representation in the AddressSpace is defined in Table 37.
| Attribute | Value | |||||
| BrowseName | SignalModeLight | |||||
| IsAbstract | False | |||||
| Description | Contains the values used to indicate in what way a lamp behaves when switched on. | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of the Enumeration type defined in OPC 10000-3 | ||||||
| 0:HasProperty | Variable | 0:EnumValues | 0:EnumValueType[] | 0:PropertyType | ||
5.3.5 RGBWDataType
This structure represents a colour in RGB or RGBW. The structure is defined in Table 38.
| Name | Type | Description | Optional |
|---|---|---|---|
| RGBWDataType | structure | ||
Red | 0:Byte | Defines the intensity of the colour red | False |
Green | 0:Byte | Defines the intensity of the colour green | False |
Blue | 0:Byte | Defines the intensity of the colour blue | False |
White | 0:Byte | Defines the intensity of an additional white component. Shall be not provided when using RGB. | True |
Its representation in the AddressSpace is defined in Table 39.
| Attribute | Value | |||||
| BrowseName | RGBWDataType | |||||
| IsAbstract | False | |||||
| References | NodeClass | BrowseName | DataType | TypeDefinition | Other | |
|---|---|---|---|---|---|---|
| Subtype of 0:Structure | ||||||