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 b72485bb0 Site checkin for project PLC4X: Jenkins Tools
b72485bb0 is described below

commit b72485bb0062d6ddd96ccf0ef41efb4f2f4b2fd5
Author: jenkins <[email protected]>
AuthorDate: Fri Sep 16 14:23:49 2022 +0000

    Site checkin for project PLC4X: Jenkins Tools
---
 dependency-management.html                |   2 +-
 developers/infrastructure/ci.html         |   3 +-
 developers/infrastructure/vpn.html        |  26 +---
 images/deltav-wrapper-packet.svg          | 139 +++++++++++++++++++
 images/plc4x-vpn-network.svg              |  94 +++++++++++++
 images/s7-connect-request.svg             | 215 ++++++++++++++++++++++++++++++
 images/s7-data.svg                        | 105 +++++++++++++++
 images/s7-disconnect-request.svg          | 146 ++++++++++++++++++++
 images/s7-setup-communication-request.svg | 204 ++++++++++++++++++++++++++++
 protocols/delta-v/index.html              |  19 +--
 protocols/s7/index.html                   |  82 +-----------
 protocols/s7/s7comm.html                  |  38 +-----
 12 files changed, 918 insertions(+), 155 deletions(-)

diff --git a/dependency-management.html b/dependency-management.html
index 712439608..0395ca1d2 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -848,7 +848,7 @@
 <tr class="b">
 <td align="left">org.eclipse.jetty</td>
 <td><a class="externalLink" 
