# Siemens Array of Struct (configure, read & write)

**URL:** <https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033>\
**Category:** Ignition\
**Created:** [December 12, 2023, 2:46pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033 "2023-12-12T14:46:46Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![valec7](https://avatars.discourse-cdn.com/v4/letter/v/258eb7/32.png) [@valec7](https://forum.inductiveautomation.com/u/valec7)\
**Post date:** [December 12, 2023, 2:46pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/1 "2023-12-12T14:46:46Z")

</div>

How to configure a Siemens Array of Struct in Ignition 8.1?

I have created a UDT similar to the Struct, with an {offset} parameter.  
To test, I try to instance a Data Type to the first element of the array (i.e. DB99.I100), so each Tag of the Instance gets the correct address of the Struct (i.e. DB99.DI102, DB99.I106, ...).

I get "Error\_Configuration: ... The node id ... does not exist in the server address space" for each Tag.

How to address an array, and the tags of the struct of each element (read & write)?

---

<div class="post-metadata">

**Author:** ![Hayden\_Watson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/hayden_watson/32/48792_2.png) [@Hayden\_Watson](https://forum.inductiveautomation.com/u/Hayden_Watson)\
**Post date:** [December 12, 2023, 2:50pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/2 "2023-12-12T14:50:53Z")

</div>

I think they should use a comma after the DB number so  
`DB99,DI102` etc.

---

<div class="post-metadata">

**Author:** ![valec7](https://avatars.discourse-cdn.com/v4/letter/v/258eb7/32.png) [@valec7](https://forum.inductiveautomation.com/u/valec7)\
**Post date:** [December 12, 2023, 2:56pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/3 "2023-12-12T14:56:03Z")

</div>

Yes, sorry, there is actually a comma, the address of each Tag is still correct.

The instance of a single element of the array still gives "Error\_Configuration",  
then I will need to address all the elements of the array.

---

<div class="post-metadata">

**Author:** ![Hayden\_Watson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/hayden_watson/32/48792_2.png) [@Hayden\_Watson](https://forum.inductiveautomation.com/u/Hayden_Watson)\
**Post date:** [December 12, 2023, 2:57pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/4 "2023-12-12T14:57:54Z")

</div>

This should be correct then, issue with siemens driver is if one tag reads illegal memory it will error out the whole struct.

Maybe some better ways to do, but if you disable your whole UDT and reenable one tag at a time you'll find the one causing the issue.

Also check your logs, sometimes I've done this for ages and found S7ReadResponse. Error code = 8104 in my logs, if got this error cahnge the PUT/GET communication option in security in your PLC

---

<div class="post-metadata">

**Author:** ![valec7](https://avatars.discourse-cdn.com/v4/letter/v/258eb7/32.png) [@valec7](https://forum.inductiveautomation.com/u/valec7)\
**Post date:** [December 12, 2023, 3:07pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/5 "2023-12-12T15:07:43Z")

</div>

At first I generated all the tags of an S7-400 PLC from a CSV to json with python.  
They all work except one array of struct that was generated as single tags with absolute address.  
I understood that i can map a struct to a UDT, but i think I miss how to point to array elements and where to actually configure that.

I heard that arrays are exposed by the Siemens Driver as a json structure, is it true? How to configure it to work?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 12, 2023, 3:09pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/6 "2023-12-12T15:09:43Z")

</div>

> [@valec7](#):
>
> heard that arrays are exposed by the Siemens Driver as a json structure, is it true?

No, anything to do with JSON or documents is when connecting to the built in OPC UA server on the 1200/1500.

The driver doesn’t know anything about structure or arrays. Everything is a scalar tag accessed by absolute addressing. If it’s part of a struct or array that is irrelevant.

---

<div class="post-metadata">

**Author:** ![valec7](https://avatars.discourse-cdn.com/v4/letter/v/258eb7/32.png) [@valec7](https://forum.inductiveautomation.com/u/valec7)\
**Post date:** [December 12, 2023, 3:20pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/7 "2023-12-12T15:20:42Z")

</div>

Good, thanks!

So, as example, with ItemPath=[S7-400]DB99,DI96 I can read the value.

But, since DB99 +100.0 is one ARRAY[1..50] of STRUCT,  
are you saying that with ItemPath=[S7-400]DB99,I100, (or DB99,DI102 ...) I should also correctly read the values?

I get "Error\_Configuration: ... The node id ... does not exist in the server address space".

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [December 12, 2023, 3:51pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/8 "2023-12-12T15:51:21Z")

</div>

Are you typing that address in manually or is it generated by UDT param or script? Are you sure there's no whitespace or non-ascii characters in it or something?

It looks syntactically valid but I can't see any other reason the driver would use Bad\_NodeIdUnknown other than an address that doesn't parse.

If you set the log level of the logger you find searching "S7Address" to DEBUG it might have more info or even confirm if the problem is the address.

[https://docs.inductiveautomation.com/display/DOC81/Diagnostics+-+Logs#DiagnosticsLogs-ChangingLoggingLevels](https://docs.inductiveautomation.com/display/DOC81/Diagnostics+-+Logs#DiagnosticsLogs-ChangingLoggingLevels)

---

<div class="post-metadata">

**Author:** ![valec7](https://avatars.discourse-cdn.com/v4/letter/v/258eb7/32.png) [@valec7](https://forum.inductiveautomation.com/u/valec7)\
**Post date:** [December 12, 2023, 4:35pm UTC](https://forum.inductiveautomation.com/t/siemens-array-of-struct-configure-read-write/83033/9 "2023-12-12T16:35:28Z")

</div>

There was a whitespace at the end, only in those tags, by coincidence!  
Error parsing address indeed.  
Thank you for the hints 😉
