blob: 97aab67eb6dafd75a6ea999fa73792a664d46145 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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
https://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.
-->
<test:driver-testsuite xmlns:test="https://plc4x.apache.org/schemas/driver-testsuite.xsd"
byteOrder="BIG_ENDIAN">
<name>S7</name>
<protocolName>s7</protocolName>
<outputFlavor>read-write</outputFlavor>
<driver-name>s7</driver-name>
<setup>
<!-- First the driver is expected to send a COTP connection request -->
<outgoing-plc-message name="Send COTP Connection Request">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">22</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">17</headerLength>
<tpduCode dataType="uint" bitLength="8">224</tpduCode>
<COTPPacketConnectionRequest>
<destinationReference dataType="uint" bitLength="16">0</destinationReference>
<sourceReference dataType="uint" bitLength="16">15</sourceReference>
<protocolClass>
<COTPProtocolClass dataType="uint" bitLength="8" stringRepresentation="CLASS_0">0</COTPProtocolClass>
</protocolClass>
</COTPPacketConnectionRequest>
<parameters isList="true">
<COTPParameter>
<parameterType dataType="uint" bitLength="8">193</parameterType>
<parameterLength dataType="uint" bitLength="8">2</parameterLength>
<COTPParameterCallingTsap>
<tsapId dataType="uint" bitLength="16">785</tsapId>
</COTPParameterCallingTsap>
</COTPParameter>
<COTPParameter>
<parameterType dataType="uint" bitLength="8">194</parameterType>
<parameterLength dataType="uint" bitLength="8">2</parameterLength>
<COTPParameterCalledTsap>
<tsapId dataType="uint" bitLength="16">256</tsapId>
</COTPParameterCalledTsap>
</COTPParameter>
<COTPParameter>
<parameterType dataType="uint" bitLength="8">192</parameterType>
<parameterLength dataType="uint" bitLength="8">1</parameterLength>
<COTPParameterTpduSize>
<tpduSize>
<COTPTpduSize dataType="uint" bitLength="8" stringRepresentation="SIZE_1024">10</COTPTpduSize>
</tpduSize>
</COTPParameterTpduSize>
</COTPParameter>
</parameters>
</COTPPacket>
</payload>
</TPKTPacket>
</outgoing-plc-message>
<!-- The PLC will send a COTP connection response -->
<incoming-plc-message name="Receive COTP Connection Response">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">22</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">17</headerLength>
<tpduCode dataType="uint" bitLength="8">208</tpduCode>
<COTPPacketConnectionResponse>
<destinationReference dataType="uint" bitLength="16">15</destinationReference>
<sourceReference dataType="uint" bitLength="16">11</sourceReference>
<protocolClass>
<COTPProtocolClass dataType="uint" bitLength="8" stringRepresentation="CLASS_0">0</COTPProtocolClass>
</protocolClass>
</COTPPacketConnectionResponse>
<parameters isList="true">
<COTPParameter>
<parameterType dataType="uint" bitLength="8">192</parameterType>
<parameterLength dataType="uint" bitLength="8">1</parameterLength>
<COTPParameterTpduSize>
<tpduSize>
<COTPTpduSize dataType="uint" bitLength="8" stringRepresentation="SIZE_1024">10</COTPTpduSize>
</tpduSize>
</COTPParameterTpduSize>
</COTPParameter>
<COTPParameter>
<parameterType dataType="uint" bitLength="8">193</parameterType>
<parameterLength dataType="uint" bitLength="8">2</parameterLength>
<COTPParameterCallingTsap>
<tsapId dataType="uint" bitLength="16">785</tsapId>
</COTPParameterCallingTsap>
</COTPParameter>
<COTPParameter>
<parameterType dataType="uint" bitLength="8">194</parameterType>
<parameterLength dataType="uint" bitLength="8">2</parameterLength>
<COTPParameterCalledTsap>
<tsapId dataType="uint" bitLength="16">256</tsapId>
</COTPParameterCalledTsap>
</COTPParameter>
</parameters>
</COTPPacket>
</payload>
</TPKTPacket>
</incoming-plc-message>
<!-- After that the driver will send a S7 connection request -->
<outgoing-plc-message name="Send S7 Connection Request">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">25</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">1</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">1</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">0</tpduReference>
<parameterLength dataType="uint" bitLength="16">8</parameterLength>
<payloadLength dataType="uint" bitLength="16">0</payloadLength>
<S7MessageRequest>
</S7MessageRequest>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">240</parameterType>
<S7ParameterSetupCommunication>
<reserved dataType="uint" bitLength="8">0</reserved>
<maxAmqCaller dataType="uint" bitLength="16">8</maxAmqCaller>
<maxAmqCallee dataType="uint" bitLength="16">8</maxAmqCallee>
<pduLength dataType="uint" bitLength="16">1008</pduLength>
</S7ParameterSetupCommunication>
</S7Parameter>
</parameter>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</outgoing-plc-message>
<!-- The PLC will send a S7 connection response -->
<incoming-plc-message name="Receive S7 Connection Response">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">27</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">0</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">3</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">0</tpduReference>
<parameterLength dataType="uint" bitLength="16">8</parameterLength>
<payloadLength dataType="uint" bitLength="16">0</payloadLength>
<S7MessageResponseData>
<errorClass dataType="uint" bitLength="8">0</errorClass>
<errorCode dataType="uint" bitLength="8">0</errorCode>
</S7MessageResponseData>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">240</parameterType>
<S7ParameterSetupCommunication>
<reserved dataType="uint" bitLength="8">0</reserved>
<maxAmqCaller dataType="uint" bitLength="16">3</maxAmqCaller>
<maxAmqCallee dataType="uint" bitLength="16">3</maxAmqCallee>
<pduLength dataType="uint" bitLength="16">240</pduLength>
</S7ParameterSetupCommunication>
</S7Parameter>
</parameter>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</incoming-plc-message>
<!-- Next we'll query some type information -->
<outgoing-plc-message name="Send S7 Identification Request">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">33</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">2</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">7</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">1</tpduReference>
<parameterLength dataType="uint" bitLength="16">8</parameterLength>
<payloadLength dataType="uint" bitLength="16">8</payloadLength>
<S7MessageUserData>
</S7MessageUserData>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">0</parameterType>
<S7ParameterUserData>
<numItems dataType="uint" bitLength="8">1</numItems>
<items isList="true">
<S7ParameterUserDataItem>
<itemType dataType="uint" bitLength="8">18</itemType>
<S7ParameterUserDataItemCPUFunctions>
<itemLength dataType="uint" bitLength="8">4</itemLength>
<method dataType="uint" bitLength="8">17</method>
<cpuFunctionType dataType="uint" bitLength="4">4</cpuFunctionType>
<cpuFunctionGroup dataType="uint" bitLength="4">4</cpuFunctionGroup>
<cpuSubfunction dataType="uint" bitLength="8">1</cpuSubfunction>
<sequenceNumber dataType="uint" bitLength="8">0</sequenceNumber>
</S7ParameterUserDataItemCPUFunctions>
</S7ParameterUserDataItem>
</items>
</S7ParameterUserData>
</S7Parameter>
</parameter>
<payload>
<S7Payload>
<S7PayloadUserData>
<items isList="true">
<S7PayloadUserDataItem>
<returnCode>
<DataTransportErrorCode dataType="uint" bitLength="8" stringRepresentation="OK">255
</DataTransportErrorCode>
</returnCode>
<transportSize>
<DataTransportSize dataType="uint" bitLength="8" stringRepresentation="OCTET_STRING">9
</DataTransportSize>
</transportSize>
<dataLength dataType="uint" bitLength="16">4</dataLength>
<S7PayloadUserDataItemCpuFunctionReadSzlRequest>
<szlId>
<SzlId>
<typeClass>
<SzlModuleTypeClass dataType="uint" bitLength="4" stringRepresentation="CPU">0
</SzlModuleTypeClass>
</typeClass>
<sublistExtract dataType="uint" bitLength="4">0</sublistExtract>
<sublistList>
<SzlSublist dataType="uint" bitLength="8"
stringRepresentation="MODULE_IDENTIFICATION">17
</SzlSublist>
</sublistList>
</SzlId>
</szlId>
<szlIndex dataType="uint" bitLength="16">0</szlIndex>
</S7PayloadUserDataItemCpuFunctionReadSzlRequest>
</S7PayloadUserDataItem>
</items>
</S7PayloadUserData>
</S7Payload>
</payload>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</outgoing-plc-message>
<!-- Which the PLC will gladly provide to us -->
<incoming-plc-message name="Receive S7 Identification Response">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">125</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">0</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">7</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">1</tpduReference>
<parameterLength dataType="uint" bitLength="16">12</parameterLength>
<payloadLength dataType="uint" bitLength="16">96</payloadLength>
<S7MessageUserData>
</S7MessageUserData>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">0</parameterType>
<S7ParameterUserData>
<numItems dataType="uint" bitLength="8">1</numItems>
<items isList="true">
<S7ParameterUserDataItem>
<itemType dataType="uint" bitLength="8">18</itemType>
<S7ParameterUserDataItemCPUFunctions>
<itemLength dataType="uint" bitLength="8">8</itemLength>
<method dataType="uint" bitLength="8">18</method>
<cpuFunctionType dataType="uint" bitLength="4">8</cpuFunctionType>
<cpuFunctionGroup dataType="uint" bitLength="4">4</cpuFunctionGroup>
<cpuSubfunction dataType="uint" bitLength="8">1</cpuSubfunction>
<sequenceNumber dataType="uint" bitLength="8">1</sequenceNumber>
<dataUnitReferenceNumber dataType="uint" bitLength="8">0</dataUnitReferenceNumber>
<lastDataUnit dataType="uint" bitLength="8">0</lastDataUnit>
<errorCode dataType="uint" bitLength="16">0</errorCode>
</S7ParameterUserDataItemCPUFunctions>
</S7ParameterUserDataItem>
</items>
</S7ParameterUserData>
</S7Parameter>
</parameter>
<payload>
<S7Payload>
<S7PayloadUserData>
<items isList="true">
<S7PayloadUserDataItem>
<returnCode>
<DataTransportErrorCode dataType="uint" bitLength="8" stringRepresentation="OK">255
</DataTransportErrorCode>
</returnCode>
<transportSize>
<DataTransportSize dataType="uint" bitLength="8" stringRepresentation="OCTET_STRING">9
</DataTransportSize>
</transportSize>
<dataLength dataType="uint" bitLength="16">92</dataLength>
<S7PayloadUserDataItemCpuFunctionReadSzlResponse>
<szlId>
<SzlId>
<typeClass>
<SzlModuleTypeClass dataType="uint" bitLength="4" stringRepresentation="CPU">0
</SzlModuleTypeClass>
</typeClass>
<sublistExtract dataType="uint" bitLength="4">0</sublistExtract>
<sublistList>
<SzlSublist dataType="uint" bitLength="8"
stringRepresentation="MODULE_IDENTIFICATION">17
</SzlSublist>
</sublistList>
</SzlId>
</szlId>
<szlIndex dataType="uint" bitLength="16">0</szlIndex>
<szlItemLength dataType="uint" bitLength="16">28</szlItemLength>
<szlItemCount dataType="uint" bitLength="16">3</szlItemCount>
<items isList="true">
<SzlDataTreeItem>
<itemIndex dataType="uint" bitLength="16">1</itemIndex>
<mlfb dataType="byte" bitLength="160">0x36455337203231322d31424433302d3058423020</mlfb>
<moduleTypeId dataType="uint" bitLength="16">8224</moduleTypeId>
<ausbg dataType="uint" bitLength="16">1</ausbg>
<ausbe dataType="uint" bitLength="16">8224</ausbe>
</SzlDataTreeItem>
<SzlDataTreeItem>
<itemIndex dataType="uint" bitLength="16">6</itemIndex>
<mlfb dataType="byte" bitLength="160">0x36455337203231322d31424433302d3058423020</mlfb>
<moduleTypeId dataType="uint" bitLength="16">8224</moduleTypeId>
<ausbg dataType="uint" bitLength="16">1</ausbg>
<ausbe dataType="uint" bitLength="16">8224</ausbe>
</SzlDataTreeItem>
<SzlDataTreeItem>
<itemIndex dataType="uint" bitLength="16">7</itemIndex>
<mlfb dataType="byte" bitLength="160">0x36455337203231322d31424433302d3058423020</mlfb>
<moduleTypeId dataType="uint" bitLength="16">8224</moduleTypeId>
<ausbg dataType="uint" bitLength="16">22018</ausbg>
<ausbe dataType="uint" bitLength="16">2</ausbe>
</SzlDataTreeItem>
</items>
</S7PayloadUserDataItemCpuFunctionReadSzlResponse>
</S7PayloadUserDataItem>
</items>
</S7PayloadUserData>
</S7Payload>
</payload>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</incoming-plc-message>
</setup>
<testcase>
<name>Single element read request</name>
<steps>
<api-request name="Receive Read Request from application">
<TestReadRequest>
<tags>
<tag className="org.apache.plc4x.test.driver.internal.api.TestTag">
<name>hurz</name>
<address>%Q0.0:BOOL</address>
</tag>
</tags>
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send S7 Read Request">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">31</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">2</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">1</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">2</tpduReference>
<parameterLength dataType="uint" bitLength="16">14</parameterLength>
<payloadLength dataType="uint" bitLength="16">0</payloadLength>
<S7MessageRequest>
</S7MessageRequest>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">4</parameterType>
<S7ParameterReadVarRequest>
<numItems dataType="uint" bitLength="8">1</numItems>
<items isList="true">
<S7VarRequestParameterItem>
<itemType dataType="uint" bitLength="8">18</itemType>
<S7VarRequestParameterItemAddress>
<itemLength dataType="uint" bitLength="8">10</itemLength>
<address>
<S7Address>
<addressType dataType="uint" bitLength="8">16</addressType>
<S7AddressAny>
<transportSize>
<TransportSize dataType="uint" bitLength="8" stringRepresentation="BOOL">1
</TransportSize>
</transportSize>
<numberOfElements dataType="uint" bitLength="16">1</numberOfElements>
<dbNumber dataType="uint" bitLength="16">0</dbNumber>
<area>
<MemoryArea dataType="uint" bitLength="8" stringRepresentation="OUTPUTS">130
</MemoryArea>
</area>
<reserved dataType="uint" bitLength="5">0</reserved>
<byteAddress dataType="uint" bitLength="16">0</byteAddress>
<bitAddress dataType="uint" bitLength="3">0</bitAddress>
</S7AddressAny>
</S7Address>
</address>
</S7VarRequestParameterItemAddress>
</S7VarRequestParameterItem>
</items>
</S7ParameterReadVarRequest>
</S7Parameter>
</parameter>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</outgoing-plc-message>
<incoming-plc-message name="Receive S7 Read Response">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">26</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">2</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">3</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">2</tpduReference>
<parameterLength dataType="uint" bitLength="16">2</parameterLength>
<payloadLength dataType="uint" bitLength="16">6</payloadLength>
<S7MessageResponseData>
<errorClass dataType="uint" bitLength="8">0</errorClass>
<errorCode dataType="uint" bitLength="8">0</errorCode>
</S7MessageResponseData>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">4</parameterType>
<S7ParameterReadVarResponse>
<numItems dataType="uint" bitLength="8">1</numItems>
</S7ParameterReadVarResponse>
</S7Parameter>
</parameter>
<payload>
<S7Payload>
<S7PayloadReadVarResponse>
<items isList="true">
<S7VarPayloadDataItem>
<returnCode>
<DataTransportErrorCode dataType="uint" bitLength="8" stringRepresentation="OK">255
</DataTransportErrorCode>
</returnCode>
<transportSize>
<DataTransportSize dataType="uint" bitLength="8" stringRepresentation="BIT">3
</DataTransportSize>
</transportSize>
<dataLength dataType="uint" bitLength="16">1</dataLength>
<data dataType="byte" bitLength="8">0x01</data>
<padding isList="true">
</padding>
</S7VarPayloadDataItem>
</items>
</S7PayloadReadVarResponse>
</S7Payload>
</payload>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</incoming-plc-message>
<api-response name="Report Read Response to application">
<PlcReadResponse>
<PlcReadRequest>
<tags>
<hurz>
<S7Tag>
<memoryArea dataType="string" bitLength="56" encoding="UTF-8">OUTPUTS</memoryArea>
<blockNumber dataType="uint" bitLength="16">0</blockNumber>
<byteOffset dataType="uint" bitLength="16">0</byteOffset>
<bitOffset dataType="uint" bitLength="8">0</bitOffset>
<numElements dataType="uint" bitLength="16">1</numElements>
<dataType dataType="string" bitLength="32" encoding="UTF-8">BOOL</dataType>
</S7Tag>
</hurz>
</tags>
</PlcReadRequest>
<values>
<hurz>
<ResponseItem>
<result dataType="string" bitLength="16" encoding="UTF-8">OK</result>
<PlcBOOL dataType="bit" bitLength="1">true</PlcBOOL>
</ResponseItem>
</hurz>
</values>
</PlcReadResponse>
</api-response>
</steps>
</testcase>
<testcase>
<name>Single element read request with disabled PUT/GET</name>
<steps>
<api-request name="Receive Read Request from application">
<TestReadRequest>
<tags>
<tag className="org.apache.plc4x.test.driver.internal.api.TestTag">
<name>hurz</name>
<address>%Q0.0:BOOL</address>
</tag>
</tags>
</TestReadRequest>
</api-request>
<outgoing-plc-message name="Send S7 Read Request">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">31</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">2</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">1</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">2</tpduReference>
<parameterLength dataType="uint" bitLength="16">14</parameterLength>
<payloadLength dataType="uint" bitLength="16">0</payloadLength>
<S7MessageRequest>
</S7MessageRequest>
<parameter>
<S7Parameter>
<parameterType dataType="uint" bitLength="8">4</parameterType>
<S7ParameterReadVarRequest>
<numItems dataType="uint" bitLength="8">1</numItems>
<items isList="true">
<S7VarRequestParameterItem>
<itemType dataType="uint" bitLength="8">18</itemType>
<S7VarRequestParameterItemAddress>
<itemLength dataType="uint" bitLength="8">10</itemLength>
<address>
<S7Address>
<addressType dataType="uint" bitLength="8">16</addressType>
<S7AddressAny>
<transportSize>
<TransportSize dataType="uint" bitLength="8" stringRepresentation="BOOL">1
</TransportSize>
</transportSize>
<numberOfElements dataType="uint" bitLength="16">1</numberOfElements>
<dbNumber dataType="uint" bitLength="16">0</dbNumber>
<area>
<MemoryArea dataType="uint" bitLength="8" stringRepresentation="OUTPUTS">130
</MemoryArea>
</area>
<reserved dataType="uint" bitLength="5">0</reserved>
<byteAddress dataType="uint" bitLength="16">0</byteAddress>
<bitAddress dataType="uint" bitLength="3">0</bitAddress>
</S7AddressAny>
</S7Address>
</address>
</S7VarRequestParameterItemAddress>
</S7VarRequestParameterItem>
</items>
</S7ParameterReadVarRequest>
</S7Parameter>
</parameter>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</outgoing-plc-message>
<incoming-plc-message name="Receive S7 Read Response">
<TPKTPacket>
<protocolId dataType="uint" bitLength="8">3</protocolId>
<reserved dataType="uint" bitLength="8">0</reserved>
<len dataType="uint" bitLength="16">19</len>
<payload>
<COTPPacket>
<headerLength dataType="uint" bitLength="8">2</headerLength>
<tpduCode dataType="uint" bitLength="8">240</tpduCode>
<COTPPacketData>
<eot dataType="bit" bitLength="1">true</eot>
<tpduRef dataType="uint" bitLength="7">2</tpduRef>
</COTPPacketData>
<parameters isList="true">
</parameters>
<payload>
<S7Message>
<protocolId dataType="uint" bitLength="8">50</protocolId>
<messageType dataType="uint" bitLength="8">2</messageType>
<reserved dataType="uint" bitLength="16">0</reserved>
<tpduReference dataType="uint" bitLength="16">2</tpduReference>
<parameterLength dataType="uint" bitLength="16">0</parameterLength>
<payloadLength dataType="uint" bitLength="16">0</payloadLength>
<S7MessageResponse>
<errorClass dataType="uint" bitLength="8">129</errorClass>
<errorCode dataType="uint" bitLength="8">4</errorCode>
</S7MessageResponse>
</S7Message>
</payload>
</COTPPacket>
</payload>
</TPKTPacket>
</incoming-plc-message>
<api-response name="Report Read Response to application">
<PlcReadResponse>
<PlcReadRequest>
<tags>
<hurz>
<S7Tag>
<memoryArea dataType="string" bitLength="56" encoding="UTF-8">OUTPUTS</memoryArea>
<blockNumber dataType="uint" bitLength="16">0</blockNumber>
<byteOffset dataType="uint" bitLength="16">0</byteOffset>
<bitOffset dataType="uint" bitLength="8">0</bitOffset>
<numElements dataType="uint" bitLength="16">1</numElements>
<dataType dataType="string" bitLength="32" encoding="UTF-8">BOOL</dataType>
</S7Tag>
</hurz>
</tags>
</PlcReadRequest>
<values>
<hurz>
<ResponseItem>
<result dataType="string" bitLength="104" encoding="UTF-8">ACCESS_DENIED</result>
</ResponseItem>
</hurz>
</values>
</PlcReadResponse>
</api-response>
</steps>
</testcase>
</test:driver-testsuite>