You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ld...@apache.org on 2020/10/15 16:22:08 UTC

[plc4x] branch feature/beckhoff-discovery updated: Additional frames for TC2 and further tests of routing options.

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

ldywicki pushed a commit to branch feature/beckhoff-discovery
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/feature/beckhoff-discovery by this push:
     new 5f94854  Additional frames for TC2 and further tests of routing options.
5f94854 is described below

commit 5f9485468e231f24174d51aaa49bd1bc0f4532dd
Author: Ɓukasz Dywicki <lu...@code-house.org>
AuthorDate: Thu Oct 15 18:21:48 2020 +0200

    Additional frames for TC2 and further tests of routing options.
---
 .../testsuite/AdsDiscoverySerializerTest.xml       | 227 ++++++++++++++++++++-
 .../resources/protocols/ads/ads-discovery.mspec    |   3 +-
 2 files changed, 228 insertions(+), 2 deletions(-)

diff --git a/plc4j/drivers/ads/src/test/resources/testsuite/AdsDiscoverySerializerTest.xml b/plc4j/drivers/ads/src/test/resources/testsuite/AdsDiscoverySerializerTest.xml
index a8d2dc4..146b637 100644
--- a/plc4j/drivers/ads/src/test/resources/testsuite/AdsDiscoverySerializerTest.xml
+++ b/plc4j/drivers/ads/src/test/resources/testsuite/AdsDiscoverySerializerTest.xml
@@ -44,7 +44,11 @@
 
   <testcase>
     <name>ADS Discovery Response from 192.168.2.221.1.1</name>
-    <raw>036614710000000001000080c0a802dd01011027040000000500</raw>
+    <raw>036614710000000001000080c0a802dd0101102704000000050010004445534b544f502d54304e36554e4200</raw>
+    <!--
+    remaining part of frame
+    04001401140100000a00000000000000bb4700000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [...]
+    -->
     <root-type>AdsDiscovery</root-type>
     <xml>
       <DiscoveryResponse className="org.apache.plc4x.java.ads.discovery.readwrite.DiscoveryResponse">
@@ -58,6 +62,9 @@
           <octet5>1</octet5>
           <octet6>1</octet6>
         </amsNetId>
+        <name className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text>REVTS1RPUC1UME42VU5C</text>
+        </name>
       </DiscoveryResponse>
     </xml>
   </testcase>
@@ -145,6 +152,224 @@
     </xml>
   </testcase>
 
