I have adopted a workaround reading all the INT variable separated.

|--connection-string 's7:tcp://192.168.1.192?controller-type=S7_1200'
--field-addresses '%DB1:274.0:INT' '%DB1:276.0:INT' '%DB1:278.0:INT'
'%DB1:280.0:INT' |

In this way on the wire you have:
the query:

|Frame 296: 111 bytes on wire (888 bits), 111 bytes captured (888 bits)
on interface utun2, id 0 Null/Loopback Internet Protocol Version 4, Src:
192.168.100.4, Dst: 192.168.1.192 Transmission Control Protocol, Src
Port: 57188, Dst Port: 102, Seq: 48, Ack: 50, Len: 67 TPKT, Version: 3,
Length: 67 ISO 8073/X.224 COTP Connection-Oriented Transport Protocol S7
Communication Header: (Job) Parameter: (Read Var) Function: Read Var
(0x04) Item count: 4 Item [1]: (DB 1.DBX 274.0 INT 1) Item [2]: (DB
1.DBX 276.0 INT 1) Item [3]: (DB 1.DBX 278.0 INT 1) Item [4]: (DB 1.DBX
280.0 INT 1) |

the answer:

|Frame 297: 89 bytes on wire (712 bits), 89 bytes captured (712 bits) on
interface utun2, id 0 Null/Loopback Internet Protocol Version 4, Src:
192.168.1.192, Dst: 192.168.100.4 Transmission Control Protocol, Src
Port: 102, Dst Port: 57188, Seq: 50, Ack: 115, Len: 45 TPKT, Version: 3,
Length: 45 ISO 8073/X.224 COTP Connection-Oriented Transport Protocol S7
Communication Header: (Ack_Data) Parameter: (Read Var) Function: Read
Var (0x04) Item count: 4 Data Item [1]: (Success) Item [2]: (Success)
Item [3]: (Success) Item [4]: (Success) |

|[INFO ] 10:15:44.727 it.fox.datapicker.HelloPlc4x.printResponse() -
Value[value-0]: 10 [INFO ] 10:15:44.733
it.fox.datapicker.HelloPlc4x.printResponse() - Value[value-1]: 11 [INFO
] 10:15:44.737 it.fox.datapicker.HelloPlc4x.printResponse() -
Value[value-2]: 12 [INFO ] 10:15:44.741
it.fox.datapicker.HelloPlc4x.printResponse() - Value[value-3]: 13 |

Unfortunately my java knowledge are not so advanced to fix the bug in
reading the array in a single command, anyway there’s a workaround.

Hope this mail help some newbies like me to find the right way to read
data from the PLC.

Regards,
Stefano

On 28/07/2020 11:38, Stefano Bossi wrote:

> Dear plc4x forum,
>
> I have found a possible problem in reading an array of INT.
> I am using the HelloPlc4x app for testing and I am trying to read the
> field address: |'%DB1:274.0:INT[3]'|
>
> In the request, captured via wireShark I can see the query:
>
> |Frame 3: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on
> interface utun2, id 0 Null/Loopback Internet Protocol Version 4, Src:
> 192.168.100.4, Dst: 192.168.1.192 Transmission Control Protocol, Src
> Port: 54543, Dst Port: 102, Seq: 1, Ack: 1, Len: 31 TPKT, Version: 3,
> Length: 31 ISO 8073/X.224 COTP Connection-Oriented Transport Protocol
> S7 Communication Header: (Job) Parameter: (Read Var) Function: Read
> Var (0x04) Item count: 1 Item [1]: (DB 1.DBX 274.0 INT 3) Variable
> specification: 0x12 Length of following address specification: 10
> Syntax Id: S7ANY (0x10) Transport size: INT (5) Length: 3 DB number: 1
> Area: Data blocks (DB) (0x84) Address: 0x000890 |
>
> and the response:
>
> |Frame 4: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on
> interface utun2, id 0 Null/Loopback Internet Protocol Version 4, Src:
> 192.168.1.192, Dst: 192.168.100.4 Transmission Control Protocol, Src
> Port: 102, Dst Port: 54543, Seq: 1, Ack: 32, Len: 31 TPKT, Version: 3,
> Length: 31 ISO 8073/X.224 COTP Connection-Oriented Transport Protocol
> S7 Communication Header: (Ack_Data) Parameter: (Read Var) Function:
> Read Var (0x04) Item count: 1 Data Item [1]: (Success) Return code:
> Success (0xff) Transport size: INTEGER (0x05) Length: 6 Data:
> 000a000b000c |
>
> The 3 INT I would like to read are there: |000a|, |000b|, |000c| but
> in the response of:
>
> |PlcReadResponse syncResponse = readRequest.execute().get(); |
>
> only the first one is present.
>
> I read in jira that there was a similar bug here PLC4X-57
> <https://issues.apache.org/jira/browse/PLC4X-57>, is this the same
> problem?
>
> Thanks for your help.
>
> Regards,
> Steafano Bossi
>
> ​

​

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to