Consumed vs Produced Tags?

alive15

Member
Join Date
Oct 2015
Location
Montgomery, AL
Posts
690
Good morning,

I am having trouble understanding the concept of consumed and produced tags. I found a manual explaining how they work but still cannot grasp the purpose.

From what I have read, one can create a produced tag on one PLC and send the tag value to multiple other PLCs as consumed tags? Why not just create 1 base tag in the first PLC and then use an Ethernet connection and daisy chain to other PLCs and get all the same tags across all controllers? Or is this not how it works?

Any explanation would be appreciated, thanks! I've never used Multiple PLCs on one project before, I usually just have one per machine and never connected all of them together.
 
From what I remember the produced tag is merely made available to the consumers to read. When you create the producer you define how many consumers it can have. The rate at which the data is read by the consumers is defined in each consumed tag, along with the location of the producer. The other difference is that produced and consumed tags still update even if the ladder is in program mode.
 
Last edited:
Daisy chaining would add to the lag of the signal. Imagine that you have 5 PLCs communicating, the signal would make it to the 5th PLC in the chain with considerable delay compared to the first receiver in the chain.

Then you would have the issue of one PLC going down and affecting the comms in the remaining PLC's.

I don't know how AB implements the produced/consumed tags on the TCP level, but think of it as a multicast. One PLC sends the data and the PLC's that have to receive it pick it up from the network. This is how I would normally do something like this between Siemens controllers for example.

You could also have a dedicated "message" to each PLC, but that would increase the processing time on the sender.
 
Look at it first for two controllers:
One controller will produce a tag (Tick the produced tickbox in variable config).
One controller will consume that tag (Add the controller to the IO tree, create a tag of type consumed, select the producing controller, type in the tag name and data type)
The consuming PLC now makes a connection to the producing, and polls that tag every so often.

Multiple controllers, direct connection (normal method):
Same as the first example, but when you create the producing tag, set the max number of consumers, lets say 20.
Now you can have up to 20 PLCs adding the producer to their IO tree and creating their own consumer tags.
You then repeat this for any other information you want to produce from say, controller 3, to be read by those that need it (controllers 8,9,15 say).

Daisy Chaining controllers (your method):
This is useful as it reduces the number of connections, but if one controller goes down, you lose all the communications.
Create a tag list in each controller. Something like
DINT_From_PLC1_In (Consumed tag)
DINT_From_PLC1_Out (Produced tag)
DINT_From_PLC2_In (Consumed tag)
DINT_From_PLC2_Out (Produced tag)
DINT_From_PLC3_In (Consumed tag)
DINT_From_PLC3_Out (Produced tag)
Then daisy chain your controller connections, so PLC2 consumes all the tags from PLC1, 3 from 2, 1 from 3.
In logic, copy the tag straight from the _In to _Out in every PLC.
When PLC1 changes DINT_From_PLC1_Out, he can use DINT_From_PLC1_In as a handshaking, to know that all other PLCs have receieved the data.

Drawings would be handy.
Imagine a bidirectional arrow for example 1, a circumscribed pentagram for example 2 (drawn with double headed arrows) and a pentagon for example 3 (single headed arrows, all in the same direction)
 
Good morning,

I am having trouble understanding the concept of consumed and produced tags. I found a manual explaining how they work but still cannot grasp the purpose.

Think of it as 'Data I/O'; the 'Producer' CPU generates 'Output' data to be 'provided' only to known 'Consumer' CPUs.

Reciprocally, the 'Consumer' CPUs 'consume' (use) the data provided by the 'Producer'(s) CPU(s) as 'Input' data within their application(s).

In a nutshell, this implements automatic, high-speed 'I/O Class' (at user set RPI) data exchange between two or more Logix CPUs,

As far as I am aware, this is the only controller platform capable to handle data in a 'classic' I/O manner.
 
Thank you everyone for your replies, these are all great posts. AustralIan, I appreciate your time on your post and like your example the most.

I have a better understanding of how these tags work, but have a few more questions. If you have multiple Producer and consumer tags, how does each tag know what their partner tags will be? Is there an option to type in the consumer tag? Furthermore, I can definitely see the use of this for 20 PLCs, but what if you have 3 PLCs? Would it be better to change 2 of those PLCs to remote I/O blocks, and just add those two programs into 1 PLC, so that way all the tags are together and set as a 'base' tag? From what I have seen, PLCs can hold lots of memory? Has anyone ever filled up the memory of a PLC before with just logic / tags?

Thanks again for all responses, these are all excellent.
 
Think of it as 'Data I/O'; the 'Producer' CPU generates 'Output' data to be 'provided' only to known 'Consumer' CPUs.

Reciprocally, the 'Consumer' CPUs 'consume' (use) the data provided by the 'Producer'(s) CPU(s) as 'Input' data within their application(s).

In a nutshell, this implements automatic, high-speed 'I/O Class' (at user set RPI) data exchange between two or more Logix CPUs,

As far as I am aware, this is the only controller platform capable to handle data in a 'classic' I/O manner.

Oh ok, So You can actually direct certain I/O to certain PLCs only and not send it to all the PLCs within the chain, correct? This is also very useful, save time by not sending signals to PLCs that do not need to see the tag value, correct?
 
If you have multiple Producer and consumer tags, how does each tag know what their partner tags will be?

The Produced and Consumed tags need to be identical (Tag Name, Tag Data Type) in both Producer and Consumer CPU applications; obviously the Producer tag will be a tag of the 'Produced' type while the Consumer tag will be of the 'Consumed' type.


Is there an option to type in the consumer tag?

You could 'type in' both Produced and Consumed type tags using the RSL5K/Studio5K Right-Click menu "Add New Tag" feature; the only difference between the two tag types is that, when creating a Produced Tag you will need to specify how many Consumers will use the Produced tag and you will also have to 'identify' the Consumer CPUs


Oh ok, So You can actually direct certain I/O to certain PLCs only and not send it to all the PLCs within the chain, correct?

Correct; the beauty of Produced/Consumed data exchange is that it operates only on a 'need to know' basis...Just like pretty much everything else around us...:D...
 
Thank you dmargineau, that was very helpful. Yes you are correct on your last statement, haha. You describe the world in that statement, hahaha.
 

Similar Topics

Hello, I have a pair of redundant 1756-L71 controllers rev 24. These controllers currently have produced and consumed tag interfaces to 3 other...
Replies
2
Views
91
Hi I have been knocking my head against the wall trying to figure out why these two plcs won't talk with Produced and Consumed Tags data. The...
Replies
14
Views
417
Hello all. I have a 1769-L16 that I inserted a 1769-L35E into. I was expecting it to create module defined tags automatically in my controller...
Replies
10
Views
1,753
Hi, Can a tag configured as a Produced or Consumed tag be read or written to with Explicit Messaging? Context: we are retrofitting an AV system...
Replies
9
Views
2,103
Ok, I've setup comms to PLC's that are behind a NAT switch before, but I have not had a PLC behind one NAT switch communicate with a second PLC...
Replies
13
Views
3,319
Back
Top Bottom