This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/plc4x-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 4e480c4  Site checkin for project PLC4X: Jenkins Tools
4e480c4 is described below

commit 4e480c43784cc112efd95f9bf67e75c67268b1b3
Author: jenkins <[email protected]>
AuthorDate: Tue Dec 15 22:15:14 2020 +0000

    Site checkin for project PLC4X: Jenkins Tools
---
 developers/team.html                             |  14 +
 images/team/ldywicki.jpg                         | Bin 0 -> 12197 bytes
 protocols/{ => canopen}/index.html               | 108 ++--
 protocols/index.html                             |   3 +
 sitemap.html                                     |   2 +
 users/adopters.html                              |   3 +
 users/blogs-videos-and-slides.html               |   3 +
 users/commercial-support.html                    |   3 +
 users/download.html                              |   3 +
 users/getting-started/general-concepts.html      |   3 +
 users/getting-started/plc4go.html                |   3 +
 users/getting-started/plc4j.html                 |   3 +
 users/getting-started/virtual-modbus.html        |   3 +
 users/gettingstarted.html                        |   3 +
 users/index.html                                 |  16 +
 users/industry40.html                            |   3 +
 users/integrations/apache-calcite.html           |   3 +
 users/integrations/apache-camel.html             |   3 +
 users/integrations/apache-edgent.html            |   3 +
 users/integrations/apache-iotdb.html             |   3 +
 users/integrations/apache-kafka.html             |   3 +
 users/integrations/apache-nifi.html              |   3 +
 users/integrations/apache-streampipes.html       |   3 +
 users/integrations/eclipse-ditto.html            |   3 +
 users/integrations/eclipse-milo.html             |   3 +
 users/integrations/elastic-logstash.html         |   3 +
 users/integrations/index.html                    |   3 +
 users/preparing-issues.html                      |   3 +
 users/protocols/ab-eth.html                      |   3 +
 users/protocols/ads.html                         |   3 +
 users/protocols/bacnetip.html                    |   3 +
 users/protocols/{modbus.html => canopen.html}    | 602 ++++++++++++-----------
 users/protocols/deltav.html                      |   3 +
 users/protocols/df1.html                         |   3 +
 users/protocols/ethernet-ip.html                 |   3 +
 users/protocols/firmata.html                     |   3 +
 users/protocols/index.html                       |   3 +
 users/protocols/knxnetip.html                    |   3 +
 users/protocols/modbus.html                      |   3 +
 users/protocols/opc-ua.html                      |   3 +
 users/protocols/s7.html                          |   3 +
 users/protocols/simulated.html                   |   3 +
 users/security.html                              |   3 +
 users/tools/capture-replay.html                  |   3 +
 users/tools/connection-pool.html                 |   3 +
 users/tools/index.html                           |   3 +
 users/tools/opm.html                             |   3 +
 users/tools/scraper.html                         |   3 +
 users/tools/testing.html                         |   3 +
 users/transports/index.html                      |   6 +
 users/transports/pcap-replay.html                |   3 +
 users/transports/raw-socket.html                 |   3 +
 users/transports/serial.html                     |   3 +
 users/transports/{serial.html => socketcan.html} |  35 +-
 users/transports/tcp.html                        |   3 +
 users/transports/udp.html                        |   3 +
 56 files changed, 566 insertions(+), 361 deletions(-)

diff --git a/developers/team.html b/developers/team.html
index 587437e..52ad8a8 100644
--- a/developers/team.html
+++ b/developers/team.html
@@ -267,6 +267,20 @@ pragmatic industries GmbH</p>
 </div></div></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Łukasz Dywicki</strong></p>
+<p class="tableblock">Coding CEO / Consultant</p>
+<p class="tableblock">ConnectorIO sp. z o.o. /
+Code-House (self employed)</p>
+<p class="tableblock">Warsaw</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">He started 
working with Apache Software Foundation projects in 2007 - at the time when the 
first incubation version of Apache CXF was out. Since then he took active part 
and contributed to Apache projects related to software integration such as 
Apache Karaf, Apache ActiveMQ and Apache Camel. He is an Open Source and OSGi 
enthusiast, passionate about connecting things, physical ones too.</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="imageblock">
+<div class="content">
+<img src="../images/team/ldywicki.jpg" alt="ldywicki" width="240" 
height="304"/>
+</div>
+</div></div></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><strong>Sebastian Rühl</strong></p>
 <p class="tableblock">IoT Consultant</p>
 <p class="tableblock">codecentric AG</p>
diff --git a/images/team/ldywicki.jpg b/images/team/ldywicki.jpg
new file mode 100644
index 0000000..c76dd01
Binary files /dev/null and b/images/team/ldywicki.jpg differ
diff --git a/protocols/index.html b/protocols/canopen/index.html
similarity index 72%
copy from protocols/index.html
copy to protocols/canopen/index.html
index 5c538e9..8d5edfb 100644
--- a/protocols/index.html
+++ b/protocols/canopen/index.html
@@ -7,20 +7,20 @@
 <head>
                             <meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8"/>
     <title>PLC4X &#x2013; </title>
