You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2019/05/08 20:32:18 UTC

[plc4x] 01/02: - Refactored the S7 spec to be used easier in the code-generators

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

cdutz pushed a commit to branch feature/code-gen
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 4e437ff7cabfc29a3a45edc343e59cf6cc16577f
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed May 8 12:59:19 2019 +0200

    - Refactored the S7 spec to be used easier in the code-generators
---
 protocols/s7/src/main/java/.keepMe                 |   20 -
 .../apache/plc4x/protocols/s7/protocol.dfdl.xsd    | 1346 ++++++++++----------
 .../apache/plc4x/protocols/s7/protocol.scxml.xml   |   86 +-
 .../org/apache/plc4x/protocols/s7/ManualTest.java  |    1 +
 .../org/apache/plc4x/protocols/s7/protocol.tdml    |  592 ++++-----
 5 files changed, 1022 insertions(+), 1023 deletions(-)

diff --git a/protocols/s7/src/main/java/.keepMe b/protocols/s7/src/main/java/.keepMe
deleted file mode 100644
index 97c6314..0000000
--- a/protocols/s7/src/main/java/.keepMe
+++ /dev/null
@@ -1,20 +0,0 @@
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-This file is required to force the existence of the src/main/java directory
-which activates the "java-module" maven profile.
-
-PLEASE DO NOT DELETE ... it will break the build.
\ No newline at end of file
diff --git a/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.dfdl.xsd b/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.dfdl.xsd
index 1cb2922..5d46c8d 100644
--- a/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.dfdl.xsd
+++ b/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.dfdl.xsd
@@ -20,6 +20,7 @@
            xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
            xmlns:s7="http://plc4x.apache.org/s7"
            xmlns:fn="http://www.w3.org/2005/xpath-functions"
+           xmlns:plc4x="http://plc4x.apache.org/schemas/dfdl"
            targetNamespace="http://plc4x.apache.org/s7">
 
     <xs:annotation>
@@ -79,15 +80,24 @@
     <xs:complexType name="TpktMessageType">
         <xs:sequence>
             <!-- TPKT Magic Byte always 0x03 -->
-            <xs:element name="magicByte" type="s7:byte">
+            <xs:element name="magicByte" type="s7:byte" fixed="3">
                 <xs:annotation>
+                    <xs:appinfo source="http://plc4x.apache.org/dfdl">
+                        <plc4x:noProperty/>
+                    </xs:appinfo>
                     <xs:appinfo source="http://www.ogf.org/dfdl/">
                         <dfdl:assert message="Magic number was not 0x03."
                                      test="{. eq 3}"/>
                     </xs:appinfo>
                 </xs:annotation>
             </xs:element>
-            <xs:element name="reserved" type="s7:byte"/>
+            <xs:element name="reserved" type="s7:byte">
+                <xs:annotation>
+                    <xs:appinfo source="http://plc4x.apache.org/dfdl">
+                        <plc4x:noProperty/>
+                    </xs:appinfo>
+                </xs:annotation>
+            </xs:element>
             <xs:element name="length" type="s7:short"/>
             <xs:element name="userData" type="s7:CotpMessageType"/>
         </xs:sequence>
@@ -170,12 +180,16 @@
             <xs:element name="headerLength" type="s7:byte"/>
             <xs:element name="type" type="s7:CotpTpduType"/>
             <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                <xs:element dfdl:choiceBranchKey="224" ref="s7:CotpTpduConnectionRequest"/>
-                <xs:element dfdl:choiceBranchKey="208" ref="s7:CotpTpduConnectionResponse"/>
-                <xs:element dfdl:choiceBranchKey="128" ref="s7:CotpTpduDisconnectRequest"/>
-                <xs:element dfdl:choiceBranchKey="192" ref="s7:CotpTpduDisconnectResponse"/>
-                <xs:element dfdl:choiceBranchKey="112" ref="s7:CotpTpduError"/>
-                <xs:element dfdl:choiceBranchKey="240" ref="s7:CotpTpduData"/>
+                <xs:element dfdl:choiceBranchKey="224" name="cotpTpduConnectionRequest"
+                            type="s7:CotpTpduConnectionRequest"/>
+                <xs:element dfdl:choiceBranchKey="208" name="cotpTpduConnectionResponse"
+                            type="s7:CotpTpduConnectionResponse"/>
+                <xs:element dfdl:choiceBranchKey="128" name="cotpTpduDisconnectRequest"
+                            type="s7:CotpTpduDisconnectRequest"/>
+                <xs:element dfdl:choiceBranchKey="192" name="cotpTpduDisconnectResponse"
+                            type="s7:CotpTpduDisconnectResponse"/>
+                <xs:element dfdl:choiceBranchKey="112" name="cotpTpduError" type="s7:CotpTpduError"/>
+                <xs:element dfdl:choiceBranchKey="240" name="cotpTpduData" type="s7:CotpTpduData"/>
             </xs:choice>
             <xs:element name="userData" type="s7:S7MessageType" minOccurs="0"
                         dfdl:occursCountKind="expression"
@@ -183,149 +197,149 @@
         </xs:sequence>
     </xs:complexType>
 
-    <xs:element name="CotpTpduConnectionRequest">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="destinationReference" type="s7:short"/>
-                <xs:element name="sourceReference" type="s7:short"/>
-                <xs:element name="protocolClass" type="s7:byte"/>
-                <xs:element ref="s7:parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpTpduConnectionResponse">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="destinationReference" type="s7:short"/>
-                <xs:element name="sourceReference" type="s7:short"/>
-                <xs:element name="protocolClass" type="s7:byte"/>
-                <xs:element ref="s7:parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpTpduDisconnectRequest">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="destinationReference" type="s7:short"/>
-                <xs:element name="sourceReference" type="s7:short"/>
-                <xs:element name="disconnectReason" type="s7:byte"/>
-                <xs:element ref="s7:parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpTpduDisconnectResponse">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="destinationReference" type="s7:short"/>
-                <xs:element name="sourceReference" type="s7:short"/>
-                <xs:element ref="s7:parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 5}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../../headerLength gt 5) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpTpduError">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="destinationReference" type="s7:short"/>
-                <xs:element name="rejectCause" type="s7:byte"/>
-                <xs:element ref="s7:parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 4}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../../headerLength gt 4) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpTpduData">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="endOfTransmission" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="1"/>
-                <xs:element name="tpduRef" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="7"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="parameters">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="parameter" maxOccurs="unbounded">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="type" type="s7:CotpParameterType"/>
-                            <xs:element name="parameterLength" type="s7:byte"/>
-                            <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                <xs:element dfdl:choiceBranchKey="192" ref="s7:CotpParameterTpduSize"/>
-                                <xs:element dfdl:choiceBranchKey="193" ref="s7:CotpParameterCallingTsap"/>
-                                <xs:element dfdl:choiceBranchKey="194" ref="s7:CotpParameterCalledTsap"/>
-                                <xs:element dfdl:choiceBranchKey="195" ref="s7:CotpParameterChecksum"/>
-                                <xs:element dfdl:choiceBranchKey="224"
-                                            ref="s7:CotpParameterDisconnectAdditionalInformation"/>
-                            </xs:choice>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpParameterTpduSize">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="tpduSize" type="s7:byte"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpParameterCallingTsap">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="tsapId" type="s7:short"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpParameterCalledTsap">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="tsapId" type="s7:short"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpParameterChecksum">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="checksum" type="s7:byte"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="CotpParameterDisconnectAdditionalInformation">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="data" type="xs:hexBinary"
-                            dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
-                            dfdl:length="{../../parameterLength}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
+    <xs:complexType name="CotpTpduConnectionRequest">
+        <xs:sequence>
+            <xs:element name="destinationReference" type="s7:short"/>
+            <xs:element name="sourceReference" type="s7:short"/>
+            <xs:element name="protocolClass" type="s7:byte"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" type="s7:Parameter" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpTpduConnectionResponse">
+        <xs:sequence>
+            <xs:element name="destinationReference" type="s7:short"/>
+            <xs:element name="sourceReference" type="s7:short"/>
+            <xs:element name="protocolClass" type="s7:byte"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" type="s7:Parameter" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpTpduDisconnectRequest">
+        <xs:sequence>
+            <xs:element name="destinationReference" type="s7:short"/>
+            <xs:element name="sourceReference" type="s7:short"/>
+            <xs:element name="disconnectReason" type="s7:byte"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 6}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../../headerLength gt 6) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" type="s7:Parameter" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpTpduDisconnectResponse">
+        <xs:sequence>
+            <xs:element name="destinationReference" type="s7:short"/>
+            <xs:element name="sourceReference" type="s7:short"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 5}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../../headerLength gt 5) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" type="s7:Parameter" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpTpduError">
+        <xs:sequence>
+            <xs:element name="destinationReference" type="s7:short"/>
+            <xs:element name="rejectCause" type="s7:byte"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../../headerLength - 4}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../../headerLength gt 4) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" type="s7:Parameter" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpTpduData">
+        <xs:sequence>
+            <xs:element name="endOfTransmission" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="1"/>
+            <xs:element name="tpduRef" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="7"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="Parameter">
+        <xs:sequence>
+            <xs:element name="type" type="s7:CotpParameterType"/>
+            <xs:element name="parameterLength" type="s7:byte"/>
+            <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                <xs:element dfdl:choiceBranchKey="192" name="cotpParameterTpduSize" type="s7:CotpParameterTpduSize"/>
+                <xs:element dfdl:choiceBranchKey="193" name="cotpParameterCallingTsap" type="s7:CotpParameterCallingTsap"/>
+                <xs:element dfdl:choiceBranchKey="194" name="cotpParameterCalledTsap" type="s7:CotpParameterCalledTsap"/>
+                <xs:element dfdl:choiceBranchKey="195" name="cotpParameterChecksum" type="s7:CotpParameterChecksum"/>
+                <xs:element dfdl:choiceBranchKey="224" name="cotpParameterDisconnectAdditionalInformation"
+                            type="s7:CotpParameterDisconnectAdditionalInformation"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpParameterTpduSize">
+        <xs:sequence>
+            <xs:element name="tpduSize" type="s7:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpParameterCallingTsap">
+        <xs:sequence>
+            <xs:element name="tsapId" type="s7:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpParameterCalledTsap">
+        <xs:sequence>
+            <xs:element name="tsapId" type="s7:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpParameterChecksum">
+        <xs:sequence>
+            <xs:element name="checksum" type="s7:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="CotpParameterDisconnectAdditionalInformation">
+        <xs:sequence>
+            <xs:element name="data" type="xs:hexBinary"
+                        dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
+                        dfdl:length="{../../parameterLength}"/>
+        </xs:sequence>
+    </xs:complexType>
 
     <!--
 
