# Read Only Large Group Of Tags

**URL:** <https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501>\
**Category:** Ignition\
**Tags:** ignition81, perspective\
**Created:** [July 20, 2024, 2:05pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501 "2024-07-20T14:05:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [July 20, 2024, 2:05pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501/1 "2024-07-20T14:05:04Z")

</div>

My machines are defined by a single UDT that uses the RootInstanceName to connect to PLC's.

I would like to read a large group of tags in each PLC on a manual trigger. I do not want to read on regular interval.

I thought about reading via a driven tag group one-shot but I would have to create a tag group for each plc. (I think this is probably what I will have to do.)

I tried system.opc.readValue but it takes way too long.

Does anyone have any other suggestions?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 20, 2024, 2:15pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501/2 "2024-07-20T14:15:34Z")

</div>

> [@Pat\_Cunningham](#):
>
> tried system.opc.readValue

Did you accidentally leave off the "s" ? A **single** call to `system.opc.readValues()` is the right tool, and will be the fastest, and will be the only way to ensure you get all the new values after your trigger. (Anything you read this way should **not** have OPC tags in your UDTs. If you need tags for UI purposes, have your script write to memory tags in your UDTs.)

---

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [July 21, 2024, 12:00pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501/3 "2024-07-21T12:00:07Z")

</div>

These large groups are arrays. Is there a way to read an array with system.opc.readValues?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 21, 2024, 12:45pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501/4 "2024-07-21T12:45:08Z")

</div>

Put all of the elements in the list separately, just like any other item paths. (My alternate driver can read elementary arrays as Ignition array tags, but there's no performance difference on the wire.)

It is up to your script to assemble the list of item paths, and then process the returned list of QVs into the separate chunks you want. But whatever you do, make **one** list of all your items paths for **one** call to `system.opc.readValues()`. It must be **one** call for the driver to have the opportunity to optimize into the fewest possible requests on the wire.

---

<div class="post-metadata">

**Author:** ![Pat\_Cunningham](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pat_cunningham/32/57710_2.png) [@Pat\_Cunningham](https://forum.inductiveautomation.com/u/Pat_Cunningham)\
**Post date:** [July 21, 2024, 1:54pm UTC](https://forum.inductiveautomation.com/t/read-only-large-group-of-tags/93501/5 "2024-07-21T13:54:32Z")

</div>

Thank you