+  <testcase>
+    <name>ADS Discovery Request</name>
+    <raw>036614710000000001000000c0a802e80101102700000000</raw>
+    <root-type>AdsDiscovery</root-type>
+    <xml>
+      <DiscoveryRequest className="org.apache.plc4x.java.ads.discovery.readwrite.DiscoveryRequest">
+        <operation>DISCOVERY</operation>
+        <direction>REQUEST</direction>
+        <amsNetId className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>192</octet1>
+          <octet2>168</octet2>
+          <octet3>2</octet3>
+          <octet4>232</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </amsNetId>
+      </DiscoveryRequest>
+    </xml>
+  </testcase>
+
+  <testcase>
+    <name>ADS Discovery Request (TC2)</name>
+    <raw>036614710000000001000000c0a800890101102700000000</raw>
+    <root-type>AdsDiscovery</root-type>
+    <xml>
+      <DiscoveryRequest className="org.apache.plc4x.java.ads.discovery.readwrite.DiscoveryRequest">
+        <operation>DISCOVERY</operation>
+        <direction>REQUEST</direction>
+        <amsNetId className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>192</octet1>
+          <octet2>168</octet2>
+          <octet3>0</octet3>
+          <octet4>137</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </amsNetId>
+      </DiscoveryRequest>
+    </xml>
+  </testcase>
+
+  <testcase>
+    <name>ADS Discovery Response (TC2)</name>
+    <raw>036614710000000001000080051c5b8c010110270300000005000900504c435f484f4d45000400140114010000060000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [...]
+    <root-type>AdsDiscovery</root-type>
+    <xml>
+      <DiscoveryResponse className="org.apache.plc4x.java.ads.discovery.readwrite.DiscoveryResponse">
+        <operation>DISCOVERY</operation>
+        <direction>RESPONSE</direction>
+        <amsNetId className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>5</octet1>
+          <octet2>28</octet2>
+          <octet3>91</octet3>
+          <octet4>140</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </amsNetId>
+        <name className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text>UExDX0hPTUU=</text>
+        </name>
+      </DiscoveryResponse>
+    </xml>
+  </testcase>
+
+  <testcase>
+    <name>ADS Route Request (TC2)</name>
+    <raw>036614710000000006000000c0a8008901011027050000000c0010004445534b544f502d33504a314135440007000600c0a8008901010d000e0041646d696e6973747261746f72000200010000050010004445534b544f502d33504a3141354400</raw>
+    <root-type>AdsDiscovery</root-type>
+    <xml>
+      <RouteRequest className="org.apache.plc4x.java.ads.discovery.readwrite.RouteRequest">
+        <operation>ROUTE</operation>
+        <direction>REQUEST</direction>
+        <sender className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>192</octet1>
+          <octet2>168</octet2>
+          <octet3>0</octet3>
+          <octet4>137</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </sender>
+        <address className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text>REVTS1RPUC0zUEoxQTVE</text>
+        </address>
+        <target className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>192</octet1>
+          <octet2>168</octet2>
+          <octet3>0</octet3>
+          <octet4>137</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </target>
+        <username className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text>QWRtaW5pc3RyYXRvcg==</text>
+        </username>
+        <password className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text></text>
+        </password>
+        <routeName className="org.apache.plc4x.java.ads.discovery.readwrite.AmsMagicString">
+          <text>REVTS1RPUC0zUEoxQTVE</text>
+        </routeName>
+      </RouteRequest>
+    </xml>
+  </testcase>
+
+  <testcase>
+    <name>ADS Route Response (TC2)</name>
+    <raw>036614710000000006000080051c5b8c01011027010000000100040000000000</raw>
+    <root-type>AdsDiscovery</root-type>
+    <xml>
+      <RouteResponse className="org.apache.plc4x.java.ads.discovery.readwrite.RouteResponse">
+        <operation>ROUTE</operation>
+        <direction>RESPONSE</direction>
+        <amsNetId className="org.apache.plc4x.java.ads.discovery.readwrite.AmsNetId">
+          <octet1>5</octet1>
+          <octet2>28</octet2>
+          <octet3>91</octet3>
+          <octet4>140</octet4>
+          <octet5>1</octet5>
+          <octet6>1</octet6>
+        </amsNetId>
+        <status>SUCCESS</status>
+      </RouteResponse>
+    </xml>
+  </testcase>
+
+<!--
+collected sample frames, not covered by tests/mspec, route name=DESKTOP-OM18VQ9, ams=192.168.2.221.1.1, ip=192.168.2.221
+user=username, password=password, u (set undirectional), t=N (timeout N seconds, 5 if not set), m=N (max fragment size in kB), T=TCP, L=Lightbus, P=profibus dp, U=ADS UDP, C=canopen, D=device net S=SOAP, E=ethercat
+remote static    (T)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e0010004b161973d53d4032e10161e0150c6c5705000e003139322e3136382e322e32333200
+                              036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e001000c57730c6726c79d425eaee36fbc2018b05000e003139322e3136382e322e32333200
+                              036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e001000947ece82ba3b9286cbf0577c9a0f444a05000e003139322e3136382e322e32333200
+                              036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100040a64dec1e3c9350bb00700b1a70680105000e003139322e3136382e322e32333200
+                 (T,u)        036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100052d221f7aa561c82acfbc82accc5d8a305000e003139322e3136382e322e32333200
+                 (T,u, t=6)   036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e0010006db80352ac740b556c57e594f93ce25005000e003139322e3136382e322e32333200
+                 (T,u, t=7)   036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100010f8a99b21b0e333255fa269a9b0ff8105000e003139322e3136382e322e32333200
+                              036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e0010003fc8f87690bd1293de5f399afee6617205000e003139322e3136382e322e32333200
+                              036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f001000e3707a51b27e15fc96bd49bd6346a87d0e0010006c42e5e08dd2406334e9fcdec831861c05000e003139322e3136382e322e32333200
+                 (T,u t=5)    036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f001000e3707a51b27e15fc96bd49bd6346a87d0e0010006c42e5e08dd2406334e9fcdec831861c05000e003139322e3136382e322e32333200
+                 (T,u m=1)    036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e8010110000400000400000f001000dda70ca1ed02bf417f15e371d081784f0e00100074281319e44c44297ce26a66ffce587c05000e003139322e3136382e322e32333200
+                 (T,u m=2)    036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e8010110000400000800000f001000dda70ca1ed02bf417f15e371d081784f0e00100074281319e44c44297ce26a66ffce587c05000e003139322e3136382e322e32333200
+                 (T,u m=3)    036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e8010110000400000c00000f001000dda70ca1ed02bf417f15e371d081784f0e00100074281319e44c44297ce26a66ffce587c05000e003139322e3136382e322e32333200
+                 (T,u m=8)    036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e8010110000400002000000f001000dda70ca1ed02bf417f15e371d081784f0e00100074281319e44c44297ce26a66ffce587c05000e003139322e3136382e322e32333200
+
+remote temporary (T)          036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100027bf64e07a8166aa18c1040d4e6ca32d05000e003139322e3136382e322e323332000900040001000000
+remote temporary (T,u)        036614710000000006000000c0a802e801011027060000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100047a15792491b079f02fc42c947e8319805000e003139322e3136382e322e323332000900040001000000
+remote static    (L)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e001000aed37fff5ff62355f9c3fe06a73d6d5c05000e003139322e3136382e322e32333200
+remote static    (P)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100088d48e8f0189e322f8a1308d5429e7b105000e003139322e3136382e322e32333200
+remote static    (U)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e001000a1a73433b6932d8155d3c794d1f521fc05000e003139322e3136382e322e32333200
+remote static    (C)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e00100068b0ed86f5f766804e4e0333c94de44f05000e003139322e3136382e322e32333200
+remote static    (D)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e0010006db80352ac740b556c57e594f93ce25005000e003139322e3136382e322e32333200
+remote static    (S)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e0010001e52418cfef466a724fda494cb9e09c105000e003139322e3136382e322e32333200
+remote static    (E)          036614710000000006000000c0a802e801011027050000000c0010004445534b544f502d4f4d31385651390007000600c0a802e801010f0010003e92e0a029915511c09407a8350b0c9c0e001000db03a320dc535ec5b5b61ffa2ae9840605000e003139322e3136382e322e32333200
+
+Discovery responses below are dumps of data parts in UDP frames.
+Beginning is the same, differences starts from 03 00 04 sequence at the end.
+Supposing last part of TC2 packet is version (02 0b c1 08).
+For TC 3 this segment of frame (03 01 b8 0f 12) is bit longer.
+It is unclear yet which part of frame is responsible for shipping operating
+system information. Twincat 2 PLC reports Windows CE.
+
+TC2:
+0000   c8 f7 50 6c 68 c7 00 01 05 1c 5b 8c 08 00 45 00   ..Plh.....[...E.
+0010   01 61 c5 ce 00 00 80 11 f1 34 c0 a8 00 b4 c0 a8   .a.......4......
+0020   00 84 bf 03 bf 03 01 4d 21 5d 03 66 14 71 00 00   .......M!].f.q..
+0030   00 00 01 00 00 80 05 1c 5b 8c 01 01 10 27 03 00   ........[....'..
+0040   00 00 05 00 09 00 50 4c 43 5f 48 4f 4d 45 00    ......PLC_HOME
+
+                                                    04   ..
+0050   00 14 01 14 01 00 00 06 00 00 00 00 00 00 00 00   ................
+0060   00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0070   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0080   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0090   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00a0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00b0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00c0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00d0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00e0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00f0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0100   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0110   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0120   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0130   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0140   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0150   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0160   00 00 00 00 00 00 00 03 00 04 00 02 0b c1 08      ...............
+
+TC3:
+0000   1c 1b 0d 6a 88 84 9c b6 d0 98 df bb 08 00 45 00   ...j..........E.
+0010   01 ad 38 d1 00 00 80 11 79 d7 c0 a8 02 dd c0 a8   ..8.....y.......
+0020   02 6a bf 03 bf 03 01 99 25 86 03 66 14 71 00 00   .j......%..f.q..
+0030   00 00 01 00 00 80 c0 a8 02 dd 01 01 10 27 04 00   .............'..
+0040   00 00 05 00 10 00 44 45 53 4b 54 4f 50 2d 54 30   ......DESKTOP-T0
+0050   4e 36 55 4e 42 00                                 N6UNB
+
+                         04 00 14 01 14 01 00 00 0a 00   ...........
+0060   00 00 00 00 00 00 bb 47 00 00 02 00 00 00 00 00   .......G........
+0070   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0080   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0090   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00a0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00b0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00c0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00d0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00e0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+00f0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0100   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0110   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0120   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0130   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0140   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0150   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
+0160   00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00   ................
+0170   04 00 03 01 b8 0f 12 00 41 00 33 63 30 39 37 32   ........A.3c0972
+0180   61 34 38 66 64 62 37 36 66 31 32 61 38 31 32 38   a48fdb76f12a8128
+0190   39 61 33 35 64 34 61 33 37 31 65 31 38 66 63 33   9a35d4a371e18fc3
+01a0   30 37 36 36 30 38 32 38 39 37 30 31 38 61 38 62   0766082897018a8b
+01b0   66 38 38 64 39 39 32 64 63 38 00                  f88d992dc8.
 
+ -->
 
 </test:testsuite>
\ No newline at end of file
diff --git a/protocols/ads/src/main/resources/protocols/ads/ads-discovery.mspec b/protocols/ads/src/main/resources/protocols/ads/ads-discovery.mspec
index 74506ea..4352f6e 100644
--- a/protocols/ads/src/main/resources/protocols/ads/ads-discovery.mspec
+++ b/protocols/ads/src/main/resources/protocols/ads/ads-discovery.mspec
@@ -47,7 +47,8 @@
             [simple AmsNetId 'amsNetId']
             [reserved uint 16 '0x1027']
             [reserved uint 16 '0x0400']
-            [reserved uint 32 '0x00000500L']
+            [reserved uint 24 '0x000005L']
+            [simple AmsMagicString 'name']
         ]
         ['Operation.ROUTE', 'Direction.REQUEST' RouteRequest
             [simple     AmsNetId 'sender']