@@ -352,227 +366,229 @@
                 we map to strings and use that as choice-key.
             -->
             <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                <xs:element dfdl:choiceBranchKey="1" ref="s7:S7RequestMessage"/>
-                <xs:element dfdl:choiceBranchKey="3" ref="s7:S7ResponseMessage"/>
-                <xs:element dfdl:choiceBranchKey="7" ref="s7:S7UserDataMessage"/>
+                <xs:element dfdl:choiceBranchKey="1" name="s7RequestMessage" type="s7:S7RequestMessage"/>
+                <xs:element dfdl:choiceBranchKey="3" name="s7ResponseMessage" type="s7:S7ResponseMessage"/>
+                <xs:element dfdl:choiceBranchKey="7" name="s7UserDataMessage" type="s7:S7UserDataMessage"/>
             </xs:choice>
         </xs:sequence>
     </xs:complexType>
 
-    <xs:element name="S7RequestMessage">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- Reserved value always 0x0000 -->
-                <xs:element name="reserved" type="s7:short" fixed="0"/>
-                <xs:element name="tpduReference" type="s7:short"/>
-                <xs:element name="parametersLength" type="s7:short"/>
-                <xs:element name="payloadsLength" type="s7:short"/>
-                <xs:element name="parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="parameter" maxOccurs="unbounded">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="type" type="s7:byte"/>
-                                        <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                            <xs:element dfdl:choiceBranchKey="240"
-                                                        ref="s7:S7GeneralParameterSetupCommunication"/>
-                                            <xs:element dfdl:choiceBranchKey="4" ref="s7:S7RequestParameterReadVar"/>
-                                            <xs:element dfdl:choiceBranchKey="5" ref="s7:S7RequestParameterWriteVar"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!--
-                   As we might be outputting an empty payload block for a parameter that might not have a payload,
-                   we have to output this element if the parameters are not empty. The case that the payloads are
-                   not empty but the parameters are can't happen during normal operation.
-               -->
-                <xs:element name="payloads" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <!--
-                                For every parameter we'll be outputting a payload block, even if this might be empty.
-                                This is required in order to find the matching parameter for every payload we might
-                                be having. We need to match these as otherwise we couldn't determine the type of a
-                                payload as this has no type information and we need to be able to access the number
-                                of items for a read/write request in order to process the correct number of items in
-                                the payload.
-                            -->
-                            <xs:element name="payload" maxOccurs="unbounded"
-                                        dfdl:occursCountKind="expression"
-                                        dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:choice
-                                            dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
-                                            <xs:element dfdl:choiceBranchKey="240"
-                                                        ref="s7:S7GeneralPayloadSetupCommunication"/>
-                                            <xs:element dfdl:choiceBranchKey="4" ref="s7:S7RequestPayloadReadVar"/>
-                                            <xs:element dfdl:choiceBranchKey="5" ref="s7:S7RequestPayloadWriteVar"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7ResponseMessage">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- Reserved value always 0x0000 -->
-                <xs:element name="reserved" type="s7:short" fixed="0"/>
-                <xs:element name="tpduReference" type="s7:short"/>
-                <xs:element name="parametersLength" type="s7:short"/>
-                <xs:element name="payloadsLength" type="s7:short"/>
-                <!-- UserData (type 7) responses don't have the error class and code -->
-                <xs:element name="errorClass" type="s7:byte" minOccurs="0"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{if(../../type eq 3) then 1 else 0}"/>
-                <xs:element name="errorCode" type="s7:byte" minOccurs="0"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{if(../../type eq 3) then 1 else 0}"/>
-                <xs:element name="parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="parameter" maxOccurs="unbounded">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="type" type="s7:byte"/>
-                                        <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                            <xs:element dfdl:choiceBranchKey="240"
-                                                        ref="s7:S7GeneralParameterSetupCommunication"/>
-                                            <xs:element dfdl:choiceBranchKey="4" ref="s7:S7ResponseParameterReadVar"/>
-                                            <xs:element dfdl:choiceBranchKey="5" ref="s7:S7ResponseParameterWriteVar"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!--
-                    As we might be outputting an empty payload block for a parameter that might not have a payload,
-                    we have to output this element if the parameters are not empty. The case that the payloads are
-                    not empty but the parameters are can't happen during normal operation.
-                -->
-                <xs:element name="payloads" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <!--
-                                For every parameter we'll be outputting a payload block, even if this might be empty.
-                                This is required in order to find the matching parameter for every payload we might
-                                be having. We need to match these as otherwise we couldn't determin the type of a
-                                payload as this has no type information and we need to be able to access the number
-                                of items for a read/write request in order to process the correct number of items in
-                                the payload.
-                            -->
-                            <xs:element name="payload" maxOccurs="unbounded"
-                                        dfdl:occursCountKind="expression"
-                                        dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:choice
-                                            dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
-                                            <xs:element dfdl:choiceBranchKey="240"
-                                                        ref="s7:S7GeneralPayloadSetupCommunication"/>
-                                            <xs:element dfdl:choiceBranchKey="4" ref="s7:S7ResponsePayloadReadVar"/>
-                                            <xs:element dfdl:choiceBranchKey="5" ref="s7:S7ResponsePayloadWriteVar"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-
-    <xs:element name="S7UserDataMessage">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- Reserved value always 0x0000 -->
-                <xs:element name="reserved" type="s7:short" fixed="0"/>
-                <xs:element name="tpduReference" type="s7:short"/>
-                <xs:element name="parametersLength" type="s7:short"/>
-                <xs:element name="payloadsLength" type="s7:short"/>
-                <xs:element name="parameters" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="parameter" maxOccurs="unbounded">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="type" type="s7:byte"/>
-                                        <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                            <xs:element dfdl:choiceBranchKey="0"
-                                                        ref="s7:S7UserDataParameterCPUService"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!--
-                   As we might be outputting an empty payload block for a parameter that might not have a payload,
-                   we have to output this element if the parameters are not empty. The case that the payloads are
-                   not empty but the parameters are can't happen during normal operation.
-               -->
-                <xs:element name="payloads" minOccurs="0"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <!--
-                                For every parameter we'll be outputting a payload block, even if this might be empty.
-                                This is required in order to find the matching parameter for every payload we might
-                                be having. We need to match these as otherwise we couldn't determine the type of a
-                                payload as this has no type information and we need to be able to access the number
-                                of items for a read/write request in order to process the correct number of items in
-                                the payload.
-                            -->
-                            <xs:element name="payload" maxOccurs="unbounded"
-                                        dfdl:occursCountKind="expression"
-                                        dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:choice
-                                            dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
-                                            <xs:element dfdl:choiceBranchKey="0"
-                                                        ref="s7:S7UserDataPayloadCpuServices"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
+    <xs:complexType name="S7RequestMessage">
+        <xs:sequence>
+            <!-- Reserved value always 0x0000 -->
+            <xs:element name="reserved" type="s7:short" fixed="0"/>
+            <xs:element name="tpduReference" type="s7:short"/>
+            <xs:element name="parametersLength" type="s7:short"/>
+            <xs:element name="payloadsLength" type="s7:short"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" maxOccurs="unbounded">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="s7:byte"/>
+                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="240" name="s7GeneralParameterSetupCommunication"
+                                                    type="s7:S7GeneralParameterSetupCommunication"/>
+                                        <xs:element dfdl:choiceBranchKey="4" name="s7RequestParameterReadVar"
+                                                    type="s7:S7RequestParameterReadVar"/>
+                                        <xs:element dfdl:choiceBranchKey="5" name="s7RequestParameterWriteVar"
+                                                    type="s7:S7RequestParameterWriteVar"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <!--
+               As we might be outputting an empty payload block for a parameter that might not have a payload,
+               we have to output this element if the parameters are not empty. The case that the payloads are
+               not empty but the parameters are can't happen during normal operation.
+           -->
+            <xs:element name="payloads" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <!--
+                            For every parameter we'll be outputting a payload block, even if this might be empty.
+                            This is required in order to find the matching parameter for every payload we might
+                            be having. We need to match these as otherwise we couldn't determine the type of a
+                            payload as this has no type information and we need to be able to access the number
+                            of items for a read/write request in order to process the correct number of items in
+                            the payload.
+                        -->
+                        <xs:element name="payload" maxOccurs="unbounded"
+                                    dfdl:occursCountKind="expression"
+                                    dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:choice
+                                        dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
+                                        <xs:element dfdl:choiceBranchKey="240" name="s7GeneralPayloadSetupCommunication"
+                                                    type="s7:S7GeneralPayloadSetupCommunication"/>
+                                        <xs:element dfdl:choiceBranchKey="4" name="s7RequestPayloadReadVar"
+                                                    type="s7:S7RequestPayloadReadVar"/>
+                                        <xs:element dfdl:choiceBranchKey="5" name="s7RequestPayloadWriteVar"
+                                                    type="s7:S7RequestPayloadWriteVar"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponseMessage">
+        <xs:sequence>
+            <!-- Reserved value always 0x0000 -->
+            <xs:element name="reserved" type="s7:short" fixed="0"/>
+            <xs:element name="tpduReference" type="s7:short"/>
+            <xs:element name="parametersLength" type="s7:short"/>
+            <xs:element name="payloadsLength" type="s7:short"/>
+            <!-- UserData (type 7) responses don't have the error class and code -->
+            <xs:element name="errorClass" type="s7:byte" minOccurs="0"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{if(../../type eq 3) then 1 else 0}"/>
+            <xs:element name="errorCode" type="s7:byte" minOccurs="0"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{if(../../type eq 3) then 1 else 0}"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" maxOccurs="unbounded">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="s7:byte"/>
+                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="240" name="s7GeneralParameterSetupCommunication"
+                                                    type="s7:S7GeneralParameterSetupCommunication"/>
+                                        <xs:element dfdl:choiceBranchKey="4" name="s7ResponseParameterReadVar"
+                                                    type="s7:S7ResponseParameterReadVar"/>
+                                        <xs:element dfdl:choiceBranchKey="5" name="s7ResponseParameterWriteVar"
+                                                    type="s7:S7ResponseParameterWriteVar"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <!--
+                As we might be outputting an empty payload block for a parameter that might not have a payload,
+                we have to output this element if the parameters are not empty. The case that the payloads are
+                not empty but the parameters are can't happen during normal operation.
+            -->
+            <xs:element name="payloads" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <!--
+                            For every parameter we'll be outputting a payload block, even if this might be empty.
+                            This is required in order to find the matching parameter for every payload we might
+                            be having. We need to match these as otherwise we couldn't determin the type of a
+                            payload as this has no type information and we need to be able to access the number
+                            of items for a read/write request in order to process the correct number of items in
+                            the payload.
+                        -->
+                        <xs:element name="payload" maxOccurs="unbounded"
+                                    dfdl:occursCountKind="expression"
+                                    dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:choice
+                                        dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
+                                        <xs:element dfdl:choiceBranchKey="240" name="s7GeneralPayloadSetupCommunication"
+                                                    type="s7:S7GeneralPayloadSetupCommunication"/>
+                                        <xs:element dfdl:choiceBranchKey="4" name="s7ResponsePayloadReadVar"
+                                                    type="s7:S7ResponsePayloadReadVar"/>
+                                        <xs:element dfdl:choiceBranchKey="5" name="s7ResponsePayloadWriteVar"
+                                                    type="s7:S7ResponsePayloadWriteVar"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+
+    <xs:complexType name="S7UserDataMessage">
+        <xs:sequence>
+            <!-- Reserved value always 0x0000 -->
+            <xs:element name="reserved" type="s7:short" fixed="0"/>
+            <xs:element name="tpduReference" type="s7:short"/>
+            <xs:element name="parametersLength" type="s7:short"/>
+            <xs:element name="payloadsLength" type="s7:short"/>
+            <xs:element name="parameters" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../parametersLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="parameter" maxOccurs="unbounded">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="s7:byte"/>
+                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="0" name="s7UserDataParameterCPUService"
+                                                    type="s7:S7UserDataParameterCPUService"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <!--
+               As we might be outputting an empty payload block for a parameter that might not have a payload,
+               we have to output this element if the parameters are not empty. The case that the payloads are
+               not empty but the parameters are can't happen during normal operation.
+           -->
+            <xs:element name="payloads" minOccurs="0"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="{../payloadsLength}"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../parametersLength gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <!--
+                            For every parameter we'll be outputting a payload block, even if this might be empty.
+                            This is required in order to find the matching parameter for every payload we might
+                            be having. We need to match these as otherwise we couldn't determine the type of a
+                            payload as this has no type information and we need to be able to access the number
+                            of items for a read/write request in order to process the correct number of items in
+                            the payload.
+                        -->
+                        <xs:element name="payload" maxOccurs="unbounded"
+                                    dfdl:occursCountKind="expression"
+                                    dfdl:occursCount="{fn:count(../../parameters[1]/parameter)}">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:choice
+                                        dfdl:choiceDispatchKey="{xs:string(../../parameters[1]/parameter[dfdl:occursIndex()]/type)}">
+                                        <xs:element dfdl:choiceBranchKey="0" name="s7UserDataPayloadCpuServices"
+                                                    type="s7:S7UserDataPayloadCpuServices"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
 
     <!--
 