-    <script src="../js/jquery.slim.min.js" type="javascript"></script>
-    <!--script src="../js/popper.min.js" type="javascript"></script-->
-    <script src="../js/bootstrap.bundle.min.js" type="javascript"></script>
+    <script src="../../js/jquery.slim.min.js" type="javascript"></script>
+    <!--script src="../../js/popper.min.js" type="javascript"></script-->
+    <script src="../../js/bootstrap.bundle.min.js" type="javascript"></script>
     <!-- FontAwesome -->
-    <link rel="stylesheet" href="../css/all.min.css" type="text/css"/>
+    <link rel="stylesheet" href="../../css/all.min.css" type="text/css"/>
     <!-- Bootstrap -->
-    <link rel="stylesheet" href="../css/bootstrap.min.css" type="text/css"/>
+    <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"/>
+    <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"/>
+    <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"/>
+    <link rel="stylesheet" href="../../css/print.css" type="text/css" 
media="print"/>
 
             <meta http-equiv="Content-Language" content="en"/>
             
@@ -28,30 +28,30 @@
 <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>
+    <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>
+                            <a class="nav-link" 
href="../../index.html">Home</a>
             </li>
                                                                                
 <li class="nav-item">
-                                    <a class="nav-link" 
href="../users/index.html">Users</a>
+                                    <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>
+                                    <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>
+                                    <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 href="https://www.apache.org/events/current-event.html"; 
class="col"><img src="https://www.apache.org/events/current-event-234x60.png"; 
alt="Apache Events"/></a>
                 <div class="col">
-                    <a href="https://www.apache.org/"; id="bannerRight"><img 
src="../images/apache_logo_small.png"  alt="Apache Software Foundation"/></a>
+                    <a href="https://www.apache.org/"; id="bannerRight"><img 
src="../../images/apache_logo_small.png"  alt="Apache Software Foundation"/></a>
                 </div>
             </li>
         </ul>
@@ -115,66 +115,44 @@
                                     
                                                                                
     <main role="main" class="ml-sm-auto px-4 w-100 h-100">
             <div class="sect1">
-<h2 id="protocols">Protocols</h2>
+<h2 id="canopen">CANopen</h2>
 <div class="sectionbody">
+<div class="paragraph">
+<p>CANopen is communication protocol built on top of CAN.
+CAN is a popular link layer standard which allows exchanging data between 
nodes and build multi-node applications.
+All nodes can broadcast their information to the buss allowing fast data 
exchanges without necessity to coordinate over a single "master" node.
+CANopen is a specific protocol built on top of CAN bus.</p>
+</div>
+<div class="paragraph">
+<p>The CAN in Automation (CiA) organization is responsible for releasing 
CANopen specification.
+It has built number of application layer protocols on top of CAN, CANopen is 
one of them.</p>
+</div>
+<div class="paragraph">
+<p>It is possible to obtain a copy of specification from CiA website.
+Please refer the official materials for more details on protocol and its 
constructs.</p>
+</div>
+<div class="paragraph">
+<p>Apache PLC4X is open source project.
+It is not a certified product.</p>
+</div>
+<div class="sect2">
+<h3 id="links">Links</h3>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="ab-eth/index.html">AB-Ethernet</a></p>
-</li>
-<li>
-<p><a href="ads/index.html">DeltaV</a></p>
-</li>
-<li>
-<p><a href="delta-v/index.html">DeltaV</a></p>
-</li>
-<li>
-<p><a href="ethernet-ip/index.html">EtherNet/IP</a></p>
+<p><a href="https://www.can-cia.org/canopen";>CAN in Automation</a> 
organization managing specification.</p>
 </li>
 <li>
-<p><a href="modbus/index.html">Modbus</a></p>
+<p>Public materials published by CAN in Automation: <a 
href="https://www.can-cia.org/en/download/"; 
class="bare">https://www.can-cia.org/en/download/</a></p>
 </li>
 <li>
-<p><a href="opc-ua/index.html">OPC-UA</a></p>
+<p>CAN in Automation membership: <a 
href="https://www.can-cia.org/about-us/member-benefits/"; 
class="bare">https://www.can-cia.org/about-us/member-benefits/</a></p>
 </li>
 <li>
-<p><a href="s7/index.html">S7</a></p>
+<p>Further device profiles built on top of CANopen: <a 
href="https://cia-productguides.org/canopen/profiles/"; 
class="bare">https://cia-productguides.org/canopen/profiles/</a></p>
 </li>
 </ul>
 </div>
