blob: 557394d9cc77552bdc17034241f48d6ea7703286 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>PLC4X &#x2013; </title>
<script src="../../js/jquery.slim.min.js" type="text/javascript"></script>
<!--script src="../../js/popper.min.js" type="javascript"></script-->
<script src="../../js/bootstrap.bundle.min.js" type="text/javascript"></script>
<!-- The tooling for adding images and links to Apache events -->
<script src="https://www.apachecon.com/event-images/snippet.js" type="text/javascript"></script>
<!-- FontAwesome -->
<link rel="stylesheet" href="../../css/all.min.css" type="text/css"/>
<!-- Bootstrap -->
<link rel="stylesheet" href="../../css/bootstrap.min.css" type="text/css"/>
<!-- Some Maven Site defaults -->
<link rel="stylesheet" href="../../css/maven-base.css" type="text/css"/>
<link rel="stylesheet" href="../../css/maven-theme.css" type="text/css"/>
<!-- The PLC4X version of a bootstrap theme -->
<link rel="stylesheet" href="../../css/themes/plc4x.css" type="text/css" id="pagestyle"/>
<!-- A custom style for printing content -->
<link rel="stylesheet" href="../../css/print.css" type="text/css" media="print"/>
<meta http-equiv="Content-Language" content="en"/>
</head>
<body class="composite">
<nav class="navbar navbar-light navbar-expand-md bg-faded justify-content-center border-bottom">
<!--a href="/" class="navbar-brand d-flex w-50 mr-auto">Navbar 3</a-->
<a href="https://plc4x.apache.org/" id="bannerLeft"><img src="../../images/apache_plc4x_logo_small.png" alt="Apache PLC4X"/></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar3">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse w-100" id="collapsingNavbar3">
<ul class="navbar-nav w-100 justify-content-center">
<li class="nav-item">
<a class="nav-link" href="../../index.html">Home</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="../../users/index.html">Users</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../../developers/index.html">Developers</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../../apache/index.html">Apache</a>
</li>
</ul>
<ul class="nav navbar-nav ml-auto justify-content-end">
<li class="nav-item row valign-middle">
<a class="acevent" data-format="wide" data-mode="light" data-event="random" style="width:240px;height:60px;"></a>
</li>
</ul>
</div>
</nav>
<div class="container-fluid">
<div class="row h-100">
<nav class="col-sm-push col-md-2 pt-3 sidebar">
<div class="sidebar-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a href="../../users/index.html" class="nav-link">Section Home</a>
</li>
<li class="nav-item">
<a href="../../users/download.html" class="nav-link">Download</a>
</li>
<li class="nav-item">
<a href="../../users/adopters.html" class="nav-link">Adopters</a>
</li>
<li class="nav-item">
<a href="../../users/commercial-support.html" class="nav-link">Commercial support</a>
</li>
<li class="nav-item">
<a href="../../users/gettingstarted.html" class="nav-link">Getting Started</a>
<ul class="flex-column pl-4 nav">
<li class="nav-item">
<a href="../../users/getting-started/plc4go.html" class="nav-link">Go</a>
</li>
<li class="nav-item">
<a href="../../users/getting-started/plc4j.html" class="nav-link">Java</a>
</li>
<li class="nav-item">
<a href="../../users/getting-started/using-snapshots.html" class="nav-link">Using SNAPSHOTS</a>
</li>
<li class="nav-item">
<a href="../../users/getting-started/general-concepts.html" class="nav-link">General Concepts</a>
</li>
<li class="nav-item">
<a href="../../users/getting-started/virtual-modbus.html" class="nav-link">Virtual Modbus</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../users/blogs-videos-and-slides.html" class="nav-link">Blogs, Videos and Slides</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/index.html" class="nav-link">Protocols</a>
<ul class="flex-column pl-4 nav">
<li class="nav-item">
<a href="../../users/protocols/ab-eth.html" class="nav-link">AB-ETH</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/ads.html" class="nav-link">ADS/AMS</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/bacnetip.html" class="nav-link">BACnet/IP</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/canopen.html" class="nav-link">CANopen</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/deltav.html" class="nav-link">DeltaV</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/df1.html" class="nav-link">DF1</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/ethernet-ip.html" class="nav-link">EtherNet/IP</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/firmata.html" class="nav-link">Firmata</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/knxnetip.html" class="nav-link">KNXnet/IP</a>
</li>
<li class="nav-item">
<strong class="nav-link">Modbus</strong>
</li>
<li class="nav-item">
<a href="../../users/protocols/opc-ua.html" class="nav-link">OPC UA</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/plc4x.html" class="nav-link">PLC4X (Proxy)</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/s7.html" class="nav-link">S7 (Step7)</a>
</li>
<li class="nav-item">
<a href="../../users/protocols/simulated.html" class="nav-link">Simulated</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../users/transports/index.html" class="nav-link">Transports</a>
<ul class="flex-column pl-4 nav">
<li class="nav-item">
<a href="../../users/transports/tcp.html" class="nav-link">TCP</a>
</li>
<li class="nav-item">
<a href="../../users/transports/udp.html" class="nav-link">UDP</a>
</li>
<li class="nav-item">
<a href="../../users/transports/serial.html" class="nav-link">Serial</a>
</li>
<li class="nav-item">
<a href="../../users/transports/socketcan.html" class="nav-link">SocketCAN</a>
</li>
<li class="nav-item">
<a href="../../users/transports/raw-socket.html" class="nav-link">Raw Socket</a>
</li>
<li class="nav-item">
<a href="../../users/transports/pcap-replay.html" class="nav-link">PCAP Replay</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../users/integrations/index.html" class="nav-link">Integrations</a>
<ul class="flex-column pl-4 nav">
<li class="nav-item">
<a href="../../users/integrations/apache-calcite.html" class="nav-link">Apache Calcite</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-camel.html" class="nav-link">Apache Camel</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-edgent.html" class="nav-link">Apache Edgent</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-iotdb.html" class="nav-link">Apache IoTDB</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-kafka.html" class="nav-link">Apache Kafka</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-nifi.html" class="nav-link">Apache NiFi</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/apache-streampipes.html" class="nav-link">Apache StreamPipes</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/eclipse-ditto.html" class="nav-link">Eclipse Ditto</a>
</li>
<li class="nav-item">
<a href="../../users/integrations/eclipse-milo.html" class="nav-link">Eclipse Milo OPC UA Server</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../users/tools/index.html" class="nav-link">Tools</a>
<ul class="flex-column pl-4 nav">
<li class="nav-item">
<a href="../../users/tools/capture-replay.html" class="nav-link">Capture Replay</a>
</li>
<li class="nav-item">
<a href="../../users/tools/connection-pool.html" class="nav-link">Connection Pool</a>
</li>
<li class="nav-item">
<a href="../../users/tools/connection-cache.html" class="nav-link">Connection Cache</a>
</li>
<li class="nav-item">
<a href="../../users/tools/opm.html" class="nav-link">Object PLC Mapping (OPM)</a>
</li>
<li class="nav-item">
<a href="../../users/tools/scraper.html" class="nav-link">Scraper</a>
</li>
<li class="nav-item">
<a href="../../users/tools/testing.html" class="nav-link">PLC4X without a PLC and Unit Testing</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../users/industry40.html" class="nav-link">Industry 4.0 with Apache</a>
</li>
<li class="nav-item">
<a href="../../users/security.html" class="nav-link">Security</a>
</li>
</ul>
</div>
</nav>
<main role="main" class="ml-sm-auto px-4 col-sm-pull col-md-9 col-lg-10 h-100">
<div class="sect1">
<h2 id="modbus_tcpudpserial">Modbus (TCP/UDP/Serial)</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="connection_string_options">Connection String Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 22.2222%;"/>
<col style="width: 22.2222%;"/>
<col style="width: 55.5556%;"/>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Name</th>
<th class="tableblock halign-left valign-top">Value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Code</p></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
<p><code>modbus-tcp</code>, <code>modbus-adu</code>, <code>modbus-ascii</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
<p>Modbus</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maven Dependency</p></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="listingblock">
<div class="content">
<pre>&lt;dependency&gt;
&lt;groupId&gt;org.apache.plc4x&lt;/groupId&gt;
&lt;artifactId&gt;plc4j-driver-modbus&lt;/artifactId&gt;
&lt;version&gt;{current-last-released-version}&lt;/version&gt;
&lt;/dependency&gt;</pre>
</div>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Default Transport:</p></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
<p> <code>tcp</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Compatible Transports:</p></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="ulist">
<ul>
<li>
<p><code>tcp</code> (Default Port: 502)</p>
</li>
<li>
<p><code>udp</code> (Default Port: 502)</p>
</li>
<li>
<p><code>serial</code></p>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" colspan="3"><p class="tableblock">Supported Operations</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
<p><code>read</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
<p><code>write</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" colspan="3"><p class="tableblock">Options</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>request-timeout</code> (ms)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Timeout after which a request is terminated. Defaults to 1000ms.</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>unit-identifier</code> (1)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Unit-identifier that identifies the target PLC (On RS485 multiple Modbus Devices can be listening). Defaults to 1.</p>
</div></div></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="individual_resource_address_format">Individual Resource Address Format</h3>
<div class="sect3">
<h4 id="connection_string">Connection String</h4>
<div class="paragraph">
<p>Modbus has the following connection string format:-</p>
</div>
<div class="listingblock">
<div class="content">
<pre>modbus-tcp:{transport}://{ip-address}:{port}?{options}</pre>
</div>
</div>
<div class="paragraph">
<p>An example connection string would look like:-</p>
</div>
<div class="listingblock">
<div class="content">
<pre>modbus-tcp:tcp://127.0.0.1:502</pre>
</div>
</div>
<div class="paragraph">
<p>Note the transport, port and option fields are optional.</p>
</div>
</div>
<div class="sect3">
<h4 id="general_format">General Format</h4>
<div class="paragraph">
<p>In general all Modbus addresses have this format:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>{memory-Area}{start-address}:{data-type}[{array-size}]</pre>
</div>
</div>
<div class="paragraph">
<p>If the array-size part is omitted, the size-default of <code>1</code> is assumed.
If the data-type part is omitted, it defaults to BOOL for Coils and Discrete Inputs and INT for input, holding and extended registers.</p>
</div>
</div>
<div class="sect3">
<h4 id="memory_areas">Memory Areas</h4>
<div class="paragraph">
<p>There are a number of memory areas defined in the Modbus specification.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Discrete Input Area</p>
</li>
<li>
<p>Coil Area</p>
</li>
<li>
<p>Input Register Area</p>
</li>
<li>
<p>Holding Register</p>
</li>
<li>
<p>Extended Register Area</p>
</li>
</ul>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 15.3846%;"/>
<col style="width: 15.3846%;"/>
<col style="width: 38.4615%;"/>
<col style="width: 7.6923%;"/>
<col style="width: 15.3846%;"/>
<col style="width: 7.6924%;"/>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Name</th>
<th class="tableblock halign-left valign-top">Memory Area Aliases</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Bit-Size</th>
<th class="tableblock halign-left valign-top">Permissions</th>
<th class="tableblock halign-left valign-top">Starting Address</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Discrete Input</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>discrete-input:</code> or <code>1</code> or <code>1x</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Boolean input value, usually representing a binary input to the PLC</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read Only</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Coil</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>coil:</code> or <code>0</code> or <code>0x</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Boolean value, usually representing a binary output from the PLC</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Input Register</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>input-register:</code> or <code>3</code> or <code>3x</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Short input value, usually representing an analog input to the PLC</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read Only</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Holding Register</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>holding-register:</code> or <code>4</code> or <code>4x</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Short value, usually representing an analog output from the PLC</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Extended Register</p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>extended-register:</code> or <code>6</code> or <code>6x</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Short value,</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Read/Write</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Initially the Modbus format allowed up to 10000 address to be specified or the discrete inputs, coils, input registers and holding registers.
Later on, this was expanded to allow up 65536 address within each memory area (except the extended register area).
When using the long address format i.e. input-registers:1 the addresses between 1 and 65535 are able to be specified.
When using the shorter versions there are two formats available i.e. 30001 and 300001.
With the shorter format 3XXXX being limited to between 30001 and 39999, while the longer format 3XXXXX being limited to between 300001 and 365535.
These memory areas all start at address 1.</p>
</div>
<div class="paragraph">
<p>For the extended register area the addresses 0-99999 are able to be specified. These registers are mapped to file records with a length of 10000. Address 600000 corresponds to the first address in file record 0.
Address 610000 is then the first address in the second file record and so on. It is noted that there is generally only 10 file records (600000 thru to 699999) however the spec allows for 65536 file records.
Using the extended-register: format you are able to reference all of these, if the shorter format is used then it is limited to 699999.
This memory area starts at address 0.</p>
</div>
</div>
<div class="sect3">
<h4 id="data_types">Data Types</h4>
<div class="paragraph">
<p>The following data types are supported</p>
</div>
<div class="ulist">
<ul>
<li>
<p>BOOL (boolean)</p>
</li>
<li>
<p>SINT (int 8)</p>
</li>
<li>
<p>USINT (uint 8)</p>
</li>
<li>
<p>BYTE (uint 8)</p>
</li>
<li>
<p>INT (int 16)</p>
</li>
<li>
<p>UINT (uint 16)</p>
</li>
<li>
<p>WORD (uint 16)</p>
</li>
<li>
<p>DINT (int 32)</p>
</li>
<li>
<p>UDINT (uint 32)</p>
</li>
<li>
<p>DWORD (uint 32)</p>
</li>
<li>
<p>LINT (int 64)</p>
</li>
<li>
<p>ULINT (uint 64)</p>
</li>
<li>
<p>LWORD (uint 64)</p>
</li>
<li>
<p>REAL (float)</p>
</li>
<li>
<p>LREAL (double)</p>
</li>
<li>
<p>CHAR (char)</p>
</li>
<li>
<p>WCHAR (2 byte char)</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="some_useful_tips">Some useful tips</h4>
<div class="paragraph">
<p>Most memory areas start at address 1, except for the extended register area which starts at 0. These are both mapped to 0x0000 when it is sent in the Modbus protocol.</p>
</div>
<div class="paragraph">
<p>The input, holding and extended registers consist of 16-bit registers while the discrete input and coil areas consist of bits.</p>
</div>
<div class="paragraph">
<p>The following Modbus function codes are supported:-</p>
</div>
<div class="ulist">
<ul>
<li>
<p>0x01 (Read Coils)</p>
</li>
<li>
<p>0x02 (Read Discrete Inputs)</p>
</li>
<li>
<p>0x03 (Read Holding Registers)</p>
</li>
<li>
<p>0x04 (Read Input Registers)</p>
</li>
<li>
<p>0x05 (Write Single Coil)</p>
</li>
<li>
<p>0x06 (Write Single Register)</p>
</li>
<li>
<p>0x0F (Write Multiple Coils)</p>
</li>
<li>
<p>0x10 (Write Multiple Registers)</p>
</li>
<li>
<p>0x14 (Read File Record)(Extended Register Read)</p>
</li>
<li>
<p>0x15 (Write File Record)(Extended Register Write)</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="examples">Examples</h4>
<div class="paragraph">
<p>To read 10 holding registers starting at address 20 and parse as Unsigned Integers the following examples are all valid.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>holding-register:20:UINT[10]</p>
</li>
<li>
<p>400020:UINT[10]</p>
</li>
<li>
<p>4x00020:UINT[10]</p>
</li>
<li>
<p>40020:UINT[10]</p>
</li>
<li>
<p>4x0020:UINT[10]</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To read 1 holding register at address 5678 the following examples are valid.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>holding-register:5678</p>
</li>
<li>
<p>405678</p>
</li>
<li>
<p>4x05678</p>
</li>
<li>
<p>45678</p>
</li>
<li>
<p>4x5678</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To read 10 extended registers starting at address 50 the following examples are valid.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>extended-register:50[10]</p>
</li>
<li>
<p>600050[10]</p>
</li>
<li>
<p>6x00050[10]</p>
</li>
<li>
<p>60050[10]</p>
</li>
<li>
<p>6x0050[10]</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This corresponds to addresses 50-59 in file record 1.</p>
</div>
<div class="paragraph">
<p>To read 10 extended registers starting at address 9995 the following examples are valid.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>extended-register:9995[10]</p>
</li>
<li>
<p>609995[10]</p>
</li>
<li>
<p>6x09995[10]</p>
</li>
<li>
<p>69995[10]</p>
</li>
<li>
<p>6x9995[10]</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>This corresponds to addresses 9995-9999 in file record 1 and addresses 0-5 in file record 2.
Note that this request is split into 2 sub requests in the Modbus protocol.</p>
</div>
</div>
</div>
</div>
</div>
</main>
<footer class="pt-4 my-md-5 pt-md-5 w-100 border-top">
<div class="row justify-content-md-center" style="font-size: 13px">
<div class="col col-6 text-center">
Copyright &#169; 2017&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.<br/>
Apache PLC4X, PLC4X, Apache, the Apache feather logo, and the Apache PLC4X project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
<br/><div style="text-align:center;">Home screen image taken from <a
href="https://flic.kr/p/chEftd">Flickr</a>, "Tesla Robot Dance" by Steve Jurvetson, licensed
under <a href="https://creativecommons.org/licenses/by/2.0/">CC BY 2.0 Generic</a>, image cropped
and blur effect added.</div>
</div>
</div>
</footer>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="../../js/jquery.slim.min.js"></script>
<script src="../../js/popper.min.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script type="text/javascript">
$('.carousel .carousel-item').each(function(){
var next = $(this).next();
if (!next.length) {
next = $(this).siblings(':first');
}
next.children(':first-child').clone().appendTo($(this));
for (let i = 0; i < 3; i++) {
next=next.next();
if (!next.length) {
next = $(this).siblings(':first');
}
next.children(':first-child').clone().appendTo($(this));
}
});
</script>
</body>
</html>