@@ -580,162 +596,146 @@
 
     -->
 
-    <xs:element name="S7GeneralParameterSetupCommunication">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- Reserved value always 0x00 -->
-                <xs:element name="reserved" type="s7:byte" fixed="0"/>
-                <xs:element name="maxAmqCaller" type="s7:short"/>
-                <xs:element name="maxAmqCallee" type="s7:short"/>
-                <xs:element name="pduLength" type="s7:short"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7UserDataParameterCPUService">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- Fixed header 0x0112 274 -> -->
-                <xs:element name="header" type="s7:short"/><!-- fixed="274"-->
-                <xs:element name="paramLength" type="s7:byte"/><!-- fixed="4"-->
-                <!-- Request: 0x11 -> 17 -->
-                <xs:element name="typeCode" type="s7:byte"/><!-- fixed="17"-->
-                <xs:element name="type" type="xs:unsignedByte" dfdl:lengthKind="explicit" dfdl:lengthUnits="bits"
-                            dfdl:length="4"/>
-                <!-- First 4 bits: Request 0x40, last 4 bits: Function Group 0x04 = 0x44 -> 68 -->
-                <xs:element name="functionGroup" type="xs:unsignedByte" dfdl:lengthKind="explicit"
-                            dfdl:lengthUnits="bits" dfdl:length="4"/><!-- fixed="68"-->
-                <!-- READ SSL = 0x01 -->
-                <xs:element name="subFunctionGroup" type="s7:byte"/><!-- fixed="1"-->
-                <xs:element name="sequenceNumber" type="s7:byte"/>
-                <xs:element name="dataUnitReferenceNumber" type="s7:byte" minOccurs="0"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
-                <xs:element name="lastDataUnit" type="s7:byte" minOccurs="0"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
-                <xs:element name="errorCode" type="s7:short" minOccurs="0"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestParameterReadVar">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="numItems" type="s7:byte"/>
-                <xs:element name="items" minOccurs="0"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{if(../numItems gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
-                                        dfdl:occursCountKind="expression" dfdl:occursCount="{../../numItems}">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="type" type="s7:byte"/>
-                                        <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                            <xs:element dfdl:choiceBranchKey="18"
-                                                        ref="s7:S7RequestParameterReadVarAnyItem"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestParameterReadVarAnyItem">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="paramLength" type="s7:byte"/><!-- fixed="10"-->
-                <!-- Addressing Mode: Any 0x10 -> 16 -->
-                <xs:element name="addressingMode" type="s7:byte"/><!-- fixed="16"-->
-                <xs:element name="dataType" type="s7:byte"/>
-                <xs:element name="numElements" type="s7:short"/>
-                <xs:element name="dataBlockNumber" type="s7:short"/>
-                <xs:element name="memoryArea" type="s7:byte"/>
-                <!--
-                 The next 3 bytes (24 bits) contain the byte- and bit-offset,
-                 were the last byte contains the bit-offset in the last 3 bits
-                 and the byteOffset is encoded in the higher level 21 bits
-                -->
-                <xs:element name="byteOffset" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="21"/>
-                <xs:element name="bitOffset" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="3"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7ResponseParameterReadVar">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="numItems" type="s7:byte"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestParameterWriteVar">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="numItems" type="s7:byte"/>
-                <xs:element name="items" minOccurs="0"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{if(../numItems gt 0) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
-                                        dfdl:occursCountKind="expression" dfdl:occursCount="{../../numItems}">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="type" type="s7:byte"/>
-                                        <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
-                                            <xs:element dfdl:choiceBranchKey="18"
-                                                        ref="s7:S7RequestParameterWriteVarAnyItem"/>
-                                        </xs:choice>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestParameterWriteVarAnyItem">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="itemLength" type="s7:byte"/><!-- fixed="10"-->
-                <!-- Addressing Mode: Any 0x10 -> 16 -->
-                <xs:element name="addressingMode" type="s7:byte"/><!-- fixed="16"-->
-                <xs:element name="dataType" type="s7:byte"/>
-                <xs:element name="numElements" type="s7:short"/>
-                <xs:element name="dataBlockNumber" type="s7:short"/>
-                <xs:element name="memoryArea" type="s7:byte"/>
-                <!--
-                 The next 3 bytes (24 bits) contain the byte- and bit-offset,
-                 were the last byte contains the bit-offset in the last 3 bits
-                 and the byteOffset is encoded in the higher level 21 bits
-                -->
-                <xs:element name="byteOffset" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="21"/>
-                <xs:element name="bitOffset" type="xs:unsignedInt"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="3"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7ResponseParameterWriteVar">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="numItems" type="s7:byte"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
+    <xs:complexType name="S7GeneralParameterSetupCommunication">
+        <xs:sequence>
+            <!-- Reserved value always 0x00 -->
+            <xs:element name="reserved" type="s7:byte" fixed="0"/>
+            <xs:element name="maxAmqCaller" type="s7:short"/>
+            <xs:element name="maxAmqCallee" type="s7:short"/>
+            <xs:element name="pduLength" type="s7:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7UserDataParameterCPUService">
+        <xs:sequence>
+            <!-- Fixed header 0x0112 274 -> -->
+            <xs:element name="header" type="s7:short"/><!-- fixed="274"-->
+            <xs:element name="paramLength" type="s7:byte"/><!-- fixed="4"-->
+            <!-- Request: 0x11 -> 17 -->
+            <xs:element name="typeCode" type="s7:byte"/><!-- fixed="17"-->
+            <xs:element name="type" type="xs:unsignedByte" dfdl:lengthKind="explicit" dfdl:lengthUnits="bits"
+                        dfdl:length="4"/>
+            <!-- First 4 bits: Request 0x40, last 4 bits: Function Group 0x04 = 0x44 -> 68 -->
+            <xs:element name="functionGroup" type="xs:unsignedByte" dfdl:lengthKind="explicit"
+                        dfdl:lengthUnits="bits" dfdl:length="4"/><!-- fixed="68"-->
+            <!-- READ SSL = 0x01 -->
+            <xs:element name="subFunctionGroup" type="s7:byte"/><!-- fixed="1"-->
+            <xs:element name="sequenceNumber" type="s7:byte"/>
+            <xs:element name="dataUnitReferenceNumber" type="s7:byte" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
+            <xs:element name="lastDataUnit" type="s7:byte" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
+            <xs:element name="errorCode" type="s7:short" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../sequenceNumber eq 2) then 1 else 0}"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestParameterReadVar">
+        <xs:sequence>
+            <xs:element name="numItems" type="s7:byte"/>
+            <xs:element name="items" minOccurs="0"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{if(../numItems gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
+                                    dfdl:occursCountKind="expression" dfdl:occursCount="{../../numItems}">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="s7:byte"/>
+                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="18" name="s7RequestParameterReadVarAnyItem"
+                                                    type="s7:S7RequestParameterReadVarAnyItem"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestParameterReadVarAnyItem">
+        <xs:sequence>
+            <xs:element name="paramLength" type="s7:byte"/><!-- fixed="10"-->
+            <!-- Addressing Mode: Any 0x10 -> 16 -->
+            <xs:element name="addressingMode" type="s7:byte"/><!-- fixed="16"-->
+            <xs:element name="dataType" type="s7:byte"/>
+            <xs:element name="numElements" type="s7:short"/>
+            <xs:element name="dataBlockNumber" type="s7:short"/>
+            <xs:element name="memoryArea" type="s7:byte"/>
+            <!--
+             The next 3 bytes (24 bits) contain the byte- and bit-offset,
+             were the last byte contains the bit-offset in the last 3 bits
+             and the byteOffset is encoded in the higher level 21 bits
+            -->
+            <xs:element name="byteOffset" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="21"/>
+            <xs:element name="bitOffset" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="3"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponseParameterReadVar">
+        <xs:sequence>
+            <xs:element name="numItems" type="s7:byte"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestParameterWriteVar">
+        <xs:sequence>
+            <xs:element name="numItems" type="s7:byte"/>
+            <xs:element name="items" minOccurs="0"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{if(../numItems gt 0) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
+                                    dfdl:occursCountKind="expression" dfdl:occursCount="{../../numItems}">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="type" type="s7:byte"/>
+                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(type)}">
+                                        <xs:element dfdl:choiceBranchKey="18" name="s7RequestParameterWriteVarAnyItem"
+                                                    type="s7:S7RequestParameterWriteVarAnyItem"/>
+                                    </xs:choice>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestParameterWriteVarAnyItem">
+        <xs:sequence>
+            <xs:element name="itemLength" type="s7:byte"/><!-- fixed="10"-->
+            <!-- Addressing Mode: Any 0x10 -> 16 -->
+            <xs:element name="addressingMode" type="s7:byte"/><!-- fixed="16"-->
+            <xs:element name="dataType" type="s7:byte"/>
+            <xs:element name="numElements" type="s7:short"/>
+            <xs:element name="dataBlockNumber" type="s7:short"/>
+            <xs:element name="memoryArea" type="s7:byte"/>
+            <!--
+             The next 3 bytes (24 bits) contain the byte- and bit-offset,
+             were the last byte contains the bit-offset in the last 3 bits
+             and the byteOffset is encoded in the higher level 21 bits
+            -->
+            <xs:element name="byteOffset" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="21"/>
+            <xs:element name="bitOffset" type="xs:unsignedInt"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bits" dfdl:length="3"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponseParameterWriteVar">
+        <xs:sequence>
+            <xs:element name="numItems" type="s7:byte"/>
+        </xs:sequence>
+    </xs:complexType>
 
     <!--
 
@@ -743,167 +743,167 @@
 
     -->
 
-    <xs:element name="S7GeneralPayloadSetupCommunication"
-                type="xs:hexBinary" dfdl:lengthKind="explicit" dfdl:length="0"/>
-
-    <xs:element name="S7UserDataPayloadCpuServices">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="returnCode" type="s7:byte"/>
-                <xs:element name="transportSize" type="s7:byte"/><!-- fixed="9"-->
-                <xs:element name="length" type="s7:short"/>
-                <xs:element name="sslId" type="s7:short" minOccurs="0"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../returnCode eq 255) then 1 else 0}"/>
-                <xs:element name="sslIndex" type="s7:short" minOccurs="0"
-                            dfdl:occursCountKind="expression"
-                            dfdl:occursCount="{if(../returnCode eq 255) then 1 else 0}"/>
-                <xs:element name="partialList" minOccurs="0"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{if((../returnCode eq 255) and (../length gt 4)) then 1 else 0}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="partialListLengthInBytes" type="s7:short"/>
-                            <xs:element name="partialListCount" type="s7:short"/>
-                            <xs:element name="sslDataRecords">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="sslDataRecord" maxOccurs="unbounded"
-                                                    dfdl:occursCountKind="expression" dfdl:occursCount="{../../partialListCount}">
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                    <xs:choice dfdl:choiceDispatchKey="{xs:string(../../../sslId[1])}">
-                                                        <xs:element dfdl:choiceBranchKey="17"
-                                                                    ref="s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification"/>
-                                                    </xs:choice>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="index" type="s7:short"/>
-                <xs:element name="articleNumber" type="xs:string" dfdl:textTrimKind="none" dfdl:alignmentUnits="bytes"
-                            dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="20"/>
-                <xs:element name="bgType" type="s7:short"/>
-                <xs:element name="moduleOrOsVersion" type="s7:short"/>
-                <xs:element name="pgDescriptionFileVersion" type="s7:short"/>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestPayloadReadVar"
-                type="xs:hexBinary" dfdl:lengthKind="explicit" dfdl:length="0"/>
-
-    <xs:element name="S7ResponsePayloadReadVar">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- The number of items which should be read is transmitted in the matching parameter -->
-                <xs:element name="numItems" type="s7:byte"
-                            dfdl:inputValueCalc="{
-                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7:S7ResponseParameterReadVar/numItems
+    <xs:complexType name="S7GeneralPayloadSetupCommunication">
+        <xs:sequence>
+            <xs:element name="data" type="xs:hexBinary" dfdl:lengthKind="explicit" dfdl:length="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7UserDataPayloadCpuServices">
+        <xs:sequence>
+            <xs:element name="returnCode" type="s7:byte"/>
+            <xs:element name="transportSize" type="s7:byte"/><!-- fixed="9"-->
+            <xs:element name="length" type="s7:short"/>
+            <xs:element name="sslId" type="s7:short" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../returnCode eq 255) then 1 else 0}"/>
+            <xs:element name="sslIndex" type="s7:short" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if(../returnCode eq 255) then 1 else 0}"/>
+            <xs:element name="partialList" minOccurs="0"
+                        dfdl:occursCountKind="expression"
+                        dfdl:occursCount="{if((../returnCode eq 255) and (../length gt 4)) then 1 else 0}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="partialListLengthInBytes" type="s7:short"/>
+                        <xs:element name="partialListCount" type="s7:short"/>
+                        <xs:element name="sslDataRecords">
+                            <xs:complexType>
+                                <xs:sequence>
+                                    <xs:element name="sslDataRecord" maxOccurs="unbounded"
+                                                dfdl:occursCountKind="expression"
+                                                dfdl:occursCount="{../../partialListCount}">
+                                        <xs:complexType>
+                                            <xs:sequence>
+                                                <xs:choice dfdl:choiceDispatchKey="{xs:string(../../../sslId[1])}">
+                                                    <xs:element dfdl:choiceBranchKey="17"
+                                                                name="s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification"
+                                                                type="s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification"/>
+                                                </xs:choice>
+                                            </xs:sequence>
+                                        </xs:complexType>
+                                    </xs:element>
+                                </xs:sequence>
+                            </xs:complexType>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification">
+        <xs:sequence>
+            <xs:element name="index" type="s7:short"/>
+            <xs:element name="articleNumber" type="xs:string" dfdl:textTrimKind="none" dfdl:alignmentUnits="bytes"
+                        dfdl:lengthKind="explicit" dfdl:lengthUnits="bytes" dfdl:length="20"/>
+            <xs:element name="bgType" type="s7:short"/>
+            <xs:element name="moduleOrOsVersion" type="s7:short"/>
+            <xs:element name="pgDescriptionFileVersion" type="s7:short"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestPayloadReadVar">
+        <xs:sequence>
+            <xs:element name="data"
+                        type="xs:hexBinary" dfdl:lengthKind="explicit" dfdl:length="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponsePayloadReadVar">
+        <xs:sequence>
+            <!-- The number of items which should be read is transmitted in the matching parameter -->
+            <xs:element name="numItems" type="s7:byte"
+                        dfdl:inputValueCalc="{
+                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7ResponseParameterReadVar/numItems
                             }"/>
