AssociationConfig
The AssociationConfig
struct provides configuration information needed to communicate with a particular outstation on the communication channel including:
- Startup handshaking
- If and how to perform time synchronization
- Per-association task queue size
The outstation address is supplied as a separate argument when adding an association to a channel.
- Rust
- C
- Java
- C#
#
InitializationThe DNP3 standard requires that the master perform certain actions during initialization before normal polling occurs:
If an outstation does not support unsolicited reporting, you may turn the DISABLE/ENABLE unsolicited requests off by setting
AssociationConfig.DisableUnsolClasses
and AssociationConfig.EnableUnsolClasses
to EventClasses.None()
. The master will
skip unsolicited configuration during initialization and only perform the integrity poll.
#
SchedulingThe standard leaves a lot up to implementations regarding scheduling. The algorithm used to schedule requests on a channel follows the steps outlined below. Each association maintains its own task queue, and the channel uses a round-robin queue to ensure fairness across associations on the channel.
- Users requests such as control operations are always given the highest priority
- Automatic and initialization tasks are then considered in this order:
- Clear the RESTART IIN bit if it has been previously observed in a response
- Disable unsolicited reporting if configured to do so during initialization
- Perform an integrity scan if configured to do so during initialization
- Perform automatic time synchronization if configured and the NEED_TIME IIN bit has been observed in a response
- Enable unsolicited reporting if configured to do so during initialization
- Periodic polls are then executed if there is nothing else to do.