-<div class="sect2">
-<h3 id="links">Links</h3>
-<div class="paragraph">
-<p>Apache 2.0 licensed JNI library for accessing raw IPv4 and IPv6 sockets. 
Might be the ideal starting point for implementing protocols below TCP &amp; 
UDP.
-<a href="https://www.savarese.org/software/rocksaw/"; 
class="bare">https://www.savarese.org/software/rocksaw/</a></p>
-</div>
-<div class="paragraph">
-<p>Links to different WireShark captures: <a 
href="https://github.com/automayt/ICS-pcap"; 
class="bare">https://github.com/automayt/ICS-pcap</a></p>
-</div>
-<div class="sect3">
-<h4 id="bacnet">BACNet</h4>
-<div class="paragraph">
-<p>Used in the building automation sector.
-<a href="http://www.bacnet.org/Addenda/Add-135-2008t.pdf"; 
class="bare">http://www.bacnet.org/Addenda/Add-135-2008t.pdf</a></p>
-</div>
-<div class="paragraph">
-<p>AKA: ISO 16484-5:
-The official specification can be purchased here: <a 
href="https://www.iso.org/standard/71935.html"; 
class="bare">https://www.iso.org/standard/71935.html</a></p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="iec_61850">IEC 61850</h4>
-<div class="paragraph">
-<p>Used by the IDS SAS (station automation system)</p>
-</div>
-<div class="paragraph">
-<p><a href="https://de.wikipedia.org/wiki/IEC_60870"; 
class="bare">https://de.wikipedia.org/wiki/IEC_60870</a></p>
-</div>
-<div class="paragraph">
-<p>German norm: DIN EN 60870
-The official specification can be purchased here: <a 
href="https://www.beuth.de/de/norm/din-en-60870-5-104/100426613"; 
class="bare">https://www.beuth.de/de/norm/din-en-60870-5-104/100426613</a></p>
-</div>
-</div>
 </div>
 </div>
 </div>
@@ -198,9 +176,9 @@ All rights reserved.<br/>
 <!-- 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 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();
diff --git a/protocols/index.html b/protocols/index.html
index 5c538e9..99c39e2 100644
--- a/protocols/index.html
+++ b/protocols/index.html
@@ -126,6 +126,9 @@
 <p><a href="ads/index.html">DeltaV</a></p>
 </li>
 <li>
+<p><a href="canopen/index.html">CANopen</a></p>
+</li>
+<li>
 <p><a href="delta-v/index.html">DeltaV</a></p>
 </li>
 <li>
diff --git a/sitemap.html b/sitemap.html
index ce3038c..cfa9ee2 100644
--- a/sitemap.html
+++ b/sitemap.html
@@ -153,6 +153,8 @@
 
 <li><a href="users/protocols/bacnetip.html">BACnet/IP</a></li>
 
+<li><a href="users/protocols/canopen.html">CANopen</a></li>
+
 <li><a href="users/protocols/deltav.html">DeltaV</a></li>
 
 <li><a href="users/protocols/df1.html">DF1</a></li>
diff --git a/users/adopters.html b/users/adopters.html
index 3f804ed..d91abe5 100644
--- a/users/adopters.html
+++ b/users/adopters.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/blogs-videos-and-slides.html 
b/users/blogs-videos-and-slides.html
index 640fdfe..2cd2a0e 100644
--- a/users/blogs-videos-and-slides.html
+++ b/users/blogs-videos-and-slides.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/commercial-support.html b/users/commercial-support.html
index f9d8255..bf4d367 100644
--- a/users/commercial-support.html
+++ b/users/commercial-support.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/download.html b/users/download.html
index 8a92e8a..d8f2b5b 100644
--- a/users/download.html
+++ b/users/download.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/getting-started/general-concepts.html 
b/users/getting-started/general-concepts.html
index 488be07..410c6a6 100644
--- a/users/getting-started/general-concepts.html
+++ b/users/getting-started/general-concepts.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/getting-started/plc4go.html 
b/users/getting-started/plc4go.html
index 01cf61d..554984b 100644
--- a/users/getting-started/plc4go.html
+++ b/users/getting-started/plc4go.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/getting-started/plc4j.html b/users/getting-started/plc4j.html
index 613036f..b7a7740 100644
--- a/users/getting-started/plc4j.html
+++ b/users/getting-started/plc4j.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/getting-started/virtual-modbus.html 
b/users/getting-started/virtual-modbus.html
index 064d68a..1c01908 100644
--- a/users/getting-started/virtual-modbus.html
+++ b/users/getting-started/virtual-modbus.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/gettingstarted.html b/users/gettingstarted.html
index 3f08a24..976f334 100644
--- a/users/gettingstarted.html
+++ b/users/gettingstarted.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/index.html b/users/index.html
index f2fdb33..96d0631 100644
--- a/users/index.html
+++ b/users/index.html
@@ -116,6 +116,9 @@
                             <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">
@@ -333,6 +336,19 @@
     <div class="carousel-item">
       <div class="col-md-12 col-lg-4">
         <div class="card h-100 p-5 justify-content-center"
+             onclick="location.href='protocols/canopen.html';" 
style="cursor:pointer;">
+          <!--div class="d-flex align-items-center justify-content-center 
h-100">
+            <img src="../images/protocols/canopen.gif" alt="CANopen logo">
+          </div-->
+          <div class="card-body">
+            <h5 class="card-title"><b>CANopen</b></h5>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="carousel-item">
+      <div class="col-md-12 col-lg-4">
+        <div class="card h-100 p-5 justify-content-center"
              onclick="location.href='protocols/deltav.html';" 
