Hi, this also was a bit controversial in the past and AFAIR we already hat STRING[xx] as the command to not read a String Array but a String with given size (ignoring ACT value). In the end its about latency vs bandwith I guess. Personally, I would stick to the rule: Read MAX either given by STRING[xx] syntax or the default 254 or 256 (dont remember the spec exactly).
Julian Am 20.08.20, 12:46 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>: Another alternative would be to explicitly limit the number of chars read. So if we would extend the address syntax for STRING types to something like %DB2:30:STRING:10 It would simply read the 10 chars without checking the size first. Chris Am 20.08.20, 12:44 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>: Hi all, while investigating: https://issues.apache.org/jira/browse/PLC4X-240 I noticed that the reading of STRING types seems to be extremely inefficient. The reason is that we are currently reading a STRING element by reading 258 bytes (1 byte for MAX num of chars, 1 byte for ACT num of chars and then 256 bytes containing char data). The problem is that with a PDU-Size of 240 you can’t read one STRING with only one packet. With a S7 1500 or 400 it might work as they have larger PDU sizes. Currently the 0.6 drivers split this up into 2 requests. But it’s highly inefficient as usually the content will not be anywhere near the 256 chars. So my idea is to only request one byte (the ACT size) of the String and as soon as that’s returned, to ask for only the chars that are actually used. This should drastically reduce the payload on the wire. What do you think? Chris