-                <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="returnCode" type="s7:byte"/>
-                            <xs:element name="transportSize" type="s7:byte"/>
-                            <xs:element name="rawLength" type="s7:short"/>
-                            <!--
-                                For some reason the types BIT, BYTE_WORD_DWORD and INTEGER are transferred in "bits",
-                                the rest is transferred in "bytes"
-                            -->
-                            <xs:element name="lengthInBytes" type="s7:short" dfdl:inputValueCalc="{
+            <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="returnCode" type="s7:byte"/>
+                        <xs:element name="transportSize" type="s7:byte"/>
+                        <xs:element name="rawLength" type="s7:short"/>
+                        <!--
+                            For some reason the types BIT, BYTE_WORD_DWORD and INTEGER are transferred in "bits",
+                            the rest is transferred in "bytes"
+                        -->
+                        <xs:element name="lengthInBytes" type="s7:short" dfdl:inputValueCalc="{
                                     xs:unsignedShort(if((../transportSize eq 3) or (../transportSize eq 4) or (../transportSize eq 5))
                                             then fn:ceiling(xs:double(../rawLength div 8))
                                             else ../rawLength)}"/>
-                            <xs:element name="data" type="xs:hexBinary"
-                                        dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
-                                        dfdl:length="{../lengthInBytes}"/>
-                            <!--
-                                Transport sizes: BIT, BYTE_WORD_DWORD and OCTET_STRING require a blank byte.
-                                However only if this is not the last item in the result.
-                            -->
-                            <xs:element name="fillByte" type="s7:byte" minOccurs="0"
-                                        dfdl:occursCountKind="expression" dfdl:occursCount="{
+                        <xs:element name="data" type="xs:hexBinary"
+                                    dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
+                                    dfdl:length="{../lengthInBytes}"/>
+                        <!--
+                            Transport sizes: BIT, BYTE_WORD_DWORD and OCTET_STRING require a blank byte.
+                            However only if this is not the last item in the result.
+                        -->
+                        <xs:element name="fillByte" type="s7:byte" minOccurs="0"
+                                    dfdl:occursCountKind="expression" dfdl:occursCount="{
                                             if(((../lengthInBytes mod 2) eq 1) and
                                                 (dfdl:occursIndex() ne ../../numItems)) then 1 else 0}"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7RequestPayloadWriteVar">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- The number of items which should be read is transmitted in the matching parameter -->
