Power Table Tag Binding best/easiest practices?

Hi all,

I am working in Ignition 8.1 with a Vision template. I am attempting to create a power table with two columns. The first column is just Integers from 0 to 99. I need the second column to bind to an OPC tag that displays a string.

I figure I can do this by creating 100 custom properties, one for every single tag and binding each one to the string i am trying to display as:

{1}/Points/Points0/Name
{1}/Points/Points1/Name
....

And then going into the power table data binding and binding each cell to the custom property in the cell update section. However, this is very tedious, and if i wanted to copy and paste this power table to display a different set of 100 strings, i would have to re-bind everything. I imagine there is a faster way to do this but can't seem to sort it out in my head. Does anyone have any suggestions?

I would use my Integration Toolkit's tags() expression function, with a list of tag paths generated dynamically with a forEach() expression (also from the Integration Toolkit).

Okay, intersting. I'm fairly new to ignition. This toolkit is a 3rd part add-on it looks like. I downloaded it and registered it in my gateway. But I don't see where the extra functions expressions are available?

Could you give just a little more detail on how you would set this up?

You will find them listed with all of the other expression functions.

Phil has them separated out to their own categories where appropriate, and listed in other appropriate categories otherwise.

You will find the tags() expression function under the "Advanced" category, and forEach() under the "Iteration" category.

1 Like

I would add a couple custom dataset properties to the window or template where the table will be. The first prop, perhaps named tagpaths, would hold the generated list of tag paths, with an expression binding something like this:

unionAll(
	asMap('tagpath', 'str'),
	forEach(
		100, // Like python's range(100)
		stringFormat(
			"%s/Points/Points%d/Name",
			{Root Container.tagFolder},
			idx()
		)
	)
)

Then the other props expression would be something like this:

tags({Root Container.tagpaths})

On the table, you will want to expand on the returned tag path & values dataset, perhaps with selectStar().

Phil, any significant reason you used idx() here as opposed to it()?

No, except for clarity.

Another option entirely, using 'vanilla' Vision:
Ditch the table component.
Create a template for the 'row', give it a string parameter to use as a tag path.
Use an indirect binding inside the template, using that parameter to get the live value.
Use a template repeater to populate the tag path parameter with your repeated set.

1 Like

Thanks so much for the direction! I went the route of hard coding my current power table because I cannot use the integration toolkit without a licensed version of ignition edge (currently just doing some upfront development so i don't have a license yet). But the instructions were clear and I will give this a go in the future!

I appreciate the help! @pturmel @PGriffith @lrose

Be aware that most 3rd party modules do not run in Edge at all. In this case, my Integration Toolkit can be licensed in Edge by buying either of my Edge-qualified driver modules.