Ignition / Cirrus Link Variable Tables

Strictly speaking this isn’t about the Onboard Ignition, but browsing other topics (like this particularly relevant one from 2017) makes me think I’m not too off-base asking here.

Summary: I’d like to access a number of numeric table entries from Ignition, but I can’t seem to figure out how.

Details:
I’ve been asked by a customer to set up some Ignition tags pointing to “all the alarms” in a SNAP-PAC-S2 that runs one of their systems. The alarms currently reside in a WonderWare/InTouch application that uses several topics configured in FSGateway to read the data.
When I arrived on the scene, the customer already had the CIrrus Link Opto 22 groov EPIC and SNAP PAC (v4) driver installed. They had had some trouble setting it up (detailed below in case it’s helpful, and because I have additional questions), but that seems to be behind us.
Now I’ve got the driver talking, and it’s finally time to get these alarm tags into Ignition, but they don’t show up when browsing tags. A closer look at the tags in WW reveals they are using array indices. Further investigating the control strategy (I’m not a regular user of SNAP-PACs by any means) tells me that these items belong to numeric tables. So I try a few variations on array indexing that do not work, and then I go looking and find the topic linked above. Unfortunately, the workaround link it points to has died in the meantime, and the Cirrus Link documentation no longer mentions tables at the top. As far as I can tell, this is from before the days when variables/tables had to be declared Public to be visible. I’m basing this on the fact that I can’t find anywhere I would do so. The controller firmware is R9.5h, from 2018.

So that’s my real question: How can I accomplish my goal of pulling this alarm data into Ignition? Ideally, I would prefer to do so without playing around in the controller itself (see: not a regular user).

Driver troubles:
We had a few issues with the driver that I didn’t understand. We’re working around both, but I’m hoping someone here can provide some clarity:

  1. Initially we were using an Allen-Bradley 1783-NATR (network address translation unit) to try to connect the SNAP-PAC-S2 to their plant network while also isolating it. I set up the public/private ports and the gateway on the SNAP-PAC such that pings were successfully travelling through the NAT device, and further added a rule to allow traffic through on port 22001, but I was never able to get the driver to show connected. In the end, we set the secondary IP of the device to an address on their plant network and just plugged in there. (Incidentally, I was astonished to discover that it seems to be impossible to put in three three-digit numbers for the IP address, so we had to switch from 192.168.100.149 to 192.168.100.79.) Are there other ports we need to set up, or is this just a non-starter of an idea?
  2. Once we got the driver talking with default settings (which took several minutes to go from Not Connected to Connected), we found that the WonderWare application was having a very hard time maintaining its own connection. It has a clock in the corner of the screen that normally updates once every second and change (so it misses about 20% of seconds), but as soon as the driver showed Connected it changed to often updating every 15 seconds or so. Fortunately, we don’t need the data in Ignition to be zippy, so I cranked the timeout and scan rate to 30 seconds and 2 minutes, respectively. It would be preferable to have smaller numbers, though, and I don’t like that as a workaround.

Since the tags don’t show up in the tag browser, they are probably not setup as public in the strategy. The values you are wanting will need to be setup with public access. Doing this will require the strategy to be updated and downloaded into the controller - so no way to avoid playing around in the controller itself.

For your reference, with the snap driver, you can read a table index with a OpcItemPath like [GatewayDeviceName]ntVariableName[2]

Is InTouch accessing the tags using OPC? Do you have the OPC DA module in Ignition? You may be able to use that instead of the snap driver. Old school, but it should work without adding any load to the S2.

Note that the Cirrus Link snap driver doesn’t use the scan rate/tag groups - the only value that is used is the scan time setup on the gateway where the device is setup.

Hmm. Maybe I’m missing something.

The Public Access section doesn’t seem to be available on new or existing items. There’s nothing below the Initialization section. The PAC Control Pro version is R9.6d (from 2017). The computer with it installed is not internet-facing, but I can grab a picture if that’s important.

I believe InTouch is using OPC, but I admit the ins and outs of that sometimes escape me. It has several topics set up in FSGateway with names like “IT2” and paths like “[CONT|ip}tcp:192.168.0.99:22001]I32T;Value;”, which are then used as “[16];nt_AU_TEMP_ALARM”

As for table indexing, I thought I tried that, but maybe I’m misunderstanding. When I select an item from the list in Ignition, it formats as “ns=1;s=[Engine Room 2 Opto 22]A”, so what I did was switch the ending so I ended up with “ns=1;s=[Engine Room 2 Opto 22]nt_AU_TEMP_ALARM[16]”. The tag value then comes back as Error_Configuration. Should I have eliminated/altered the prefix section?

I’ll have to get back to you with more info tomorrow. (You really threw a wrench into my end-of-day summary email by responding so quickly!)

On v9 strategies you setup a magic string table for the public tags called stPublicListOfStrategyTags and then add one tag per entry in that table.

stPublicListOfStrategyTags[0] = “i32t.ntVariableName[0-14].rw”;

https://docs.chariot.io/pages/viewpage.action?pageId=4588393

After changing the public tags and downloading the strategy, you need to disable/enable the device in Ignition so it gets the update or restart the snap driver module.

Wow. I was specifically looking for that page of documentation and just could not find it. Tried going to the Wayback Machine and everything.

I don’t think I’m the guy to do that, but at the very least it means I have a good plan of action.

Thank you!

Seems like I was indeed the guy to do that, and it worked beautifully.

Looking at the documentation you linked, it seems this supersedes the default behavior, meaning that using the specific tag list means you won’t get any tags not in the list.

Fortunately, that’s not a problem for this situation at all.

Thanks again!

Glad you got it working, thanks for stopping back and letting us know.

Do keep in mind that in v10, all this is just a simple ‘make public’ check box.