-                <xs:element name="numItems" type="s7:byte"
-                            dfdl:inputValueCalc="{
-                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7:S7RequestParameterWriteVar/numItems
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7RequestPayloadWriteVar">
+        <xs:sequence>
+            <!-- The number of items which should be read is transmitted in the matching parameter -->
+            <xs:element name="numItems" type="s7:byte"
+                        dfdl:inputValueCalc="{
+                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7RequestParameterWriteVar/numItems
                             }"/>
-                <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="returnCode" type="s7:byte"/>
-                            <xs:element name="transportSize" type="s7:byte"/>
-                            <xs:element name="rawLength" type="s7:short"/>
-                            <!--
-                                For some reason the types BIT, BYTE_WORD_DWORD and INTEGER are transferred in "bits",
-                                the rest is transferred in "bytes"
-                            -->
-                            <xs:element name="lengthInBytes" type="s7:short" dfdl:inputValueCalc="{
+            <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="returnCode" type="s7:byte"/>
+                        <xs:element name="transportSize" type="s7:byte"/>
+                        <xs:element name="rawLength" type="s7:short"/>
+                        <!--
+                            For some reason the types BIT, BYTE_WORD_DWORD and INTEGER are transferred in "bits",
+                            the rest is transferred in "bytes"
+                        -->
+                        <xs:element name="lengthInBytes" type="s7:short" dfdl:inputValueCalc="{
                                     xs:unsignedShort(if((../transportSize eq 3) or (../transportSize eq 4) or (../transportSize eq 5))
                                             then fn:ceiling(../rawLength div 8)
                                             else ../rawLength)}"/>
-                            <xs:element name="data" type="xs:hexBinary"
-                                        dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
-                                        dfdl:length="{../lengthInBytes}"/>
-                            <!--
-                                It seems that the item payload must always be an even number of bytes. So if it's
-                                not an even number, add a fill byte.
-                            -->
-                            <xs:element name="fillByte" type="s7:byte" minOccurs="0"
-                                        dfdl:occursCountKind="expression" dfdl:occursCount="{
+                        <xs:element name="data" type="xs:hexBinary"
+                                    dfdl:byteOrder="bigEndian" dfdl:lengthUnits="bytes" dfdl:lengthKind="explicit"
+                                    dfdl:length="{../lengthInBytes}"/>
+                        <!--
+                            It seems that the item payload must always be an even number of bytes. So if it's
+                            not an even number, add a fill byte.
+                        -->
+                        <xs:element name="fillByte" type="s7:byte" minOccurs="0"
+                                    dfdl:occursCountKind="expression" dfdl:occursCount="{
                                             if(((../lengthInBytes mod 2) eq 1) and
                                                 (dfdl:occursIndex() ne ../../numItems)) then 1 else 0}"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:element name="S7ResponsePayloadWriteVar">
-        <xs:complexType>
-            <xs:sequence>
-                <!-- The number of items which should be read is transmitted in the matching parameter -->
-                <xs:element name="numItems" type="s7:byte"
-                            dfdl:inputValueCalc="{
-                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7:S7ResponseParameterWriteVar/numItems
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="S7ResponsePayloadWriteVar">
+        <xs:sequence>
+            <!-- The number of items which should be read is transmitted in the matching parameter -->
+            <xs:element name="numItems" type="s7:byte"
+                        dfdl:inputValueCalc="{
+                                ../../../../parameters[1]/parameter[dfdl:occursIndex()]/s7ResponseParameterWriteVar/numItems
                             }"/>
-                <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
-                            dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="returnCode" type="s7:byte"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
+            <xs:element name="item" minOccurs="0" maxOccurs="unbounded"
+                        dfdl:occursCountKind="expression" dfdl:occursCount="{../numItems}">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="returnCode" type="s7:byte"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
 
 </xs:schema>
\ No newline at end of file
diff --git a/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.scxml.xml b/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.scxml.xml
index da741d4..0f8e98f 100644
--- a/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.scxml.xml
+++ b/protocols/s7/src/main/resources/org/apache/plc4x/protocols/s7/protocol.scxml.xml
@@ -98,7 +98,7 @@
             <userData>
               <headerLength>17</headerLength>
               <type>224</type>
-              <s7:CotpTpduConnectionRequest>
+              <cotpTpduConnectionRequest>
                 <destinationReference>0</destinationReference>
                 <!-- Insert the value for "cotpLocalReference" as short here -->
                 <sourceReference>${cotpLocalReference}</sourceReference>
@@ -107,26 +107,26 @@
                   <parameter>
                     <type>194</type>
                     <parameterLength>2</parameterLength>
-                    <s7:CotpParameterCalledTsap>
+                    <cotpParameterCalledTsap>
                       <tsapId>${cotpCalledTsap}</tsapId>
-                    </s7:CotpParameterCalledTsap>
+                    </cotpParameterCalledTsap>
                   </parameter>
                   <parameter>
                     <type>193</type>
                     <parameterLength>2</parameterLength>
-                    <s7:CotpParameterCallingTsap>
+                    <cotpParameterCallingTsap>
                       <tsapId>${cotpCallingTsap}</tsapId>
-                    </s7:CotpParameterCallingTsap>
+                    </cotpParameterCallingTsap>
                   </parameter>
                   <parameter>
                     <type>192</type>
                     <parameterLength>1</parameterLength>
-                    <s7:CotpParameterTpduSize>
+                    <cotpParameterTpduSize>
                       <tpduSize>${cotpTpduSize}</tpduSize>
-                    </s7:CotpParameterTpduSize>
+                    </cotpParameterTpduSize>
                   </parameter>
                 </s7:parameters>
-              </s7:CotpTpduConnectionRequest>
+              </cotpTpduConnectionRequest>
             </userData>
           </s7:TpktMessage>
         </plc4x:send>
@@ -171,14 +171,14 @@
             <userData>
               <headerLength>2</headerLength>
               <type>240</type>
-              <s7:CotpTpduData>
+              <cotpTpduData>
                 <endOfTransmission>1</endOfTransmission>
                 <tpduRef>0</tpduRef>
-              </s7:CotpTpduData>
+              </cotpTpduData>
               <userData>
                 <magicByte>50</magicByte>
                 <type>1</type>
-                <s7:S7RequestMessage>
+                <s7RequestMessage>
                   <reserved>0</reserved>
                   <tpduReference>0</tpduReference>
                   <parametersLength>8</parametersLength>
@@ -186,20 +186,22 @@
                   <parameters>
                     <parameter>
                       <type>240</type>
-                      <s7:S7GeneralParameterSetupCommunication>
+                      <s7GeneralParameterSetupCommunication>
                         <reserved>0</reserved>
                         <maxAmqCaller>${s7MaxAmqCaller}</maxAmqCaller>
                         <maxAmqCallee>${s7MaxAmqCallee}</maxAmqCallee>
                         <pduLength>${s7PduLength}</pduLength>
-                      </s7:S7GeneralParameterSetupCommunication>
+                      </s7GeneralParameterSetupCommunication>
                     </parameter>
                   </parameters>
                   <payloads>
                     <payload>
-                      <s7:S7GeneralPayloadSetupCommunication/>
+                      <s7GeneralPayloadSetupCommunication>
+                        <data/>
+                      </s7GeneralPayloadSetupCommunication>
                     </payload>
                   </payloads>
-                </s7:S7RequestMessage>
+                </s7RequestMessage>
               </userData>
             </userData>
           </s7:TpktMessage>
@@ -250,14 +252,14 @@
             <userData>
               <headerLength>2</headerLength>
               <type>240</type>
-              <s7:CotpTpduData>
+              <cotpTpduData>
                 <endOfTransmission>1</endOfTransmission>
                 <tpduRef>0</tpduRef>
-              </s7:CotpTpduData>
+              </cotpTpduData>
               <userData>
                 <magicByte>50</magicByte>
                 <type>7</type>
-                <s7:S7UserDataMessage>
+                <s7UserDataMessage>
                   <reserved>0</reserved>
                   <tpduReference>1</tpduReference>
                   <parametersLength>8</parametersLength>
@@ -265,7 +267,7 @@
                   <parameters>
                     <parameter>
                       <type>0</type>
-                      <s7:S7UserDataParameterCPUService>
+                      <s7UserDataParameterCPUService>
                         <header>274</header>
                         <paramLength>4</paramLength>
                         <typeCode>17</typeCode>
@@ -273,21 +275,21 @@
                         <functionGroup>4</functionGroup>
                         <subFunctionGroup>1</subFunctionGroup>
                         <sequenceNumber>0</sequenceNumber>
-                      </s7:S7UserDataParameterCPUService>
+                      </s7UserDataParameterCPUService>
                     </parameter>
                   </parameters>
                   <payloads>
                     <payload>
-                      <s7:S7UserDataPayloadCpuServices>
+                      <s7UserDataPayloadCpuServices>
                         <returnCode>255</returnCode>
                         <transportSize>9</transportSize>
                         <length>4</length>
                         <sslId>17</sslId>
                         <sslIndex>0</sslIndex>
