When returning the Value of Process Values, the Server shall set the StatusCode member of the DataValue structures returned by the Read Service and the Publish Service consistent with the Process Value Qualifier information defined for Process Value Variables and structures.
RIOforPA status information is conveyed to the Client as copy of the original status transmitted in the telegram signal. The value of the RioPaProcessValueQualifierVariableType Variable and the Qualifier member of the RioPaAnalogValueDataType and the RioPaDigitalValueDataType shall contain the original status. In addition to this, the status can be encoded into additional qualifier values encoded as RioQualityEnumeration, RioSpecifierEnumeration and RioQualifierEnumeration enumeration values.
If the Device generates condensed status codes restricted to NE 107 (See [PCD] chapter 5.4.3.2), the status information delivered for one Process Value and the OPC UA StatusCode shall be set consistent as defined in Table 13.
Table 13 – Condensed status restricted to NE 107
NE 107 |
Status Byte Values |
Description according to Profile |
OPC UA Status Code |
RioQualityEnumeration |
RioSpecifierEnumeration |
RioQualifierEnumeration |
|
Failure (F) |
0x24,0x26 |
BAD - maintenance alarm, more diagnosis available |
Bad, 0x80000000 |
BAD |
FAILURE |
BAD_MAINTENANCE_ALARM |
0x25, 0x27 |
BAD_MAINTENANCE_ALARM_SIMULATION_ACTIVE |
Check(C) |
0x3C, 0x3E |
BAD - function check / local override |
Bad, 0x80000000 |
BAD |
FUNCTION_CHECK |
BAD_FUNCTION_CHECK |
0x3D, 0x3F |
BAD_FUNCTION_CHECK_SIMULATION_ACTIVE |
Out of Specification (S) |
0x78, 0x7A |
UNCERTAIN - process related, no maintenance |
Uncertain, 0x40000000 |
UNCERTAIN |
OUT_OF_SPECIFICATION |
UNCERTAIN_NO_MAINTENANCE |
0x79, 0x7B |
UNCERTAIN_NO_MAINTENANCE_SIMULATION_ACTIVE |
Maintenance (M) |
0xA4, 0xA6 |
GOOD - maintenance required |
Good, 0x00000000 |
GOOD |
MAINTENANCE_REQUEST |
GOOD_MAINTENANCE_REQUIRED |
0xA5, 0xA7 |
GOOD_MAINTENANCE_REQUIRED_SIMULATION_ACTIVE |
0xA8, 0xAA |
GOOD - maintenance demanded |
Good, 0x00000000 |
GOOD |
MAINTENANCE_REQUEST |
GOOD_MAINTENANCE_DEMANDED |
0xA9, 0xAB |
GOOD_MAINTENANCE_DEMANDED_SIMULATION_ACTIVE |
Good (G) |
0x80 |
GOOD - ok |
Good, 0x00000000 |
GOOD |
NORMAL |
GOOD |
|
Check (C) |
0x81 |
GOOD - simulation active |
GoodEdited, 0x00DC0000 |
GOOD |
FUNCTION_CHECK |
GOOD_SIMULATION_ACTIVE |
|
Good (G) |
0x82 |
GOOD - update event |
Good, 0x00000000 |
GOOD |
NORMAL |
UPDATE |
The two values for status bytes consider the possible appearance of the update bit as defined in [PCD]. The update bit is not mapped further into separate status values. In contrast, the appearance of the “simulation active” bit is mapped to special values of the RioQualifierEnumeration.
If the Server generates status codes with detailed information (See [PCD] chapter 5.4.3.3), the status information delivered for one Process Value and the OPC UA StatusCode shall be set consistent as defined in Table 14.
Table 14 – Condensed status with detailed information
NE 107 |
Status Byte Range |
Description according to Profile |
OPC UA Status Code |
RioQualityEnumeration |
RioSpecifierEnumeration |
RioQualifierEnumeration |
Failure (F) |
0x00 |
BAD - non specific |
Bad, 0x80000000 |
BAD |
FAILURE |
BAD_NON_SPECIFIC |
Failure (F) |
0x08, 0x0A |
BAD - not connected |
BadNotConnected, 0x808A0000 |
BAD |
FAILURE |
BAD_NOT_CONNECTED |
0x09, 0x0B |
BAD_NOT_CONNECTED_ SIMULATION_ACTIVE |
Failure (F) |
0x20, 0x22 |
BAD - passivated |
BadOutOfService, 0x808D0000 |
BAD |
FAILURE |
BAD_PASSIVATED |
0x21, 0x23 |
BAD_PASSIVATED_SIMULATION_ACTIVE |
Failure (F) |
0x24, 0x26 |
BAD - maintenance alarm, more diagnosis available |
Bad, 0x80000000 |
BAD |
FAILURE |
BAD_MAINTENANCE_ALARM |
0x25, 0x27 |
BAD_MAINTENANCE_ALARM_ SIMULATION_ACTIVE |
Failure (F) |
0x28, 0x2A |
BAD - process related, no maintenance |
Bad, 0x80000000 |
BAD |
FAILURE |
BAD_PROCESS |
0x29, 0x2B |
BAD_PROCESS_SIMULATION_ACTIVE |
Check(C) |
0x3C, 0x3E |
BAD - function check / local override |
Bad, 0x80000000 |
BAD |
FUNCTION_CHECK |
BAD_FUNCTION_CHECK |
0x3D, 0x3F |
BAD_FUNCTION_CHECK_ SIMULATION_ACTIVE |
Failure (F) |
0x48, 0x4A |
UNCERTAIN - substitute set |
UncertainSubstituteValue, 0x40910000 |
UNCERTAIN |
FAILURE |
UNCERTAIN_SUBSTITUTE_SET |
0x49, 0x4B |
UNCERTAIN_SUBSTITUTE_SET_ SIMULATION_ACTIVE |
Check (C) |
0x4C, 0x4E |
UNCERTAIN - initial value |
UncertainInitialValue, 0x40920000 |
UNCERTAIN |
FUNCTION_CHECK |
UNCERTAIN_INITIAL_VALUE |
0x4D, 0x4F |
UNCERTAIN_INITIAL_VALUE_ SIMULATION_ACTIVE |
Maintenance (M) |
0x68, 0x6A |
UNCERTAIN - maintenance demanded |
Uncertain, 0x40000000 |
UNCERTAIN |
MAINTENANCE_REQUEST |
UNCERTAIN_MAINTENANCE_ DEMANDED |
0x69, 0x6B |
UNCERTAIN_MAINTENANCE_ DEMANDED_SIMULATION_ACTIVE |
Out of Specification (S) |
0x78, 0x7A |
UNCERTAIN - process related, no maintenance |
Uncertain, 0x40000000 |
UNCERTAIN |
OUT_OF_SPECIFICATION |
UNCERTAIN_NO_MAINTENANCE |
0x79, 0x7B |
UNCERTAIN_NO_MAINTENANCE_ SIMULATION_ACTIVE |
Good (G) |
0x80, 0x82 |
GOOD |
Good, 0x00000000 |
GOOD |
NORMAL |
GOOD |
0x81, 0x83 |
GOOD_SIMULATION_ACTIVE |
Good (G) |
0xA0 |
GOOD - initiate fail safe |
GoodInitiateFault State, 0x04080000 |
GOOD |
NORMAL |
GOOD_INITIATE_FAULT_STATE |
Maintenance (M) |
0xA4, 0xA6 |
GOOD - maintenance required |
Good, 0x00000000 |
GOOD |
MAINTENANCE_REQUEST |
GOOD_MAINTENANCE_REQUIRED |
0xA5, 0xA7 |
GOOD_MAINTENANCE_REQUIRED_ SIMULATION_ACTIVE |
0xA8, 0xAA |
GOOD - maintenance demanded |
Good, 0x00000000 |
GOOD |
MAINTENANCE_REQUEST |
GOOD_MAINTENANCE_DEMANDED |
0xA9, 0xAB |
GOOD_MAINTENANCE_DEMANDED_ SIMULATION_ACTIVE |
Good (G) |
0x9C, 0x9E |
GOOD - local override |
GoodLocalOverride, 0x00960000 |
GOOD |
NORMAL |
GOOD_LOCAL_OVERRIDE |
0x9D, 0x9F |
GOOD_LOCAL_OVERRIDE_ SIMULATION_ACTIVE |
Good (G) |
0xBC, 0xBE |
GOOD - function check |
Good, 0x00000000 |
GOOD |
NORMAL |
GOOD_FUNCTION_CHECK |
0xBD, 0xBF |
GOOD_FUNCTION_CHECK_ SIMULATION_ACTIVE |
For Devices generating classic status codes, OPC UA Servers shall set the status information delivered for one Process Value and the OPC UA StatusCode consistent as defined in Table 15.
Table 15 – Classic status codes
Sub-status |
Description |
OPC UA Status Code |
Status Byte |
RioQualityEnumeration |
RioSpecifier Enumeration UNSPECIFIED |
RioQualifierEnumeration |
Quality BAD |
||||||
0 |
non-specific |
Bad, 0x80000000 |
0x00.. 0x03 |
BAD |
|
BAD_NOT_SPECIFIC |
1 |
configuration error |
BadConfigurationError, 0x80890000 |
0x04.. 0x07 |
BAD_NOT_SPECIFIC |
||
2 |
not connected |
BadNotConnected, 0x808A0000 |
0x08.. 0x0B |
BAD_NOT_CONNECTED |
||
3 |
device failure |
BadDeviceFailure, 0x808B0000 |
0x0C.. 0x0F |
BAD_NOT_SPECIFIC |
||
4 |
sensor failure |
BadSensorFailure, 0x808C0000 |
0x10.. 0x13 |
BAD_NOT_SPECIFIC |
||
5 |
no communication (LUV) |
BadCommunicationError, 0x80050000 |
0x14.. 0x17 |
BAD_NOT_SPECIFIC |
||
6 |
no communication (no LUV) |
BadNoCommunication, 0x80310000 |
0x18.. 0x1B |
BAD_NOT_SPECIFIC |
||
7 |
out of service |
BadOutOfService, 0x808D0000 |
0x1C.. 0x1F |
BAD_PASSIVATED |
||
Quality UNCERTAIN |
||||||
0 |
non specific |
Uncertain, 0x40000000 |
0x40.. 0x43 |
UNCERTAIN |
|
UNCERTAIN_NO_ MAINTENANCE |
1 |
last usable value (LUV) |
UncertainLastUsableValue, 0x40900000 |
0x44.. 0x47 |
UNCERTAIN_NO_ MAINTENANCE |
||
2 |
substitute value |
UncertainSubstituteValue, 0x40910000 |
0x48.. 0x4B |
UNCERTAIN_SUBSTITUTE_SET |
||
3 |
initial value |
UncertainInitialValue, 0x40920000 |
0x4C.. 0x4F |
UNCERTAIN_INITIAL_VALUE |
||
4 |
sensor conversion not accurate |
UncertainSensorNotAccurate, 0x40930000 |
0x50.. 0x53 |
UNCERTAIN_NO_ MAINTENANCE |
||
5 |
engineering unit violation |
UncertainEngineeringUnits Exceeded, 0x40940000 |
0x54.. 0x57 |
UNCERTAIN_NO_ MAINTENANCE |
||
6 |
sub normal |
UncertainSubNormal, 0x40950000 |
0x58.. 0x5B |
UNCERTAIN_NO_ MAINTENANCE |
||
7 |
configuration error |
UncertainConfigurationError, 0x420F0000 |
0x5C.. 0x5F |
UNCERTAIN_NO_ MAINTENANCE |
||
8 |
simulated value |
UncertainSimulatedValue, 0x42090000 |
0x60.. 0x63 |
UNCERTAIN_NO_ MAINTENANCE_SIMULATION_ACTIVE |
||
9 |
sensor calibration |
UncertainSensorCalibration, 0x420A0000 |
0x64.. 0x67 |
UNCERTAIN_NO_ MAINTENANCE |
||
Quality GOOD (Non Cascade) |
||||||
0 |
ok |
Good, 0x00000000 |
0x80.. 0x83 |
GOOD |
|
GOOD |
1 |
update event |
Good, 0x00000000 |
0x84.. 0x87 |
GOOD |
||
2 |
active advisory alarm |
GoodFaultStateActive, 0x04070000 |
0x88.. 0x8B |
GOOD |
||
3 |
active critical alarm |
GoodFaultStateActive, 0x04070000 |
0x8C.. 0x8F |
GOOD |
||
4 |
unacknowledged update event |
Good, 0x00000000 |
0x90.. 0x93 |
GOOD |
||
5 |
unacknowledged advisory alarm |
GoodFaultStateActive, 0x04070000 |
0x94.. 0x97 |
GOOD |
||
6 |
unacknowledged critical alarm |
GoodFaultStateActive, 0x04070000 |
0x98.. 0x9B |
GOOD |
||
7 |
reserved |
- |
|
|
|
|
8 |
initiate fail safe |
GoodInitiateFaultState, 0x04080000 |
0xA0 |
GOOD |
GOOD_INITIATE_ FAULT_STATE |
|
9 |
maintenance required |
Good, 0x00000000 |
0xA4.. 0xA7 |
GOOD_MAINTENANCE_ REQUIRED |
||
Quality GOOD (Cascade) |
||||||
0 |
ok |
GoodCascade, 0x04090000 |
0xC0.. 0xC3 |
GOOD |
|
GOOD |
1 |
initialization acknowledged |
GoodCascadeInitializationAcknowledged, 0x04010000 |
0xC4.. 0xC7 |
GOOD |
||
2 |
initialization request |
GoodCascadeInitializationRequest, 0x04020000 |
0xC8.. 0xCB |
GOOD |
||
3 |
not invited |
GoodCascadeNotInvited, 0x04030000 |
0xCC.. 0xCF |
GOOD |
||
4 |
reserved |
- |
|
|
|
|
5 |
do not select |
GoodCascadeNotSelected, 0x04040000 |
0xD4.. 0xD7 |
GOOD |
GOOD |
|
6 |
local override |
GoodLocalOverride, 0x00960000 |
0xD8.. 0xDB |
GOOD_LOCAL_OVERRIDE |
||
7 |
reserved |
- |
|
- |
|
|
8 |
initial fail safe |
GoodInitiateFaultState, 0x04080000 |
0xE0 |
GOOD |
GOOD_INITIATE_ FAULT_STATE |
According to [PCD PB] chapter 5.3.4.2.1, the classic status codes shall be supported for legacy Devices requiring backward compatibility only. Otherwise, only condensed status generation or condensed status with detailed information as defined in 6.8.1.1 and 6.8.1.2 is required.
RIOforFA status information is conveyed to the Client as copy of the original status transmitted in the telegram signal. The value of the RioFaProcessValueQualifierVariableType Variable and the Qualifier member of the RioFaAnalogValueDataType and the RioFaDigitalValueDataType shall contain the original status. In addition to this, the status can be encoded into additional qualifier values encoded as RioQualityEnumeration.
The status information delivered for one Process Value and the OPC UA StatusCode shall be set consistent as defined in Table 16.
Table 16 – RIOforFA StatusCodes
Status Bit Value |
Description according to Profile (See [RIO FA] chapter 7.1) |
OPC UA Status Code |
RioQualityEnumeration |
1 (good) |
Input: Process Value can be used by host application. Output: Physical signal equals Process Value. |
Good, 0x00000000 |
GOOD |
0 (bad) |
Input: Process Value should not be used by host application. Output: Substitute Value applied by (Sub)Module. |
Bad, 0x80000000 |
BAD |
When returning arrays of Process Values, the Server shall set the Severity of the StatusCode to “Bad” if one or more Process Values in the returned array are “Bad”. If no Process Value in the array is “Bad”, the Severity returned shall be “Uncertain” if one or more Process Values in the returned array are “Uncertain”. The Severity returned shall be “Good” only if all Process Values in the array are “Good”.