style="cursor:pointer;">
           <!--div class="d-flex align-items-center justify-content-center 
h-100">
             <img src="images/protocols/deltav-logo.png" alt="Card image cap">
diff --git a/users/industry40.html b/users/industry40.html
index f3e2832..3492b06 100644
--- a/users/industry40.html
+++ b/users/industry40.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-calcite.html 
b/users/integrations/apache-calcite.html
index 289efff..d159a97 100644
--- a/users/integrations/apache-calcite.html
+++ b/users/integrations/apache-calcite.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-camel.html 
b/users/integrations/apache-camel.html
index db8acfe..45e2c39 100644
--- a/users/integrations/apache-camel.html
+++ b/users/integrations/apache-camel.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-edgent.html 
b/users/integrations/apache-edgent.html
index cbb0ab8..77cfb97 100644
--- a/users/integrations/apache-edgent.html
+++ b/users/integrations/apache-edgent.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-iotdb.html 
b/users/integrations/apache-iotdb.html
index 7d69b93..89e35b3 100644
--- a/users/integrations/apache-iotdb.html
+++ b/users/integrations/apache-iotdb.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-kafka.html 
b/users/integrations/apache-kafka.html
index d88de56..2d1a4af 100644
--- a/users/integrations/apache-kafka.html
+++ b/users/integrations/apache-kafka.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-nifi.html 
b/users/integrations/apache-nifi.html
index e291bc6..e0a55f4 100644
--- a/users/integrations/apache-nifi.html
+++ b/users/integrations/apache-nifi.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/apache-streampipes.html 
b/users/integrations/apache-streampipes.html
index 0a784c1..9619b37 100644
--- a/users/integrations/apache-streampipes.html
+++ b/users/integrations/apache-streampipes.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/eclipse-ditto.html 
b/users/integrations/eclipse-ditto.html
index d788d4b..52a5a0b 100644
--- a/users/integrations/eclipse-ditto.html
+++ b/users/integrations/eclipse-ditto.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/eclipse-milo.html 
b/users/integrations/eclipse-milo.html
index 2d05d7f..a6261a9 100644
--- a/users/integrations/eclipse-milo.html
+++ b/users/integrations/eclipse-milo.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/elastic-logstash.html 
b/users/integrations/elastic-logstash.html
index 83dc5d0..c085191 100644
--- a/users/integrations/elastic-logstash.html
+++ b/users/integrations/elastic-logstash.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/integrations/index.html b/users/integrations/index.html
index bf79d9a..dea4af9 100644
--- a/users/integrations/index.html
+++ b/users/integrations/index.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/preparing-issues.html b/users/preparing-issues.html
index 79bad56..927757f 100644
--- a/users/preparing-issues.html
+++ b/users/preparing-issues.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/ab-eth.html b/users/protocols/ab-eth.html
index 7302711..f47f4f1 100644
--- a/users/protocols/ab-eth.html
+++ b/users/protocols/ab-eth.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/ads.html b/users/protocols/ads.html
index 5d42e5c..e8b9c0d 100644
--- a/users/protocols/ads.html
+++ b/users/protocols/ads.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/bacnetip.html b/users/protocols/bacnetip.html
index 831ef4b..79a3585 100644
--- a/users/protocols/bacnetip.html
+++ b/users/protocols/bacnetip.html
@@ -116,6 +116,9 @@
                             <strong class="nav-link">BACnet/IP</strong>
                             </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">
diff --git a/users/protocols/modbus.html b/users/protocols/canopen.html
similarity index 65%
copy from users/protocols/modbus.html
copy to users/protocols/canopen.html
index 555d75b..03f3efa 100644
--- a/users/protocols/modbus.html
+++ b/users/protocols/canopen.html
@@ -116,6 +116,9 @@
                             <a href="../../users/protocols/bacnetip.html" 
class="nav-link">BACnet/IP</a>
                             </li>
                                             <li class="nav-item">
+                            <strong class="nav-link">CANopen</strong>
+                            </li>
+                                            <li class="nav-item">
                             <a href="../../users/protocols/deltav.html" 
class="nav-link">DeltaV</a>
                             </li>
                                             <li class="nav-item">
@@ -131,7 +134,7 @@
                             <a href="../../users/protocols/knxnetip.html" 
class="nav-link">KNXnet/IP</a>
                             </li>
                                             <li class="nav-item">
-                            <strong class="nav-link">Modbus</strong>
+                            <a href="../../users/protocols/modbus.html" 
class="nav-link">Modbus</a>
                             </li>
                                             <li class="nav-item">
                             <a href="../../users/protocols/opc-ua.html" 
class="nav-link">OPC UA</a>
@@ -272,10 +275,13 @@
         </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>
+<h2 id="canopen">CANopen</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="connection_string_options">Connection String Options</h3>
+<h3 id="can_in_automation">CAN in Automation</h3>
+<div class="paragraph">
+<p>CANopen is a specific protocol built on top of CAN bus.</p>
+</div>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 22.2222%;"/>
@@ -293,13 +299,13 @@
 <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</code></p>
