{"id":911,"date":"2017-06-03T17:45:49","date_gmt":"2017-06-03T17:45:49","guid":{"rendered":"http:\/\/bryceautomation.com\/?p=911"},"modified":"2022-08-18T22:54:27","modified_gmt":"2022-08-18T22:54:27","slug":"controllogix-udts","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/","title":{"rendered":"ControlLogix UDTs"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction to ControlLogix UDTs<\/h2>\n\n\n\n<p>ControlLogix UDTs are User Defined Data Types. &nbsp; User Defined Data Types allow us to create a data structure for a particular part of our system. &nbsp; We can then use that data structure throughout our project. &nbsp; &nbsp;Examples of where we might use a UDT would be when we have multiple motors, pumps, or valves in a project.<\/p><div id=\"bryce-3701896983\" 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>Data types are just &#8220;Menu Items&#8221;. &nbsp; When you walk into a restaurant, and order a #1 Value meal, the cashier knows exactly what you want. &nbsp; You don&#8217;t have to specify each item individually. &nbsp; It&#8217;s the same with Data Types. &nbsp; When you create a tag, and give the tag a data type, Studio 5000 knows exactly how to structure that tag.<\/p>\n\n\n\n<p>Before we get into UDT&#8217;s, let&#8217;s take a look at a pre-defined data type that you already understand. &nbsp;The timer data type is already defined by default in a project. &nbsp; The timer is <strong>PREDEFINED<\/strong>. &nbsp;When you create a tag, and give it a timer data type, it&#8217;s data structure includes the EN, DN, TT, ACC, and PRE values.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"550\" height=\"120\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Timertype.png\" alt=\"Timer Type\" class=\"wp-image-912 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Timertype.png 550w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Timertype-300x65.png 300w\" data-sizes=\"(max-width: 550px) 100vw, 550px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 550px; --smush-placeholder-aspect-ratio: 550\/120;\" \/><\/figure>\n<\/div>\n\n\n<p>An example a <strong>USER DEFINED<\/strong> data Type would be a valve. &nbsp; &nbsp;We might have ten valves in our system, and each valve would have the same data structure. &nbsp; Each valve would have an Open and Closed limit switch, Open and Closed Solenoid, fault bit, fault timer, etc. &nbsp; Instead of creating each individual tag for every valve, we can create a valve data type. &nbsp; &nbsp;Then any time we need to use a valve, we can name the valve, and give it the valve data type. &nbsp; The tag would then inherit everything we need for a valve.<\/p>\n\n\n\n<p>Here is what we might end up with for a tag with a Valve data type after it&#8217;s been created: &nbsp;(We&#8217;ll create this type in the steps below)<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"633\" height=\"137\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveExample.png\" alt=\"Valve Example\" class=\"wp-image-913 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveExample.png 633w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveExample-300x65.png 300w\" data-sizes=\"(max-width: 633px) 100vw, 633px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 633px; --smush-placeholder-aspect-ratio: 633\/137;\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Creating the ControlLogix UDTs<\/h2>\n\n\n\n<p>To create the UDT, right click the &#8220;User Defined&#8221; folder (in your Controller Organizer window) under &#8220;Data Types&#8221;. &nbsp; Then select &#8220;New Data Type&#8221;.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"368\" height=\"159\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateDatatype.png\" alt=\"Create Data Type\" class=\"wp-image-914 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateDatatype.png 368w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/CreateDatatype-300x130.png 300w\" data-sizes=\"(max-width: 368px) 100vw, 368px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 368px; --smush-placeholder-aspect-ratio: 368\/159;\" \/><\/figure>\n<\/div>\n\n\n<p>Next, we&#8217;ll name the Data type &#8220;Valve&#8221; and add the members that you will need for each valve. \u00a0 If you have different types of valves, such as an MOV (Motor Operated Valve), or a positioning valve, you may want to create a different UDT for each type. \u00a0 \u00a0Our example is a simple solenoid  valve.<\/p>\n\n\n\n<p><strong><em>Note: \u00a0 If you also add a description to each member, this description will also carry over to the tags we create. \u00a0 Here we will keep this simple though for the purpose of understanding the structure itself.<\/em><\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"626\" height=\"289\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveType.png\" alt=\"Valve Data Type\" class=\"wp-image-915 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveType.png 626w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValveType-300x138.png 300w\" data-sizes=\"(max-width: 626px) 100vw, 626px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 626px; --smush-placeholder-aspect-ratio: 626\/289;\" \/><\/figure>\n<\/div>\n\n\n<p>Be sure to press &#8220;Apply&#8221; and &#8220;OK&#8221; to accept your new data type. &nbsp; &nbsp;Next, we will go to the controller tag database, and utilize the data type that we just created. &nbsp; Create 3 tags: &nbsp;Suction_Valve, Discharge_Valve, and Bypass_Valve. &nbsp; Each will have the &#8220;Valve&#8221; Data type.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"468\" height=\"76\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/AllValves.png\" alt=\"Create Valves\" class=\"wp-image-916 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/AllValves.png 468w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/AllValves-300x49.png 300w\" data-sizes=\"(max-width: 468px) 100vw, 468px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 468px; --smush-placeholder-aspect-ratio: 468\/76;\" \/><\/figure>\n<\/div>\n\n\n<p>Now, you can go to &#8220;Monitor Tags&#8221;, and expand each tag. &nbsp;You will see that all the information we need about any of our valves is all in one place.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"632\" height=\"436\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValvesExpanded.png\" alt=\"Valves Expanded\" class=\"wp-image-917 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValvesExpanded.png 632w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/ValvesExpanded-300x207.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\/436;\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Mapping the tags<\/h2>\n\n\n\n<p>These tags don&#8217;t cause anything to happen in the real world as they are. \u00a0They are &#8220;User Friendly&#8221; tag names though.\u00a0 \u00a0We need logic to map the discrete I\/O (such as Local:5:I.Data.0) to these tags. \u00a0 \u00a0Once we map the Discrete I\/O tags have been mapped into these &#8220;User Friendly&#8221; tags,\u00a0we can use them in logic.<\/p>\n\n\n\n<p>Here is an example of mapping:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"519\" height=\"342\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png\" alt=\"Mapping\" class=\"wp-image-918 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png 519w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping-300x198.png 300w\" data-sizes=\"(max-width: 519px) 100vw, 519px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 519px; --smush-placeholder-aspect-ratio: 519\/342;\" \/><\/figure>\n<\/div>\n\n\n<p>The advantage of using this method is that all of the data for each valve is in one place. \u00a0 If the troubleshooter has a problem with a valve not opening for example, he will just find the tag for this valve. \u00a0 Then he can cross-reference the open solenoid, to start tracing through logic to find out why the valve did not energize.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary of ControlLogix UDTs<\/h2>\n\n\n\n<p>In short, we use ControlLogix UDTs to create a user defined data structure.  It&#8217;s up to you as a programmer to move data into and out of this data structure.  Think of UDT&#8217;s as a &#8220;Menu Item&#8221;.  Just by creating the UDT, you are not using it anywhere.  Once you create a tag, and give it the data type of the UDT you created, it will be available for use by your program.  <\/p>\n\n\n\n<p>In other words, if you walk into a restaurant, you see a value meal on the menu.  You don&#8217;t have any meals until you order them.  When you create a tag with that data type, you are &#8220;ordering&#8221; an instance of that data type..  You can create as many tags as you like with this UDT within the limitations of the processor&#8217;s memory.<\/p>\n\n\n\n<p>For other information on 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-1426399106\" 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 UDTs ControlLogix UDTs are User Defined Data Types. &nbsp; User Defined Data Types allow us to create a data structure for a particular part of our system. &nbsp; We can then use that data structure throughout our project. &nbsp; &nbsp;Examples of where we might use a UDT would be when we have <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[11,38,37],"class_list":{"0":"post-911","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-controllogix","8":"tag-controllogix","9":"tag-data-types","10":"tag-udt","11":"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 UDTs -- User Defined Datatypes -- BryceAutomation<\/title>\n<meta name=\"description\" content=\"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.\" \/>\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\/03\/controllogix-udts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ControlLogix UDTs -- User Defined Datatypes -- BryceAutomation\" \/>\n<meta property=\"og:description\" content=\"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/\" \/>\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-03T17:45:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-18T22:54:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png\" \/>\n\t<meta property=\"og:image:width\" content=\"519\" \/>\n\t<meta property=\"og:image:height\" content=\"342\" \/>\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\\\/03\\\/controllogix-udts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"ControlLogix UDTs\",\"datePublished\":\"2017-06-03T17:45:49+00:00\",\"dateModified\":\"2022-08-18T22:54:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/\"},\"wordCount\":819,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Mapping.png\",\"keywords\":[\"ControlLogix\",\"Data Types\",\"UDT\"],\"articleSection\":[\"ControlLogix\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/\",\"name\":\"ControlLogix UDTs -- User Defined Datatypes -- BryceAutomation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Mapping.png\",\"datePublished\":\"2017-06-03T17:45:49+00:00\",\"dateModified\":\"2022-08-18T22:54:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Mapping.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/Mapping.png\",\"width\":519,\"height\":342,\"caption\":\"Mapping\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2017\\\/06\\\/03\\\/controllogix-udts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ControlLogix UDTs\"}]},{\"@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 UDTs -- User Defined Datatypes -- BryceAutomation","description":"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.","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\/03\/controllogix-udts\/","og_locale":"en_US","og_type":"article","og_title":"ControlLogix UDTs -- User Defined Datatypes -- BryceAutomation","og_description":"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.","og_url":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2017-06-03T17:45:49+00:00","article_modified_time":"2022-08-18T22:54:27+00:00","og_image":[{"width":519,"height":342,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.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\/03\/controllogix-udts\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"ControlLogix UDTs","datePublished":"2017-06-03T17:45:49+00:00","dateModified":"2022-08-18T22:54:27+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/"},"wordCount":819,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png","keywords":["ControlLogix","Data Types","UDT"],"articleSection":["ControlLogix"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/","url":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/","name":"ControlLogix UDTs -- User Defined Datatypes -- BryceAutomation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png","datePublished":"2017-06-03T17:45:49+00:00","dateModified":"2022-08-18T22:54:27+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Create ControlLogix UDTs in your project. These datatypes are definted by the programmer for multiple instances of the same object.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2017\/06\/Mapping.png","width":519,"height":342,"caption":"Mapping"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2017\/06\/03\/controllogix-udts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"ControlLogix UDTs"}]},{"@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\/911","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=911"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/911\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/918"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}