Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

PI Interface for DNP3

Device configuration file settings

  • Last UpdatedNov 18, 2022
  • 9 minute read

Observe that the Address box is in the previous figure in yellow, indicating that a required field is missing or invalid. You need to fill this in:

  1. After you assign a value to the Address box then click the icon , which will add an IOGroup. The following will appear in the box on the left:

  2. Click IO Group1 to configure this IO Group as either TCP or Serial.

  3. Select the appropriate type.

  4. If you chose TCP, you will get a section similar to the following where you can enter either a TCP/IP address or a NodeName.

  5. If you chose Serial, you will get a section similar to the following where you can enter the Baud rate, COM Port, Parity, Data Bits and Stop Bits.

  6. After filling in either the TCP or Serial parameters, create an RTU Device by clicking above the box on the left to add an RTU1 to the box on the left:

  7. Click RTU1 to display the RTUInfo Configuration options.

  8. Configure RTU1 by making the appropriate selections and entering the appropriate values.

  9. To add another RTU to the same group, click the IO Group# and click the Add RTU button .

  10. To add another IOGroup, click Session and click the Add Group button .

  11. To delete any RTU or IO Group, select it and click the Delete button .

Additional Parameters

This text box is to be used for any additional parameters not currently supported by the ICU Control. Any parameters entered in this field must be separated by a space and a / or -. If a parameter's argument contains any embedded spaces, then the argument must be enclosed in double quotes.

Optional parameters tab

I/O Timeout:

The /IOTimeOut parameter specifies the length of time, in minutes, allowed to elapse without a good communications session with an RTU before the system digital state "IO TimeOut" will be written to all points belonging to the RTU. A value of 0 or the absence of the parameter in the start-up file means "IO TimeOut" will never be written to the PI points. A communications session is defined as receiving a good response to a request. The span is in minutes and care must be taken when assigning this value. The default check for an I/O timeout will be performed once a minute. The setting of the span must go hand in hand with the setting of the Integrity Scan frequency and the scan class frequency. If the I/O timeout span is less or roughly equal to the shortest scan class frequency and the Integrity Scan frequency, "IO TimeOut" may be written to the points shortly before every scan. Therefore, the span must be at least 1.5 times longer than the shortest scan class frequency or the Integrity Scan frequency whichever is shorter. ( /IOTimeOut=# Default:0).

Retry Interval (seconds):

The /Retry parameter specifies the interval in seconds that the interface will make subsequent attempts to connect to a specific RTU device. ( /Retry=# Default:30).

Number of Threads for IO Pool:

The /IOPool parameter specifies the number of threads to be used for the IO completion port pool. If this parameter is not defined, the default of 2 x Number of logical processors is used. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /IOPool=# Default:2x Number of processors).

Number of Threads for Worker Pool:

The /WorkerPool parameter specifies the number of threads to be used for the worker pool. If this parameter is not defined, no worker pool is created. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /WorkerPool=# Default:0).

Number of msec for IOCP to sleep:

The /IOSleep parameter specifies the number of milliseconds to allow the IOCP threads to sleep between executions. By default, the IOCP routine does not sleep between executions. This parameter should not be altered unless the interface process appears to be utilizing a high percentage of the cpu. In this case, set the /IOSleep parameter to one and restart the interface. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /IOSleep=# Default:0, range 0-100).

Do not log RTU's with no connection

The /NoDevStatLog parameter when defined instructs the interface not to log the list of RTU's that have no connection to the interface in the device status log. However, the number of RTU(s) in error are still listed in the Device Status point. By default, the RTU(s) that are in error are logged to the device status log for the interface. The maximum size of the log file is 100KB and once reached, the file will then be cleared for new data. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /NoDevStatLog ).

Do not log startup parameters for RTU's

The /NoLogRTUParams parameter when defined instructs the interface not to log startup parameters for RTU's assigned to the interface. This is useful to prevent the pipc.log file from becoming difficult to read when many RTU's are defined for a given instance of the interface. By default, the startup parameters for each RTU are listed in the pipc.log file. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /NoLogRTUParams ).

Prevent UniInt Failover when device statuses are equal

This parameter is only applicable when UniInt Interface Failover is being used.

The /StatusKeepState parameter when defined will prevent the backup copy of the interface from assuming the primary state at an interval specified by the location5 attribute of the ActiveID point when the value of both failover copies of the interface have equal device status values and neither interface is able to collect data while in the primary state. The interface does this by writing a value of 30 to the device status.

The UniInt device status health point accepts values in the range of 0-100; whereby a value of 0 represents a good status value. Any value less than 50 will prevent the backup copy of the interface instance from assuming control if the device status values of the failover instances are equal in error value. A value of 50 -70 will allow the backup copy of the interface to assume control, at an interval specified by the location5 attribute of the ActiveID point, if the device status values of the failover instances are equal.

RTU Log Size in Kilobytes (KB):

The /RTULogSize parameter specifies the maximum size of the RTU log file before the file is cleared for new data. The size specified is in kilobytes (KB). If the interface debug level as defined by the /dnpdbg does not specify logging to the RTU log file (level=0x0001), then the log file is not created by the interface. This parameter was implemented in version 3.0.1.0 of the interface. It appears only when the interface version 3.0.1.0 or later is installed. ( /RTULogSize=# Default:100).

Device Status Update Interval (sec):

This parameter specifies the interface device status update interval in seconds.

The user should consider the /retry rate as well as the time it takes to establish connections with configured devices in determining the /StatusInterval value. The user should use an interval that will allow enough time to establish connection with enough devices to allow the /StatusPercentUp value to be reached.

Minimum % for Good Device Status:

This parameter specifies the minimum percent of connected devices for reporting a good device status.

All configurations:

The interface will write a value of good to the UniInt device status health point if the percent of connected devices is equal to or greater than the /StatusPercentUp value.

If the /StatusPercentUp=0, the interface will always report a status of good.

UniInt failover:

The interface will report a status value of 50 if the percent of connected devices is less than the /StatusPercentUp value. If the /StatusKeepState parameter is defined, the interface will report a status value of 30 if the percent of connected devices is less than the /StatusPercentUp value.

The /StatusPercentUp=0 is useful during a UniInt failover configuration if the user wants the other interface to assume the role as primary only if the heartbeat of this copy of the interface fails to update (i.e. this copy is shutdown, crashes, or enters a locked state).

Seconds before Device Status Set:

Where # specifies the time in seconds before the interface will set the device status upon initial startup or upon assuming the role as primary if running in a UniInt failover configuration.

Event Classes Tab

Event Classes

The/event parameter specifies a scan class as an event class. All the points assigned to this scan class will be treated as event type points. The ScanClass defines a scan class that corresponds to a /f= flag from the start-up file and the Location4 of the PI points.

Example: If this is found in the start-up file.

/f=10 /f=120 /f=00:10:00 /event=2 /event=3

The interface will make a request for event data every 2 minutes and every 10 minutes. All PI points with Location4 equal to 2 or 3 will be considered event type points and no requests for static data will be made for these points except for the integrity scans. ( /event=# ).

Debug Tab

Debug Options:

These checkboxes specify the level of debugging messages to be written to the log files and to the console window if running interactively. The level is a 16-bit number that can be expressed as a hexadecimal number if preceded with a 0x. Each bit of the debug parameter turns on and off debugging in a different section of the interface. The following list shows example debug parameters and the section of code affected by that bit. For each bit, setting the bit to 1 will turn on that section's debugging messages and setting the bit to 0 will turn them off. To combine different flags, add the value of the flags together. For example, to send the raw DNP messages to both the RTU log file and to the console, and to log the Data Link, Transport, and Application Layer message explanations to the log file, set the parameter to /dnpdbg=0x001F . This turns on bits 1 through 5 starting from the right. For a more detailed explanation, refer to the DNP and other debugging messages section. You can also turn on all debugging by checking the Maximum Debug check box.

Examples:

/dnpdbg=0x0001 Raw DNP messages written to the RTU log file

/dnpdbg=0x0002 Data Link Layer Descriptions to Log File

/dnpdbg=0x0004 Transport Layer Descriptions to Log File

/dnpdbg=0x0008 Application Layer Descriptions to Log File

/dnpdbg=0x0010 Raw DNP messages written to the Console

/dnpdbg=0x0020 Data Link Layer Descriptions to Console

/dnpdbg=0x0040 Transport Layer Descriptions to Console

/dnpdbg=0x0080 Application Layer Descriptions to Console

/dnpdbg=0x0100 Start-UP procedures

/dnpdbg=0x0200 Load PI Point Procedures

/dnpdbg=0x0400 Data Sent to PI (not including Heartbeat points)

/dnpdbg=0x0800 Scanning for Current Values

/dnpdbg=0x1000 Communications Medium

/dnpdbg=0x2000 Value Scaling

In This Topic
Related Links
TitleResults for “How to create a CRG?”Also Available in