+<p><code>canopen</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>
+<p>CANopen (based on CAN 2.0A) - client side</p>
 </div></div></td>
 </tr>
 <tr>
@@ -308,7 +314,7 @@
 <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;artifactId&gt;plc4j-driver-canopen&lt;/artifactId&gt;
   &lt;version&gt;{current-last-released-version}&lt;/version&gt;
 &lt;/dependency&gt;</pre>
 </div>
@@ -317,7 +323,7 @@
 <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>
+<p><code>socketcan</code></p>
 </div></div></td>
 </tr>
 <tr>
@@ -325,10 +331,7 @@
 <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>
+<p><code>socketcan</code></p>
 </li>
 </ul>
 </div></div></td>
@@ -337,21 +340,37 @@
 <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"><p class="tableblock">CANopen 
PDO</p></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
-<p><code>read</code></p>
+<p><code>read</code> / <code>write</code></p>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
-<p>Only supported with <code>tcp</code> transport.</p>
+<p>PDO messages are broadcasted to the bus and have to be mapped at 
application layer.</p>
 </div></div></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CANopen 
SDO</p></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
-<p><code>write</code></p>
+<p><code>read</code> / <code>write</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>SDO are request/response conversations. Both read and write path is 
supported.</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>Only supported with <code>tcp</code> transport.</p>
+<p><code>subscribe</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p>Receiving PDO messages requires construction of valid subscription.</p>
+</li>
+<li>
+<p>It is possible to subscribe to CANopen NMT messages.</p>
+</li>
+</ul>
 </div></div></td>
 </tr>
 <tr>
@@ -360,378 +379,385 @@
 <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>
+<p><code>heartbeat</code></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>
+<p>Forces PLC4X to send CANopen heartbeat (NMT) messages to the bus.</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>
+<p><code>nodeId</code></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>
+<p>CAN node identifier. Depending on used CAN version it might be 11 or 29 bit 
unsigned int.</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>request-timeout</code></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>Time after which dispatched BUS operation (ie. SDO request) will be marked 
as failed.</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>
+<h3 id="more_details_on_the_driver">More details on the driver</h3>
 <div class="paragraph">
-<p>Modbus has the following connection string format:-</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>modbus:{transport}://{ip-address}:{port}?{options}</pre>
-</div>
+<p>CAN, despite (or due) to its popularity has ambiguous meaning.
+There are multiple articles and sources which attempts to give introduction, 
yet very few of them is consistent between each other.</p>
 </div>
 <div class="paragraph">
-<p>An example connection string would look like:-</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre>modbus:tcp://127.0.0.1:502</pre>
+<p>There are two dominant formats of frames - CAN 2.0A and 2.0B:</p>
 </div>
+<div class="ulist">
+<ul>
+<li>
+<p>CAN 2.0A uses 11 bit identifier and up to 8 bytes of data.</p>
+</li>
+<li>
+<p>CAN 2.0B uses 29 bit identifier and up to 64 bytes of data.</p>
+</li>
+</ul>
 </div>
 <div class="paragraph">
-<p>Note the transport, port and option fields are optional.</p>
+<p>To make things worse with introduction of CAN FD amount of combinations 
increased even more.
+Double check frame format as this integration supports CANopen and does not 
support CANopen FD.</p>
 </div>
+<div class="paragraph">
+<p>Further reading on CAN flavors:
+<a 
href="https://en.wikipedia.org/wiki/CAN_bus";>https://en.wikipedia.org/wiki/CAN_bus</a></p>
 </div>
-<div class="sect3">
-<h4 id="general_format">General Format</h4>
 <div class="paragraph">
-<p>In general all Modbus addresses have this format:</p>
+<p>Default transport used with this protocol is socketcan.
+Currently, only 2.0A format (up to 8 bytes of data) is supported.</p>
 </div>
-<div class="listingblock">
-<div class="content">
-<pre>{memory-Area}{start-address}:{data-type}[{array-size}]</pre>
+<div class="paragraph">
+<p>Implemented driver supports currently socketcan transport.
+Change of transport requires code modifications and injection of new 
"transport" type which will encode CANopen payloads to specific frame 
format.</p>
 </div>
+<div class="paragraph">
+<p>Socketcan seems to be most widespread way to access CAN bus.
+It also masks different hardware variants which might come with their own 
drivers.</p>
 </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>
+<p>The CANopen specification defines Object Dictionary (OD).
+This driver does honor OD structure through usage of index and sub index for 
addressing fields.
+It does not ship Electronic Data Sheet (EDS) parser leaving it for 
applications who wish to utilize it.</p>
 </div>
 </div>
-<div class="sect3">
-<h4 id="memory_areas">Memory Areas</h4>
+<div class="sect2">
+<h3 id="address_format">Address Format</h3>
 <div class="paragraph">
