The configuration model defines different parameters that influence the information flow from Publisherto Subscriberin the case of a Bad Value Status or other error situations. Figure 22depicts the parameters and the information flow inside a Publisherand inside a Subscriber.
The parameters and behaviour relevant for the encoding of a DataSetMessageon the Publisherside and the decoding of the DataSetMessageon the Subscriberside are defined in 6.2.3.1together with the DataSetFieldContentMask.
Figure 22– PubSub Information Flow
The mapping of source value and status to the DataSetin the Publisherdepends on the substitute value. The dependencies are defined in Table 47.
Table 47– Source to message input mapping
Source |
Substitute Value |
DataSet Publisher side |
||
Value |
Status(1) |
|
Value |
Status(1) |
Value 1 |
Good_* |
Value 2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
|
Value 1 |
Uncertain_* |
Null |
Bad_* |
|
Value 2 |
Uncertain_SubstituteValue |
Value 1 |
Good_* |
Null |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
|
Value 1 |
Uncertain_* |
Null |
Bad_* |
|
Null |
Bad_* |
Note 1: If no specific StatusCodeis used, the grouping into severity Good, Uncertain or Bad is used. In this case, the resulting Status matches the input Status. |
The mapping of the decoded DataSeton the Subscriberside to the value and status of the target Variabledepends on the override value. The dependencies are defined in Table 48.
Table 48– Message output to target mapping
Decoded DataSet Subscriber |
Override Value Handling Enum |
Override Value |
Reader State |
Target |
||
Value |
Status(1) |
|
|
|
Value |
Status(1) |
Value 1 |
Good_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
OverrideValue_2 |
Value 2 |
Operational_2 |
Value 2 |
Good_LocalOverride |
Value 1 |
Good_* |
LastUsableValue_1 |
Null |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
LastUsableValue_1 |
Null |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
LastUsableValue_1 |
Null |
Operational_2 |
LastValue(2) |
Uncertain_LastUsableValue |
Value 1 |
Good_* |
Disabled_0 |
Null |
Operational_2 |
Value 1 |
Good_* |
Value 1 |
Uncertain_* |
Disabled_0 |
Null |
Operational_2 |
Value 1 |
Uncertain_* |
Null |
Bad_* |
Disabled_0 |
Null |
Operational_2 |
Null |
Bad_* |
No message received. The target values are updated once after a reader state change. |
OverrideValue_2 |
Value 2 |
Diabled_0 Paused_1 |
Value 2 |
Good_LocalOverride |
|
|
LastUsableValue_1 |
Null |
Diabled_0 Paused_1 |
LastValue(2) |
Uncertain_LastUsableValue |
|
|
Disabled_0 |
Null |
Diabled_0 Paused_1 |
Null |
Bad_OutOfService |
|
|
OverrideValue_2 |
Value 2 |
Error_3 |
Value 2 |
Good_LocalOverride |
|
|
LastUsableValue_1 |
Null |
Error_3 |
LastValue(2) |
Uncertain_LastUsableValue |
|
|
Disabled_0 |
Null |
Error_3 |
Null |
Bad_NoCommunication |
|
Note 1: If no specific StatusCodeis used, the grouping into severity Good, Uncertain or Bad is used. In this case, the resulting Status matches the input Status. Note 2: The last value is either the last received value or the default value for the data type if there was never a value received before. |