href="https://eclipse.org/jetty/jetty-util";>jetty-util</a></td>
-<td>11.0.11</td>
+<td>11.0.12</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" 
href="https://www.eclipse.org/legal/epl-2.0";>Eclipse Public License - Version 
2.0</a>, <a class="externalLink" 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License - 
Version 2.0</a></td></tr>
diff --git a/developers/infrastructure/ci.html 
b/developers/infrastructure/ci.html
index 5b3fe3d1e..2b4ea015c 100644
--- a/developers/infrastructure/ci.html
+++ b/developers/infrastructure/ci.html
@@ -265,7 +265,8 @@ However when building the <code>develop</code> branch some 
additional steps are
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>Failed to generate image: Could not find the 'blockdiag', 'blockdiag3' 
executable in PATH; add it to the PATH or specify its location using the 
'blockdiag' document attribute
+<pre>Failed to generate image: blockdiag3 failed: ERROR: got unexpected token: 
19,82-19,83: Op '-&gt;'
+
 {
   Start [shape = beginpoint];
   Initialization [label = "Initialization"];
diff --git a/developers/infrastructure/vpn.html 
b/developers/infrastructure/vpn.html
index 55f5e23d2..62cb1aa6c 100644
--- a/developers/infrastructure/vpn.html
+++ b/developers/infrastructure/vpn.html
@@ -248,31 +248,9 @@
 <div class="paragraph">
 <p>This VPN gateway is listening on port <code>vpn.plc4x.apache.org</code> on 
port <code>444</code> and should it should be possible to connect to it via 
OpenVPN.</p>
 </div>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: Could not find the 'nwdiag', 'nwdiag3' 
executable in PATH; add it to the PATH or specify its location using the 
'nwdiag' document attribute
-{
-      network internet {
-        address = "X.X.X.0/28"
-
-        vpn.plc4x.a.o [address = "217.110.130.19"];
-        plc4x-vm2.a.o [address = "62.210.60.247"];
-        committer-a;
-        committer-b;
-      }
-
-      network plc4x-iot-lab {
-        address = "10.10.64.x/24"
-
-        vpn.plc4x.a.o [address = "10.10.64.1"];
-        F-FBs-40MC [address = "10.10.64.10"];
-        S-S7-1212 [address = "10.10.64.20"];
-        S-KTP-400 [address = "10.10.64.25"];
-        WG-750-352 [address = "10.10.64.30"];
-        BH-C6920-0030 [address = "10.10.64.40"];
-        committer-int [address = "10.10.64.200"];
-    }
-}</pre>
+<img src="../../images/plc4x-vpn-network.svg" alt="plc4x vpn network" 
width="1216" height="444"/>
 </div>
 </div>
 <div class="paragraph">
diff --git a/images/deltav-wrapper-packet.svg b/images/deltav-wrapper-packet.svg
new file mode 100644
index 000000000..2dae973dd
--- /dev/null
+++ b/images/deltav-wrapper-packet.svg
@@ -0,0 +1,139 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 896 400' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+    colwidth = 32
+
+    * Header\n(Constant = 0xFACE) [len = 16]
+    * Payload Length [len = 16]
+    * Type [len = 16]
+    * Message Id [len = 16]
+    * Sender Id [len = 16]
+    * Timestamp [len = 24]
+    * 0x80/0x00 [len = 8]
+    * 0x04 [len = 8]
+    * 0x00 [len = 8]
+    * Payload [len = 64]
+    * Checksum [len = 16]
+}</desc>
+  <path d='M 64 48 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='6' 
x='64.0' y='42'>0</text>
+  <path d='M 88 64 L 88 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 112 64 L 112 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 136 64 L 136 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 160 64 L 160 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 184 64 L 184 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 208 64 L 208 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 232 64 L 232 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 48 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 280 64 L 280 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 304 64 L 304 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 328 64 L 328 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 64 L 352 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 376 64 L 376 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 400 64 L 400 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 424 64 L 424 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 48 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='448.0' y='42'>16</text>
+  <path d='M 472 64 L 472 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 496 64 L 496 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 520 64 L 520 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 544 64 L 544 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 568 64 L 568 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 592 64 L 592 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 616 64 L 616 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 48 L 640 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 664 64 L 664 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 688 64 L 688 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 712 64 L 712 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 736 64 L 736 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 760 64 L 760 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 784 64 L 784 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 808 64 L 808 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 48 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='832.0' y='42'>32</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='64' y='80'/>
+  <path d='M 64 80 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 80 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 120 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='256.0' y='99'>Header</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='114' 
x='256.0' y='112'>(Constant = 0xFACE)</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='448' y='80'/>
+  <path d='M 448 80 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 80 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='640.0' y='106'>Payload Length</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='64' y='120'/>
+  <path d='M 64 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 160 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='24' 
x='256.0' y='146'>Type</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='448' y='120'/>
+  <path d='M 448 120 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='640.0' y='146'>Message Id</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='64' y='160'/>
+  <path d='M 64 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 200 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='256.0' y='186'>Sender Id</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='192' x='64' y='200'/>
+  <path d='M 64 200 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 200 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 240 L 64 200' fill='none' stroke='rgb(0,0,0)' 
stroke-dasharray='4'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='160.0' y='226'>Timestamp</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='192' x='256' y='200'/>
+  <path d='M 256 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='352.0' y='226'>0x80/0x00</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='192' x='448' y='200'/>
+  <path d='M 448 200 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 240 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='24' 
x='544.0' y='226'>0x04</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='192' x='640' y='200'/>
+  <path d='M 640 200 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 240 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='24' 
x='736.0' y='226'>0x00</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='768' x='64' y='280'/>
+  <path d='M 64 280 L 832 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 280 L 832 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 320 L 64 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 320 L 64 280' fill='none' stroke='rgb(0,0,0)' 
stroke-dasharray='4'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='42' 
x='448.0' y='306'>Payload</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='64' y='320'/>
+  <path d='M 64 320 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 320 L 448 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 360 L 64 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 360 L 64 320' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='48' 
x='256.0' y='346'>Checksum</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='384' x='448' y='160'/>
+  <path d='M 448 160 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 832 200' fill='none' stroke='rgb(0,0,0)' 
stroke-dasharray='4'/>
+  <path d='M 832 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='640.0' y='186'>Timestamp</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(255,255,255)' 
width='768' x='64' y='240'/>
+  <path d='M 64 240 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 832 280' fill='none' stroke='rgb(0,0,0)' 
stroke-dasharray='4'/>
+  <path d='M 832 280 L 64 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 280 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='42' 
x='448.0' y='266'>Payload</text>
+</svg>
diff --git a/images/plc4x-vpn-network.svg b/images/plc4x-vpn-network.svg
new file mode 100644
index 000000000..f344ba548
--- /dev/null
+++ b/images/plc4x-vpn-network.svg
@@ -0,0 +1,94 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 1216 444' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+      network internet {
+        address = "X.X.X.0/28"
+
+        vpn.plc4x.a.o [address = "217.110.130.19"];
+        plc4x-vm2.a.o [address = "62.210.60.247"];
+        committer-a;
+        committer-b;
+      }
+
+      network plc4x-iot-lab {
+        address = "10.10.64.x/24"
+
+        vpn.plc4x.a.o [address = "10.10.64.1"];
+        F-FBs-40MC [address = "10.10.64.10"];
+        S-S7-1212 [address = "10.10.64.20"];
+        S-KTP-400 [address = "10.10.64.25"];
+        WG-750-352 [address = "10.10.64.30"];
+        BH-C6920-0030 [address = "10.10.64.40"];
+        committer-int [address = "10.10.64.200"];
+    }
+}</desc>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='155' 
y='162'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='307' 
y='162'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='459' 
y='162'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='611' 
y='162'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='307' 
y='306'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='459' 
y='306'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='611' 
y='306'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='763' 
y='306'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' x='915' 
y='306'/>
+  <rect fill='rgb(0,0,0)' height='40' stroke='rgb(0,0,0)' 
style='filter:url(#filter_blur);opacity:0.7;fill-opacity:1' width='104' 
x='1067' y='306'/>
+  <path d='M 131 103 L 739 103 A2,4 0 0 1 739 111 L 131 111 A2,4 0 0 1 131 
103' fill='rgb(0,0,0)' style='filter:url(#filter_blur)'/>
+  <path d='M 131 247 L 1195 247 A2,4 0 0 1 1195 255 L 131 255 A2,4 0 0 1 131 
247' fill='rgb(0,0,0)' style='filter:url(#filter_blur)'/>
+  <path d='M 128 100 L 736 100 A2,4 0 0 1 736 108 L 128 108 A2,4 0 0 1 128 
100' fill='rgb(185,203,228)' stroke='rgb(0,0,0)'/>
+  <path d='M 736 108 A2,4 0 0 1 736 100' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 128 100 L 736 100' fill='none' stroke='none'/>
+  <path d='M 432 35 L 432 100' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 128 244 L 1192 244 A2,4 0 0 1 1192 252 L 128 252 A2,4 0 0 1 128 
244' fill='rgb(185,203,228)' stroke='rgb(0,0,0)'/>
+  <path d='M 1192 252 A2,4 0 0 1 1192 244' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 128 244 L 1192 244' fill='none' stroke='none'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='48' 
x='96.0' y='103'>internet</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='90.0' y='116'>X.X.X.0/28</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='81.0' y='247'>plc4x-iot-lab</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='81.0' y='260'>10.10.64.x/24</text>
+  <path d='M 204 108 L 204 156' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='258.0' y='136'>217.110.130.19</text>
+  <path d='M 204 196 L 204 244' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='246.0' y='224'>10.10.64.1</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='152' y='156'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='204.0' y='182'>vpn.plc4x.a.o</text>
+  <path d='M 356 108 L 356 156' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='407.0' y='136'>62.210.60.247</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='304' y='156'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='356.0' y='182'>plc4x-vm2.a.o</text>
+  <path d='M 508 108 L 508 156' fill='none' stroke='rgb(0,0,0)'/>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='456' y='156'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='508.0' y='182'>committer-a</text>
+  <path d='M 660 108 L 660 156' fill='none' stroke='rgb(0,0,0)'/>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='608' y='156'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='660.0' y='182'>committer-b</text>
+  <path d='M 356 252 L 356 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='401.0' y='280'>10.10.64.10</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='304' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='356.0' y='326'>F-FBs-40MC</text>
+  <path d='M 508 252 L 508 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='553.0' y='280'>10.10.64.20</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='456' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='508.0' y='326'>S-S7-1212</text>
+  <path d='M 660 252 L 660 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='705.0' y='280'>10.10.64.25</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='608' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='660.0' y='326'>S-KTP-400</text>
+  <path d='M 812 252 L 812 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='857.0' y='280'>10.10.64.30</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='760' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='812.0' y='326'>WG-750-352</text>
+  <path d='M 964 252 L 964 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='1009.0' y='280'>10.10.64.40</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='912' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='964.0' y='326'>BH-C6920-0030</text>
+  <path d='M 1116 252 L 1116 300' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='72' 
x='1164.0' y='280'>10.10.64.200</text>
+  <rect fill='rgb(255,255,255)' height='40' stroke='rgb(0,0,0)' width='104' 
x='1064' y='300'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='1116.0' y='326'>committer-int</text>
+</svg>
diff --git a/images/s7-connect-request.svg b/images/s7-connect-request.svg
new file mode 100644
index 000000000..53bb7aeb7
--- /dev/null
+++ b/images/s7-connect-request.svg
@@ -0,0 +1,215 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 896 360' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+    colwidth = 32
+
+    // ISO on TCP
+    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
+    * Reserved (0x00) [len = 8, color = "#068D9D"]
+    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
+
+    // ISO Transport Protocol
+    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
+    * TPDU-Code\n(CR = 0xE0) [len = 4, color = "#AEECEF"]
+    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
+    // ISO TP Header (Fixed Part)
+    * Destination Reference [len = 16, color = "#53599A"]
+    * Source Reference [len = 16, color = "#53599A"]
+    * Protocol Class\n(Class 0 = 0x00) [len = 8, color = "#53599A"]
+
+    // ISO TP Header (Variable Part / Parameters)
+    * Parameter Code\n(TPDU Size = 0xC0) [len = 8, color = "#53599A"]
+    * Parameter Length\n(1 = 0x01) [len = 8, color = "#53599A"]
+    * Parameter Value\n(TPDU Size 1024 = 0x0A) [len = 8, color = "#53599A"]
+
+    * Parameter Code\n(Calling TSAP = 0xC1) [len = 8, color = "#53599A"]
+    * Parameter Length (2 = 0x02) [len = 8, color = "#53599A"]
+    * Device Group\n(PG/PC = 0x01) [len = 8, color = "#53599A"]
+    * TSAP Id (0x00) [len = 8, color = "#53599A"]
+
+    * Parameter Code\n(Called TSAP = 0xC2) [len = 8, color = "#53599A"]
+    * Parameter Length (2 = 0x02) [len = 8, color = "#53599A"]
+    * Device Group\n(Others = 0x03) [len = 8, color = "#53599A"]
+    * Rack Number[len = 4, color = "#80DED9"]
+    * Slot Number[len = 4, color = "#80DED9"]
+}</desc>
+  <path d='M 64 48 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='6' 
x='64.0' y='42'>0</text>
+  <path d='M 88 64 L 88 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 112 64 L 112 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 136 64 L 136 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 160 64 L 160 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 184 64 L 184 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 208 64 L 208 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 232 64 L 232 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 48 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 280 64 L 280 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 304 64 L 304 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 328 64 L 328 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 64 L 352 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 376 64 L 376 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 400 64 L 400 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 424 64 L 424 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 48 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='448.0' y='42'>16</text>
+  <path d='M 472 64 L 472 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 496 64 L 496 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 520 64 L 520 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 544 64 L 544 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 568 64 L 568 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 592 64 L 592 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 616 64 L 616 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 48 L 640 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 664 64 L 664 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 688 64 L 688 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 712 64 L 712 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 736 64 L 736 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 760 64 L 760 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 784 64 L 784 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 808 64 L 808 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 48 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='832.0' y='42'>32</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='64' y='80'/>
+  <path d='M 64 80 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 80 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 120 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='180' 
x='160.0' y='106'>ISO on TCP Magic Number (0x03)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='256' y='80'/>
+  <path d='M 256 80 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 80 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='352.0' y='106'>Reserved (0x00)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='384' 
x='448' y='80'/>
+  <path d='M 448 80 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 80 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='258' 
x='640.0' y='106'>Packet Length (including ISO on TCP header)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='120'/>
+  <path d='M 64 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 160 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='160.0' y='139'>ISO TP Header Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='160.0' y='152'>(excluding length byte)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='96' x='256' y='120'/>
+  <path d='M 256 120 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 120 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='304.0' y='139'>TPDU-Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='304.0' y='152'>(CR = 0xE0)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='96' 
x='352' y='120'/>
+  <path d='M 352 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='400.0' y='139'>Signal CDT</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='400.0' y='152'>(0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='448' y='120'/>
+  <path d='M 448 120 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='126' 
x='640.0' y='146'>Destination Reference</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='64' y='160'/>
+  <path d='M 64 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 200 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='256.0' y='186'>Source Reference</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='160'/>
+  <path d='M 448 160 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 160 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='544.0' y='179'>Protocol Class</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='544.0' y='192'>(Class 0 = 0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='640' y='160'/>
+  <path d='M 640 160 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='736.0' y='179'>Parameter Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='108' 
x='736.0' y='192'>(TPDU Size = 0xC0)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='200'/>
+  <path d='M 64 200 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 200 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 240 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='160.0' y='219'>Parameter Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='160.0' y='232'>(1 = 0x01)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='256' y='200'/>
+  <path d='M 256 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='352.0' y='219'>Parameter Value</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='352.0' y='232'>(TPDU Size 1024 = 0x0A)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='200'/>
+  <path d='M 448 200 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 240 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='544.0' y='219'>Parameter Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='126' 
x='544.0' y='232'>(Calling TSAP = 0xC1)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='640' y='200'/>
+  <path d='M 640 200 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 240 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='162' 
x='736.0' y='226'>Parameter Length (2 = 0x02)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='240'/>
+  <path d='M 64 240 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 256 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 280 L 64 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 280 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='72' 
x='160.0' y='259'>Device Group</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='160.0' y='272'>(PG/PC = 0x01)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='256' y='240'/>
+  <path d='M 256 240 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 256 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 280 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='352.0' y='266'>TSAP Id (0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='240'/>
+  <path d='M 448 240 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 240 L 640 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 280 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='544.0' y='259'>Parameter Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='544.0' y='272'>(Called TSAP = 0xC2)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='640' y='240'/>
+  <path d='M 640 240 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 832 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 280 L 640 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 280 L 640 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='162' 
x='736.0' y='266'>Parameter Length (2 = 0x02)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='280'/>
+  <path d='M 64 280 L 256 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 280 L 256 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 320 L 64 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 320 L 64 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='72' 
x='160.0' y='299'>Device Group</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='160.0' y='312'>(Others = 0x03)</text>
+  <rect fill='rgb(128,222,217)' height='40' stroke='rgb(128,222,217)' 
width='96' x='256' y='280'/>
+  <path d='M 256 280 L 352 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 280 L 352 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 320 L 256 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 320 L 256 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='304.0' y='306'>Rack Number</text>
+  <rect fill='rgb(128,222,217)' height='40' stroke='rgb(128,222,217)' 
width='96' x='352' y='280'/>
+  <path d='M 352 280 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 320 L 352 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 320 L 352 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='400.0' y='306'>Slot Number</text>
+</svg>
diff --git a/images/s7-data.svg b/images/s7-data.svg
new file mode 100644
index 000000000..4d02613a8
--- /dev/null
+++ b/images/s7-data.svg
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 896 200' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+    colwidth = 32
+
+    // ISO on TCP
+    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
+    * Reserved (0x00) [len = 8, color = "#068D9D"]
+    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
+
+    // ISO Transport Protocol
+    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
+    * TPDU-Code\n(DATA = 0xF0) [len = 4, color = "#AEECEF"]
+    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
+    * TPDU-NR/EOT [len = 8, color = "#53599A"]
+
+}</desc>
+  <path d='M 64 48 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='6' 
x='64.0' y='42'>0</text>
+  <path d='M 88 64 L 88 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 112 64 L 112 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 136 64 L 136 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 160 64 L 160 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 184 64 L 184 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 208 64 L 208 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 232 64 L 232 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 48 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 280 64 L 280 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 304 64 L 304 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 328 64 L 328 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 64 L 352 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 376 64 L 376 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 400 64 L 400 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 424 64 L 424 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 48 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='448.0' y='42'>16</text>
+  <path d='M 472 64 L 472 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 496 64 L 496 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 520 64 L 520 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 544 64 L 544 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 568 64 L 568 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 592 64 L 592 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 616 64 L 616 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 48 L 640 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 664 64 L 664 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 688 64 L 688 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 712 64 L 712 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 736 64 L 736 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 760 64 L 760 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 784 64 L 784 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 808 64 L 808 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 48 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='832.0' y='42'>32</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='64' y='80'/>
+  <path d='M 64 80 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 80 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 120 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='180' 
x='160.0' y='106'>ISO on TCP Magic Number (0x03)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='256' y='80'/>
+  <path d='M 256 80 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 80 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='352.0' y='106'>Reserved (0x00)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='384' 
x='448' y='80'/>
+  <path d='M 448 80 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 80 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='258' 
x='640.0' y='106'>Packet Length (including ISO on TCP header)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='120'/>
+  <path d='M 64 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 160 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='160.0' y='139'>ISO TP Header Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='160.0' y='152'>(excluding length byte)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='96' x='256' y='120'/>
+  <path d='M 256 120 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 120 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='304.0' y='139'>TPDU-Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='304.0' y='152'>(DATA = 0xF0)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='96' 
x='352' y='120'/>
+  <path d='M 352 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='400.0' y='139'>Signal CDT</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='400.0' y='152'>(0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='120'/>
+  <path d='M 448 120 L 640 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 120 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='544.0' y='146'>TPDU-NR/EOT</text>
+</svg>
diff --git a/images/s7-disconnect-request.svg b/images/s7-disconnect-request.svg
new file mode 100644
index 000000000..cb2e0c866
--- /dev/null
+++ b/images/s7-disconnect-request.svg
@@ -0,0 +1,146 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 896 280' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+    colwidth = 32
+
+    // ISO on TCP
+    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
+    * Reserved (0x00) [len = 8, color = "#068D9D"]
+    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
+
+    // ISO Transport Protocol
+    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
+    * TPDU-Code\n(DR = 0x80) [len = 4, color = "#AEECEF"]
+    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
+    * Destination Reference [len = 16, color = "#53599A"]
+    * Source Reference [len = 16, color = "#53599A"]
+    * Reason [len = 8, color = "#53599A"]
+
+    // ISO TP Header (Variable Part / Parameters) (Optional)
+    * Parameter Code\n(Disconnect Additional Information = 0xE0) [len = 8, 
color = "#53599A"]
+    * Parameter Length\n(1 ... 128) [len = 8, color = "#53599A"]
+    * Parameter Data\n(Custom user data) [len = 24, color = "#53599A"]
+
+}</desc>
+  <path d='M 64 48 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='6' 
x='64.0' y='42'>0</text>
+  <path d='M 88 64 L 88 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 112 64 L 112 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 136 64 L 136 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 160 64 L 160 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 184 64 L 184 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 208 64 L 208 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 232 64 L 232 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 48 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 280 64 L 280 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 304 64 L 304 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 328 64 L 328 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 64 L 352 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 376 64 L 376 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 400 64 L 400 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 424 64 L 424 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 48 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='448.0' y='42'>16</text>
+  <path d='M 472 64 L 472 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 496 64 L 496 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 520 64 L 520 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 544 64 L 544 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 568 64 L 568 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 592 64 L 592 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 616 64 L 616 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 48 L 640 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 664 64 L 664 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 688 64 L 688 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 712 64 L 712 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 736 64 L 736 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 760 64 L 760 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 784 64 L 784 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 808 64 L 808 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 48 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='832.0' y='42'>32</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='64' y='80'/>
+  <path d='M 64 80 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 80 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 120 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='180' 
x='160.0' y='106'>ISO on TCP Magic Number (0x03)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='256' y='80'/>
+  <path d='M 256 80 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 80 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='352.0' y='106'>Reserved (0x00)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='384' 
x='448' y='80'/>
+  <path d='M 448 80 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 80 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='258' 
x='640.0' y='106'>Packet Length (including ISO on TCP header)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='120'/>
+  <path d='M 64 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 160 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='160.0' y='139'>ISO TP Header Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='160.0' y='152'>(excluding length byte)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='96' x='256' y='120'/>
+  <path d='M 256 120 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 120 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='304.0' y='139'>TPDU-Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='304.0' y='152'>(DR = 0x80)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='96' 
x='352' y='120'/>
+  <path d='M 352 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='400.0' y='139'>Signal CDT</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='400.0' y='152'>(0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='448' y='120'/>
+  <path d='M 448 120 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='126' 
x='640.0' y='146'>Destination Reference</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='64' y='160'/>
+  <path d='M 64 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 200 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='256.0' y='186'>Source Reference</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='160'/>
+  <path d='M 448 160 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 160 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='544.0' y='186'>Reason</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='640' y='160'/>
+  <path d='M 640 160 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='736.0' y='173'>Parameter Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='192' 
x='736.0' y='186'>(Disconnect Additional Informati</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='736.0' y='199'>on = 0xE0)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='200'/>
+  <path d='M 64 200 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 200 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 240 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='160.0' y='219'>Parameter Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='66' 
x='160.0' y='232'>(1 ... 128)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='576' 
x='256' y='200'/>
+  <path d='M 256 200 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='544.0' y='219'>Parameter Data</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='108' 
x='544.0' y='232'>(Custom user data)</text>
+</svg>
diff --git a/images/s7-setup-communication-request.svg 
b/images/s7-setup-communication-request.svg
new file mode 100644
index 000000000..e7400dd5f
--- /dev/null
+++ b/images/s7-setup-communication-request.svg
@@ -0,0 +1,204 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" 
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";><svg 
xmlns:inkspace='http://www.inkscape.org/namespaces/inkscape' 
preserveAspectRatio='xMidYMid meet' viewBox='0 0 896 440' 
xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'>
+  <defs id='defs_block'>
+    <filter inkspace:collect='always' height='1.504' id='filter_blur' 
width='1.1575' x='-0.07875' y='-0.252'>
+      <feGaussianBlur inkspace:collect='always' id='feGaussianBlur3780' 
stdDeviation='4.2'/>
+    </filter>
+  </defs>
+  <title>blockdiag</title>
+  <desc>{
+    colwidth = 32
+
+    // ISO on TCP
+    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
+    * Reserved (0x00) [len = 8, color = "#068D9D"]
+    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
+
+    // ISO Transport Protocol
+    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
+    * TPDU-Code\n(Data = 0xF0) [len = 4, color = "#AEECEF"]
+    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
+    // ISO TP Header (Fixed Part)
+    * Destination Reference (0x??)[len = 16, color = "#53599A"]
+    * Source Reference (0x??)[len = 16, color = "#53599A"]
+    * Protocol Class\n(Class 0 = 0x00) [len = 8, color = "#53599A"]
+
+    // S7
+    96-103: S7 Protocol Magic Byte (0x32) [color = "#6D9DC5"]
+    * Message Type (JOB = 0x01) [len = 8, color = "#AEECEF"]
+    * Reserved (0x0000) [len = 16, color = "#6D9DC5"]
+    * PDU Reference (0x??)[len = 16, color = "#6D9DC5"]
+    * S7 Parameters Length  (8 = 0x08) [len = 16, color = "#6D9DC5"]
+    * S7 Data Length (0 = 0x00) [len = 16, color = "#6D9DC5"]
+
+    // S7 Parameters
+    * Function\n(Setup Communication = 0xF0) [len = 8, color = "#AEECEF"]
+    * Reserved (0x00) [len = 8, color = "#6D9DC5"]
+    * Max AMQ Caller [len = 16, color = "#80DED9"]
+    * Max AMQ Callee [len = 16, color = "#80DED9"]
+    * PDU Size [len = 16, color = "#80DED9"]
+
+    // S7 Data
+}</desc>
+  <path d='M 64 48 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='6' 
x='64.0' y='42'>0</text>
+  <path d='M 88 64 L 88 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 112 64 L 112 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 136 64 L 136 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 160 64 L 160 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 184 64 L 184 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 208 64 L 208 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 232 64 L 232 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 48 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 280 64 L 280 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 304 64 L 304 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 328 64 L 328 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 64 L 352 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 376 64 L 376 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 400 64 L 400 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 424 64 L 424 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 48 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='448.0' y='42'>16</text>
+  <path d='M 472 64 L 472 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 496 64 L 496 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 520 64 L 520 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 544 64 L 544 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 568 64 L 568 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 592 64 L 592 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 616 64 L 616 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 48 L 640 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 664 64 L 664 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 688 64 L 688 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 712 64 L 712 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 736 64 L 736 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 760 64 L 760 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 784 64 L 784 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 808 64 L 808 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 48 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='12' 
x='832.0' y='42'>32</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='64' y='80'/>
+  <path d='M 64 80 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 80 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 120 L 64 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='180' 
x='160.0' y='106'>ISO on TCP Magic Number (0x03)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='192' 
x='256' y='80'/>
+  <path d='M 256 80 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 80 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='352.0' y='106'>Reserved (0x00)</text>
+  <rect fill='rgb(6,141,157)' height='40' stroke='rgb(6,141,157)' width='384' 
x='448' y='80'/>
+  <path d='M 448 80 L 832 80' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 80 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 80' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='258' 
x='640.0' y='106'>Packet Length (including ISO on TCP header)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='64' y='120'/>
+  <path d='M 64 120 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 120 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 160 L 64 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='160.0' y='139'>ISO TP Header Length</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='160.0' y='152'>(excluding length byte)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='96' x='256' y='120'/>
+  <path d='M 256 120 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 120 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 256 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 160 L 256 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='54' 
x='304.0' y='139'>TPDU-Code</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='78' 
x='304.0' y='152'>(Data = 0xF0)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='96' 
x='352' y='120'/>
+  <path d='M 352 120 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 120 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 352 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 352 160 L 352 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='60' 
x='400.0' y='139'>Signal CDT</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='36' 
x='400.0' y='152'>(0x00)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='448' y='120'/>
+  <path d='M 448 120 L 832 120' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 120 L 832 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 120' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='168' 
x='640.0' y='146'>Destination Reference (0x??)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='384' 
x='64' y='160'/>
+  <path d='M 64 160 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 160 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 200 L 64 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='138' 
x='256.0' y='186'>Source Reference (0x??)</text>
+  <rect fill='rgb(83,89,154)' height='40' stroke='rgb(83,89,154)' width='192' 
x='448' y='160'/>
+  <path d='M 448 160 L 640 160' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 160 L 640 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 160' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='544.0' y='179'>Protocol Class</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='96' 
x='544.0' y='192'>(Class 0 = 0x00)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='192' x='64' y='200'/>
+  <path d='M 64 200 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 200 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 240 L 64 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='174' 
x='160.0' y='226'>S7 Protocol Magic Byte (0x32)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='192' x='256' y='200'/>
+  <path d='M 256 200 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 200 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 256 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 256 240 L 256 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='150' 
x='352.0' y='226'>Message Type (JOB = 0x01)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='384' x='448' y='200'/>
+  <path d='M 448 200 L 832 200' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 200 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 448 200' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='102' 
x='640.0' y='226'>Reserved (0x0000)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='384' x='64' y='240'/>
+  <path d='M 64 240 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 240 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 64 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 280 L 64 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='120' 
x='256.0' y='266'>PDU Reference (0x??)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='384' x='448' y='240'/>
+  <path d='M 448 240 L 832 240' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 240 L 832 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 280 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 448 240' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='192' 
x='640.0' y='266'>S7 Parameters Length  (8 = 0x08)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='384' x='64' y='280'/>
+  <path d='M 64 280 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 280 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 320 L 64 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 320 L 64 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='150' 
x='256.0' y='306'>S7 Data Length (0 = 0x00)</text>
+  <rect fill='rgb(174,236,239)' height='40' stroke='rgb(174,236,239)' 
width='192' x='448' y='280'/>
+  <path d='M 448 280 L 640 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 280 L 640 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 320 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 320 L 448 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='48' 
x='544.0' y='299'>Function</text>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='168' 
x='544.0' y='312'>(Setup Communication = 0xF0)</text>
+  <rect fill='rgb(109,157,197)' height='40' stroke='rgb(109,157,197)' 
width='192' x='640' y='280'/>
+  <path d='M 640 280 L 832 280' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 280 L 832 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 320 L 640 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 640 320 L 640 280' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='90' 
x='736.0' y='306'>Reserved (0x00)</text>
+  <rect fill='rgb(128,222,217)' height='40' stroke='rgb(128,222,217)' 
width='384' x='64' y='320'/>
+  <path d='M 64 320 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 320 L 448 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 360 L 64 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 360 L 64 320' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='256.0' y='346'>Max AMQ Caller</text>
+  <rect fill='rgb(128,222,217)' height='40' stroke='rgb(128,222,217)' 
width='384' x='448' y='320'/>
+  <path d='M 448 320 L 832 320' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 320 L 832 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 832 360 L 448 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 360 L 448 320' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='84' 
x='640.0' y='346'>Max AMQ Callee</text>
+  <rect fill='rgb(128,222,217)' height='40' stroke='rgb(128,222,217)' 
width='384' x='64' y='360'/>
+  <path d='M 64 360 L 448 360' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 360 L 448 400' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 448 400 L 64 400' fill='none' stroke='rgb(0,0,0)'/>
+  <path d='M 64 400 L 64 360' fill='none' stroke='rgb(0,0,0)'/>
+  <text fill='rgb(0,0,0)' font-family='sans-serif' font-size='11' 
font-style='normal' font-weight='normal' text-anchor='middle' textLength='48' 
x='256.0' y='386'>PDU Size</text>
+</svg>
diff --git a/protocols/delta-v/index.html b/protocols/delta-v/index.html
index a66ee109c..7ef6c5284 100644
--- a/protocols/delta-v/index.html
+++ b/protocols/delta-v/index.html
@@ -162,24 +162,9 @@ We are hereby assuming that the inner protocol is the 
version of the DeltaV prot
 <div class="paragraph">
 <p>The general structure of such a wrapper packet seems to look like this:</p>
 </div>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: Could not find the 'packetdiag', 'packetdiag3' 
