Tag Fragmentation

If you know me I’m always on the lookout for new products. I wish I could tell you that I get premonitions in bed or in the shower. That’d be really cool. I’d love to be one of those guys that has to keep a pen and notepad next to the bed so I could wake up and write down that ten million dollar idea.

Unfortunately, that’s not the case. Usually, it’s you guys that call me up and berate me with “How do I do this…” or “Why doesn’t someone make it possible to do….” That’s the usual way.

And that’s exactly what happened to me a number of years ago with our EtherNet/IP Tag Client software. This software is very simple. It just moves Tag data between a PLC and an embedded device. You can read a bunch of tags or write a bunch of tags whenever you want. It, of course works with ControlLogix and CompactLogix but it also supports PLC5E, SLC 5/05 and Micrologix PLCs. With those legacy PLCs, you use the old file notation (N7:200) [For simplicity I am going to just say Tag when I mean Tag or File.]

That software was always a pretty good product for us. Lots and lots of embedded developers incorporated it into their product. It can do a transaction every 10-20msecs. That means the source device could load up a structure with a bunch of tags to read and then 10-20msecs later get the values of all those tags. That’s not terrific but it’s adequate for a lot of applications. We have alternate schemes for those of you that need responses down in the 1 or 5msec range.

The big problem with this software was the limited buffer sizes of the PLC. At 512 bytes you just couldn’t get a lot of tags in there. The way the protocol works is that we actually send the ASCII string names of those ASCII tags in the message to the PLC. So if you wanted to read 50 tags out of a CompactLogix PLC, you could only do it if the sum total of all those ASCII characters was less than 512 bytes. That was pretty limiting for a lot of folks. Especially on writes because in addition to the ASCII characters for the names of the tags to write you also had to have space for the data.

It kind of sucked and I didn’t have a great way around it.

Until now!

Just this week we released a new version of our EtherNet/IP Tag Client software that uses a fragmentation feature in the ControlLogix and CompactLogix PLCs. That new feature adds two new service codes; Read Tag Fragmented and Write Tag Fragmented. These service codes allow us to exchange very large Tag Arrays and UDTs (User Defined Types) between a PLC and your embedded device.

With these new services we now have the capability to transfer 65,535 array elements between your device and a Logix PLC. That’s independent of data type. You can transfer 65K Floats, 65K Ints or 65K Sints. It doesn’t matter. If you are using an array of UDTs, you can transfer 65K array elements of your UDT. That’s a lot of data. A lot more than we could ever transfer previously.

The best thing about this is that from your application this is all seamless. You just pass the array name to us and the Tag Client interface handles all the fragmentation for you. You just process the buffer with your data.

If you’d like to use this facility please contact me about getting a software upgrade.