{"id":988,"date":"2017-06-12T16:44:02","date_gmt":"2017-06-12T16:44:02","guid":{"rendered":"http:\/\/bryceautomation.com\/?p=988"},"modified":"2017-06-12T16:44:02","modified_gmt":"2017-06-12T16:44:02","slug":"controllogix-indirect-addressing","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/","title":{"rendered":"ControlLogix Indirect Addressing"},"content":{"rendered":"<h2>Introduction to ControlLogix Indirect Addressing<\/h2>\n<p>ControlLogix Indirect Addressing allows you to have a variable address. \u00a0 This is an address that changes on the fly. \u00a0 Imagine a tank farm with 28 tanks. \u00a0 We would have the exact same logic for each tank, but a different address to access for volume calculations. \u00a0 \u00a0Indirect Addressing allows us to write the logic one time, and feed a different index into the logic. \u00a0 This index would tell the logic which tank to perform the calculations on.<\/p><div id=\"bryce-2160487587\" 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<p>Another example would be a fault log. \u00a0 Each time a fault occurs, we want to log the system time to a different memory location. \u00a0 The next day, we would then look back at the fault log. \u00a0This would tell us how many faults occurred, and the exact time of each fault.<\/p>\n<p>In this tutorial, we will start off with a simple demonstration of how indirect addressing works in the ControlLogix processor. \u00a0 Then, we will build a fault log for the purpose of troubleshooting. \u00a0I will assume that you are working on a test station with a new project in this example.<\/p>\n<h2>General Explanation of Indirect Addressing<\/h2>\n<p>If you have not yet done so, follow the <a href=\"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-gsv-command-wallclocktime\/\">tutorial <\/a>on how to access the system time. \u00a0In this tutorial, we copied the time into an array of 7 elements. \u00a0 The name of this Array is &#8220;SystemTime&#8221;. \u00a0 \u00a0 We will use this array in the example below.<\/p>\n<p>Since we&#8217;ve already created the SystemTime tag, create two more tags: \u00a0 &#8220;MyTag&#8221; and &#8220;Pointer&#8221;. \u00a0The data type of each tag will be &#8220;DINT&#8221;.<img decoding=\"async\" class=\"aligncenter size-full wp-image-990 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/tags.png\" alt=\"Create Tags\" width=\"470\" height=\"108\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/tags.png 470w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/tags-300x69.png 300w\" data-sizes=\"(max-width: 470px) 100vw, 470px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 470px; --smush-placeholder-aspect-ratio: 470\/108;\" \/><\/p>\n<p>Next, we will add a simple MOV instruction to the MainRoutine.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-991 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/movlogic.png\" alt=\"MOV Logic\" width=\"524\" height=\"133\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/movlogic.png 524w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/movlogic-300x76.png 300w\" data-sizes=\"(max-width: 524px) 100vw, 524px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 524px; --smush-placeholder-aspect-ratio: 524\/133;\" \/><\/p>\n<p>Since the value of Pointer is 0, the source of the MOV statement is SystemTime[0], and the year is moved into &#8220;MyTag&#8221;. \u00a0 If we change the value of the Pointer tag to 1, then the month is moved. \u00a0 Our source would be SystemTime[1]. \u00a0Let&#8217;s take a look at the tags. \u00a0 We&#8217;ll go to &#8220;Monitor Tags&#8221;, and make this change.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-992 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/pointer1values.png\" alt=\"Pointer=1 Values\" width=\"632\" height=\"225\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/pointer1values.png 632w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/pointer1values-300x107.png 300w\" data-sizes=\"(max-width: 632px) 100vw, 632px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 632px; --smush-placeholder-aspect-ratio: 632\/225;\" \/><\/p>\n<p>Try this with a pointer having the values 2 through 6 watching the Controller tags until you are sure that you understand how the Indirect addressing is working. \u00a0With a pointer value of 2 in this case, our MOV would place the value of 12 into MyTag. \u00a0 With a pointer value of 3, you will see a 9 in MyTag.<\/p>\n<p><em><strong>Warning: \u00a0If the pointer value attempts to access an address that does not exist, you will fault the processor!<\/strong><\/em><\/p>\n<p>When you are sure you understand how Indirect Addressing works, remove the MOV statement we just placed into your logic. \u00a0This will prevent a fault in our next section of this tutorial. \u00a0Also, put the pointer back to a value of 0 to prepare us for the next section.<\/p>\n<h2>Create a Fault Log<\/h2>\n<p>Now that you understand how Indirect Addressing works, we will create a Fault Log. \u00a0 \u00a0First, we must create some tags that we can use in this exercise. \u00a0Please create the tags as follows: MyOneShot (BOOL) and FaultLog (DINT[200,7]). \u00a0Notice the FaultLog tag is a 2 dimensional array (200 x 7).<\/p>\n<p>An easy way to create the 2-dimensional array is to click the elipsis next to DINT as shown:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-994 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faulttags.png\" alt=\"Fault Tags\" width=\"449\" height=\"61\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faulttags.png 449w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faulttags-300x41.png 300w\" data-sizes=\"(max-width: 449px) 100vw, 449px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 449px; --smush-placeholder-aspect-ratio: 449\/61;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Then create the array as 200 x 7. \u00a0You will need to set dimension 0 to the value of 7 first. \u00a0Then you will set dimension 1 to 200.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-995 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/twodimensions.png\" alt=\"TwoDimensions\" width=\"394\" height=\"313\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/twodimensions.png 394w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/twodimensions-300x238.png 300w\" data-sizes=\"(max-width: 394px) 100vw, 394px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 394px; --smush-placeholder-aspect-ratio: 394\/313;\" \/><\/p>\n<p>When finished, your tags should look like this:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-996 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/finaltags.png\" alt=\"Final Indirect Tags\" width=\"451\" height=\"118\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/finaltags.png 451w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/finaltags-300x78.png 300w\" data-sizes=\"(max-width: 451px) 100vw, 451px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 451px; --smush-placeholder-aspect-ratio: 451\/118;\" \/><\/p>\n<p>Here, we will use real I\/O, but if you do not have a real world switch, create two BOOL tags that you can toggle manually. \u00a0These will be for the fault condition, and for a reset \u00a0 Now we will add the logic to make our Fault Log work.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1001 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png\" alt=\"Fault Logic\" width=\"513\" height=\"472\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png 513w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic-300x276.png 300w\" data-sizes=\"(max-width: 513px) 100vw, 513px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 513px; --smush-placeholder-aspect-ratio: 513\/472;\" \/><\/p>\n<h3>Description of operation<\/h3>\n<p>In the first rung, the XIC will be our fault condition. \u00a0 The One Shot instruction will only execute the copy one time per alarm condition. \u00a0Otherwise, we would fill up the fault log very quickly! \u00a0 Remember our pointer is at 0. \u00a0The COP instruction will move all 7 elements of the SystemTime tag to FaultLog[0,0]. \u00a0 The ADD statement will then increment the value of our pointer. \u00a0 This way, the next time a fault occurs, our starting point will be &#8220;FaultLog[1,0]&#8221;, and so on.<\/p>\n<p>The second rung is our reset. \u00a0 If the pointer goes above 199 (or we hit the reset button), we will move the value of 0 back into our pointer. \u00a0This will cause the logic to start writing data again at the beginning of the FaultLog Tag. \u00a0 We will also use the File Fill instruction (FLL). \u00a0 This will clear the fault log starting at the beginning (FaultLog[0,0]), and fill the file with 0&#8217;s 1400 times. \u00a0 Since our array is 200 x 7, this will be 1400 elements.<\/p>\n<h3>Test your logic<\/h3>\n<p>Now, we will make everything work. \u00a0 Be sure you are not on a real process until you know what you are doing. \u00a0With Indirect Addressing, it&#8217;s very easy to fault the processor if our pointer is out of range.<\/p>\n<p>We will press the button on the first rung to simulate a fault. \u00a0 If you don&#8217;t have any remote I\/O and used an internal bit, then right-click the bit to toggle it. \u00a0 Open your FaultLog tag, and you will see the processor logged the exact time of our first fault.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1004 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition1.png\" alt=\"Fault Condition 1\" width=\"613\" height=\"355\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition1.png 613w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition1-300x174.png 300w\" data-sizes=\"(max-width: 613px) 100vw, 613px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 613px; --smush-placeholder-aspect-ratio: 613\/355;\" \/><\/p>\n<p>Our pointer was 0, so we copied the SystemTime tag into FaultLog[0,0]. \u00a0 Now, our pointer is at 1. \u00a0 The next time we have a fault, our system time will be logged at FaultLog[1,0] and so on. \u00a0 Toggle the switch (or fault simulation bit) on the first rung a few times, and watch the fault log!<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1005 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition2.png\" alt=\"Fault Condition 2\" width=\"613\" height=\"470\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition2.png 613w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultCondition2-300x230.png 300w\" data-sizes=\"(max-width: 613px) 100vw, 613px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 613px; --smush-placeholder-aspect-ratio: 613\/470;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Now if you press the reset button in the second rung, the FautLog will clear.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1006 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultClear.png\" alt=\"Fault Clear\" width=\"614\" height=\"472\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultClear.png 614w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/FaultClear-300x231.png 300w\" data-sizes=\"(max-width: 614px) 100vw, 614px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 614px; --smush-placeholder-aspect-ratio: 614\/472;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>For more information, please visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/controllogix\/\">ControlLogix post page<\/a>!<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212; Ricky Bryce<\/p>\n<p>&nbsp;<\/p>\n<div id=\"bryce-4075308918\" 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 Indirect Addressing ControlLogix Indirect Addressing allows you to have a variable address. \u00a0 This is an address that changes on the fly. \u00a0 Imagine a tank farm with 28 tanks. \u00a0 We would have the exact same logic for each tank, but a different address to access for volume calculations. \u00a0 \u00a0Indirect <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":1001,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[11,45],"class_list":{"0":"post-988","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-controllogix","8":"tag-controllogix","9":"tag-indirect-addressing","10":"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 Indirect Addressing: Explanation and examples<\/title>\n<meta name=\"description\" content=\"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.\" \/>\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\/2017\/06\/12\/controllogix-indirect-addressing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ControlLogix Indirect Addressing: Explanation and examples\" \/>\n<meta property=\"og:description\" content=\"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/\" \/>\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=\"2017-06-12T16:44:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png\" \/>\n\t<meta property=\"og:image:width\" content=\"513\" \/>\n\t<meta property=\"og:image:height\" content=\"472\" \/>\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\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"ControlLogix Indirect Addressing\",\"datePublished\":\"2017-06-12T16:44:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/\"},\"wordCount\":942,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/faultlogic.png\",\"keywords\":[\"ControlLogix\",\"Indirect Addressing\"],\"articleSection\":[\"ControlLogix\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/\",\"name\":\"ControlLogix Indirect Addressing: Explanation and examples\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/faultlogic.png\",\"datePublished\":\"2017-06-12T16:44:02+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/faultlogic.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/faultlogic.png\",\"width\":513,\"height\":472,\"caption\":\"Fault Logic\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/12\\\/controllogix-indirect-addressing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ControlLogix Indirect Addressing\"}]},{\"@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 Indirect Addressing: Explanation and examples","description":"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.","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\/2017\/06\/12\/controllogix-indirect-addressing\/","og_locale":"en_US","og_type":"article","og_title":"ControlLogix Indirect Addressing: Explanation and examples","og_description":"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.","og_url":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2017-06-12T16:44:02+00:00","og_image":[{"width":513,"height":472,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.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\/2017\/06\/12\/controllogix-indirect-addressing\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"ControlLogix Indirect Addressing","datePublished":"2017-06-12T16:44:02+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/"},"wordCount":942,"commentCount":2,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png","keywords":["ControlLogix","Indirect Addressing"],"articleSection":["ControlLogix"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/","url":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/","name":"ControlLogix Indirect Addressing: Explanation and examples","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png","datePublished":"2017-06-12T16:44:02+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Explanation of ControlLogix Indirect Addressing. Here we will demonstrate Indirect Addressing, and show a practical application using a fault log.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/faultlogic.png","width":513,"height":472,"caption":"Fault Logic"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/12\/controllogix-indirect-addressing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"ControlLogix Indirect Addressing"}]},{"@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\/988","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=988"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/988\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/1001"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}