executable in PATH; add it to the PATH or specify its location using the 
'packetdiag' document attribute
-{
-    colwidth = 32
-
-    * Header\n(Constant = 0xFACE) [len = 16]
-    * Payload Length [len = 16]
-    * Type [len = 16]
-    * Message Id [len = 16]
-    * Sender Id [len = 16]
-    * Timestamp [len = 24]
-    * 0x80/0x00 [len = 8]
-    * 0x04 [len = 8]
-    * 0x00 [len = 8]
-    * Payload [len = 64]
-    * Checksum [len = 16]
-}</pre>
+<img src="../../images/deltav-wrapper-packet.svg" alt="deltav wrapper packet" 
width="896" height="400"/>
 </div>
 </div>
 <div class="paragraph">
diff --git a/protocols/s7/index.html b/protocols/s7/index.html
index 0ac7ee111..c27444f7b 100644
--- a/protocols/s7/index.html
+++ b/protocols/s7/index.html
@@ -267,42 +267,9 @@ Each message is called a <code>TPDU</code> (Transport 
Protocol Data Unit):</p>
 </div>
 <div class="sect3">
 <h4 id="connection_request_tpdu">Connection Request TPDU</h4>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: Could not find the 'packetdiag', 'packetdiag3' 
executable in PATH; add it to the PATH or specify its location using the 
'packetdiag' document attribute
-{
-    colwidth = 32
-
-    // ISO on TCP
-    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
-    * Reserved (0x00) [len = 8, color = "#068D9D"]
-    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
-
-    // ISO Transport Protocol
-    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
-    * TPDU-Code\n(CR = 0xE0) [len = 4, color = "#AEECEF"]
-    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
-    // ISO TP Header (Fixed Part)
-    * Destination Reference [len = 16, color = "#53599A"]
-    * Source Reference [len = 16, color = "#53599A"]
-    * Protocol Class\n(Class 0 = 0x00) [len = 8, color = "#53599A"]
-
-    // ISO TP Header (Variable Part / Parameters)
-    * Parameter Code\n(TPDU Size = 0xC0) [len = 8, color = "#53599A"]
-    * Parameter Length\n(1 = 0x01) [len = 8, color = "#53599A"]
-    * Parameter Value\n(TPDU Size 1024 = 0x0A) [len = 8, color = "#53599A"]
-
-    * Parameter Code\n(Calling TSAP = 0xC1) [len = 8, color = "#53599A"]
-    * Parameter Length (2 = 0x02) [len = 8, color = "#53599A"]
-    * Device Group\n(PG/PC = 0x01) [len = 8, color = "#53599A"]
-    * TSAP Id (0x00) [len = 8, color = "#53599A"]
-
-    * Parameter Code\n(Called TSAP = 0xC2) [len = 8, color = "#53599A"]
-    * Parameter Length (2 = 0x02) [len = 8, color = "#53599A"]
-    * Device Group\n(Others = 0x03) [len = 8, color = "#53599A"]
-    * Rack Number[len = 4, color = "#80DED9"]
-    * Slot Number[len = 4, color = "#80DED9"]
-}</pre>
+<img src="../../images/s7-connect-request.svg" alt="s7 connect request" 
width="896" height="360"/>
 </div>
 </div>
 <div class="paragraph">
