Data Transfer Optimization

This section describes the data transfer optimization implemented for the DNP 3.0; scan task. Optimization is the means by which the scan task seeks to minimize the load on the communication channel by making scan device requests more efficiently.

The aim of optimization is to include as many scan input records in a single request as possible, thus reducing the communication overhead.

[note] Optimization will only occur if the comm optimization attribute has been set appropriately.

[note] The max data size value does not impact optimization. Optimization attempts to pack as many scan input records into a single object request. If the size of the resulting request is larger than the max data size value, the object will still be sent.

[note] If a remote device has a maximum fragment size that it can receive, turning off optimization will allow better control of the outgoing packet (see max data size).

Writes are not optimized since writes to a scan device typically occur much less frequently than polls or reads.

Follow these guidelines, whenever possible, to minimize communication overhead:

  1. order scan input table range start and range length for a particular function code, object group, object variation and qualifier in ascending order,
  2. eliminate gaps in range start and and range length for a particular particular function code, object group, object variation and qualifier, if one/two objects are not required, configure them into the scan input table anyway (make sure they are enabled),
  3. assign the same poll type to groups of records that have consecutive range start and and range length for a particular function code, object group, object variation and qualifier.
[warning] The scan task will only stop adding records to the object when the range start and range length fields are not in ascending order. Therefore, it is possible to have a single object request result in large amounts of data being sent back from the remote device.

[note] The scan input records do not have to be consecutive in the scan input table, as long as the range start and range length fields for a particular function code, , object group, object variation and qualifier are in ascending order.