Version History
Updated | Document Version | Description |
2026-09-08 | V1.0 | Initial version, adding DNP3 TCP and DNP3 RTU data collection guidance |
Applicable Gateways and Firmware Requirements
Software Platform | E2C Factory | E2C Field | E2C Facility |
Supported Gateway Models | EG3120; EG5120; EG5200 | LG3120 | LG5120 |
Firmware Requirement (RobustOS Pro Version) | EG3120 (>= ROS Pro:2.4.103); EG5120 (>= ROS Pro:2.4.105); EG5200 (>= ROS Pro:2.3.108) | TBD | TBD |
1. Manual Description
1.1 Manual Purpose
This manual guides field technicians to quickly configure a Robustel edge computing gateway to collect data from southbound DNP3 devices, including both DNP3 TCP and DNP3 RTU. It also explains how to forward the collected data to northbound systems through MQTT or Modbus TCP.
1.2 Intended Audience
This manual is intended for field implementation engineers and commissioning personnel. You do not need deep theoretical knowledge of the DNP3 protocol. By following the steps in this document, you can complete device connection, tag configuration, data collection, and data forwarding.
1.3 Reading Guide
Because DNP3 supports two different physical connection types, Ethernet for TCP and serial for RTU, it is recommended to follow the reading path below:
- If you are using a DNP3 TCP device: Focus on Chapters 1, 2, and 3 first, then go directly to Chapter 4 for southbound configuration, and finally read Chapters 7, 8, and 9.
- If you are using a DNP3 RTU device: Focus on Chapters 1, 2, and 3 first, then go directly to Chapter 5 for southbound configuration, and finally read Chapters 7, 8, and 9.
- If you do not have a real device and want to learn with a simulator first: After reading Chapters 1, 2, and 3, read Chapter 4 to complete the gateway configuration, and then read Chapter 6 to complete the simulator configuration.
2. Basic Concepts and Network Topology
2.1 Gateway Role in the Network
In a DNP3 network, the Robustel gateway acts as the data collection Master. Its task is to actively initiate requests, read data from underlying DNP3 outstations, such as protection relays, RTUs, and smart meters, and then convert that data into IIoT protocols, such as MQTT or Modbus TCP, for northbound systems.
2.2 Connection Topology
- DNP3 TCP: Devices are connected through standard Ethernet cables. The gateway and the DNP3 device are usually located in the same LAN subnet. If they are not in the same subnet, make sure routing is configured correctly and that the port, usually 20000, is not blocked by a firewall.
Figure 2-1 DNP3 TCP Connection Topology
- DNP3 RTU: Devices are connected in a daisy chain over an RS485 serial bus. Make sure A+ and B- are wired correctly, all devices on the bus use the same baud rate, data bits, parity, and stop bits, and 120-ohm termination resistors are added at both ends of the bus.
Figure 2-2 DNP3 RTU Connection Topology
2.3 DNP3 Collection Architecture: Channel, Device, and Tag
Because DNP3 includes many Master-level common settings, such as master address, event polling cycles, and time synchronization, the system uses a three-layer model of Channel > Device > Tag to avoid repeated configuration when multiple devices are added:
- Channel: Represents a physical or logical communication link and carries Master-level common parameters, such as TCP IP and port or the RTU serial port. It is not the same as a real field device.
- Device (Outstation): Belongs under a channel and represents a real field device. It mainly manages the 【Slave Address】 and 【Acquisition Strategy】.
- Tag: Belongs under a device and represents a specific DNP3 object point, such as Binary Input or Analog Input. It is used for object modeling and data mapping.
3. Preparations
3.1 Hardware and Software Requirements
Device Type | Specific Requirements |
Gateway | A Robustel gateway with E2C software installed. This document uses a gateway with E2C Factory installed as an example. |
DNP3 TCP Device | A device supporting DNP3 TCP. Its IP address, port, and slave address must be known. |
DNP3 RTU Device | A device supporting DNP3 RTU. Its serial parameters and slave address must be known. |
Cables | Standard Ethernet cable for TCP, or 2-wire shielded RS485 twisted pair cable for RTU. |
PC | A laptop connected to the gateway LAN port for Web configuration. If no real device is available, it is recommended to install the CDOAN-DNP3 simulator on the PC. This manual uses Release 3.0.8 as an example, available from www.cdoancal.com, for learning and verification. |
3.2 Environment and Network Requirements
- The PC must be in the same subnet as the gateway and be able to communicate with it. The default gateway LAN IP is 192.168.0.1.
- It is strongly recommended to obtain the device point list from the device vendor in advance. The point list contains key information such as tag meaning, object type, index, and data type.
4. Southbound Configuration: DNP3 TCP
Chapter Goal: Connect and collect data from a DNP3 TCP device. You will complete the following tasks in order: configure the gateway LAN IP, create the channel and device in the same workflow, add tags, and publish the configuration.If your device uses RS485 serial communication, skip this chapter and go directly to Chapter 5.
4.1 Physical Layer: Configure the LAN IP Address
Purpose of this step: Establish basic network communication. Configure the gateway LAN IP so that it can communicate with the target DNP3 TCP device over Ethernet.
- Log in to the gateway Web interface. The default IP is 192.168.0.1 and the default username and password are admin and admin.
- Navigate to Network > LAN.
- Edit LAN1 and set the gateway IP to an address in the same subnet as the DNP3 device. For example, if the device IP is 192.168.0.68, the gateway can be set to 192.168.0.1/24.
- Click Submit and Save & Apply.
Figure 4-1 Configure the Gateway LAN IP
4.2 Add the DNP3 Outstation and Channel
Purpose of this step: Define the target device and communication link in the data collection engine. Because a channel is mandatory, the system allows you to create a channel while adding a device.
- Open E2C Factory in the gateway management interface and go to Data Collection > Wired Device.
- Click Add Device and select DNP3 TCP for 【Driver】 in the pop-up form.
- The 【Channel】 field will appear. If the drop-down is empty, click Channel Management on the right.
- In the channel management window, click Add Channel, fill in the parameters below, and click Save:
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Custom channel name. It must be unique under the same protocol. | DNP3-TCP-CH01 |
【IP Address】 | The IP address of the target DNP3 device. If a simulator is used, enter the PC IP address. | 192.168.0.68 |
【Port】 | The TCP listening port of the target device. | 20000 |
【Master Address】 | The DNP3 link address used by the gateway as the master. | 0 |
【Integrity Poll Period】 | The period, in seconds, used to refresh all current values from the device. | 30 |
【Event Data Poll Period (Class 1)】 | Polls the high-priority event queue. Use it when important alarms or critical status changes need to be obtained earlier. | 5 |
【Event Data Poll Period (Class 2)】 | Polls the medium-priority event queue. Use it when general changed data should be obtained faster than through Integrity Polling alone. | 10 |
【Event Data Poll Period (Class 3)】 | Polls the low-priority event queue. Use it for changed data with lower real-time requirements. | 30 |
【Collection Timeout】 | Timeout for a single collection request | 10 |
Notes:
- Set an event polling period to 0 to disable polling for that event class.
- The event polling periods only take effect when Event Polling is enabled on the device and the tag 【Event Class】 is configured as the corresponding Class.
- Close the channel management window and return to the device form. You can now select DNP3-TCP-CH01 in 【Channel】.
- Continue filling in the device parameters:
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Custom device name. It must be unique under the current channel. | DNP3-Device-01 |
【Slave Address】 | The DNP3 link address of the target device. It must be unique under the same channel. | 0 |
【Acquisition Strategy】 | Determines how the gateway reads data from the device. If you only need periodic refresh of all current values, select Integrity Polling. If the device supports event processing and you want to read changes by Class priority, enable Event Polling or Active Report as needed. | Integrity Polling |
- Click Save. The device card will appear in the list.
Figure 4-2 Add the DNP3 TCP Device and Channel
4.3 Add Tags
Purpose of this step: Define which DNP3 object points the gateway should read from the device.
- In the device list, select the DNP3 device you just created.
- In the tag list area on the right, click Add Tag and configure the parameters according to the device point list:
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Custom tag name for easy identification | AI_0_Temperature |
【Tag Type】 | Select Device Tag when reading real device data | Device Tag |
【Object type】 | Select the DNP3 object according to the point list, for example Binary Input or Analog Input | Analog Input |
【Index】 | The index number under the selected object type | 0 |
【Event Class】 | Select Class 0 for static reads only, or Class 1, 2, or 3 to participate in event processing | Class 0 |
- After 【Object type】 is selected, 【Data Type】 and 【Read/Write Permission】 are usually populated automatically. For example, Analog Input usually maps to int and Read Only.
- Add all required tags one by one and click Save.
For the 【Event Class】 setting, pay attention to the following:
- If you only want to verify whether the basic collection works, it is recommended to set all tags to Class 0 first. This makes the Integrity Polling result the easiest to observe.
- Class 1, Class 2, and Class 3 only become meaningful when the device supports the event mechanism and Event Polling has already been enabled in 【Acquisition Strategy】.
- If a tag is configured as Class 1, 2, or 3, but the corresponding event polling period is not configured at the channel level, or is set to 0, that event class will not be polled as expected.
- If you are not sure which event classes are supported by the field device, confirm the point list or device manual with the vendor before deciding which tags should be configured as Class 1, 2, or 3.
Figure 4-3 Add DNP3 Tags
4.4 Publish the Configuration
The configuration must be published before it takes effect.
- Click Publish in the upper-right corner of the page.
- In the confirmation prompt, click Confirm Save. The gateway will begin trying to connect to the DNP3 device.
5. Southbound Configuration: DNP3 RTU
If your field device uses a 2-wire RS485 serial connection, follow this chapter.
5.1 Physical Layer: Configure Serial Parameters
Purpose of this step: Make sure the gateway serial settings match the field device exactly. On an RS485 bus, all devices must use the same communication rate and format.
- Log in to the gateway Web interface.
- Navigate to Interface > Serial Port and set 【Serial Port Type】 to RS485.
- Open E2C Factory and navigate to Edge Computing > System Settings > Serial Port.
- Find the serial port connected to the device, for example COM1, click edit, and configure 【Baud Rate】, 【Data Bit】, 【Stop Bits】, and 【Parity】 according to the device manual.
- Click Submit to save.
Figure 5-1 Configure the Gateway Serial Port Parameters
5.2 Add the DNP3 Outstation and Channel
- Navigate to Data Collection > Wired Device and click Add Device.
- Select DNP3 RTU for 【Driver】.
- Click Channel Management next to 【Channel】, and in the pop-up window click Add Channel:
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Custom channel name | DNP3-RTU-CH01 |
【Connection Channel】 | Select the configured serial port, such as COM1 | /dev/ttyCOM1 |
【Master Address】 | The DNP3 link address used by the gateway as the master | 1 |
【Integrity Poll Period】 | The period, in seconds, used to refresh all current values from the device. | 30 |
【Event Data Poll Period (Class 1)】 | Polls the high-priority event queue. Use it when important alarms or critical status changes need to be obtained earlier. | 5 |
【Event Data Poll Period (Class 2)】 | Polls the medium-priority event queue. Use it when general changed data should be obtained faster than through Integrity Polling alone. | 10 |
【Event Data Poll Period (Class 3)】 | Polls the low-priority event queue. Use it for changed data with lower real-time requirements. | 30 |
【Collection Timeout】 | Timeout for a single collection request | 10 |
Notes:
- Set an event polling period to 0 to disable polling for that event class.
- The event polling periods only take effect when Event Polling is enabled on the device and the tag 【Event Class】 is configured as the corresponding Class.
- Save and close the channel management window. In the device form, select this channel and continue filling in the device parameters:
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Custom device name. It must be unique under the current channel. | DNP3-RTU-Device-01 |
【Slave Address】 | The DNP3 link address of the target device. It must be unique under the same channel. | 1 |
【Acquisition Strategy】 | Determines how the gateway reads data from the device. If you only need periodic refresh of all current values, select Integrity Polling. If the device supports event processing and you want to read changes by Class priority, enable Event Polling or Active Report as needed. | Integrity Polling |
- Click Save to create the device.
Figure 5-2 Add the DNP3 RTU Device and Channel
5.3 Add Tags
Follow the steps in Section 4.3. Under the device, click Add Tag and select the corresponding 【Object type】 and 【Index】 according to the point list. Save after the configuration is complete.
For RTU scenarios, the same Event Class selection principles from Section 4.3 apply. In addition:
- If multiple devices share one RS485 bus, it is recommended to configure only critical points as Class 1 first, instead of placing a large number of normal points into event polling.
- If the site already shows symptoms such as slow polling or occasional timeout, first increase the Integrity Poll Period and the event polling periods appropriately, and then decide whether Class 2 and Class 3 should remain enabled.
5.4 Publish the Configuration
Click Publish in the upper-right corner to make the configuration take effect. The gateway will start sending collection requests to the RS485 bus.
6. Simulator Configuration (Optional)
If you do not have a real DNP3 device, you can use the CDOAN-DNP3 simulator to verify the gateway collection logic. If you already have a real device, skip directly to Chapter 7.
The simulator example in this chapter uses a DNP3 TCP scenario. If you need to validate DNP3 RTU, the overall approach is basically the same. You only need to replace the network parameter settings here with serial parameter settings and combine them with the RTU channel configuration in Chapter 5.
6.1 Install and Tile the Simulator Views
- Install and open the CDOAN-DNP3 simulator on the engineering PC. It can be downloaded from www.cdoancal.com.
- Click Views and make sure Config, DNP3 Parameters, Outstation Configuration, and Communication are all checked.
- Click Window > Tile so that the four windows are tiled for easier configuration.
Figure 6-1 Simulator Four-Window Tiled Layout
6.2 Configure TCP Outstation Mode
In the Config view, configure the network settings:
- 【Communication Mode】: Select TCP Only.
- 【Outstation IP Address】: Set it to the IP address of the PC running the simulator, for example 192.168.0.68.
- 【Listen Mode】: Select the PC network adapter IP in the same subnet as the gateway, for example 192.168.0.68. It must match the IP address configured in the E2C Factory channel.
- 【Network Port】: Set it to 20000 so that it matches the gateway channel configuration.
6.3 Configure DNP3 Parameters
In the DNP3 Parameters view, configure the link addresses:
- 【of Master】: Set it to 0 so that it matches the gateway channel 【Master Address】.
- 【of Outstation】: Set it to 0 so that it matches the gateway device 【Slave Address】.
6.4 Add Outstation Points and Alternating Data Changes
In the Outstation Configuration view, right-click and choose Add to create points that correspond to the gateway tags. To make data changes easier to observe, you can configure alternating values:
Point Type and Index | Value | Alt. Value | Time (s) | Expected Effect |
Binary Input index 0 | 0 | 1 | 10 | Changes between 0 and 1 every 10 seconds |
Analog Input index 0 | 100 | 200 | 15 | Changes between 100 and 200 every 15 seconds |
Counter index 0 | 0 | 1 | 5 | Increments by 1 every 5 seconds |
6.5 Start Simulator Communication
Click Communication and choose Outstation to start outstation communication. The simulator will begin waiting for the gateway to connect.
7. Data Collection Verification
Whether you use a real device or a simulator, you must verify that data collection is successful after the configuration is published.
7.1 Verify Device Online Status and Tag Values
- Navigate to Data Collection > Wired Device.
- Observe the indicator in the upper-left corner of the device card:
- Green: The device connection is normal. For TCP, this means the connection is established. For RTU, this means serial communication is working normally.
- Red: The device connection has failed. Check the network, wiring, or master and slave address matching.
- On the same page, check the Status, Latest Value, and Update Time columns in the tag list on the right.
- If the tag status is normal and the Latest Value shows valid data that refreshes with time, data collection is successful.
- If a simulator is used, continue observing whether the Analog Input or other tags values change according to the configured frequency to confirm that the gateway keeps receiving updated data.
Figure 7-1 Check DNP3 Device Online Status and Tag Values
8. Northbound Configuration: Two Core Scenarios
After southbound DNP3 data collection is successful, you can package and forward the data to northbound systems.
8.1 Create a Tag Group (Preparation for Data to Cloud)
Purpose of this step: Add the DNP3 tags to be reported into one Tag Group so that the MQTT Publish message can select them as a data source.
- Navigate to Data to Cloud > Tag Group.
- Click Create Group, and configure the group name and reporting policy.
- After the first save, select the DNP3 tag to be reported, for example AI_0_Temperature, in the tag selection window, and then click Save again.
Parameter Name | Configuration Description | Recommended / Example Value |
【Name】 | Identifies the current Tag Group | DNP3 |
【Report Type】 | Defines how the Tag Group generates data for reporting | Period |
【Cycle Unit】 | Defines the time unit of the reporting interval | sec |
【Report Interval】 | Defines the interval for generating data to be reported | 10 sec |
The Tag Group takes effect when saved and does not need to be published separately. In the MQTT Publish message, select this Tag Group as the data source.
Figure 8-1 Create a Tag Group
8.2 Scenario A: Forward to an MQTT Broker (Data to Cloud)
This scenario is used to report collected DNP3 data to an MQTT Broker or cloud platform through Standard MQTT.
- Navigate to Data to Cloud, click Create Cloud Service, select MQTT as the Cloud Service Type, enter a name, and click Save.
- In Connection Configuration, complete the following key parameters and save the configuration:
Parameter Name | Configuration Description | Recommended / Example Value |
【Cloud Platform Type】 | Selects the MQTT service type used by the target platform | Standard MQTT |
【Server Address】 | Broker address accessible from the gateway | 192.168.0.68 |
【Port】 | MQTT port opened by the Broker | 1883 |
【MQTT Client ID】 | Client identifier used by the Broker to recognize the gateway | Gateway_001 |
【Keep Alive】 | Sets the connection heartbeat interval | 60 |
【Clear Session】 | Defines whether the previous session state is retained | No |
【MQTT Version】 | Must match the version supported by the Broker | v3.1 |
【User Authentication】 | Enable it when the Broker requires a username and password | Off |
【SSL/TLS】 | Enable it when the Broker requires encrypted communication | Off |
Figure 8-2 Configure the MQTT Cloud Service Connection
- In Message Management for this Cloud Service, select Publish, click Add, and configure the publishing rule:
Parameter Name | Configuration Description | Recommended / Example Value |
【Topic Alias】 | Used to identify the current Publish rule in the system | AI_0_Temperature |
【Topic】 | MQTT topic used for publishing the message | /factory/line1/dnp3 |
【Data Source Type】 | Defines the type of data source used by the Publish message | Tag Data |
【Group】 | Select the Tag Group created in Section 8.1 | DNP3 |
【Qos】 | Defines the message delivery service level | 0 |
【Enabled】 | The system publishes data only when this rule is enabled | Yes |
Figure 8-3 Configure MQTT Publish Message
- After saving, confirm that the Cloud Service status is normal, and use an MQTT client to subscribe to the corresponding topic.
- Wait for at least one complete reporting interval and confirm that a message containing AI_0_Temperature and its value is received.
Figure 8-4 Validate MQTT Data to Cloud
8.3 Scenario B: Forward Data Through Modbus TCP
This scenario is used to provide collected DNP3 data to a local SCADA system, HMI, or any other Modbus TCP client. In this scenario, the gateway acts as a Modbus TCP Slave and exposes the mapped tag values for external reading.
- Navigate to Data Forwarding, click New, select Modbus TCP Slave for 【Protocol】, and click Save.
- Open the Configuration tab, enable the service, complete the following core parameters, and click Submit.
Parameter Name | Configuration Description | Recommended / Example Value |
【Enable Service】 | The gateway provides Modbus TCP forwarding only when the service is enabled | Yes |
【Port】 | Service port used by the Modbus TCP client to access the gateway | 502 |
Figure 8-5 Configure the Modbus TCP Slave Service
- In the slave list, click Add to create a mapping table, and complete the following parameters:
Parameter Name | Configuration Description | Recommended / Example Value |
【Mapping Table Name】 | Identifies the current slave mapping table | modbus |
【Slave Address】 | Slave ID used by the Modbus TCP client when reading data | 1 |
- Open the mapping table, click Add, select the collected DNP3 device and AI tag, and configure the mapping parameters as follows:
Parameter Name | Configuration Description | Recommended / Example Value |
【Device】 | Select the DNP3 device that has already been verified in data collection | DNP3-Device-01 |
【Tag】 | Select the AI tag that should be exposed to the client | AI_0_Temperature |
【Mapped Value Setting】 | Select whether the client reads the raw collected value or the calculated result | Data Operation Value |
【Mapped Data Type】 | Must match the actual data type of the tag | int(int32) |
【Start Mapping Function Code】 | Define the Modbus function code used by the client to read this tag | 04 Input Register |
【Start Mapping Address】 | Define the start address of this tag in the mapping table | 1 |
- In the SCADA software or a Modbus TCP client, enter the gateway IP address, port 502, and slave address 1. Use function code 04 to read mapping address 1, and verify that the returned value matches AI_0_Temperature on the Data Collection page.
If the client uses a zero-based offset address, mapping address 1 may need to be entered as 0. If the client cannot read data, first check whether the Modbus TCP Slave service is enabled, whether the port and slave address are correct, and whether AI_0_Temperature already has a latest value on the Data Collection page.
Figure 8-6 Validate Modbus TCP Data Forwarding
9. Troubleshooting and FAQ
9.1 Common DNP3 TCP Issues
Symptom | Possible Cause | Solution |
Device stays offline | The device IP or Port is incorrect, or the target device is not running the DNP3 TCP service | Check whether 【IP Address】 and 【Port】 in the channel match the field device settings. Confirm that the target device is running the DNP3 TCP service and is reachable. If a simulator is used, make sure Outstation communication has been started. |
The network is unreachable or the firewall blocks the port | Check network connectivity between the gateway and the device. Confirm that intermediate network policies and the device or PC firewall allow the required port. | |
Master Address or Slave Address does not match | Check whether the channel 【Master Address】 and the device 【Slave Address】 match the field device settings. If a simulator is used, make sure of Master and of Outstation are configured consistently. | |
The simulator is bound to the wrong network adapter | If a simulator is used on a PC with multiple network adapters, make sure Listen Mode is set to the adapter IP actually used by E2C Factory. If necessary, temporarily disable other adapters and try again. | |
Device is online but tags have no values | Object type or index mismatch | Check whether 【Object type】 and 【Index】 in E2C Factory match the field device point list. If a simulator is used, confirm that the corresponding points have been created. |
Tags have no values at all | The configuration has not been published, or the device has not returned valid data yet | Make sure Publish has been clicked. After publishing, wait for at least one full Integrity Poll cycle before checking tag values and update times. |
Event Polling is configured but has little or no effect | Event Polling is not enabled on the device, the tag Event Class does not match, or the device is not generating the corresponding events | Check whether Event Polling is enabled in 【Acquisition Strategy】, whether the tag 【Event Class】 matches the channel event polling settings, and whether the field device supports and actually generates the corresponding event class. |
Some tags refresh slowly or time out intermittently | 【Collection Timeout】 is too short, or the polling settings are too aggressive | Increase 【Collection Timeout】 appropriately. Lengthen the 【Integrity Poll Period】 or the polling periods of non-critical event classes to reduce device and link load. |
Device or link load increases after Event Polling is enabled | Multiple event classes are being polled too frequently | Keep Class 1 first, enable Class 2 and Class 3 only when needed, and lengthen the polling periods as appropriate. |
9.2 Common DNP3 RTU Issues
Symptom | Possible Cause | Solution |
Device stays offline | Serial wiring is incorrect, or the serial parameters do not match the device | Confirm that A+ and B- are not reversed. Check whether Baud Rate, Data Bit, Stop Bits, and Parity exactly match the field device settings. |
Slave Address conflict | If multiple devices are connected to the same bus, make sure each device uses a unique 【Slave Address】. | |
Some data cannot be read, or intermittent timeout occurs | 【Collection Timeout】 is too short, or the bus load is too high | Increase 【Collection Timeout】 appropriately. Check the number of devices on the bus, cable quality, and polling cycle settings. |
Event Polling is enabled, but the effect is not obvious | The tag 【Event Class】 is configured incorrectly, the corresponding event polling period is 0, or the device does not support the event mechanism | Check whether the tags are configured as the corresponding Class 1, Class 2, or Class 3. Check whether the corresponding event polling period is disabled. If necessary, confirm event mechanism support with the device vendor. |
Polling becomes slow when multiple RTU devices run on the same bus | Integrity Polling and multiple Event Polling cycles are stacked together, causing serial bus queuing | Lengthen the Integrity Poll Period and event polling periods as appropriate. Keep only critical event classes, and if necessary enable only Class 1 first. |