@@ -333,24 +300,9 @@ Each message is called a <code>TPDU</code> (Transport 
Protocol Data Unit):</p>
 </div>
 <div class="sect3">
 <h4 id="data_tpdu">Data TPDU</h4>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: no implicit conversion of nil into String
-{
-    colwidth = 32
-
-    // ISO on TCP
-    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
-    * Reserved (0x00) [len = 8, color = "#068D9D"]
-    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
-
-    // ISO Transport Protocol
-    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
-    * TPDU-Code\n(DATA = 0xF0) [len = 4, color = "#AEECEF"]
-    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
-    * TPDU-NR/EOT [len = 8, color = "#53599A"]
-
-}</pre>
+<img src="../../images/s7-data.svg" alt="s7 data" width="896" height="200"/>
 </div>
 </div>
 <div class="paragraph">
@@ -372,31 +324,9 @@ Each message is called a <code>TPDU</code> (Transport 
Protocol Data Unit):</p>
 </div>
 <div class="sect3">
 <h4 id="disconnect_request_tpdu">Disconnect Request TPDU</h4>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: no implicit conversion of nil into String
-{
-    colwidth = 32
-
-    // ISO on TCP
-    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
-    * Reserved (0x00) [len = 8, color = "#068D9D"]
-    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
-
-    // ISO Transport Protocol
-    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
-    * TPDU-Code\n(DR = 0x80) [len = 4, color = "#AEECEF"]
-    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
-    * Destination Reference [len = 16, color = "#53599A"]
-    * Source Reference [len = 16, color = "#53599A"]
-    * Reason [len = 8, color = "#53599A"]
-
-    // ISO TP Header (Variable Part / Parameters) (Optional)
-    * Parameter Code\n(Disconnect Additional Information = 0xE0) [len = 8, 
color = "#53599A"]
-    * Parameter Length\n(1 ... 128) [len = 8, color = "#53599A"]
-    * Parameter Data\n(Custom user data) [len = 24, color = "#53599A"]
-
-}</pre>
+<img src="../../images/s7-disconnect-request.svg" alt="s7 disconnect request" 
width="896" height="280"/>
 </div>
 </div>
 <div class="paragraph">
