Display CompactLogix Array tag in a Perspective Table

I have an array tag in a MicroLogix called Drop_Table. It is 12 elements long. Each element has two values: Target and Actual. All Values are REAL type. I would like to display this in a Perspective Table. I am able to see the values in my Tag Browser but I cannot seem to get them to display in a Table. I'm using Ignition 8.1. Any help would be greatly appreciated.

Thanks in advance!

Show us how you have set up the table component's data binding.

This is a Binding on data under PROPS

I read that I may need create a Custom Property and \ or add a transform. I have not had any luck with that.

You are delivering a single value to props.data. A table needs either a dataset, or a list of objects. A number, or a list of numbers, is neither acceptable format. You absolutely need a transform.

Where can I find some info on that? I read that I needed to create a list of dictionaries. Not sure if this is correct. I tried this:

def transform(self, value, quality, timestamp):
	return [{"Target": row[0], "Actual": row[1]} for row in value]

I get Error_ScriptEval.

I've tried this with a simple array also with the same bad results.

Here's what my data looks like:

The problem is you don't have an array tag at [edge]Drop_Table - it's just a folder. In that folder are more folders, and in those folders are tags.

It might be a UDT array in your PLC program but it's not an array of any kind once you bring it into Ignition via whatever driver.

err, and side note: you must have meant Micro800 driver, right? There are no tags or tag arrays in MicroLogix.

You are correct. That should have been CompactLogix.

What's the best way to bring this in as an array?

You cannot.[1] The driver doesn't expose arrays as arrays, but as individual items.

When subscribed via OPC tags to all of those items, the driver intelligently reads them as a block, but they are delivered individually.

In your UI, you will want to supply the table with a list of tag paths as one of the values in the list of dictionaries, and configure a cell render view to indirect bind to show the live value in the table.

If you don't care about live values, you can use a script to with system.tag.readBlocking() to grab all of the values at once, and deliver the values in the dictionaries.


  1. My alternate EtherNet/IP driver does support reading arrays of simple numeric types as a single array item. ↩︎

I am interested in learning more about your alternate Ethernet\IP driver.