{"id":841,"date":"2023-02-01T07:42:15","date_gmt":"2023-02-01T07:42:15","guid":{"rendered":"http:\/\/bryceautomation.com\/?p=841"},"modified":"2023-02-01T07:42:17","modified_gmt":"2023-02-01T07:42:17","slug":"controllogix-producerconsumer-model","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/","title":{"rendered":"ControlLogix Producer Consumer Model"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to ControlLogix Producer Consumer Model<\/h2>\n\n\n\n<p>The ControlLogix Producer Consumer model is a way for processors to share information. This can be an array of DINTs, or it might be a user-defined datatype designed to contain the status of equipment.<\/p><div id=\"bryce-4129435266\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<p>An example of where we might use the Producer Consumer model would be on a conveyor system. If part of the system stopped working, then other processors would need to know that there is a problem on the system. This would prevent a pileup on the conveyor.<\/p>\n\n\n\n<p>The processor producing a tag is publishing the data in the tag for other processors to receive. The processor Consuming data is receiving data from a produced tag in another processor.<\/p>\n\n\n\n<p>Producer\/Consumer has several advantages over the MSG instruction in logic. Producer\/Consumer happens at the tag level, so no logic needs to be executed for producer\/consumer to transfer data. Since it happens at the tag level, even if the processor is in program mode, the data will still transfer. Another advantage is that producer\/consumer can be multicast. This means that if 5 processors are consuming data, the tag only needs to be transmitted on the network one time for all consumers to receive the data. Producer\/Consumer is also scheduled. We can schedule an update time of up to 750ms. The MSG instruction was dependent on the scan of the processor.<\/p>\n\n\n\n<p>Here is an image of what we will be doing. Through the rest of this documentation, please refer to this diagram:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"832\" height=\"351\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png\" alt=\"Producer\/Consumer Image\" class=\"wp-image-842 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png 832w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2-300x127.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2-768x324.png 768w\" data-sizes=\"(max-width: 832px) 100vw, 832px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 832px; --smush-placeholder-aspect-ratio: 832\/351;\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Configuring the Produced tag<\/h2>\n\n\n\n<p>Setting up the produced tag is very easy. Open the project of the processor that will be producing data. All we need to do is make a tag and mark it as produced. Go to the controller tag database, and in \u201cEdit Tags\u201d, we\u2019ll create a tag called \u201cOutbox\u201d. Let\u2019s just keep this simple, and leave it as a DINT.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"473\" height=\"60\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producedCreateOutbox.png\" alt=\"Create Outbox\" class=\"wp-image-843 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producedCreateOutbox.png 473w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producedCreateOutbox-300x38.png 300w\" data-sizes=\"(max-width: 473px) 100vw, 473px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 473px; --smush-placeholder-aspect-ratio: 473\/60;\" \/><\/figure>\n<\/div>\n\n\n<p>Now, Let\u2019s right-click the tag, and choose \u201cEdit Outbox Properties\u201d We need to change the type of tag to \u201cConsumed\u201d then click the \u201cConnection\u201d button. You will see that we are producing this tag for up to 1 consumers, which is fine for what we are doing in this example.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"792\" height=\"542\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producerOutboxProperties.png\" alt=\"Outbox Properties\" class=\"wp-image-844 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producerOutboxProperties.png 792w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producerOutboxProperties-300x205.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producerOutboxProperties-768x526.png 768w\" data-sizes=\"(max-width: 792px) 100vw, 792px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 792px; --smush-placeholder-aspect-ratio: 792\/542;\" \/><\/figure>\n<\/div>\n\n\n<p>Next, let\u2019s go to \u201cMonitor Tags\u201d, and for now, we\u2019ll place a random value into the Outbox tag. In a real application, you would be moving data into the tag such as equipment speed setpoint, or bits that indicate the status of this processor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"255\" height=\"46\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/producedRandomValue.png\" alt=\"Outbox Value\" class=\"wp-image-845 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 255px; --smush-placeholder-aspect-ratio: 255\/46;\" \/><\/figure>\n<\/div>\n\n\n<p>If you are offline, please download to your processor that will produce the data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuring the Consumed Tag<\/h2>\n\n\n\n<p>Next, go to the project of the processor that will be consuming data. This processor has a little more work to do. First, we must build our path to the target processor. The target processor is the processor that is producing the data. (outbox) After we build the path to our target processor, then we can create our consumed tag.<\/p>\n\n\n\n<p>Look at the first diagram in this post. There are 3 steps to building the path:<\/p>\n\n\n\n<p>1. First, we will connect to our own Ethernet module.<\/p>\n\n\n\n<p>2. Second, we will connect from OUR Ethernet Module to the Ethernet module in the target chassis.<\/p>\n\n\n\n<p>3. Last, we connect to the processor on the remote chassis backplane.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"832\" height=\"351\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImageSteps.png\" alt=\"ProducerConsumer Path\" class=\"wp-image-847 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImageSteps.png 832w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImageSteps-300x127.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImageSteps-768x324.png 768w\" data-sizes=\"(max-width: 832px) 100vw, 832px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 832px; --smush-placeholder-aspect-ratio: 832\/351;\" \/><\/figure>\n<\/div>\n\n\n<p>Before we start, you will need to know the slot numbers, firmware revisions, and IP addresses of all the modules involved here. If you don\u2019t have that information, just open your web browser, and enter the IP of each Ethernet Module, and click \u201cBrowse Chassis\u201d. This will display the slot, catalog #, and revisions of each module. &nbsp;Also be sure you are in the project of the processor that will be <strong>consuming<\/strong> data from the producer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Build the path<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1<\/h3>\n\n\n\n<p>In Step 1, we need to add our Ethernet module to the backplane (If it is not already there). &nbsp;If you already have an existing Ethernet module in your project, then this step is already complete. &nbsp; &nbsp;Here, we will add a 1756-ENBT module. &nbsp; Be sure to adapt this example to the module that you are using (ie. EN2T, or 1756-CNB).<\/p>\n\n\n\n<p>Right-Click the <strong>backplane<\/strong>, and add a new module to your own <strong>backplane<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"738\" height=\"491\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/enbtbackplaneselect.png\" alt=\"Select ENBT\" class=\"wp-image-848 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/enbtbackplaneselect.png 738w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/enbtbackplaneselect-300x200.png 300w\" data-sizes=\"(max-width: 738px) 100vw, 738px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 738px; --smush-placeholder-aspect-ratio: 738\/491;\" \/><\/figure>\n<\/div>\n\n\n<p>Be sure to set up the properties according to the module that you have.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"694\" height=\"533\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/DefineENBT.png\" alt=\"Define ENBT\" class=\"wp-image-850 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/DefineENBT.png 694w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/DefineENBT-300x230.png 300w\" data-sizes=\"(max-width: 694px) 100vw, 694px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 694px; --smush-placeholder-aspect-ratio: 694\/533;\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Step 2<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"323\" height=\"95\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/EthernetNewModule.png\" alt=\"IOConfig Remote ENBT\" class=\"wp-image-851 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/EthernetNewModule.png 323w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/EthernetNewModule-300x88.png 300w\" data-sizes=\"(max-width: 323px) 100vw, 323px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 323px; --smush-placeholder-aspect-ratio: 323\/95;\" \/><\/figure>\n<\/div>\n\n\n<p>Now that we have our own module defined, we need to add the target module. &nbsp; Right click the<strong> Ethernet Network<\/strong> below the module we just added to add a new module.<\/p>\n\n\n\n<p>We will be adding the network adapter in the target chassis.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"739\" height=\"494\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBT.png\" alt=\"Target ENBT\" class=\"wp-image-852 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBT.png 739w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBT-300x201.png 300w\" data-sizes=\"(max-width: 739px) 100vw, 739px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 739px; --smush-placeholder-aspect-ratio: 739\/494;\" \/><\/figure>\n<\/div>\n\n\n<p>Be sure to populate ALL fields properly. &nbsp; &nbsp;The most common mistake on this step is forgetting to change the chassis size of the target chassis.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"700\" height=\"542\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBTProperties.png\" alt=\"Target ENBT Properties\" class=\"wp-image-853 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBTProperties.png 700w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetENBTProperties-300x232.png 300w\" data-sizes=\"(max-width: 700px) 100vw, 700px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 700px; --smush-placeholder-aspect-ratio: 700\/542;\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Step 3<\/h3>\n\n\n\n<p>Next, Right-click the backplane of the <strong>TARGET<\/strong> chassis to add the target processor. &nbsp; Remember, this is not our own chassis. &nbsp; We will be adding the processor that is producing the data to it&#8217;s own chassis.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"438\" height=\"222\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetBackplane.png\" alt=\"Target Backplane\" class=\"wp-image-854 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetBackplane.png 438w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetBackplane-300x152.png 300w\" data-sizes=\"(max-width: 438px) 100vw, 438px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 438px; --smush-placeholder-aspect-ratio: 438\/222;\" \/><\/figure>\n<\/div>\n\n\n<p>In our example, we are adding an L71 processor to the backplane. &nbsp; &nbsp;Be sure to modify this step for the model number of your own processor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"737\" height=\"494\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetL71.png\" alt=\"Target L71\" class=\"wp-image-855 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetL71.png 737w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetL71-300x201.png 300w\" data-sizes=\"(max-width: 737px) 100vw, 737px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 737px; --smush-placeholder-aspect-ratio: 737\/494;\" \/><\/figure>\n<\/div>\n\n\n<p>Be sure to populate all fields correctly.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"561\" height=\"316\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetProcessor.png\" alt=\"Target Processor\" class=\"wp-image-856 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetProcessor.png 561w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/TargetProcessor-300x169.png 300w\" data-sizes=\"(max-width: 561px) 100vw, 561px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 561px; --smush-placeholder-aspect-ratio: 561\/316;\" \/><\/figure>\n<\/div>\n\n\n<p>When you are finished, your I\/O Tree should look similar to this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"339\" height=\"173\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/iotree.png\" alt=\"Final IO Tree\" class=\"wp-image-857 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/iotree.png 339w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/iotree-300x153.png 300w\" data-sizes=\"(max-width: 339px) 100vw, 339px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 339px; --smush-placeholder-aspect-ratio: 339\/173;\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Create the Consumed tag for th ControlLogix Producer Consumer Model<\/h2>\n\n\n\n<p>Now, let&#8217;s go to the controller tag database. &nbsp; Furthermore, we need to be in &#8220;Edit Tags&#8221; mode. &nbsp; We will create a tag called &#8220;Inbox&#8221;. &nbsp; This datatype must match the datatype of the tag that is producing the data. &nbsp; The &#8220;Outbox&#8221; tag in the target processor has a DINT Datatype.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"474\" height=\"181\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateInbox.png\" alt=\"Create Inbox\" class=\"wp-image-858 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateInbox.png 474w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateInbox-300x115.png 300w\" data-sizes=\"(max-width: 474px) 100vw, 474px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 474px; --smush-placeholder-aspect-ratio: 474\/181;\" \/><\/figure>\n<\/div>\n\n\n<p>At this point, right-click the tag &#8220;Inbox&#8221;, and choose &#8220;Edit Inbox Properties&#8221;. &nbsp; We will make this a consumed tag.<\/p>\n\n\n\n<p>Click the &#8220;Connection&#8221; Button, and we will configure this tag to connect to the Outbox tag of the target processor<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"396\" height=\"334\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxProperties.png\" alt=\"Inbox Properties\" class=\"wp-image-859 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxProperties.png 396w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxProperties-300x253.png 300w\" data-sizes=\"(max-width: 396px) 100vw, 396px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 396px; --smush-placeholder-aspect-ratio: 396\/334;\" \/><\/figure>\n<\/div>\n\n\n<p>Obviously, the producer is &#8220;Target_Processor&#8221;, because that is what we named the processor in the I\/O Tree. &nbsp; Be sure to populate the &#8220;Remote Data&#8221; Field. &nbsp; This will be the tag in the Target_Processor that we want to consume data from.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"496\" height=\"299\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConnection.png\" alt=\"Inbox Connection\" class=\"wp-image-860 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConnection.png 496w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConnection-300x181.png 300w\" data-sizes=\"(max-width: 496px) 100vw, 496px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 496px; --smush-placeholder-aspect-ratio: 496\/299;\" \/><\/figure>\n<\/div>\n\n\n<p>The RPI is the &#8220;Requested Packet Interval&#8221;. &nbsp; The lower this number is set, the faster the tag will update. &nbsp; &nbsp;If this number is set higher, the tag will update less frequently, but we are reducing the amount of traffic on the network.<\/p>\n\n\n\n<p>At this point, Download to your processor, and go to &#8220;Monitor Tags&#8221;. &nbsp; Your &#8220;Inbox tag should match the random data that we placed into the Outbox of the producing processor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"560\" height=\"186\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConfirmation.png\" alt=\"Inbox Confirmation\" class=\"wp-image-861 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConfirmation.png 560w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/InboxConfirmation-300x100.png 300w\" data-sizes=\"(max-width: 560px) 100vw, 560px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 560px; --smush-placeholder-aspect-ratio: 560\/186;\" \/><\/figure>\n<\/div>\n\n\n<p>If you are still online with the processor that is producing the Outbox, change the value in the Outbox. &nbsp; You will see the value change within 20ms on the consumed tag.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary for the ControlLogix Producer Consumer Model<\/h2>\n\n\n\n<p>In short, the ControlLogix Producer Consumer Model is one way for processors to transfer data between each other.  In the processor that is producing the data, you simply create a tag and mark this as produced.  On the other hand, the processor consuming the data has a few more steps.  First, you must have a path to the target processor.  At this point, you create a tag, then make this tag consumed.  Next, in the properties of the tag consuming data, you must tell the tag what processor to consume data from.  Additionally, you must tell the consumed tag which tag in the producer to receive data from.<\/p>\n\n\n\n<p>Just be sure you configure the produced tag for the number of consumers to expect.  The advantage of using this model is that the data transfer is deterministic.  That is to say, it has a regular update interval.  Additionally, the producer consumer model can be multicast.  If you are doing this over Ethernet, then you must have a 1756-ENBT or later.  (The old 1756-ENET will not work).  If you are doing this over ControlNet, then you must re-schedule the network once your producer consumer model is set up.<\/p>\n\n\n\n<p>For more information about ControlLogix, please visit the<a href=\"https:\/\/bryceautomation.com\/index.php\/category\/controllogix\/\"> ControlLogix Post<\/a> page!<\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-3790686656\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to ControlLogix Producer Consumer Model The ControlLogix Producer Consumer model is a way for processors to share information. This can be an array of DINTs, or it might be a user-defined datatype designed to contain the status of equipment. An example of where we might use the Producer Consumer model would be on a <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":842,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":{"0":"post-841","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-controllogix","8":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ControlLogix Producer Consumer Model<\/title>\n<meta name=\"description\" content=\"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ControlLogix Producer Consumer Model\" \/>\n<meta property=\"og:description\" content=\"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-01T07:42:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-01T07:42:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"832\" \/>\n\t<meta property=\"og:image:height\" content=\"351\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"ControlLogix Producer Consumer Model\",\"datePublished\":\"2023-02-01T07:42:15+00:00\",\"dateModified\":\"2023-02-01T07:42:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/\"},\"wordCount\":1350,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/ProducerConsumerImage2.png\",\"articleSection\":[\"ControlLogix\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/\",\"name\":\"ControlLogix Producer Consumer Model\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/ProducerConsumerImage2.png\",\"datePublished\":\"2023-02-01T07:42:15+00:00\",\"dateModified\":\"2023-02-01T07:42:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/ProducerConsumerImage2.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/ProducerConsumerImage2.png\",\"width\":832,\"height\":351,\"caption\":\"Producer\\\/Consumer Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2023\\\/02\\\/01\\\/controllogix-producerconsumer-model\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ControlLogix Producer Consumer Model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ControlLogix Producer Consumer Model","description":"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/","og_locale":"en_US","og_type":"article","og_title":"ControlLogix Producer Consumer Model","og_description":"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.","og_url":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2023-02-01T07:42:15+00:00","article_modified_time":"2023-02-01T07:42:17+00:00","og_image":[{"width":832,"height":351,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"ControlLogix Producer Consumer Model","datePublished":"2023-02-01T07:42:15+00:00","dateModified":"2023-02-01T07:42:17+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/"},"wordCount":1350,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png","articleSection":["ControlLogix"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/","url":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/","name":"ControlLogix Producer Consumer Model","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png","datePublished":"2023-02-01T07:42:15+00:00","dateModified":"2023-02-01T07:42:17+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"How to set up the ControlLogix Producer Consumer Model to transfer data between two ControlLogix processors.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ProducerConsumerImage2.png","width":832,"height":351,"caption":"Producer\/Consumer Image"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2023\/02\/01\/controllogix-producerconsumer-model\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"ControlLogix Producer Consumer Model"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=841"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/841\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/842"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}