Normal OPC tags or systemopc.readvalues for large UDT arrays


I need to pull UDT data from an AllanBradley PLC. Here are some details:

  • The UDT consists of 20 float/int(s), and there are 400 of them.
  • They are stored in the PLCs as a UDT array. “Tag[400] (UDT)”
  • I am going to present each tag in a powertable, (each UDT member will be a column)
  • I have a digital trigger of when to pull data. No more than every 2 sec.

What is the most efficient way to fetch these data in terms of CPU/Memory and opc-device utilization?

  • Is it OK to create a UDT tag and populate a folder with tags Tag_1 -> Tag_400. Then loop through the folder and populate the table.
  • Is it better to pull all values from a script, and put the data directly into the table.

I also need to use some of the UDT members outside of the powertable.(alarm status).

Last thing, the customer dont have the transaction licence

One more side quest or the reader: If it shows to be feasible to pull all tags normally using UDT tags populated by OPC tags:
It would be awesome to create each UDT as a “row” template, in order to present the data in a template repeater. Would this put excessive stress on the client/server( when loading 400 templates)?

Best regards!

1 Like