-                      </s7:S7UserDataPayloadCpuServices>
+                      </s7UserDataPayloadCpuServices>
                     </payload>
                   </payloads>
-                </s7:S7UserDataMessage>
+                </s7UserDataMessage>
               </userData>
             </userData>
           </s7:TpktMessage>
@@ -346,14 +348,14 @@
             <userData>
               <headerLength>2</headerLength>
               <type>240</type>
-              <s7:CotpTpduData>
+              <cotpTpduData>
                 <endOfTransmission>1</endOfTransmission>
                 <tpduRef>0</tpduRef>
-              </s7:CotpTpduData>
+              </cotpTpduData>
               <userData>
                 <magicByte>50</magicByte>
                 <type>1</type>
-                <s7:S7RequestMessage>
+                <s7RequestMessage>
                   <reserved>0</reserved>
                   <tpduReference>${requestId}</tpduReference>
                   <parametersLength>14</parametersLength>
@@ -361,12 +363,12 @@
                   <parameters>
                     <parameter>
                       <type>4</type>
-                      <s7:S7RequestParameterReadVar>
+                      <s7RequestParameterReadVar>
                         <numItems>1</numItems>
                         <items>
                           <item>
                             <type>18</type>
-                            <s7:S7RequestParameterReadVarAnyItem>
+                            <s7RequestParameterReadVarAnyItem>
                               <paramLength>10</paramLength>
                               <addressingMode>16</addressingMode>
                               <dataType>${container.request.fields[0].dataType.typeCode}</dataType><!--8 ${s7ReadDataType}-->
@@ -375,18 +377,18 @@
                               <memoryArea>${container.request.fields[0].memoryArea.code}</memoryArea><!--131 ${s7ReadMemoryArea}-->
                               <byteOffset>${container.request.fields[0].byteOffset}</byteOffset><!--16 ${s7ReadByteOffset}-->
                               <bitOffset>${container.request.fields[0].bitOffset}</bitOffset><!--0 ${s7ReadBitOffset}-->
-                            </s7:S7RequestParameterReadVarAnyItem>
+                            </s7RequestParameterReadVarAnyItem>
                           </item>
                         </items>
-                      </s7:S7RequestParameterReadVar>
+                      </s7RequestParameterReadVar>
                     </parameter>
                   </parameters>
                   <payloads>
                     <payload>
-                      <s7:S7RequestPayloadReadVar/>
+                      <s7RequestPayloadReadVar/>
                     </payload>
                   </payloads>
-                </s7:S7RequestMessage>
+                </s7RequestMessage>
               </userData>
             </userData>
           </s7:TpktMessage>
@@ -423,14 +425,14 @@
             <userData>
               <headerLength>2</headerLength>
               <type>240</type>
-              <s7:CotpTpduData>
+              <cotpTpduData>
                 <endOfTransmission>1</endOfTransmission>
                 <tpduRef>0</tpduRef>
-              </s7:CotpTpduData>
+              </cotpTpduData>
               <userData>
                 <magicByte>50</magicByte>
                 <type>1</type>
-                <s7:S7RequestMessage>
+                <s7RequestMessage>
                   <reserved>0</reserved>
                   <tpduReference>${requestId}</tpduReference>
                   <parametersLength>14</parametersLength>
@@ -438,12 +440,12 @@
                   <parameters>
                     <parameter>
                       <type>5</type>
-                      <s7:S7RequestParameterWriteVar>
+                      <s7RequestParameterWriteVar>
                         <numItems>1</numItems>
                         <items>
                           <item>
                             <type>18</type>
-                            <s7:S7RequestParameterWriteVarAnyItem>
+                            <s7RequestParameterWriteVarAnyItem>
                               <itemLength>10</itemLength>
                               <addressingMode>16</addressingMode>
                               <dataType>8</dataType><!--8 ${s7WriteDataType}-->
@@ -452,15 +454,15 @@
                               <memoryArea>131</memoryArea><!--131 ${s7WriteMemoryArea}-->
                               <byteOffset>16</byteOffset><!--16 ${s7WriteByteOffset}-->
                               <bitOffset>0</bitOffset><!--0 ${s7WriteBitOffset}-->
-                            </s7:S7RequestParameterWriteVarAnyItem>
+                            </s7RequestParameterWriteVarAnyItem>
                           </item>
                         </items>
-                      </s7:S7RequestParameterWriteVar>
+                      </s7RequestParameterWriteVar>
                     </parameter>
                   </parameters>
                   <payloads>
                     <payload>
-                      <s7:S7RequestPayloadWriteVar>
+                      <s7RequestPayloadWriteVar>
                         <numItems>1</numItems>
                         <item>
                           <returnCode>0</returnCode>
@@ -469,10 +471,10 @@
                           <lengthInBytes>4</lengthInBytes><!--4 ${s7WriteLengthInBytes}-->
                           <data>79E9F642</data><!--79E9F642 ${s7WriteData}-->
                         </item>
-                      </s7:S7RequestPayloadWriteVar>
+                      </s7RequestPayloadWriteVar>
                     </payload>
                   </payloads>
-                </s7:S7RequestMessage>
+                </s7RequestMessage>
               </userData>
             </userData>
           </s7:TpktMessage>
