Changes

no edit summary
Line 1: Line 1: −
{{Template:Networking_rutos_manual_fw_disclosure
+
{{Template: Networking_rutos_manual_fw_disclosure
| fw_version = {{{series}}}_R_00.02.05
+
| fw_version = {{{series}}}_R_00.07.01
 
| series    = {{{series}}}
 
| series    = {{{series}}}
 
}}
 
}}
 
+
{{#ifeq: {{{series}}} | RUT9 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)|click here]]</b> for the old style WebUI (FW version RUT9XX_R_00.06.08.3 and earlier) user manual page.</i>|}}
 +
{{#ifeq: {{{series}}} | RUT2 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)|click here]]</b> for the old style WebUI (FW version RUT2XX_R_00.01.14.1 and earlier) user manual page.</i>|}}
 
==Summary==
 
==Summary==
   Line 9: Line 10:     
This manual page provides an overview of the Modbus functionality in {{{name}}} devices.
 
This manual page provides an overview of the Modbus functionality in {{{name}}} devices.
 +
{{#switch: {{{series}}}
 +
| RUTX =
 +
| TRB1 =
 +
| TRB2 =
 +
| RUT9 =
 +
| #default =
 +
<u><b>
    +
Note:</b> On {{{name}}}, Modbus TCP Slave/Master and MQTT Gateway is additional software that can be installed from the <b>Services → [[{{{name}}} Package Manager|Package Manager]]</b> page.</u><br>}}
 
{{Template:Networking_rutos_manual_basic_advanced_webui_disclaimer
 
{{Template:Networking_rutos_manual_basic_advanced_webui_disclaimer
 
| series = {{{series}}}
 
| series = {{{series}}}
Line 30: Line 39:  
     <tr>
 
     <tr>
 
       <td>Enable</td>
 
       <td>Enable</td>
       <td>off | on; default: <b>none</b></td>
+
       <td>off | on; default: <b>off</b></td>
 
       <td>Turns Modbus TCP on or off.</td>
 
       <td>Turns Modbus TCP on or off.</td>
 
     </tr>
 
     </tr>
Line 71: Line 80:  
|analog = {{{analog}}}
 
|analog = {{{analog}}}
 
|gps = {{{gps}}}
 
|gps = {{{gps}}}
 +
|dualsim = {{{dualsim}}}
 
}}
 
}}
    
{{Template:Networking_rutos_manual_modbus_modbus_tcp_set_parameters_table  
 
{{Template:Networking_rutos_manual_modbus_modbus_tcp_set_parameters_table  
|wifi={{{wifi}}}
+
|wifi = {{{wifi}}}
|mobile={{{mobile}}}
+
|mobile = {{{mobile}}}
|series={{{series}}}
+
|series = {{{series}}}
|name={{{name}}}
+
|name = {{{name}}}
 +
|dualsim = {{{dualsim}}}
 
}}
 
}}
 
==Modbus TCP Master==
 
==Modbus TCP Master==
Line 272: Line 283:  
     <tr>
 
     <tr>
 
         <td>Action</td>
 
         <td>Action</td>
         <td>SMS | MODBUS Write Request; default: <b>MODBUS Write Request</b></td>
+
         <td>{{#ifeq:{{{mobile}}}|1|SMS {{!}}|}} MODBUS Write Request; default: <b>MODBUS Write Request</b></td>
 
         <td>Action that will be taken if the condition is met. Possible actions:
 
         <td>Action that will be taken if the condition is met. Possible actions:
             <ul>
+
             <ul>{{#ifeq: {{{mobile}}} | 1 |
                 <li><b>SMS</b> - sends and SMS message to a specified recipient(s).</li>
+
                 <li><b>SMS</b> - sends and SMS message to a specified recipient(s).</li>|}}
 
                 <li><b>Modbus Request</b> - sends a Modbus Write request to a specified slave.</li>
 
                 <li><b>Modbus Request</b> - sends a Modbus Write request to a specified slave.</li>
 
             </ul>
 
             </ul>
 
         </td>
 
         </td>
     </tr>
+
     </tr>{{#ifeq: {{{mobile}}} | 1 |
 
     <tr>
 
     <tr>
 
         <td><span style="color: #0054a6;">SMS: Message</span></td>
 
         <td><span style="color: #0054a6;">SMS: Message</span></td>
Line 289: Line 300:  
         <td>phone number; default: <b>none</b></td>
 
         <td>phone number; default: <b>none</b></td>
 
         <td>Recipient's phone number.</td>
 
         <td>Recipient's phone number.</td>
     </tr>
+
     </tr>|}}
 
     <tr>
 
     <tr>
 
         <td><span style="color: purple;">MODBUS Write Request: IP address</span></td>
 
         <td><span style="color: purple;">MODBUS Write Request: IP address</span></td>
Line 330: Line 341:     
The <b>Modbus Serial Master</b> page is used to configure the device as a Modbus RTU Master. Modbus RTU (remote terminal unit) is a serial communication protocol mainly used in communication via serial interfaces.
 
The <b>Modbus Serial Master</b> page is used to configure the device as a Modbus RTU Master. Modbus RTU (remote terminal unit) is a serial communication protocol mainly used in communication via serial interfaces.
 +
 +
<u><b>Note:</b> Modbus Serial Master is additional software that can be installed from the <b>Services → [[{{{name}}} Package Manager|Package Manager]]</b> page.</u>
 
{{#ifeq: {{{rs232}}} | 1 |
 
{{#ifeq: {{{rs232}}} | 1 |
 
===RS232===
 
===RS232===
Line 574: Line 587:  
     <tr>
 
     <tr>
 
         <td>Action</td>
 
         <td>Action</td>
         <td>SMS <nowiki>|</nowiki> MODBUS Write Request; default: <b>MODBUS Write Request</b></td>
+
         <td>{{#ifeq:{{{mobile}}}|1|SMS {{!}}|}} MODBUS Write Request; default: <b>MODBUS Write Request</b></td>
 
         <td>Action that will be taken if the condition is met. Possible actions:
 
         <td>Action that will be taken if the condition is met. Possible actions:
             <ul>
+
             <ul>{{#ifeq: {{{mobile}}} | 1 |
                 <li><b>SMS</b> - sends and SMS message to a specified recipient(s).</li>
+
                 <li><b>SMS</b> - sends and SMS message to a specified recipient(s).</li>|}}
 
                 <li><b>Modbus Request</b> - sends a Modbus Write request to a specified slave.</li>
 
                 <li><b>Modbus Request</b> - sends a Modbus Write request to a specified slave.</li>
 
             </ul>
 
             </ul>
 
         </td>
 
         </td>
     </tr>
+
     </tr>{{#ifeq: {{{mobile}}} | 1 |
 
     <tr>
 
     <tr>
 
         <td><span style="color: #0054a6;">SMS: Message</span></td>
 
         <td><span style="color: #0054a6;">SMS: Message</span></td>
Line 591: Line 604:  
         <td>phone number; default: <b>none</b></td>
 
         <td>phone number; default: <b>none</b></td>
 
         <td>Recipient's phone number.</td>
 
         <td>Recipient's phone number.</td>
     </tr>
+
     </tr>|}}
 
     <tr>
 
     <tr>
 
         <td><span style="color: purple;">MODBUS Write Request: Timeout</span></td>
 
         <td><span style="color: purple;">MODBUS Write Request: Timeout</span></td>
Line 634: Line 647:  
         <td>Enabled</td>
 
         <td>Enabled</td>
 
         <td>off <nowiki>|</nowiki> on; default: <b>off</b></td>
 
         <td>off <nowiki>|</nowiki> on; default: <b>off</b></td>
         <td>Turns Modbus Serial Master configuration via RS232 on or off. Both this and RS232 from Services → [[{{{name}}} RS232|RS232]] cannot be enabled at the same time.</td>
+
         <td>Turns Modbus Serial Master configuration via RS485 on or off. Both this and RS485 from Services → [[{{{name}}} RS485|RS485]] cannot be enabled at the same time.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 906: Line 919:  
     </tr>
 
     </tr>
 
</table>
 
</table>
|}}|}}
+
|}}
 +
 
 
==MQTT Gateway==
 
==MQTT Gateway==
   −
The <b>MQTT Gateway</b> function is used to transfer Modbus data over MQTT. Refer to the table for information on MQTT Gateway configuration fields.
+
The <b>MQTT Gateway</b> function is used to transfer Modbus data (send requests, receive responses) over MQTT. When it is enabled, the device (this {{{name}}}) subscribes to a REQUEST topic and publishes on a RESPONSE topic on a specified MQTT broker. It translates received MQTT message payload to a Modbus request and relays it to the specified Modbus TCP slave.
 +
 
 +
When the MQTT Gateway receives a response from the slave, it translates it to an MQTT message and publishes it on the RESPONSE topic.
 +
 
 +
[[File:Networking_rutos_manual_modbus_mqtt_gateway_scheme.png]]
 +
 
 +
Below is an example of the MQTT Gateway page. Refer to the table for information on MQTT Gateway configuration fields.
    
[[File:Networking_rutos_manual_modbus_mqtt_gateway.png|border|class=tlt-border]]
 
[[File:Networking_rutos_manual_modbus_mqtt_gateway.png|border|class=tlt-border]]
Line 955: Line 975:  
     </tr>
 
     </tr>
 
</table>
 
</table>
 +
 +
===Request messages===
 +
----
 +
Modbus request data sent in the MQTT payload should be generated in accordance with the following format:
 +
 +
<b>0 <COOKIE> <IP_TYPE> <IP> <PORT> <TIMEOUT> <SLAVE_ID> <MODBUS_FUNCTION> <REGISTER_NUMBER> <REGISTER_COUNT/VALUE></b>
 +
 +
Explanation:
 +
 +
<ul>
 +
    <li><b>0</b> - must be 0, which signifies a textual format (currently the only one implemented).</li>
 +
    <li><b>Cookie</b> - a 64-bit unsigned integer in range [0..2<sup>64</sup>]). A cookie is used in order to distinguish which response belongs to which request, each request and the corresponding response contain a matching cookie: a 64-bit unsigned integer.</li>
 +
    <li><b>IP type</b> - host IP address type. Possible values:
 +
        <ul>
 +
            <li><b>0</b> - IPv4 address;</li>
 +
            <li><b>1</b> - IPv6 address;</li>
 +
            <li><b>2</b> - hostname that will be resolved to an IP address.</li>
 +
        </ul></li>
 +
    <li><b>IP</b> - IP address of a Modbus TCP slave. IPv6 must be presented in full form (e.g., <i>2001:0db8:0000:0000:0000:8a2e:0370:7334</i>).</li>
 +
    <li><b>Port</b> - port number of the Modbus TCP slave.</li>
 +
    <li><b>Timeout</b> - timeout for Modbus TCP connection, in seconds. Range [1..999].</li>
 +
    <li><b>Slave ID</b> - Modbus TCP slave ID. Range [1..255].</li>
 +
    <li><b>Modbus function</b> - Modbus task type that will be executed. Possible values are:
 +
        <ul>
 +
            <li><b>3</b> - read holding registers;</li>
 +
            <li><b>6</b> - write to a single holding register;</li>
 +
            <li><b>16</b> - write to multiple holding registers.</li>
 +
        </ul></li>
 +
    <li><b>Register number</b> - number of the first register (in range [1..65536]) from which the registers will be read/written to.
 +
    <li><b>Register count/value</b> - this value depends on the Modbus function:
 +
        <ul>
 +
            <li><b>3</b> - <u>register count</u> (in range [1..125]); must not exceed the boundary (first register number + register count <= 65537);</li>
 +
            <li><b>6</b> - <u>register value</u> (in range [0..65535]);</li>
 +
            <li><b>16</b> - <u>register count</u> (in range [1..123]); must not exceed the boundary (first register number + register count <= 65537); and <u>register values</u> separated with commas, without spaces (e.g., <i>1,2,3,654,21,789</i>); there must be exactly as many values as specified (with register count); each value must be in the range of [0..65535].</li>
 +
        </ul></li>
 +
</ul>
 +
 +
===Response messages===
 +
----
 +
A special response message can take one of the following forms:
 +
 +
<COOKIE> OK                              - <i>for functions 6 and 16</i>
 +
<COOKIE> OK <VALUE> <VALUE> <VALUE>...  - <i>for function 3, where <VALUE> <VALUE> <VALUE>... are read register values</i>
 +
<COOKIE> ERROR: ...                      - <i>for failures, where ... is the error description</i>
 +
 +
===Examples===
 +
----
 +
Below are a few <b>examples</b> of controlling/monitoring the internal Modbus TCP Slave on {{{name}}}.
 +
----
 +
<b>Reboot the device</b>
 +
 +
<ul>
 +
    <li>Request:<br><pre>0 65432 0 192.168.1.1 502 5 1 6 206 1</pre></li>
 +
    <li>Response:<br><pre>65432 OK</pre></li>
 +
</ul>
 +
----
 +
<b>Retrieve uptime</b>
 +
 +
<ul>
 +
    <li>Request:<br><pre>0 65432 0 192.168.1.1 502 5 1 3 2 2</pre></li>
 +
    <li>Response:<br><pre>65432 OK 0 5590</pre></li>
 +
</ul>
 +
----
 +
If you're using Eclipse Mosquitto (MQTT implementation used on {{{name}}}), Publish/Subscribe commands may look something like this:
 +
 +
<b>Retrieve uptime</b>
 +
 +
<ul>
 +
    <li>Request:<br><pre>mosquitto_pub -h 192.168.1.1 -p 1883 -t request -m "0 65432 0 192.168.1.1 502 5 1 3 2 2"</pre></li>
 +
    <li>Response:<br><pre>mosquitto_sub -h 192.168.1.1 -p 1883 -t response
 +
65432 OK 0 5590</pre></li>
 +
</ul>
    
==See also==
 
==See also==
   −
{{Template: Networking_device_modbus_see_also}}
+
<ul>
 +
    <li><b>[[{{{name}}} Monitoring via Modbus|Monitoring via Modbus]]</b> - detailed examples on how to use Modbus TCP</li>
 +
</ul>
    
[[Category:{{{name}}} Services section]]
 
[[Category:{{{name}}} Services section]]

Navigation menu