Changes

Created page with "{{Template: Networking_rutos_manual_fw_disclosure | fw_version = {{{series}}}_R_00.07.00 | series = {{{series}}} }} ==Summary== <b>Distributed Network Protocol 3 (DNP3)<..."
{{Template: Networking_rutos_manual_fw_disclosure
| fw_version = {{{series}}}_R_00.07.00
| series = {{{series}}}
}}

==Summary==

<b>Distributed Network Protocol 3 (DNP3)</b> is a set of communications protocols used between components in process automation systems. It is primarily used for communications between a master station and Remote Terminal Units (RTUs) or Intelligent Electronic Devices (IEDs).

This manual page provides an overview of the DNP3 functionality in {{{name}}} devices.

<b>Note:</b> DNP3 is additional software that can be installed from the <b>Services → [[{{{name}}} Package Manager|Package Manager]]</b> page.</u>

==DNP3 Parameters==

DNP3 parameters are held within <b>indexes</b>. The index numbers and corresponding system values are described in the table below:
<br> <br>
<table class="nd-mantable">
<tr>
<th width="546">required value</th>
<th width="300">index</th>
<th>group type</th>
</tr>
<tr>
<td>Uptime</td>
<td>0</td>
<td>Octet String</td>
</tr>
{{#ifeq:{{{mobile}}}| 1 |
<tr>
<td>Signal Strength</td>
<td>1</td>
<td>Octet String</td>
</tr>
<tr>
<td>Modem temperature (in 0.1 °C)</td> <!--patikslinti su MEIG-->
<td>2</td>
<td>Octet String</td>
</tr>
}}
<tr>
<td>Hostname</td>
<td>3</td>
<td>Octet String</td>
</tr>
{{#ifeq:{{{mobile}}}| 1 |
<tr>
<td>Operator</td>
<td>4</td>
<td>Octet String</td>
</tr>
}}
<tr>
<td>Router Serial Number</td>
<td>5</td>
<td>Octet String</td>
</tr>
{{#switch:{{{name}}}
|TRB141=
|TRB142=
|TRB145=
|
<tr>
<td>LAN MAC Address</td>
<td>6</td>
<td>Octet String</td>
</tr>
}}
<tr>
<td>Router name</td>
<td>7</td>
<td>Octet String</td>
</tr>
{{#ifeq:{{{mobile}}}| 1 |
{{#ifeq:{{{dualsim}}}| 1 |
<tr>
<td>Currently active SIM card slot</td>
<td>8</td>
<td>Octet String</td>
</tr>
}}
<tr>
<td>Network state</td>
<td>9</td>
<td>Octet String</td>
</tr>
<tr>
<td>Connection state</td>
<td>10</td>
<td>Octet String</td>
</tr>
<tr>
<td>Mobile data received today (SIM1)</td>
<td>20</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent today (SIM1)</td>
<td>21</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this week (SIM1)</td>
<td>22</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this week (SIM1)</td>
<td>23</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this month (SIM1)</td>
<td>24</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this month (SIM1)</td>
<td>25</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last 24h (SIM1)</td>
<td>26</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last 24h (SIM1)</td>
<td>27</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last week (SIM1)</td>
<td>28</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last week (SIM1)</td>
<td>29</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last month (SIM1)</td>
<td>30</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last month (SIM1)</td>
<td>31</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received today (SIM2)</td>
<td>32</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent today (SIM2)</td>
<td>33</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this week (SIM2)</td>
<td>34</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this week (SIM2)</td>
<td>35</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this month (SIM2)</td>
<td>36</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this month (SIM2)</td>
<td>37</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last 24h (SIM2)</td>
<td>38</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last 24h (SIM2)</td>
<td>39</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last week (SIM2)</td>
<td>40</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last week (SIM2)</td>
<td>41</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last month (SIM2)</td>
<td>42</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last month (SIM2)</td>
<td>43</td>
<td>Counter</td>
</tr>
}}
{{#ifeq:{{{gps}}}| 1 |
<tr>
<td>GPS Fix Time</td>
<td>50</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Longitude Coordinate</td>
<td>51</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Latitude Coordinate</td>
<td>52</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Altitude Coordinate</td>
<td>53</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Angle</td>
<td>54</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Speed</td>
<td>55</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Accuracy</td>
<td>56</td>
<td>Octet String</td>
</tr>
<tr>
<td>GPS Satellite count</td>
<td>57</td>
<td>Octet String</td>
</tr>
}}
</table>