-<p>There are a number of memory areas defined in the Modbus specification.</p>
+<p>CANopen specification defines several groups of addresses dedicated to 
certain kind of operations.
+Critical services and message exchanges related with them have lower 
identifiers making them wining eventual bus access.</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 class="paragraph">
+<p>The array size block is necessary only if application expect same value 
several times.
+If SDO returns for example 4 values of UNSIGNED8 it can be declared as 
<code>&lt;service&gt;:&lt;nodeId&gt;:UNSIGNED8[4]</code> for PDO.
+Equivalent for SDO is 
<code>&lt;service&gt;:&lt;nodeId&gt;:&lt;index&gt;/&lt;subindex&gt;:UNSIGNED8[4]</code>.</p>
 </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%;"/>
+<col style="width: 20%;"/>
+<col style="width: 20%;"/>
+<col style="width: 20%;"/>
+<col style="width: 40%;"/>
 </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">Service</th>
+<th class="tableblock halign-left valign-top">Format</th>
+<th class="tableblock halign-left valign-top">Supported operations</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"><p 
class="tableblock">SDO</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>
+<p>SDO:nodeId:index/subindex:type[arraySize]</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">
+<td class="tableblock halign-left valign-top"><div class="content"><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>
+<p><code>read</code></p>
 </li>
 <li>
-<p>WCHAR (2 byte char)</p>
+<p><code>write</code></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></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>SDO is for request/response communication.
+Both expedited and segmented modes are supported.
+No support for block transfer.</p>
 </div>
 <div class="paragraph">
-<p>The following Modbus function codes are supported:-</p>
-</div>
-<div class="ulist">
+<p>Transfer kind is automatically determined based on payload length.
+All numeric values - ndodeId, index, subindex can be specified using 
hexadecimal notation (ie. <code>0xA</code>).</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">PDO</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><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>
+<p>TRANSMIT_PDO_1:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x04 (Read Input Registers)</p>
+<p>RECEIVE_PDO_1:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x05 (Write Single Coil)</p>
+<p>TRANSMIT_PDO_2:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x06 (Write Single Register)</p>
+<p>RECEIVE_PDO_2:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x0F (Write Multiple Coils)</p>
+<p>TRANSMIT_PDO_3:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x10 (Write Multiple Registers)</p>
+<p>RECEIVE_PDO_3:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x14 (Read File Record)(Extended Register Read)</p>
+<p>TRANSMIT_PDO_4:nodeId:type[arraySize]</p>
 </li>
 <li>
-<p>0x15 (Write File Record)(Extended Register Write)</p>
+<p>RECEIVE_PDO_4:nodeId:type[arraySize]</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">
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
 <ul>
 <li>
-<p>holding-register:20:UINT[10]</p>
-</li>
-<li>
-<p>400020:UINT[10]</p>
+<p><code>subscribe</code></p>
 </li>
 <li>
-<p>4x00020:UINT[10]</p>
-</li>
-<li>
-<p>40020:UINT[10]</p>
-</li>
-<li>
-<p>4x0020:UINT[10]</p>
+<p><code>write</code></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">
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>PDO is an asynchronous operation hence receiving of it requires 
subscription.
+Check Apache PLC4X API documentation for more detailed example of how to use 
subscriptions API.
+Subscriber will be notified with value mapped to type defined in field 
syntax.</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">NMT</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
 <ul>
 <li>
-<p>holding-register:5678</p>
-</li>
-<li>
-<p>405678</p>
-</li>
-<li>
-<p>4x05678</p>
+<p>NMT</p>
 </li>
 <li>
-<p>45678</p>
+<p>NMT:nodeId</p>
 </li>
+</ul>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
 <li>
-<p>4x5678</p>
+<p><code>subscribe</code></p>
 </li>
 </ul>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>NMT messages are sent using CAN node ID <code>0</code>.
+They have the highest priority on the bus.
+Messages of this kind indicate operating state of an node (booted, 
operational).</p>
 </div>
 <div class="paragraph">
-<p>To read 10 extended registers starting at address 50 the following examples 
are valid.</p>
-</div>
-<div class="ulist">
+<p>Subscriptions to this service receive structure with two fields: 
<code>node</code> (USINT) and <code>state</code> (USINT).
+If subscription sets <code>nodeId</code> to 0 it will receive state updates 
for all bus participants.</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">HEARTBEAT</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
 <ul>
 <li>
-<p>extended-register:50[10]</p>
-</li>
-<li>
-<p>600050[10]</p>
+<p>HEARTBEAT</p>
 </li>
 <li>
-<p>6x00050[10]</p>
-</li>
-<li>
-<p>60050[10]</p>
+<p>HEARTBEAT:nodeId</p>
 </li>
+</ul>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
 <li>
-<p>6x0050[10]</p>
+<p><code>subscribe</code></p>
 </li>
 </ul>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
+<p>HEARTBEAT messages have the lowest priority on the bus.
+They have the highest priority on the bus.
+Messages of this kind indicate operating state of an node (booted, 
operational).</p>
 </div>
 <div class="paragraph">
-<p>This corresponds to addresses 50-59 in file record 1.</p>
-</div>
+<p>Subscriptions to this service receive structure with two fields: 
<code>node</code> (USINT) and <code>state</code> (USINT).
+If subscription sets <code>nodeId</code> to 0 it will receive state updates 
for all bus participants.</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
 <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>