diff --git a/protocols/s7/src/test/java/org/apache/plc4x/protocols/s7/ManualTest.java b/protocols/s7/src/test/java/org/apache/plc4x/protocols/s7/ManualTest.java
index f95251d..c671787 100644
--- a/protocols/s7/src/test/java/org/apache/plc4x/protocols/s7/ManualTest.java
+++ b/protocols/s7/src/test/java/org/apache/plc4x/protocols/s7/ManualTest.java
@@ -42,6 +42,7 @@ public class ManualTest {
         if (schemaUrl != null) {
             URI schemaUri = schemaUrl.toURI();
             ProcessorFactory pf = c.compileSource(schemaUri);
+            logDiagnosticInformation(pf);
             DataProcessor dp = pf.onPath("/");
             logDiagnosticInformation(dp);
 
diff --git a/protocols/s7/src/test/resources/org/apache/plc4x/protocols/s7/protocol.tdml b/protocols/s7/src/test/resources/org/apache/plc4x/protocols/s7/protocol.tdml
index 49e4a71..2a8c108 100644
--- a/protocols/s7/src/test/resources/org/apache/plc4x/protocols/s7/protocol.tdml
+++ b/protocols/s7/src/test/resources/org/apache/plc4x/protocols/s7/protocol.tdml
@@ -62,34 +62,34 @@
                     <userData>
                         <headerLength>17</headerLength>
                         <type>208</type>
-                        <s7:CotpTpduConnectionResponse>
+                        <cotpTpduConnectionResponse>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>192</type>
                                     <parameterLength>1</parameterLength>
-                                    <s7:CotpParameterTpduSize>
+                                    <cotpParameterTpduSize>
                                         <tpduSize>9</tpduSize>
-                                    </s7:CotpParameterTpduSize>
+                                    </cotpParameterTpduSize>
                                 </parameter>
                                 <parameter>
                                     <type>193</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCallingTsap>
+                                    <cotpParameterCallingTsap>
                                         <tsapId>256</tsapId>
-                                    </s7:CotpParameterCallingTsap>
+                                    </cotpParameterCallingTsap>
                                 </parameter>
                                 <parameter>
                                     <type>194</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCalledTsap>
+                                    <cotpParameterCalledTsap>
                                         <tsapId>258</tsapId>
-                                    </s7:CotpParameterCalledTsap>
+                                    </cotpParameterCalledTsap>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionResponse>
+                            </parameters>
+                        </cotpTpduConnectionResponse>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -166,11 +166,11 @@
                     <userData>
                         <headerLength>6</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                        </s7:CotpTpduConnectionRequest>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -194,11 +194,11 @@
                     <userData>
                         <headerLength>6</headerLength>
                         <type>208</type>
-                        <s7:CotpTpduConnectionResponse>
+                        <cotpTpduConnectionResponse>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                        </s7:CotpTpduConnectionResponse>
+                        </cotpTpduConnectionResponse>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -224,11 +224,11 @@
                     <userData>
                         <headerLength>6</headerLength>
                         <type>128</type>
-                        <s7:CotpTpduDisconnectRequest>
+                        <cotpTpduDisconnectRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <disconnectReason>0</disconnectReason>
-                        </s7:CotpTpduDisconnectRequest>
+                        </cotpTpduDisconnectRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -254,10 +254,10 @@
                     <userData>
                         <headerLength>5</headerLength>
                         <type>192</type>
-                        <s7:CotpTpduDisconnectResponse>
+                        <cotpTpduDisconnectResponse>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
-                        </s7:CotpTpduDisconnectResponse>
+                        </cotpTpduDisconnectResponse>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -283,10 +283,10 @@
                     <userData>
                         <headerLength>4</headerLength>
                         <type>112</type>
-                        <s7:CotpTpduError>
+                        <cotpTpduError>
                             <destinationReference>1</destinationReference>
                             <rejectCause>2</rejectCause>
-                        </s7:CotpTpduError>
+                        </cotpTpduError>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -312,10 +312,10 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>0</endOfTransmission>
                             <tpduRef>2</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -341,10 +341,10 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>2</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -389,20 +389,20 @@
                     <userData>
                         <headerLength>9</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>192</type>
                                     <parameterLength>1</parameterLength>
-                                    <s7:CotpParameterTpduSize>
+                                    <cotpParameterTpduSize>
                                         <tpduSize>9</tpduSize>
-                                    </s7:CotpParameterTpduSize>
+                                    </cotpParameterTpduSize>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -428,20 +428,20 @@
                     <userData>
                         <headerLength>10</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>193</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCallingTsap>
+                                    <cotpParameterCallingTsap>
                                         <tsapId>9</tsapId>
-                                    </s7:CotpParameterCallingTsap>
+                                    </cotpParameterCallingTsap>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -467,20 +467,20 @@
                     <userData>
                         <headerLength>10</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>194</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCalledTsap>
+                                    <cotpParameterCalledTsap>
                                         <tsapId>9</tsapId>
-                                    </s7:CotpParameterCalledTsap>
+                                    </cotpParameterCalledTsap>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -506,20 +506,20 @@
                     <userData>
                         <headerLength>9</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>195</type>
                                     <parameterLength>1</parameterLength>
-                                    <s7:CotpParameterChecksum>
+                                    <cotpParameterChecksum>
                                         <checksum>9</checksum>
-                                    </s7:CotpParameterChecksum>
+                                    </cotpParameterChecksum>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -545,20 +545,20 @@
                     <userData>
                         <headerLength>14</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>224</type>
                                     <parameterLength>6</parameterLength>
-                                    <s7:CotpParameterDisconnectAdditionalInformation>
+                                    <cotpParameterDisconnectAdditionalInformation>
                                         <data>010203040506</data>
-                                    </s7:CotpParameterDisconnectAdditionalInformation>
+                                    </cotpParameterDisconnectAdditionalInformation>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -603,34 +603,34 @@
                     <userData>
                         <headerLength>17</headerLength>
                         <type>224</type>
-                        <s7:CotpTpduConnectionRequest>
+                        <cotpTpduConnectionRequest>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>193</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCallingTsap>
+                                    <cotpParameterCallingTsap>
                                         <tsapId>256</tsapId>
-                                    </s7:CotpParameterCallingTsap>
+                                    </cotpParameterCallingTsap>
                                 </parameter>
                                 <parameter>
                                     <type>194</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCalledTsap>
+                                    <cotpParameterCalledTsap>
                                         <tsapId>258</tsapId>
-                                    </s7:CotpParameterCalledTsap>
+                                    </cotpParameterCalledTsap>
                                 </parameter>
                                 <parameter>
                                     <type>192</type>
                                     <parameterLength>1</parameterLength>
-                                    <s7:CotpParameterTpduSize>
+                                    <cotpParameterTpduSize>
                                         <tpduSize>10</tpduSize>
-                                    </s7:CotpParameterTpduSize>
+                                    </cotpParameterTpduSize>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionRequest>
+                            </parameters>
+                        </cotpTpduConnectionRequest>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -656,34 +656,34 @@
                     <userData>
                         <headerLength>17</headerLength>
                         <type>208</type>
-                        <s7:CotpTpduConnectionResponse>
+                        <cotpTpduConnectionResponse>
                             <destinationReference>1</destinationReference>
                             <sourceReference>2</sourceReference>
                             <protocolClass>0</protocolClass>
-                            <s7:parameters>
+                            <parameters>
                                 <parameter>
                                     <type>192</type>
                                     <parameterLength>1</parameterLength>
-                                    <s7:CotpParameterTpduSize>
+                                    <cotpParameterTpduSize>
                                         <tpduSize>9</tpduSize>
-                                    </s7:CotpParameterTpduSize>
+                                    </cotpParameterTpduSize>
                                 </parameter>
                                 <parameter>
                                     <type>193</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCallingTsap>
+                                    <cotpParameterCallingTsap>
                                         <tsapId>256</tsapId>
-                                    </s7:CotpParameterCallingTsap>
+                                    </cotpParameterCallingTsap>
                                 </parameter>
                                 <parameter>
                                     <type>194</type>
                                     <parameterLength>2</parameterLength>
-                                    <s7:CotpParameterCalledTsap>
+                                    <cotpParameterCalledTsap>
                                         <tsapId>258</tsapId>
-                                    </s7:CotpParameterCalledTsap>
+                                    </cotpParameterCalledTsap>
                                 </parameter>
-                            </s7:parameters>
-                        </s7:CotpTpduConnectionResponse>
+                            </parameters>
+                        </cotpTpduConnectionResponse>
                     </userData>
                 </s7:TpktMessage>
             </tdml:dfdlInfoset>
@@ -710,14 +710,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>14</parametersLength>
@@ -725,12 +725,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>1</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>1</dataType>
@@ -739,18 +739,20 @@
                                                         <memoryArea>130</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>4</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -776,14 +778,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>0</tpduReference>
                                 <parametersLength>8</parametersLength>
@@ -791,20 +793,22 @@
                                 <parameters>
                                     <parameter>
                                         <type>240</type>
-                                        <s7:S7GeneralParameterSetupCommunication>
+                                        <s7GeneralParameterSetupCommunication>
                                             <reserved>0</reserved>
                                             <maxAmqCaller>1</maxAmqCaller>
                                             <maxAmqCallee>1</maxAmqCallee>
                                             <pduLength>480</pduLength>
-                                        </s7:S7GeneralParameterSetupCommunication>
+                                        </s7GeneralParameterSetupCommunication>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7GeneralPayloadSetupCommunication/>
+                                        <s7GeneralPayloadSetupCommunication>
+                                            <data/>
+                                        </s7GeneralPayloadSetupCommunication>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -830,14 +834,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>0</tpduReference>
                                 <parametersLength>8</parametersLength>
@@ -847,20 +851,22 @@
                                 <parameters>
                                     <parameter>
                                         <type>240</type>
-                                        <s7:S7GeneralParameterSetupCommunication>
+                                        <s7GeneralParameterSetupCommunication>
                                             <reserved>0</reserved>
                                             <maxAmqCaller>1</maxAmqCaller>
                                             <maxAmqCallee>1</maxAmqCallee>
                                             <pduLength>240</pduLength>
-                                        </s7:S7GeneralParameterSetupCommunication>
+                                        </s7GeneralParameterSetupCommunication>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7GeneralPayloadSetupCommunication/>
+                                        <s7GeneralPayloadSetupCommunication>
+                                            <data/>
+                                        </s7GeneralPayloadSetupCommunication>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -887,14 +893,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>7</type>
-                            <s7:S7UserDataMessage>
+                            <s7UserDataMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>256</tpduReference>
                                 <parametersLength>8</parametersLength>
@@ -902,7 +908,7 @@
                                 <parameters>
                                     <parameter>
                                         <type>0</type>
-                                        <s7:S7UserDataParameterCPUService>
+                                        <s7UserDataParameterCPUService>
                                             <header>274</header>
                                             <paramLength>4</paramLength>
                                             <typeCode>17</typeCode>
@@ -910,21 +916,21 @@
                                             <functionGroup>4</functionGroup>
                                             <subFunctionGroup>1</subFunctionGroup>
                                             <sequenceNumber>0</sequenceNumber>
-                                        </s7:S7UserDataParameterCPUService>
+                                        </s7UserDataParameterCPUService>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7UserDataPayloadCpuServices>
+                                        <s7UserDataPayloadCpuServices>
                                             <returnCode>255</returnCode>
                                             <transportSize>9</transportSize>
                                             <length>4</length>
                                             <sslId>17</sslId>
                                             <sslIndex>0</sslIndex>
-                                        </s7:S7UserDataPayloadCpuServices>
+                                        </s7UserDataPayloadCpuServices>
                                     </payload>
                                 </payloads>
-                            </s7:S7UserDataMessage>
+                            </s7UserDataMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -952,14 +958,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>7</type>
-                            <s7:S7UserDataMessage>
+                            <s7UserDataMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>256</tpduReference>
                                 <parametersLength>12</parametersLength>
@@ -967,7 +973,7 @@
                                 <parameters>
                                     <parameter>
                                         <type>0</type>
-                                        <s7:S7UserDataParameterCPUService>
+                                        <s7UserDataParameterCPUService>
                                             <header>274</header>
                                             <paramLength>8</paramLength>
                                             <typeCode>18</typeCode>
@@ -978,12 +984,12 @@
                                             <dataUnitReferenceNumber>0</dataUnitReferenceNumber>
                                             <lastDataUnit>0</lastDataUnit>
                                             <errorCode>0</errorCode>
-                                        </s7:S7UserDataParameterCPUService>
+                                        </s7UserDataParameterCPUService>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7UserDataPayloadCpuServices>
+                                        <s7UserDataPayloadCpuServices>
                                             <returnCode>255</returnCode>
                                             <transportSize>9</transportSize>
                                             <length>120</length>
@@ -994,47 +1000,47 @@
                                                 <partialListCount>4</partialListCount>
                                                 <sslDataRecords>
                                                     <sslDataRecord>
-                                                        <s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        <s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                             <index>1</index>
                                                             <articleNumber><![CDATA[6ES7 315-2EH14-0AB0 ]]></articleNumber>
                                                             <bgType>192</bgType>
                                                             <moduleOrOsVersion>3</moduleOrOsVersion>
                                                             <pgDescriptionFileVersion>1</pgDescriptionFileVersion>
-                                                        </s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        </s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                     </sslDataRecord>
                                                     <sslDataRecord>
-                                                        <s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        <s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                             <index>6</index>
                                                             <articleNumber><![CDATA[6ES7 315-2EH14-0AB0 ]]></articleNumber>
                                                             <bgType>192</bgType>
                                                             <moduleOrOsVersion>3</moduleOrOsVersion>
                                                             <pgDescriptionFileVersion>1</pgDescriptionFileVersion>
-                                                        </s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        </s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                     </sslDataRecord>
                                                     <sslDataRecord>
-                                                        <s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        <s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                             <index>7</index>
                                                             <articleNumber><![CDATA[                    ]]></articleNumber>
                                                             <bgType>192</bgType>
                                                             <moduleOrOsVersion>22019</moduleOrOsVersion>
                                                             <pgDescriptionFileVersion>519</pgDescriptionFileVersion>
-                                                        </s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        </s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                     </sslDataRecord>
                                                     <sslDataRecord>
-                                                        <s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        <s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                             <index>129</index>
                                                             <articleNumber><![CDATA[Boot Loader         ]]></articleNumber>
                                                             <bgType>0</bgType>
                                                             <moduleOrOsVersion>16672</moduleOrOsVersion>
                                                             <pgDescriptionFileVersion>2313</pgDescriptionFileVersion>
-                                                        </s7:S7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
+                                                        </s7ResponsePayloadCpuServicesSslDataRecordModuleIdentification>
                                                     </sslDataRecord>
                                                 </sslDataRecords>
                                             </partialList>
-                                        </s7:S7UserDataPayloadCpuServices>
+                                        </s7UserDataPayloadCpuServices>
                                     </payload>
                                 </payloads>
-                            </s7:S7UserDataMessage>
+                            </s7UserDataMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1061,14 +1067,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6400</tpduReference>
                                 <parametersLength>14</parametersLength>
@@ -1076,12 +1082,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>1</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>8</dataType>
@@ -1090,18 +1096,20 @@
                                                         <memoryArea>131</memoryArea>
                                                         <byteOffset>16</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1128,14 +1136,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6400</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1145,14 +1153,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>1</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>1</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -1161,10 +1169,10 @@
                                                 <lengthInBytes>4</lengthInBytes>
                                                 <data>00000000</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1191,14 +1199,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>86</parametersLength>
@@ -1206,12 +1214,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>7</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>6</dataType>
@@ -1220,11 +1228,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>44</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1233,11 +1241,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>52</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>1</dataType>
@@ -1246,11 +1254,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>53</byteOffset>
                                                         <bitOffset>1</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>5</dataType>
@@ -1259,11 +1267,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>42</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1272,11 +1280,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>51</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>4</dataType>
@@ -1285,11 +1293,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>40</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1298,18 +1306,20 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>50</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1336,14 +1346,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1353,14 +1363,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>7</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>7</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -1414,10 +1424,10 @@
                                                 <lengthInBytes>1</lengthInBytes>
                                                 <data>00</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1444,14 +1454,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1461,14 +1471,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>3</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>3</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -1493,10 +1503,10 @@
                                                 <lengthInBytes>1</lengthInBytes>
                                                 <data>00</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1523,14 +1533,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>38</parametersLength>
@@ -1538,12 +1548,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>3</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>6</dataType>
@@ -1552,11 +1562,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>44</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>5</dataType>
@@ -1565,11 +1575,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>42</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>4</dataType>
@@ -1578,18 +1588,20 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>40</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1616,14 +1628,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1633,14 +1645,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>3</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>3</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -1663,10 +1675,10 @@
                                                 <lengthInBytes>2</lengthInBytes>
                                                 <data>0000</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1693,14 +1705,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>50</parametersLength>
@@ -1708,12 +1720,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>4</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1722,11 +1734,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>42</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>1</dataType>
@@ -1735,11 +1747,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>43</byteOffset>
                                                         <bitOffset>1</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1748,11 +1760,11 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>41</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -1761,18 +1773,20 @@
                                                         <memoryArea>132</memoryArea>
                                                         <byteOffset>40</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1799,14 +1813,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>1</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1816,14 +1830,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>4</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>4</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -1856,10 +1870,10 @@
                                                 <lengthInBytes>1</lengthInBytes>
                                                 <data>00</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1887,14 +1901,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6144</tpduReference>
                                 <parametersLength>14</parametersLength>
@@ -1902,12 +1916,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>5</type>
-                                        <s7:S7RequestParameterWriteVar>
+                                        <s7RequestParameterWriteVar>
                                             <numItems>1</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>8</dataType>
@@ -1916,15 +1930,15 @@
                                                         <memoryArea>131</memoryArea>
                                                         <byteOffset>16</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterWriteVar>
+                                        </s7RequestParameterWriteVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadWriteVar>
+                                        <s7RequestPayloadWriteVar>
                                             <numItems>1</numItems>
                                             <item>
                                                 <returnCode>0</returnCode>
@@ -1933,10 +1947,10 @@
                                                 <lengthInBytes>4</lengthInBytes>
                                                 <data>79E9F642</data>
                                             </item>
-                                        </s7:S7RequestPayloadWriteVar>
+                                        </s7RequestPayloadWriteVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -1962,14 +1976,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6144</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -1979,22 +1993,22 @@
                                 <parameters>
                                     <parameter>
                                         <type>5</type>
-                                        <s7:S7ResponseParameterWriteVar>
+                                        <s7ResponseParameterWriteVar>
                                             <numItems>1</numItems>
-                                        </s7:S7ResponseParameterWriteVar>
+                                        </s7ResponseParameterWriteVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadWriteVar>
+                                        <s7ResponsePayloadWriteVar>
                                             <numItems>1</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
                                             </item>
-                                        </s7:S7ResponsePayloadWriteVar>
+                                        </s7ResponsePayloadWriteVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -2022,14 +2036,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6912</tpduReference>
                                 <parametersLength>62</parametersLength>
@@ -2037,12 +2051,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7RequestParameterReadVar>
+                                        <s7RequestParameterReadVar>
                                             <numItems>5</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -2051,11 +2065,11 @@
                                                         <memoryArea>131</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -2064,11 +2078,11 @@
                                                         <memoryArea>129</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -2077,11 +2091,11 @@
                                                         <memoryArea>130</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>29</dataType>
@@ -2090,11 +2104,11 @@
                                                         <memoryArea>29</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterReadVarAnyItem>
+                                                    <s7RequestParameterReadVarAnyItem>
                                                         <paramLength>10</paramLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>28</dataType>
@@ -2103,18 +2117,20 @@
                                                         <memoryArea>28</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterReadVarAnyItem>
+                                                    </s7RequestParameterReadVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterReadVar>
+                                        </s7RequestParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadReadVar/>
+                                        <s7RequestPayloadReadVar>
+                                            <data/>
+                                        </s7RequestPayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -2142,14 +2158,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6912</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -2159,14 +2175,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>4</type>
-                                        <s7:S7ResponseParameterReadVar>
+                                        <s7ResponseParameterReadVar>
                                             <numItems>5</numItems>
-                                        </s7:S7ResponseParameterReadVar>
+                                        </s7ResponseParameterReadVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadReadVar>
+                                        <s7ResponsePayloadReadVar>
                                             <numItems>5</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -2203,10 +2219,10 @@
                                                 <lengthInBytes>16</lengthInBytes>
                                                 <data>00110000000000000000000000000000</data>
                                             </item>
-                                        </s7:S7ResponsePayloadReadVar>
+                                        </s7ResponsePayloadReadVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -2234,14 +2250,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>1</type>
-                            <s7:S7RequestMessage>
+                            <s7RequestMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6656</tpduReference>
                                 <parametersLength>62</parametersLength>
@@ -2249,12 +2265,12 @@
                                 <parameters>
                                     <parameter>
                                         <type>5</type>
-                                        <s7:S7RequestParameterWriteVar>
+                                        <s7RequestParameterWriteVar>
                                             <numItems>5</numItems>
                                             <items>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>4</dataType>
@@ -2263,11 +2279,11 @@
                                                         <memoryArea>131</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -2276,11 +2292,11 @@
                                                         <memoryArea>129</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>2</dataType>
@@ -2289,11 +2305,11 @@
                                                         <memoryArea>130</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>29</dataType>
@@ -2302,11 +2318,11 @@
                                                         <memoryArea>29</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                                 <item>
                                                     <type>18</type>
-                                                    <s7:S7RequestParameterWriteVarAnyItem>
+                                                    <s7RequestParameterWriteVarAnyItem>
                                                         <itemLength>10</itemLength>
                                                         <addressingMode>16</addressingMode>
                                                         <dataType>28</dataType>
@@ -2315,15 +2331,15 @@
                                                         <memoryArea>28</memoryArea>
                                                         <byteOffset>0</byteOffset>
                                                         <bitOffset>0</bitOffset>
-                                                    </s7:S7RequestParameterWriteVarAnyItem>
+                                                    </s7RequestParameterWriteVarAnyItem>
                                                 </item>
                                             </items>
-                                        </s7:S7RequestParameterWriteVar>
+                                        </s7RequestParameterWriteVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7RequestPayloadWriteVar>
+                                        <s7RequestPayloadWriteVar>
                                             <numItems>5</numItems>
                                             <item>
                                                 <returnCode>0</returnCode>
@@ -2360,10 +2376,10 @@
                                                 <lengthInBytes>16</lengthInBytes>
                                                 <data>FECAFECAFECAFECAFECAFECAFECAFECA</data>
                                             </item>
-                                        </s7:S7RequestPayloadWriteVar>
+                                        </s7RequestPayloadWriteVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7RequestMessage>
+                            </s7RequestMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>
@@ -2389,14 +2405,14 @@
                     <userData>
                         <headerLength>2</headerLength>
                         <type>240</type>
-                        <s7:CotpTpduData>
+                        <cotpTpduData>
                             <endOfTransmission>1</endOfTransmission>
                             <tpduRef>0</tpduRef>
-                        </s7:CotpTpduData>
+                        </cotpTpduData>
                         <userData>
                             <magicByte>50</magicByte>
                             <type>3</type>
-                            <s7:S7ResponseMessage>
+                            <s7ResponseMessage>
                                 <reserved>0</reserved>
                                 <tpduReference>6656</tpduReference>
                                 <parametersLength>2</parametersLength>
@@ -2406,14 +2422,14 @@
                                 <parameters>
                                     <parameter>
                                         <type>5</type>
-                                        <s7:S7ResponseParameterWriteVar>
+                                        <s7ResponseParameterWriteVar>
                                             <numItems>5</numItems>
-                                        </s7:S7ResponseParameterWriteVar>
+                                        </s7ResponseParameterWriteVar>
                                     </parameter>
                                 </parameters>
                                 <payloads>
                                     <payload>
-                                        <s7:S7ResponsePayloadWriteVar>
+                                        <s7ResponsePayloadWriteVar>
                                             <numItems>5</numItems>
                                             <item>
                                                 <returnCode>255</returnCode>
@@ -2430,10 +2446,10 @@
                                             <item>
                                                 <returnCode>3</returnCode>
                                             </item>
-                                        </s7:S7ResponsePayloadWriteVar>
+                                        </s7ResponsePayloadWriteVar>
                                     </payload>
                                 </payloads>
-                            </s7:S7ResponseMessage>
+                            </s7ResponseMessage>
                         </userData>
                     </userData>
                 </s7:TpktMessage>