{{#ifeq:1| 1 |
===External Modem Parameters===
----
If you are using an external modem on your device, use these index numbers for corresponding system values:

<table class="nd-mantable">
<tr>
<th width="546">required value</th>
<th width="300">index</th>
<th>group type</th>
</tr>
<tr>
<td>Modem VID and PID</td>
<td>100 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
<tr>
<td>Mobile data received today (SIM1)</td>
<td>101 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent today (SIM1)</td>
<td>102 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this week (SIM1)</td>
<td>103 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this week (SIM1)</td>
<td>104 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this month (SIM1)</td>
<td>105 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this month (SIM1)</td>
<td>106 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last 24h (SIM1)</td>
<td>107 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last 24h (SIM1)</td>
<td>108 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last week (SIM1)</td>
<td>109 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last week (SIM1)</td>
<td>110 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last month (SIM1)</td>
<td>111 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last month (SIM1)</td>
<td>112 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received today (SIM2)</td>
<td>113 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent today (SIM2)</td>
<td>114 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this week (SIM2)</td>
<td>115 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this week (SIM2)</td>
<td>116 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received this month (SIM2)</td>
<td>117 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent this month (SIM2)</td>
<td>118 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last 24h (SIM2)</td>
<td>119 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last 24h (SIM2)</td>
<td>120 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last week (SIM2)</td>
<td>121 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last week (SIM2)</td>
<td>122 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data received last month (SIM2)</td>
<td>123 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Mobile data sent last month (SIM2)</td>
<td>124 + 50 * modem_number</td>
<td>Counter</td>
</tr>
<tr>
<td>Modem temperature (in 0.1 °C)</td> <!--patikslinti su MEIG-->
<td>125 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
<tr>
<td>Operator</td>
<td>126 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
<tr>
<td>Network state</td>
<td>127 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
<tr>
<td>Connection state</td>
<td>128 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
<tr>
<td>Signal Strength</td>
<td>129 + 50 * modem_number</td>
<td>Octet String</td>
</tr>
</table>

{{#switch:{{{name}}}
|RUTX12=
The <b>modem_number</b> of the secondary (internal) modem on a RUTX12 is <b>1</b> (primary modem is skipped). modem_number for the external modem is <b>2</b>.
|
The <b>modem_number</b> of the external modem is <b>1</b> (internal modem is skipped).
}}

To get the exact index of a parameter, use the formula in the table above. For example, the index of an external modem operator is {{#ifeq:{{{name}}} | RUTX12 | 226. Formula is: 126 + 50 * 2. | 176. Formula is: 126 + 50 * 1. }}
}}

==TCP Master==

A master in DNP3 is a component that communicates (requests data) with a single outstation via a communication channel. By default, the master list is empty. To add a new master, click the 'Add' button.

[[File:Networking_rutos_manual_dnp3_tcp_master_add_button.png|border|class=tlt-border]]

After clicking 'Add' you will be redirected to the newly added master's configuration page.

===TCP Master Configuration===
----
The <b>TCP Master Configuration</b> section is used to configure the parameters of a DNP3 Outstation that the Master (this {{{name}}} device) will be querying with requests. The figure below is an example of the TCP Master Configuration and the table below provides information on the fields contained in that section:

[[File:Networking_rutos_manual_dnp3_tcp_master_tcp_master_configuration.png|border|class=tlt-border]]

<table class="nd-mantable">
<tr>
<th>Field</th>
<th>Value</th>
<th>Description</th>
</tr>
<tr>
<td>Enable</td>
<td>off | on; default: <b>off</b></td>
<td>Turns communication with the outstation device on or off.</td>
</tr>
<tr>
<td>Name</td>
<td>string; default: <b>none</b></td>
<td>Name of the TCP master, used for easier management purposes.</td>
</tr>
<tr>
<td>IP address</td>
<td>ip; default: <b>none</b></td>
<td>DNP3 Outstation IP address.</td>
</tr>
<tr>
<td>Port</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>DNP3 Outstation Port.</td>
</tr>
<tr>
<td>Local Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Master Link-Layer address.</td>
</tr>
<tr>
<td>Remote Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Outstation Link-Layer address.</td>
</tr>
<tr>
<td>Period</td>
<td>integer [1..60]; default: <b>none</b></td>
<td>Interval at which requests are sent to the outstation device.</td>
</tr>
<tr>
<td>Timeout</td>
<td>integer [1..60]; default: <b>none</b></td>
<td>Maximum response wait time.</td>
</tr>
</table>

===Requests Configuration===
----
A DNP3 <b>request</b> is a way of obtaining data from DNP3 Outstations. The master sends a request to an outstation specifying the function codes to be performed. The outstation then sends the requested data back to the DNP3 master.

The Request Configuration list is empty by default. To add a new Request Configuration look to the Add New Instance section. Enter a custom name into the 'New Configuration Name' field and click the 'Add' button:

[[File:Networking_rutos_manual_dnp3_tcp_master_tcp_master_configuration_requests_configuration_add_new_instance.png|border|class=tlt-border]]

The new Request Configuration should become visible in the list:

[[File:Networking_rutos_manual_dnp3_tcp_master_requests_configuration.png|border|class=tlt-border]]

<table class="nd-mantable">
<tr>
<th>Field</th>
<th>Value</th>
<th>Description</th>
</tr>
<tr>
<td>Name</td>
<td>string; default: <b>Unnamed</b></td>
<td>Name of this Request Configuration. Used for easier management purposes.</td>
</tr>
<tr>
<td>Start Index</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Start index of the data subarray.</td>
</tr>
<tr>
<td>End Index</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>End index of the data subarray.</td>
</tr>
<tr>
<td>Data Type</td>
<td>Binary | Double Binary | Counter | Frozen Counter | Analog | Octet String | Analog Output Status | Binary Output Status; default: <b>Binary</b></td>
<td>Data object group of the requested index(-es).</td>
</tr>
<tr>
<td>off/on slider</td>
<td>off | on; default: <b>off</b></td>
<td>Turns the request on or off.</td>
</tr>
</table>

{{#ifeq:1 | 1 |
==Serial Master==

The <b>Serial Master</b> page is used to configure the device as a DNP3 RTU Master. DNP3 RTU (remote terminal unit) is a serial communication protocol mainly used in communication via serial interfaces.

===Serial Master Configuration===
----
The <b>Serial Master Configuration</b> section is used to configure the parameters of a DNP3 Outstation that the Master (this {{{name}}} device) will be querying with requests. The figure below is an example of the Serial Master Configuration and the table below provides information on the fields contained in that section:

[[File:Networking_rutos_manual_dnp3_serial_master_serial_master_configuration.png|border|class=tlt-border]]

<table class="nd-mantable">
<tr>
<th>Field</th>
<th>Value</th>
<th>Description</th>
</tr>
<tr>
<td>Enable</td>
<td>off <nowiki>|</nowiki> on; default: <b>off</b></td>
<td>Turns communication with the outstation device on or off.</td>
</tr>
<tr>
<td>Name</td>
<td>string; default: <b>none</b></td>
<td>Name of the Serial master, used for easier management purposes.</td>
</tr>
<tr>
<td>Serial port</td>
<td>{{#ifeq:{{{rs232}}} | 1 | RS232 |}} {{#ifeq:{{{rs232}}} | 1 | {{#ifeq:{{{rs485}}} | 1 | <nowiki>| </nowiki> |}} |}}{{#ifeq:{{{rs485}}} | 1 | RS485 |}}; default: <b>{{#ifeq:{{{rs232}}} | 1 | RS232 | RS485}}</b></td>
<td>DNP3 Outstation IP address.</td>
</tr>
<tr>
<td>Baud rate</td>
<td>300 <nowiki>|</nowiki> 1200 <nowiki>|</nowiki> 2400 <nowiki>|</nowiki> 4800 <nowiki>|</nowiki> 9600 <nowiki>|</nowiki> 19200 <nowiki>|</nowiki> 38400 <nowiki>|</nowiki> 57600 <nowiki>|</nowiki> 115200; default: <b>115200</b></td>
<td>Serial data transmission rate (in bits per second).</td>
</tr>
<tr>
<td>Data bits</td>
<td>5 <nowiki>|</nowiki> 6 <nowiki>|</nowiki> 7 <nowiki>|</nowiki> 8; default: <b>8</b></td>
<td>Number of data bits for each character.</td>
</tr>
<tr>
<td>Stop bits</td>
<td>None <nowiki>|</nowiki> 1 <nowiki>|</nowiki> 1.5 <nowiki>|</nowiki> 2; default: <b>1</b></td>
<td>Stop bits sent at the end of every character allow the receiving signal hardware to detect the end of a character and to resynchronise with the character stream. Electronic devices usually use one stop bit. Two stop bits are required if slow electromechanical devices are used.</td>
</tr>
<tr>
<td>Parity</td>
<td>None <nowiki>|</nowiki> Even <nowiki>|</nowiki> Odd; default: <b>None</b></td>
<td>In serial transmission, parity is a method of detecting errors. An extra data bit is sent with each data character, arranged so that the number of 1 bits in each character, including the parity bit, is always odd or always even. If a byte is received with the wrong number of 1s, then it must have been corrupted. However, an even number of errors can pass the parity check.
<ul>
<li><b>None</b> (<b>N</b>) - no parity method is used.</li>
<li><b>Odd</b> (<b>O</b>) - the parity bit is set so that the number of "logical ones (1s)" has to be odd.</li>
<li><b>Even</b> (<b>E</b>) - the parity bit is set so that the number of "logical ones (1s)" has to be even.</li>
</ul>
</td>
</tr>
<tr>
<td>Flow control</td>
<td>None <nowiki>|</nowiki> RTS/CTS <nowiki>|</nowiki> Xon/Xoff; default: <b>None</b></td>
<td>In many circumstances a transmitter might be able to send data faster than the receiver is able to process it. To cope with this, serial lines often incorporate a "handshaking" method, usually distinguished between hardware and software handshaking.
<ul>
<li><b>Hardware</b> - hardware handshaking. RTS and CTS are turned OFF and ON from alternate ends to control data flow, for instance when a buffer is almost full.</li>
<li><b>Xon/Xoff</b> - software handshaking. The Xon and Xoff characters are sent by the receiver to the sender to control when the sender will send data, i.e., these characters go in the opposite direction to the data being sent. The circuit starts in the "sending allowed" state. When the receiver's buffers approach capacity, the receiver sends the Xoff character to tell the sender to stop sending data. Later, after the receiver has emptied its buffers, it sends an Xon character to tell the sender to resume transmission.</li>
</ul>
</td>
</tr>
<tr>
<td>Open delay</td>
<td>integer [0..10000]; default: <b>none</b></td>
<td>Some physical layers need time to 'settle' so that the first tx isn't lost.</td>
</tr>
<tr>
<td>Local Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Master Link-Layer address.</td>
</tr>
<tr>
<td>Remote Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Outstation Link-Layer address.</td>
</tr>
<tr>
<td>Period</td>
<td>integer [1..60]; default: <b>none</b></td>
<td>Interval at which requests are sent to the outstation device.</td>
</tr>
<tr>
<td>Timeout</td>
<td>integer [1..60]; default: <b>none</b></td>
<td>Maximum response wait time.</td>
</tr>
</table>

|}}

===Requests Configuration===
----
A DNP3 <b>request</b> is a way of obtaining data from DNP3 Outstations. The master sends a request to an outstation specifying the function codes to be performed. The outstation then sends the requested data back to the DNP3 master.

The Request Configuration list is empty by default. To add a new Request Configuration look to the Add New Instance section. Enter a custom name into the 'New Configuration Name' field and click the 'Add' button:

[[File:Networking_rutos_manual_dnp3_tcp_master_tcp_master_configuration_requests_configuration_add_new_instance.png|border|class=tlt-border]]

The new Request Configuration should become visible in the list:

[[File:Networking_rutos_manual_dnp3_tcp_master_requests_configuration.png|border|class=tlt-border]]

<table class="nd-mantable">
<tr>
<th>Field</th>
<th>Value</th>
<th>Description</th>
</tr>
<tr>
<td>Name</td>
<td>string; default: <b>Unnamed</b></td>
<td>Name of this Request Configuration. Used for easier management purposes.</td>
</tr>
<tr>
<td>Start Index</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Start index of the data subarray.</td>
</tr>
<tr>
<td>End Index</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>End index of the data subarray.</td>
</tr>
<tr>
<td>Data Type</td>
<td>Binary | Double Binary | Counter | Frozen Counter | Analog | Octet String | Analog Output Status | Binary Output Status; default: <b>Binary</b></td>
<td>Data object group of the requested index(-es).</td>
</tr>
<tr>
<td>off/on slider</td>
<td>off | on; default: <b>off</b></td>
<td>Turns the request on or off.</td>
</tr>
</table>

==DNP3 Outstation==

An outstation in DNP3 is a component that communicates with a single master via a communication channel. It makes measurements of the physical world and then sends them to a master upon request (solicited) or on its own accord (unsolicited). Occasionally a master requests that it do something by sending it a control. This provides the user with the possibility to get system parameters.

The figure below is an example of the DNP3 Outstation window section and the table below provides information on the fields contained in that window:

[[File:Networking_rutos_manual_dnp3_dnp3_outstation.png|border|class=tlt-border]]

<table class="nd-mantable">
<tr>
<th>Field</th>
<th>Value</th>
<th>Description</th>
</tr>
<tr>
<td>Enable</td>
<td>off | on; default: <b>off</b></td>
<td>Turns DNP3 Outstation on or off.</td>
</tr>
<tr>
<td>Local Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Outstation Link-Layer address.</td>
</tr>
<tr>
<td>Remote Address</td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>Master Link-Layer address.</td>
</tr>
<tr>
<td>Unsolicited enabled</td>
<td>off | on; default: <b>none</b></td>
<td>Enables the transmission of unsolicited messages.</td>
</tr>
<tr>
<td>Protocol</td>
<td>TCP | <span style="color:red">UDP</span>; default: <b>TCP</b></td>
<td>Protocol used for DNP3 communications.</td>
</tr>
<tr>
<td>Port</td>
<td>integer [0..65535]; default: <b>502</b></td>
<td>Port used for DNP3 communications.</td>
</tr>
<tr>
<td><span style="color:red">UDP response address</span></td>
<td>ipv4; default: <b>none</b></td>
<td>UDP response address.</td>
</tr>
<tr>
<td><span style="color:red">UDP response port</span></td>
<td>integer [0..65535]; default: <b>none</b></td>
<td>UDP response port.</td>
</tr>
<tr>
<td>Allow Remote Access</td>
<td>off | on; default: <b>off</b></td>
<td>Allows remote DNP3 connections by adding an exception to the device's firewall on the port specified in the field above.</td>
</tr>
</table>

Navigation menu