+<p>Below table contains type mapping defined in CANopen specification.</p>
 </div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;"/>
+<col style="width: 33.3333%;"/>
+<col style="width: 33.3334%;"/>
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CANopen 
Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Length (in 
bits)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">PLC4X 
Type</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">BOOLEAN</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">BOOL</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">USINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED16</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">UINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UDINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED32</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">32</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UDINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED40</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">ULINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED48</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">48</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">ULINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED56</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">56</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">ULINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNSIGNED64</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">64</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">ULINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">SINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER16</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">INT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">DINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER32</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">32</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">DINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER40</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">LINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER48</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">48</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">LINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER56</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">56</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">LINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">INTEGER64</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">64</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">LINT</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">REAL32</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">32</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">REAL</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">REAL64</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">64</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">LREAL</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">RECORD</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8 * 
size</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">BYTE</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">OCTET_STRING</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8 * 
size</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">STRING 
(UTF-8)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">VISIBLE_STRING</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8 * 
size</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">STRING 
(UTF-8)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">TIME_OF_DAY</p></td>
+<td class="tableblock halign-center valign-top" colspan="2"><p 
class="tableblock">unsupported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">TIME_DIFFERENCE</p></td>
+<td class="tableblock halign-center valign-top" colspan="2"><p 
class="tableblock">unsupported</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">UNICODE_STRING</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8 * 
size</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">STRING 
(UTF-8)</p></td>
+</tr>
+</tbody>
+</table>
 <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>
+<p>All string types are decoded using UTF-8 encoding regardless of their kind 
(octet, visible, unicode).
+In case if device returns text using different encoding it is recommended to 
use <code>RECORD</code> type and construct text manually above PLC4X.</p>
 </div>
+<div class="paragraph">
+<p>The size in case of variable length structures is automatically assumed to 
full length of SDO answer.
+In case of writing length of field can be ommited.
+For example request <code>write(SDO:1:2/3:RECORD, payload)</code> will try to 
write whole payload to specified address.
+Same applies to responses sent by devies as requester often might not know 
full length of reply payload.</p>
 </div>
 </div>
 </div>
diff --git a/users/protocols/deltav.html b/users/protocols/deltav.html
index 77884ac..8fe9c40 100644
--- a/users/protocols/deltav.html
+++ b/users/protocols/deltav.html
@@ -116,6 +116,9 @@
                             <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">
                             <strong class="nav-link">DeltaV</strong>
                             </li>
                                             <li class="nav-item">
diff --git a/users/protocols/df1.html b/users/protocols/df1.html
index 12f612b..33f6a97 100644
--- a/users/protocols/df1.html
+++ b/users/protocols/df1.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/ethernet-ip.html b/users/protocols/ethernet-ip.html
index c059fcf..bc99a6b 100644
--- a/users/protocols/ethernet-ip.html
+++ b/users/protocols/ethernet-ip.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/firmata.html b/users/protocols/firmata.html
index a4be5c7..3688477 100644
--- a/users/protocols/firmata.html
+++ b/users/protocols/firmata.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/index.html b/users/protocols/index.html
index c2dc322..c529d27 100644
--- a/users/protocols/index.html
+++ b/users/protocols/index.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/knxnetip.html b/users/protocols/knxnetip.html
index 0544116..7dd088b 100644
--- a/users/protocols/knxnetip.html
+++ b/users/protocols/knxnetip.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/modbus.html b/users/protocols/modbus.html
index 555d75b..e0b9cb9 100644
--- a/users/protocols/modbus.html
+++ b/users/protocols/modbus.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/opc-ua.html b/users/protocols/opc-ua.html
index 484b732..90e4a46 100644
--- a/users/protocols/opc-ua.html
+++ b/users/protocols/opc-ua.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/s7.html b/users/protocols/s7.html
index 938807e..388ae57 100644
--- a/users/protocols/s7.html
+++ b/users/protocols/s7.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/protocols/simulated.html b/users/protocols/simulated.html
index 8b2c73f..8d1785d 100644
--- a/users/protocols/simulated.html
+++ b/users/protocols/simulated.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/security.html b/users/security.html
index f118f59..748d8ed 100644
--- a/users/security.html
+++ b/users/security.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/capture-replay.html b/users/tools/capture-replay.html
index 38e1552..652a64e 100644
--- a/users/tools/capture-replay.html
+++ b/users/tools/capture-replay.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/connection-pool.html b/users/tools/connection-pool.html
index 486177b..fa69b70 100644
--- a/users/tools/connection-pool.html
+++ b/users/tools/connection-pool.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/index.html b/users/tools/index.html
index 11d1ad4..02ff61f 100644
--- a/users/tools/index.html
+++ b/users/tools/index.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/opm.html b/users/tools/opm.html
index d648b83..98cc5cd 100644
--- a/users/tools/opm.html
+++ b/users/tools/opm.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/scraper.html b/users/tools/scraper.html
index 2852361..80fa7d5 100644
--- a/users/tools/scraper.html
+++ b/users/tools/scraper.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/tools/testing.html b/users/tools/testing.html
index 69d270d..772cc3c 100644
--- a/users/tools/testing.html
+++ b/users/tools/testing.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/transports/index.html b/users/transports/index.html
index aea2370..de548e3 100644
--- a/users/transports/index.html
+++ b/users/transports/index.html
@@ -116,6 +116,9 @@
                             <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">
