So, I am at a site with multiple Allen-Bradley PLCs. We have a decent amount of cross-controller communication, and as we continue to expand the plant, we're going to be adding more lines and therefore, more communications.
Previously, this plant has only used produced-consumed tags for communication. These are alright, but as our system is in development, we find we need to add more, and therefore take both PLCs offline to add the new produced-consumed tag structures. Recently, I found an article about using Ignition Transaction groups to move data from PLC to PLC (Link: OPC to OPC Transaction Group - Ignition User Manual 8.0 - Ignition Documentation)
My thought is to use Transaction Groups for non-critical data (sequences and such), and then reserve produced-consumed tags for critical data (like safety interlocks, etc.). Does this sound like a good structure? Here are my Pros and Cons for using Transactional Groups like this:
- Easy to configure
- Can add new tags on the fly
- One central configuration location
- Better diagnostics
- If I remember produce-consume tags use up CIP connections on the controller, using Ignition as a central OPC UA connection prevents using up these connections
- Additional fail-point for data connectivity chain
- Potential bandwidth limitations
Let's make this a great thread! Thanks all in advance!
On a couple of projects I've used my EtherNet/IP module's adapter mode to make I/O targets that pairs of PLC's could connect to with swapped assembly numbers--Output buffer of one connected to input buffer of the other, and vice versa. Runs fast like producer/consumer tags (down to ~50-100ms RPI range), and simultaneous provides Ignition with a copy of that data. If you arrange to use the max size buffers in all configs, you can rearrange what is published by adjusting the
CPS instructions that move the tag data to/from the I/O buffers. And it can handle multiple connections when 500 bytes isn't enough.
For all of our systems, where we're going to have communications between controllers, we just set up a large (100+) DINT array to handle it. Then I'll usually use the last index for the heartbeat, and then COP any tags we need into the array. You can copy a REAL to a DINT and then back to a REAL on the other side and it will keep full resolution, and just set individual bits of other DINTs for BOOL tags.
Thanks everyone for your replies! Overall, I was looking for more of the advantages vs. disadvantages of using Ignition as a data handler for PLC to PLC communications. I do appreciate the strategies others have used previously. We've been using the Ignition to handle our PLC to PLC data, and haven't had any issues with communications this way.
Haha, I'm new here, so I don't know how to close this forum (or even if it needs be closed). Thanks everyone again for your feedback!
We'd rather you closed the topic than close the forum!
Hit the "Solution" button below the post that best answered your question.