The configuration model defines different parameters that influence the information flow from Publisher to Subscriber in the case of a Bad Value Status or other error situations. Figure 22 depicts the parameters and the information flow inside a Publisher and inside a Subscriber.

The parameters and behaviour relevant for the encoding of a DataSetMessage on the Publisher side and the decoding of the DataSetMessage on the Subscriber side are defined in 6.2.3.1 together with the DataSetFieldContentMask.

image025.png

Figure 22 – PubSub Information Flow

The mapping of source value and status to the DataSet in the Publisher depends 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 StatusCode is 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 DataSet on the Subscriber side to the value and status of the target Variable depends 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 StatusCode is 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.