@@ -289,6 +292,9 @@
 <p><a href="serial.html">Serial Port</a></p>
 </li>
 <li>
+<p><a href="socketcan.html">SocketCAN</a></p>
+</li>
+<li>
 <p><a href="pcap-replay.html">PCAP replay</a></p>
 </li>
 </ul>
diff --git a/users/transports/pcap-replay.html 
b/users/transports/pcap-replay.html
index a265d1c..4295adf 100644
--- a/users/transports/pcap-replay.html
+++ b/users/transports/pcap-replay.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/transports/raw-socket.html b/users/transports/raw-socket.html
index 065cead..cbefb28 100644
--- a/users/transports/raw-socket.html
+++ b/users/transports/raw-socket.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/transports/serial.html b/users/transports/serial.html
index 6029786..6f48ede 100644
--- a/users/transports/serial.html
+++ b/users/transports/serial.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/transports/serial.html b/users/transports/socketcan.html
similarity index 93%
copy from users/transports/serial.html
copy to users/transports/socketcan.html
index 6029786..3f0483f 100644
--- a/users/transports/serial.html
+++ b/users/transports/socketcan.html
@@ -116,6 +116,9 @@
                             <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">
@@ -156,7 +159,7 @@
                             <a href="../../users/transports/udp.html" 
class="nav-link">UDP</a>
                             </li>
                                             <li class="nav-item">
-                            <strong class="nav-link">Serial</strong>
+                            <a href="../../users/transports/serial.html" 
class="nav-link">Serial</a>
                             </li>
                                             <li class="nav-item">
                             <a href="../../users/transports/raw-socket.html" 
class="nav-link">Raw Socket</a>
@@ -272,7 +275,7 @@
         </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="serial_port">Serial Port</h2>
+<h2 id="socketcan">SocketCAN</h2>
 <div class="sectionbody">
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
@@ -291,13 +294,13 @@
 <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>serial</code></p>
+<p><code>socketcan</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>UDP Socket Communication</p>
+<p>SocketCAN (software bridge to CAN).</p>
 </div></div></td>
 </tr>
 <tr>
@@ -306,7 +309,7 @@
 <div class="content">
 <pre>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.plc4x&lt;/groupId&gt;
-  &lt;artifactId&gt;plc4j-transport-serial&lt;/artifactId&gt;
+  &lt;artifactId&gt;plc4j-transport-socketcan&lt;/artifactId&gt;
   &lt;version&gt;{current-last-released-version}&lt;/version&gt;
 &lt;/dependency&gt;</pre>
 </div>
@@ -316,7 +319,7 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Transport 
Syntax:</p></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="listingblock">
 <div class="content">
-<pre>{name of the serial port}</pre>
+<pre>{name of the socketcan interface}</pre>
 </div>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
@@ -325,10 +328,10 @@
 <div class="ulist">
 <ul>
 <li>
-<p>Windows: "Com 1"</p>
+<p>can0</p>
 </li>
 <li>
-<p>Mac &amp; Linux: "/dev/ttyS0"</p>
+<p>vcan0</p>
 </li>
 </ul>
 </div></div></td>
@@ -341,6 +344,22 @@
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>SocketCAN is linux specific way to access CAN bus.
+It has its own representation of CAN frames, buffers and so on.
+This means that you have to program your application against socketcan and not 
raw can interfaces.</p>
+</div>
+<div class="paragraph">
+<p>Primary difference is fixed length of socketcan frames (CAN 2.0A always 
takes 16 bytes) and extended size of CAN identifier.
+Standard CAN frame uses 11 bits while socketcan uses 29 and appends flags to 
remaining 3 bits.</p>
+</div>
+<div class="paragraph">
+<p>Use of socketcan means that Apache PLC4X does not handle low level bus 
access, arbitration, coordination and so on.
+This is done by socketcan and layer below it.</p>
+</div>
+<div class="paragraph">
+<p>This transport have been successfully tested with <code>vcan</code> as well 
as <code>gs_usb</code> drivers.</p>
+</div>
 </div>
 </div>
         </main>
diff --git a/users/transports/tcp.html b/users/transports/tcp.html
index e02ae36..dbbc085 100644
--- a/users/transports/tcp.html
+++ b/users/transports/tcp.html
@@ -116,6 +116,9 @@
                             <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">
diff --git a/users/transports/udp.html b/users/transports/udp.html
index f6ed307..23f6818 100644
--- a/users/transports/udp.html
+++ b/users/transports/udp.html
@@ -116,6 +116,9 @@
                             <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">

Reply via email to