{"id":292,"date":"2022-07-06T12:16:16","date_gmt":"2022-07-06T10:16:16","guid":{"rendered":"https:\/\/disorder.dk\/wonderware\/?p=292"},"modified":"2022-07-06T12:16:16","modified_gmt":"2022-07-06T10:16:16","slug":"codesys-custom-library-category","status":"publish","type":"post","link":"https:\/\/disorder.dk\/wonderware\/2022\/07\/06\/codesys-custom-library-category\/","title":{"rendered":"Codesys Custom Library Category"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When you have finally made your own functions, function blocks and awesome code, it really sucks to see that it appears under (Miscellaneous) in the Library Manager. We really just want our Codesys library to appear under our own category.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"496\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat1.jpg\" alt=\"\" class=\"wp-image-293\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat1.jpg 638w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat1-300x233.jpg 300w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><figcaption>Codesys Library Repository<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">In your library project, go to &#8220;Project Information&#8221; and you will find a popup box for adding Library Categories, but you can only choose to use categories from other libraries, so you could get it placed under &#8220;Application&#8221;. You can also choose to add a &#8220;From Description File&#8230;&#8221;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"600\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat2.jpg\" alt=\"\" class=\"wp-image-294\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat2.jpg 702w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat2-300x256.jpg 300w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><figcaption>Codesys Project Information<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">In the Codesys Help you can find a chapter on making libraries and which rules apply to do it correct. <a href=\"https:\/\/help.codesys.com\/webapp\/categories;product=LibDevSummary;version=3.5.17.0\">https:\/\/help.codesys.com\/webapp\/categories;product=LibDevSummary;version=3.5.17.0<\/a> In this article, it is mentioned that the file LibraryCategoryBase.libcat.xml follows all installtions of Codesys in a project example folder. So you just need to search for it!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"450\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat3.jpg\" alt=\"\" class=\"wp-image-295\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat3.jpg 595w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat3-300x227.jpg 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><figcaption>Location of LibraryCategoryBase.libcat.xml<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The file contains a long list of all the categories that Codesys uses, also some internal test categories that you have never seen before. It can seem confusing that you need to use a &lt;ID> of which you do not know where to get!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"622\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat4.jpg\" alt=\"\" class=\"wp-image-296\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat4.jpg 894w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat4-300x209.jpg 300w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat4-768x534.jpg 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><figcaption>LibraryCategoryBase.libcat.xml<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The &lt;ID> is a GUID and you can just generate one from any kind of GUID generator. <a href=\"https:\/\/www.guidgenerator.com\/online-guid-generator.aspx\">https:\/\/www.guidgenerator.com\/online-guid-generator.aspx<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is not something special made by Codesys, but a general agreed upon feature on how to generate unique keys with a very low probability of being duplicated.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"622\" height=\"486\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat5.jpg\" alt=\"\" class=\"wp-image-297\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat5.jpg 622w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat5-300x234.jpg 300w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><figcaption>GUID generator<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Choose a part of the file that you can modify to add your own category. Here I have only changed the comment, the &lt;Id> and the &lt;DefaultName>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"214\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat6.jpg\" alt=\"\" class=\"wp-image-298\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat6.jpg 900w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat6-300x71.jpg 300w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat6-768x183.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><figcaption>LibraryCategoryBase.libcat.xml<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The standard code that I modified for the above.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n&lt;LibraryCategories xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"LibraryCategories.xsd\">\r\n&lt;!--   Application   -->\r\n\t&lt;LibraryCategory>\r\n\t\t&lt;Id>E98088BB-59F5-4096-8784-4443932920DF&lt;\/Id>\r\n\t\t&lt;Version>1.0.0.0&lt;\/Version>\r\n\t\t&lt;DefaultName>Application&lt;\/DefaultName>\r\n\t&lt;\/LibraryCategory>\r\n&lt;\/LibraryCategories><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save the xml file and go back to the browse dialog for your category description file.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"475\" height=\"245\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat7.jpg\" alt=\"\" class=\"wp-image-299\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat7.jpg 475w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat7-300x155.jpg 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><figcaption>Library Categories<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">You might have to close down the Codesys IDE to get the library manager to update your new categories.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"621\" src=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat8.jpg\" alt=\"\" class=\"wp-image-300\" srcset=\"https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat8.jpg 636w, https:\/\/disorder.dk\/wonderware\/wp-content\/uploads\/2022\/07\/libcat8-300x293.jpg 300w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><figcaption>Custom Codesys Library Category<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Beckhoff TwinCAT is based on Codesys, so the above description works for Beckhoff Library categories as well. It is just a bit more mysterious as Beckhoff does not supply the referenced Codesys example project with the xml files in. Check out Jakob&#8217;s article on how he did it for TwinCAT: <a href=\"https:\/\/alltwincat.com\/2018\/08\/16\/library-categories\/\">https:\/\/alltwincat.com\/2018\/08\/16\/library-categories\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you have finally made your own functions, function blocks and awesome code, it really sucks to see that it appears under (Miscellaneous) in the Library Manager. We really just want our Codesys library to appear under our own category. In your library project, go to &#8220;Project Information&#8221; and you will find a popup box<\/p>\n<p class=\"excert-link-wrapper\"><a href=\"https:\/\/disorder.dk\/wonderware\/2022\/07\/06\/codesys-custom-library-category\/\" class=\"excerpt-more-link\" >Continue Reading<span class=\"screen-reader-text\"> &#8220;Codesys Custom Library Category&#8221;<\/span><span class=\"meta-nav\"> &rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[37],"tags":[34,59,32],"class_list":["post-292","post","type-post","status-publish","format-standard","hentry","category-codesys","tag-codesys","tag-library","tag-plc"],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/posts\/292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/comments?post=292"}],"version-history":[{"count":2,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/posts\/292\/revisions"}],"predecessor-version":[{"id":302,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/posts\/292\/revisions\/302"}],"wp:attachment":[{"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/media?parent=292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/categories?post=292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/disorder.dk\/wonderware\/wp-json\/wp\/v2\/tags?post=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}