Are tagBlocking reads affected by TagGroup updates?

So, assuming tag instance 0x50A is one of the targeted tags, you are getting multiple transfers due to oversize responses. Data can change in between those separate fractions.

{ Your buffer size is 500. Older processor? }

You will certainly need to implement a handshaked "quiet period" for Ignition to gather this information.

1 Like

I'm pretty sure it is, that would be the transfer string. Can I see the name of it in the wireshark capture though? I can see the 0x50A, but can't find the name of the tag.

Not sure what the processor is onsite, I will check early next week. I can probably increase this.

Cool, I'll see what I can do, thanks!

You identified several separate tags with arrays of structures, from which you are extracting selected information. Some questions:

  • Are you using the information in Ignition for display, or for control, or both?

  • How often does Ignition have to have valid data?

  • Do you have enough room to make two duplicates of the data? If not, could you make two duplicates with stripped-down data types?

It is exposed in the processor browse operation. If you use my driver, the probe log file can be searched for these values.

1 Like

I need all of the tags that I identified, but the actual PLC array elements contain a few more tags within the UDTs they use. Only 5-6 tags in them, 2 of them are strings though with 20 characters each.
I'd like valid data every second.
The transfer string is the largest string, at 2200 or so characters to allow for the longest transfer string. Most are < 300 characters though.
I'll have to see if duplicates will fit. The transfer string I'm not so concerned about, as I can easily handle this in my script.

Realistically, you can’t get this data atomically.

Only chance would be a special purpose UDT containing only and exactly the data you need. But with all the strings you’re mentioning it’s still unlikely.

Consider the following for a reliable handshake and data transfer:

  • Make duplicates of the important tags.

  • Make two DINT tags for handshake trigger and echo.

  • In the PLC, at the end of each scan, compare the two DINTs. If equal, copy from the original tags to the duplicates, then increment the trigger DINT (with rollover).

  • In Ignition, make tags for just the two DINTs. Make a timer script at the desired pace that reads the two DINT tags, and if unequal, uses system.opc.readValues() to grab all of the data (from the duplicate tags, no concerns about synchronization across requests). Then write the trigger tag's value to the echo tag.

I suppose trigger and echo could be SINTs, if you prefer.

1 Like

Sounds good! Hopefully the PLC can handle the extra tags :grimacing: I'll find out on Tuesday when I'm officially back at work! Thanks for the help, as always

PS we don't usually try to run our PLCs so tightly...

Pssssst! RC to play with!

We're definitely keen to get your EtherNet/IP V2 driver at some of our key sites where AOI tags are being read extensively! I'll see what I can do in terms of testing with the new RC on the test server. The site has ~100 odd PLCs, mostly various different AB's

1 Like