{"id":662,"date":"2017-05-28T14:23:48","date_gmt":"2017-05-28T14:23:48","guid":{"rendered":"http:\/\/bryceautomation.com\/?p=662"},"modified":"2017-05-28T16:57:48","modified_gmt":"2017-05-28T16:57:48","slug":"controllogix-simple-subroutines","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/","title":{"rendered":"ControlLogix Simple Subroutines"},"content":{"rendered":"<h2>Introduction to Simple subroutine.<\/h2>\n<p>We use ControlLogix simple subroutines mainly for the purpose of organization. \u00a0 \u00a0You can add all of the logic to the MainRoutine. \u00a0However,\u00a0it&#8217;s easier to program and troubleshoot when you divide logic into subroutines.<\/p><div id=\"bryce-716132654\" 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>You need to tell the processor to execute subroutines with the JSR instruction. \u00a0Usually, you will place the JSR instruction for simple subroutines into the MainRoutine.<\/p>\n<h2>Add Subroutines<\/h2>\n<p>When you add the subroutine, you must also declare the language that the subroutine will use. \u00a0 Controllogix supports four programming languages: \u00a0Ladder Diagram, Sequential Function Chart, Function Block Diagram, and Structured Text. \u00a0The most common type of subroutine is &#8220;Ladder Diagram&#8221;. \u00a0Many industrial locations are starting to use Function Block Diagrams for analog manipulation. \u00a0You can use Structured Text for complex algorithms that are cumbersome to work with in Ladder Diagrams. \u00a0 You will not normally use Sequential Function Blocks in the United States, although, there are a few locations where this is common.<\/p>\n<p>To add subroutines, right click the program. \u00a0 Here, we will\u00a0just use the main program.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-664 aligncenter lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/newsubroutine.png\" alt=\"Add Subroutine\" width=\"543\" height=\"145\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/newsubroutine.png 543w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/newsubroutine-300x80.png 300w\" data-sizes=\"(max-width: 543px) 100vw, 543px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 543px; --smush-placeholder-aspect-ratio: 543\/145;\" \/><\/p>\n<p>The name of this routine is &#8220;Pumps&#8221;, and it will be a ladder diagram.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-665 aligncenter lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/createroutine.png\" alt=\"Create Subroutine\" width=\"369\" height=\"255\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/createroutine.png 369w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/createroutine-300x207.png 300w\" data-sizes=\"(max-width: 369px) 100vw, 369px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 369px; --smush-placeholder-aspect-ratio: 369\/255;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Follow the same procedure to create two more subroutines: \u00a0 Motors and Valves. \u00a0When you finish, your program tree should look like this:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-666 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/finallisting.png\" alt=\"Subroutine List\" width=\"239\" height=\"129\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 239px; --smush-placeholder-aspect-ratio: 239\/129;\" \/><\/p>\n<p>Next, add your JSR instructions. \u00a0 To do this, open (double-click) the MainRoutine. \u00a0Highlight Rung #0, then type the following text: \u00a0&#8220;jsr pumps&#8221;. \u00a0That is jsr (then a space) followed by the routine name &#8220;pumps&#8221;.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-667 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/addjsr.png\" alt=\"Adding JSR\" width=\"585\" height=\"120\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/addjsr.png 585w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/addjsr-300x62.png 300w\" data-sizes=\"(max-width: 585px) 100vw, 585px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 585px; --smush-placeholder-aspect-ratio: 585\/120;\" \/><\/p>\n<p>Repeat this procedure for the motors, and valves routine. \u00a0 Be sure to click the END rung each time to prevent overwriting your previous logic. \u00a0When you are finished, your logic should look like this:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-668 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/finallogic.png\" alt=\"Final JSR Logic\" width=\"407\" height=\"306\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/finallogic.png 407w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/finallogic-300x226.png 300w\" data-sizes=\"(max-width: 407px) 100vw, 407px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 407px; --smush-placeholder-aspect-ratio: 407\/306;\" \/><\/p>\n<p>Your processor will execute the pumps routine, then come back to the JSR in the main routine. \u00a0 Next, the logic will execute the motors routine, then return to the MainRoutine. \u00a0 \u00a0Finally, your logic will execute the valves routine, then return back to the main routine to execute any remaining logic.<\/p>\n<h2>Nesting Subroutines<\/h2>\n<p>Let&#8217;s take a look at what would happen if one of the JSR&#8217;s were in a subroutine. \u00a0 \u00a0This is called &#8220;Nesting Subroutines&#8221;. \u00a0You have to be very careful when nesting subroutines. \u00a0 Here is an example of what the scan will look like if the JSR to Valves is placed in the motors routine.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-669 lazyload\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png\" alt=\"Nesting Subroutines\" width=\"484\" height=\"683\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png 484w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines-213x300.png 213w\" data-sizes=\"(max-width: 484px) 100vw, 484px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 484px; --smush-placeholder-aspect-ratio: 484\/683;\" \/><\/p>\n<p>If the processor attempts to nest subroutines too many times (32 levels deep), the processor will fault. \u00a0Except in a very small amount of cases, you never want to jump to the same subroutine that you are placing the JSR in. \u00a0This will usually cause a processor fault very quickly. \u00a0Here, we are just nesting subroutines 2 levels deep.<\/p>\n<p>Also, read about <a href=\"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/passing-parameters-to-subroutines\/\">passing parameters<\/a> to subroutines if you wish to use subroutines as a function.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212; Ricky Bryce<\/p>\n<p>&nbsp;<\/p>\n<div id=\"bryce-2184943434\" 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 Simple subroutine. We use ControlLogix simple subroutines mainly for the purpose of organization. \u00a0 \u00a0You can add all of the logic to the MainRoutine. \u00a0However,\u00a0it&#8217;s easier to program and troubleshoot when you divide logic into subroutines. You need to tell the processor to execute subroutines with the JSR instruction. \u00a0Usually, you will place <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":669,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":{"0":"post-662","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>How to add and jump to simple subroutines in ControlLogix.<\/title>\n<meta name=\"description\" content=\"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.\" \/>\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\/05\/28\/controllogix-simple-subroutines\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to add and jump to simple subroutines in ControlLogix.\" \/>\n<meta property=\"og:description\" content=\"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/\" \/>\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-05-28T14:23:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-05-28T16:57:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png\" \/>\n\t<meta property=\"og:image:width\" content=\"484\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\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\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"ControlLogix Simple Subroutines\",\"datePublished\":\"2017-05-28T14:23:48+00:00\",\"dateModified\":\"2017-05-28T16:57:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/\"},\"wordCount\":467,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/05\\\/simplesubroutines.png\",\"articleSection\":[\"ControlLogix\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/\",\"name\":\"How to add and jump to simple subroutines in ControlLogix.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/05\\\/simplesubroutines.png\",\"datePublished\":\"2017-05-28T14:23:48+00:00\",\"dateModified\":\"2017-05-28T16:57:48+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/05\\\/simplesubroutines.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/05\\\/simplesubroutines.png\",\"width\":484,\"height\":683,\"caption\":\"Nesting Subroutines\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/05\\\/28\\\/controllogix-simple-subroutines\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ControlLogix Simple Subroutines\"}]},{\"@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":"How to add and jump to simple subroutines in ControlLogix.","description":"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.","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\/05\/28\/controllogix-simple-subroutines\/","og_locale":"en_US","og_type":"article","og_title":"How to add and jump to simple subroutines in ControlLogix.","og_description":"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.","og_url":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2017-05-28T14:23:48+00:00","article_modified_time":"2017-05-28T16:57:48+00:00","og_image":[{"width":484,"height":683,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.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\/05\/28\/controllogix-simple-subroutines\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"ControlLogix Simple Subroutines","datePublished":"2017-05-28T14:23:48+00:00","dateModified":"2017-05-28T16:57:48+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/"},"wordCount":467,"commentCount":1,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png","articleSection":["ControlLogix"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/","url":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/","name":"How to add and jump to simple subroutines in ControlLogix.","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png","datePublished":"2017-05-28T14:23:48+00:00","dateModified":"2017-05-28T16:57:48+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Here we will create subroutines in the ControlLogix processor, and add the JSR instructions to execute the subroutines in our logic.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/05\/simplesubroutines.png","width":484,"height":683,"caption":"Nesting Subroutines"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/05\/28\/controllogix-simple-subroutines\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"ControlLogix Simple Subroutines"}]},{"@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\/662","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=662"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/662\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/669"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}