diff --git a/protocols/s7/s7comm.html b/protocols/s7/s7comm.html
index cbd74ecde..7b33419d1 100644
--- a/protocols/s7/s7comm.html
+++ b/protocols/s7/s7comm.html
@@ -139,43 +139,9 @@ As soon as a valid value was found the tool then output 
the detected constant va
 </div>
 <div class="sect2">
 <h3 id="structure_of_a_setup_communication_request">Structure of a Setup 
Communication Request</h3>
-<div class="listingblock">
+<div class="imageblock">
 <div class="content">
-<pre>Failed to generate image: Could not find the 'packetdiag', 'packetdiag3' 
executable in PATH; add it to the PATH or specify its location using the 
'packetdiag' document attribute
-{
-    colwidth = 32
-
-    // ISO on TCP
-    * ISO on TCP Magic Number (0x03) [len = 8, color = "#068D9D"]
-    * Reserved (0x00) [len = 8, color = "#068D9D"]
-    * Packet Length (including ISO on TCP header) [len = 16, color = "#068D9D"]
-
-    // ISO Transport Protocol
-    * ISO TP Header Length\n(excluding length byte) [len = 8, color = 
"#53599A"]
-    * TPDU-Code\n(Data = 0xF0) [len = 4, color = "#AEECEF"]
-    * Signal CDT\n(0x00) [len = 4, color = "#53599A"]
-    // ISO TP Header (Fixed Part)
-    * Destination Reference (0x??)[len = 16, color = "#53599A"]
-    * Source Reference (0x??)[len = 16, color = "#53599A"]
-    * Protocol Class\n(Class 0 = 0x00) [len = 8, color = "#53599A"]
-
-    // S7
-    96-103: S7 Protocol Magic Byte (0x32) [color = "#6D9DC5"]
-    * Message Type (JOB = 0x01) [len = 8, color = "#AEECEF"]
-    * Reserved (0x0000) [len = 16, color = "#6D9DC5"]
-    * PDU Reference (0x??)[len = 16, color = "#6D9DC5"]
-    * S7 Parameters Length  (8 = 0x08) [len = 16, color = "#6D9DC5"]
-    * S7 Data Length (0 = 0x00) [len = 16, color = "#6D9DC5"]
-
-    // S7 Parameters
-    * Function\n(Setup Communication = 0xF0) [len = 8, color = "#AEECEF"]
-    * Reserved (0x00) [len = 8, color = "#6D9DC5"]
-    * Max AMQ Caller [len = 16, color = "#80DED9"]
-    * Max AMQ Callee [len = 16, color = "#80DED9"]
-    * PDU Size [len = 16, color = "#80DED9"]
-
-    // S7 Data
-}</pre>
+<img src="../../images/s7-setup-communication-request.svg" alt="s7 setup 
communication request" width="896" height="440"/>
 </div>
 </div>
 <div class="paragraph">

Reply via email to