{"id":387501,"date":"2024-06-29T07:21:27","date_gmt":"2024-06-29T07:21:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=387501"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=387501","title":{"rendered":"<span>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c 240 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u041f\u041b\u041a \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u0438\u043c\u0438 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d50\/5b0\/7dc\/d505b07dc706800f43a19b0db24e2a4e.jpg\" width=\"780\" height=\"441\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d50\/5b0\/7dc\/d505b07dc706800f43a19b0db24e2a4e.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e<a href=\"https:\/\/habr.com\/ru\/post\/580538\/\" rel=\"noopener noreferrer nofollow\"> \u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0430 \u043c\u043d\u0435 \u043e\u0434\u0438\u043d \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f, \u043d\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041e\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u044f\u0441\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0430.  \u0412 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0432\u043e\u0442 \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u043e. <\/p>\n<p>\u0412 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0438 \u043a \u041f\u041b\u041a.  \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442. \u0415\u0441\u0442\u044c \u0442\u0440\u0443\u0431\u0447\u0430\u0442\u044b\u0439 \u043c\u043e\u0442\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u043f\u043e\u043b\u043e\u0442\u043d\u043e \u0441\u0442\u0430\u0432\u043d\u0435\u0439.   <br \/>\u041c\u043e\u0442\u043e\u0440 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0437\u044b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0438\u0437 \u043c\u043e\u0442\u043e\u0440\u0430. <br \/>\u041e\u0431\u044b\u0447\u043d\u043e \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0438 \u043f\u043e\u043a\u0443\u043f\u0430\u044e\u0442 \u0441\u0440\u0430\u0437\u0443 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041d\u043e \u0442\u0443\u0442 \u0431\u044b\u043b \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439. \u0418 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c HMI \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u043c\u0438 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0435\u0437 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438, \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439, \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447. \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0441 \u0446\u0435\u043b\u044c\u044e \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438.   <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12c\/b9c\/53c\/12cb9c53c289149d5eb9a8e464e09295.png\" width=\"517\" height=\"576\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/12c\/b9c\/53c\/12cb9c53c289149d5eb9a8e464e09295.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e63\/9d3\/b8b\/e639d3b8b45015ee941e45fca20b060e.png\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0442\u043e\u0440\u0430 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0442\u043e\u0440\u0430 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.\" width=\"771\" height=\"623\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e63\/9d3\/b8b\/e639d3b8b45015ee941e45fca20b060e.png\"\/><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0442\u043e\u0440\u0430 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.<\/figcaption><\/figure>\n<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6c7\/3b3\/63b\/6c73b363b70ee29d40abc5d20bcf3442.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041b\u041a \u043a \u043c\u043e\u0442\u043e\u0440\u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.\" title=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041b\u041a \u043a \u043c\u043e\u0442\u043e\u0440\u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.\" width=\"689\" height=\"952\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6c7\/3b3\/63b\/6c73b363b70ee29d40abc5d20bcf3442.png\"\/><figcaption>\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041b\u041a \u043a \u043c\u043e\u0442\u043e\u0440\u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.<\/figcaption><\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u041f\u041b\u041a \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441\u0435\u0440\u0438\u044f <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-plcs\/pfc200\" rel=\"noopener noreferrer nofollow\">WAGO PFC200<\/a>, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-software\/ecockpit-engineering-software\" rel=\"noopener noreferrer nofollow\"><strong><em>e!COCKPIT<\/em><\/strong><\/a>  .   \u0421\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442 WAGO \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u0442\u0435\u043c \u0447\u0442\u043e \u0432 \u043d\u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 MATLAB. \u0412 MATLAB \u044f \u0438 \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u044f\u0437\u044b\u043a\u0438 \u041f\u041b\u041a \u0438 \u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c \u0432\u044b\u0448\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438. \u0412\u044b\u0445\u043e\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u043e\u0432 \u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0442\u043e\u0440\u0430 \u0438 \u0442\u043e\u0447\u043a\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0440\u0435\u0434\u0443\u043a\u0442\u043e\u0440 \u0432\u0438\u043d\u0442\u0430\u043c\u0438 \u0441 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0440\u0443\u0436\u0443 \u0448\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u043e\u0434 \u043e\u0442\u0432\u0451\u0440\u0442\u043a\u0443.  \u0412\u0441\u0435 \u044d\u0442\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0418 \u0432\u0441\u0435 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0432 MATLAB &#8212; Similink &#8212; Stateflow \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48e\/7f5\/47a\/48e7f547af0fd1ed4b2aac830d87629d.png\" alt=\"\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f\" title=\"\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f\" width=\"1104\" height=\"929\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48e\/7f5\/47a\/48e7f547af0fd1ed4b2aac830d87629d.png\"\/><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/648\/d20\/9d3\/648d209d3082773465c7d232fdbbb3fa.png\" alt=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 Blind_control\" title=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 Blind_control\" width=\"1165\" height=\"678\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/648\/d20\/9d3\/648d209d3082773465c7d232fdbbb3fa.png\"\/><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 Blind_control<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/31c\/dc4\/3e2\/31cdc43e22d520a26a9e4b7993e4a583.png\" alt=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438\" title=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438\" width=\"1280\" height=\"912\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/31c\/dc4\/3e2\/31cdc43e22d520a26a9e4b7993e4a583.png\"\/><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/efe\/b12\/ddc\/efeb12ddcbe0c05970068ab7f93a5f05.png\" alt=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_contro\" title=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_contro\" width=\"1292\" height=\"807\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/efe\/b12\/ddc\/efeb12ddcbe0c05970068ab7f93a5f05.png\"\/><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_contro<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3c9\/37d\/edb\/3c937dedb9ce81d099e42bc3ab17d156.png\" alt=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_buttons\" title=\"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_buttons\" width=\"1204\" height=\"699\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3c9\/37d\/edb\/3c937dedb9ce81d099e42bc3ab17d156.png\"\/><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_buttons<\/figcaption><\/figure>\n<p>\u0423\u0442\u043e\u0447\u043d\u044e, \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0438\u043c \u043c\u043e\u0442\u043e\u0440\u043e\u043c. \u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u041f\u041b\u041a \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0438\u0440\u0430\u0436\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0442\u043e\u0440\u043e\u0432.  <br \/>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443!? <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0437\u0434\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043b\u043e\u0433\u0438\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 HMI, \u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u041f\u041b\u041a. \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 HMI \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0442\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0438: \u0432\u0432\u0435\u0440\u0445, \u0441\u0442\u043e\u043f, \u0432\u043d\u0438\u0437.<br \/>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 HMI \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043a\u0430\u0437\u044b  \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a, \u0438 \u044d\u0442\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 HMI.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u041f\u041b\u041a \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c. \u041a\u043d\u043e\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0438 \u0431\u0435\u0437 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u044f. \u0420\u0435\u0436\u0438\u043c \u0438 \u0442\u0438\u043f \u043a\u043d\u043e\u043f\u043e\u043a \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c Btn_mode. \u041e\u043d \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u043d\u043e\u043f\u043a\u0438.  <\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u043b\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0440\u0435\u043b\u0435. \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430 \u043c\u043e\u0442\u043e\u0440 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438 \u043f\u0443\u0441\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440 \u043d\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u0438\u043b\u0441\u044f. \u0418\u043d\u0430\u0447\u0435 \u0440\u0435\u043b\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0431\u0433\u043e\u0440\u044f\u0442 \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043a\u043e\u043d\u0442\u0430\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043b\u0438\u043f\u043d\u0443\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 Stateflow \u0441 \u0438\u043c\u0435\u043d\u0435\u043c Motor.     <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043d\u043e\u043f\u043e\u043a:<\/p>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 <\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Btn_1 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u043d\u0438\u0437<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Btn_2 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 1 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 <\/strong><\/p>\n<ul>\n<li>\n<p>1.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445<\/p>\n<\/li>\n<li>\n<p>2.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>3.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u043d\u0438\u0437<\/p>\n<\/li>\n<li>\n<p>4.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u0443\u043d\u043a\u0442\u0443 1 <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 2 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0442\u043e\u0440 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u044a\u0435\u043c \u0432\u0432\u0435\u0440\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0414\u0432\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u0432 Stateflow \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0442\u043b\u0430\u0436\u0435\u043d\u0430 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Statement List (STL) \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-software\/ecockpit-engineering-software\" rel=\"noopener noreferrer nofollow\"><strong><em>e!COCKPIT<\/em><\/strong><\/a><strong><em>. <br \/><\/em><\/strong>\u0418 \u0432\u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e! \u0420\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>CASE ssMethodType OF     SS_INITIALIZE:          DelayInput1_DSTATE := FALSE;         DelayInput1_DSTATE_i := FALSE;         DelayInput1_DSTATE_m := FALSE;         is_active_Button := 0;         is_Button := c_Blind_contro_IN_NO_ACTIVE;         is_HMI_control := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_Local_control := c_Blind_contro_IN_NO_ACTIVE;         was_Local_control := c_Blind_contro_IN_NO_ACTIVE;         is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;         is_Mode1 := c_Blind_contro_IN_NO_ACTIVE;         is_Released := c_Blind_contro_IN_NO_ACTIVE;         was_Released := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_Mode2 := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_active_HMI_buttons := 0;         is_HMI_buttons := c_Blind_contro_IN_NO_ACTIVE;         is_active_Motor := 0;         is_Motor := c_Blind_contro_IN_NO_ACTIVE;         is_DOWN := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i2(timerAction := 1, maxTime := 0);         is_UP := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i2(timerAction := 1, maxTime := 0);         is_active_c3_Blind_control0 := 0;         b_st := FALSE;         HMI_Btn_UP_req := FALSE;         HMI_Btn_Down_req := FALSE;         HMI_Btn_Stop_req := FALSE;         HMI_req := FALSE;         UP_mode := FALSE;         DOWN_mode := FALSE;     SS_STEP:          rtb_FixPtRelationalOperator := BOOL_TO_DINT(HMI_Btn_Up) > BOOL_TO_DINT(DelayInput1_DSTATE);         b_rtb_FixPtRelationalOperat := BOOL_TO_DINT(HMI_Btn_Down) > BOOL_TO_DINT(DelayInput1_DSTATE_i);         c_rtb_FixPtRelationalOperat := BOOL_TO_DINT(HMI_Btn_Stop) > BOOL_TO_DINT(DelayInput1_DSTATE_m);          IF is_active_c3_Blind_control0 = 0 THEN              is_active_c3_Blind_control0 := 1;             is_active_Motor := 1;             Relay_DIR := FALSE;             is_Motor := Blind_control0_IN_IDLE;             temporalCounter_i2(timerAction := 1, maxTime := 0);             Relay_PWR := FALSE;             is_active_Button := 1;             is_Button := Blind_control0_IN_Begin;             is_active_HMI_buttons := 1;             is_HMI_buttons := Blind_control0_IN_Btns;         ELSE               IF is_active_Motor &lt;> 0 THEN                   CASE is_Motor OF                     Blind_control0_IN_DOWN:                           CASE is_DOWN OF                             Blind_control0_IN_MOV_DOWN:                                  ;                                 ;                             c_Blind_control0_IN_MOV_DOW:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                     Relay_PWR := TRUE;                                 END_IF;                          END_CASE;                      Blind_control0_IN_IDLE:                          temporalCounter_i2(timerAction := 2, maxTime := 100);                          IF temporalCounter_i2.done THEN                               IF Relay_DIR THEN                                  Relay_DIR := FALSE;                                 is_Motor := Blind_control0_IN_IDLE;                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                 Relay_PWR := FALSE;                             END_IF;                          END_IF;                      Blind_control0_IN_PreIDLE:                          temporalCounter_i2(timerAction := 2, maxTime := 100);                          IF temporalCounter_i2.done THEN                              is_Motor := Blind_control0_IN_IDLE;                             temporalCounter_i2(timerAction := 1, maxTime := 0);                             Relay_PWR := FALSE;                         END_IF;                      Blind_control0_IN_UP_j:                           CASE is_UP OF                             Blind_control0_IN_MOV_UP:                                  ;                                 ;                             c_Blind_control0_IN_MOV_UP_:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_UP := Blind_control0_IN_MOV_UP;                                     Relay_PWR := TRUE;                                 END_IF;                          END_CASE;                  END_CASE;              END_IF;               IF is_active_Button &lt;> 0 THEN                  temp1 := FALSE;                 temp2 := FALSE;                  CASE is_Button OF                     Blind_control0_IN_Begin:                           CASE Btn_mode OF                             1:                                  is_Button := c_Blind_control0_IN_Local_c;                                 is_Local_control := Blind_control0_IN_Mode1;                                 was_Local_control := Blind_control0_IN_Mode1;                                  IF is_active_Motor &lt;> 0 THEN                                       CASE is_Motor OF                                         Blind_control0_IN_DOWN:                                               CASE is_DOWN OF                                                 Blind_control0_IN_MOV_DOWN:                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                     DOWN_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_DOW:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                          Blind_control0_IN_IDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                   IF Relay_DIR THEN                                                      Relay_DIR := FALSE;                                                     is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              END_IF;                                          Blind_control0_IN_PreIDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                  is_Motor := Blind_control0_IN_IDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             END_IF;                                          Blind_control0_IN_UP_j:                                               CASE is_UP OF                                                 Blind_control0_IN_MOV_UP:                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                     UP_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_UP_:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_UP := Blind_control0_IN_MOV_UP;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                      END_CASE;                                  END_IF;                                  is_Mode1 := Blind_control0_IN_Begin;                             2:                                  is_Button := c_Blind_control0_IN_Local_c;                                 is_Local_control := Blind_control0_IN_Mode2;                                 was_Local_control := Blind_control0_IN_Mode2;                                  IF is_active_Motor &lt;> 0 THEN                                       CASE is_Motor OF                                         Blind_control0_IN_DOWN:                                               CASE is_DOWN OF                                                 Blind_control0_IN_MOV_DOWN:                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                     DOWN_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_DOW:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                          Blind_control0_IN_IDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                   IF Relay_DIR THEN                                                      Relay_DIR := FALSE;                                                     is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              END_IF;                                          Blind_control0_IN_PreIDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                  is_Motor := Blind_control0_IN_IDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             END_IF;                                          Blind_control0_IN_UP_j:                                               CASE is_UP OF                                                 Blind_control0_IN_MOV_UP:                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                     UP_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_UP_:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_UP := Blind_control0_IN_MOV_UP;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                      END_CASE;                                  END_IF;                                  is_Mode2 := Blind_control0_IN_Begin;                                 temporalCounter_i1(timerAction := 1, maxTime := 0);                             0:                                  is_Button := c_Blind_control0_IN_Local_c;                                 is_Local_control := Blind_control0_IN_Mode01;                                 was_Local_control := Blind_control0_IN_Mode01;                                  IF is_active_Motor &lt;> 0 THEN                                       CASE is_Motor OF                                         Blind_control0_IN_DOWN:                                               CASE is_DOWN OF                                                 Blind_control0_IN_MOV_DOWN:                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                     DOWN_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_DOW:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                          Blind_control0_IN_IDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                   IF Relay_DIR THEN                                                      Relay_DIR := FALSE;                                                     is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              END_IF;                                          Blind_control0_IN_PreIDLE:                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                              IF temporalCounter_i2.done THEN                                                  is_Motor := Blind_control0_IN_IDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             END_IF;                                          Blind_control0_IN_UP_j:                                               CASE is_UP OF                                                 Blind_control0_IN_MOV_UP:                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                     UP_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 c_Blind_control0_IN_MOV_UP_:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_UP := Blind_control0_IN_MOV_UP;                                                         Relay_PWR := TRUE;                                                     ELSE                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                              END_CASE;                                      END_CASE;                                  END_IF;                                  is_Mode01 := Blind_control0_IN_Begin;                         END_CASE;                      c_Blind_control0_IN_HMI_con:                           IF  NOT local_block THEN                               CASE is_HMI_control OF                                 c_Blind_control0_IN_Start_U:                                      HMI_Btn_UP_req := FALSE;                                     HMI_Btn_Stop_req := FALSE;                                     is_HMI_control := c_Blind_contro_IN_NO_ACTIVE;                                 b_Blind_control0_IN_Stop_DO:                                      HMI_Btn_Down_req := FALSE;                                     HMI_Btn_Stop_req := FALSE;                                     is_HMI_control := c_Blind_contro_IN_NO_ACTIVE;                                 ELSE                                     is_HMI_control := c_Blind_contro_IN_NO_ACTIVE;                             END_CASE;                              HMI_req := FALSE;                             is_Button := c_Blind_control0_IN_Local_c;                              CASE was_Local_control OF                                 Blind_control0_IN_Mode01:                                      is_Local_control := Blind_control0_IN_Mode01;                                     was_Local_control := Blind_control0_IN_Mode01;                                      IF is_active_Motor &lt;> 0 THEN                                           CASE is_Motor OF                                             Blind_control0_IN_DOWN:                                                   CASE is_DOWN OF                                                     Blind_control0_IN_MOV_DOWN:                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_DOW:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                             DOWN_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                              Blind_control0_IN_IDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                       IF Relay_DIR THEN                                                          Relay_DIR := FALSE;                                                         is_Motor := Blind_control0_IN_IDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                                  END_IF;                                              Blind_control0_IN_PreIDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                      is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              Blind_control0_IN_UP_j:                                                   CASE is_UP OF                                                     Blind_control0_IN_MOV_UP:                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_UP_:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_UP := Blind_control0_IN_MOV_UP;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                             UP_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                          END_CASE;                                      END_IF;                                      is_Mode01 := Blind_control0_IN_Begin;                                 Blind_control0_IN_Mode1:                                      is_Local_control := Blind_control0_IN_Mode1;                                     was_Local_control := Blind_control0_IN_Mode1;                                      IF is_active_Motor &lt;> 0 THEN                                           CASE is_Motor OF                                             Blind_control0_IN_DOWN:                                                   CASE is_DOWN OF                                                     Blind_control0_IN_MOV_DOWN:                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_DOW:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                             DOWN_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                              Blind_control0_IN_IDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                       IF Relay_DIR THEN                                                          Relay_DIR := FALSE;                                                         is_Motor := Blind_control0_IN_IDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                                  END_IF;                                              Blind_control0_IN_PreIDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                      is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              Blind_control0_IN_UP_j:                                                   CASE is_UP OF                                                     Blind_control0_IN_MOV_UP:                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_UP_:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_UP := Blind_control0_IN_MOV_UP;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                             UP_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                          END_CASE;                                      END_IF;                                      is_Mode1 := Blind_control0_IN_Begin;                                 Blind_control0_IN_Mode2:                                      is_Local_control := Blind_control0_IN_Mode2;                                     was_Local_control := Blind_control0_IN_Mode2;                                      IF is_active_Motor &lt;> 0 THEN                                           CASE is_Motor OF                                             Blind_control0_IN_DOWN:                                                   CASE is_DOWN OF                                                     Blind_control0_IN_MOV_DOWN:                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                         DOWN_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_DOW:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                             DOWN_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                              Blind_control0_IN_IDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                       IF Relay_DIR THEN                                                          Relay_DIR := FALSE;                                                         is_Motor := Blind_control0_IN_IDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                                  END_IF;                                              Blind_control0_IN_PreIDLE:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                      is_Motor := Blind_control0_IN_IDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                              Blind_control0_IN_UP_j:                                                   CASE is_UP OF                                                     Blind_control0_IN_MOV_UP:                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                         UP_mode := FALSE;                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     c_Blind_control0_IN_MOV_UP_:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_UP := Blind_control0_IN_MOV_UP;                                                             Relay_PWR := TRUE;                                                         ELSE                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                             UP_mode := FALSE;                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                  END_CASE;                                          END_CASE;                                      END_IF;                                      is_Mode2 := Blind_control0_IN_Begin;                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                             END_CASE;                          ELSE                               CASE is_HMI_control OF                                 Blind_control0_IN_DoStop:                                      temporalCounter_i1(timerAction := 2, maxTime := 200);                                      IF temporalCounter_i1.done THEN                                          is_HMI_control := Blind_control0_IN_IDLE;                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                     END_IF;                                  Blind_control0_IN_IDLE:                                      temporalCounter_i1(timerAction := 2, maxTime := 1000);                                      IF temporalCounter_i1.done THEN                                          local_block := FALSE;                                         is_HMI_control := Blind_control0_IN_IDLE;                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                     ELSIF HMI_Btn_UP_req THEN                                          is_HMI_control := c_Blind_control0_IN_Start_U;                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                          IF is_active_Motor &lt;> 0 THEN                                               CASE is_Motor OF                                                 Blind_control0_IN_DOWN:                                                       CASE is_DOWN OF                                                         Blind_control0_IN_MOV_DOWN:                                                              ;                                                             ;                                                         c_Blind_control0_IN_MOV_DOW:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                 Relay_PWR := TRUE;                                                             END_IF;                                                      END_CASE;                                                  Blind_control0_IN_IDLE:                                                      is_Motor := Blind_control0_IN_UP_j;                                                     UP_mode := TRUE;                                                     is_UP := c_Blind_control0_IN_MOV_UP_;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_DIR := TRUE;                                                 Blind_control0_IN_PreIDLE:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_Motor := Blind_control0_IN_IDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                                  Blind_control0_IN_UP_j:                                                       CASE is_UP OF                                                         Blind_control0_IN_MOV_UP:                                                              ;                                                             ;                                                         c_Blind_control0_IN_MOV_UP_:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                 Relay_PWR := TRUE;                                                             END_IF;                                                      END_CASE;                                              END_CASE;                                          END_IF;                                      ELSIF HMI_Btn_Down_req THEN                                          is_HMI_control := b_Blind_control0_IN_Stop_DO;                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                          IF is_active_Motor &lt;> 0 THEN                                               CASE is_Motor OF                                                 Blind_control0_IN_DOWN:                                                       CASE is_DOWN OF                                                         Blind_control0_IN_MOV_DOWN:                                                              ;                                                             ;                                                         c_Blind_control0_IN_MOV_DOW:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                 Relay_PWR := TRUE;                                                             END_IF;                                                      END_CASE;                                                  Blind_control0_IN_IDLE:                                                      is_Motor := Blind_control0_IN_DOWN;                                                     DOWN_mode := TRUE;                                                     is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_DIR := FALSE;                                                 Blind_control0_IN_PreIDLE:                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                      IF temporalCounter_i2.done THEN                                                          is_Motor := Blind_control0_IN_IDLE;                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                         Relay_PWR := FALSE;                                                     END_IF;                                                  Blind_control0_IN_UP_j:                                                       CASE is_UP OF                                                         Blind_control0_IN_MOV_UP:                                                              ;                                                             ;                                                         c_Blind_control0_IN_MOV_UP_:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                 Relay_PWR := TRUE;                                                             END_IF;                                                      END_CASE;                                              END_CASE;                                          END_IF;                                      END_IF;                                  c_Blind_control0_IN_Start_U:                                       IF HMI_Btn_Stop_req OR HMI_Btn_Down_req THEN                                          temp1 := TRUE;                                     ELSE                                          temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                          IF temporalCounter_i1.done THEN                                              temp1 := TRUE;                                         END_IF;                                      END_IF;                                  b_Blind_control0_IN_Stop_DO:                                       IF HMI_Btn_Stop_req OR HMI_Btn_UP_req THEN                                          temp2 := TRUE;                                     ELSE                                          temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                          IF temporalCounter_i1.done THEN                                              temp2 := TRUE;                                         END_IF;                                      END_IF;                              END_CASE;                          END_IF;                      c_Blind_control0_IN_Local_c:                          tmp :=  NOT Btn_1;                          IF HMI_req AND tmp THEN                               CASE is_Local_control OF                                 Blind_control0_IN_Mode01:                                       CASE is_Mode01 OF                                         c_Blind_control0_IN_Pressed:                                               IF is_active_Motor &lt;> 0 THEN                                                   CASE is_Motor OF                                                     Blind_control0_IN_DOWN:                                                           CASE is_DOWN OF                                                             Blind_control0_IN_MOV_DOWN:                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                 DOWN_mode := FALSE;                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             c_Blind_control0_IN_MOV_DOW:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                     Relay_PWR := TRUE;                                                                 ELSE                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                     DOWN_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                          END_CASE;                                                      Blind_control0_IN_IDLE:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                               IF Relay_DIR THEN                                                                  Relay_DIR := FALSE;                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             END_IF;                                                          END_IF;                                                      Blind_control0_IN_PreIDLE:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_Motor := Blind_control0_IN_IDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                      Blind_control0_IN_UP_j:                                                           CASE is_UP OF                                                             Blind_control0_IN_MOV_UP:                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                 UP_mode := FALSE;                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             c_Blind_control0_IN_MOV_UP_:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                     Relay_PWR := TRUE;                                                                 ELSE                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                     UP_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                          END_CASE;                                                  END_CASE;                                              END_IF;                                              is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                         d_Blind_control0_IN_Pressed:                                               IF is_active_Motor &lt;> 0 THEN                                                   CASE is_Motor OF                                                     Blind_control0_IN_DOWN:                                                           CASE is_DOWN OF                                                             Blind_control0_IN_MOV_DOWN:                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                 DOWN_mode := FALSE;                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             c_Blind_control0_IN_MOV_DOW:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                     Relay_PWR := TRUE;                                                                 ELSE                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                     DOWN_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                          END_CASE;                                                      Blind_control0_IN_IDLE:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                               IF Relay_DIR THEN                                                                  Relay_DIR := FALSE;                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             END_IF;                                                          END_IF;                                                      Blind_control0_IN_PreIDLE:                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                          IF temporalCounter_i2.done THEN                                                              is_Motor := Blind_control0_IN_IDLE;                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                             Relay_PWR := FALSE;                                                         END_IF;                                                      Blind_control0_IN_UP_j:                                                           CASE is_UP OF                                                             Blind_control0_IN_MOV_UP:                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                 UP_mode := FALSE;                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             c_Blind_control0_IN_MOV_UP_:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                     Relay_PWR := TRUE;                                                                 ELSE                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                     UP_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                          END_CASE;                                                  END_CASE;                                              END_IF;                                              is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                         ELSE                                             is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                     END_CASE;                                      is_Local_control := c_Blind_contro_IN_NO_ACTIVE;                                 ELSE                                     is_Released := c_Blind_contro_IN_NO_ACTIVE;                                     is_Mode1 := c_Blind_contro_IN_NO_ACTIVE;                                     is_Mode2 := c_Blind_contro_IN_NO_ACTIVE;                                     is_Local_control := c_Blind_contro_IN_NO_ACTIVE;                             END_CASE;                              is_Button := c_Blind_control0_IN_HMI_con;                             is_HMI_control := Blind_control0_IN_DoStop;                             temporalCounter_i1(timerAction := 1, maxTime := 0);                              IF is_active_Motor &lt;> 0 THEN                                   CASE is_Motor OF                                     Blind_control0_IN_DOWN:                                           CASE is_DOWN OF                                             Blind_control0_IN_MOV_DOWN:                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                 DOWN_mode := FALSE;                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             c_Blind_control0_IN_MOV_DOW:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                     Relay_PWR := TRUE;                                                 ELSE                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                     DOWN_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                          END_CASE;                                      Blind_control0_IN_IDLE:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                               IF Relay_DIR THEN                                                  Relay_DIR := FALSE;                                                 is_Motor := Blind_control0_IN_IDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             END_IF;                                          END_IF;                                      Blind_control0_IN_PreIDLE:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                              is_Motor := Blind_control0_IN_IDLE;                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                             Relay_PWR := FALSE;                                         END_IF;                                      Blind_control0_IN_UP_j:                                           CASE is_UP OF                                             Blind_control0_IN_MOV_UP:                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                 UP_mode := FALSE;                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                 Relay_PWR := FALSE;                                             c_Blind_control0_IN_MOV_UP_:                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                  IF temporalCounter_i2.done THEN                                                      is_UP := Blind_control0_IN_MOV_UP;                                                     Relay_PWR := TRUE;                                                 ELSE                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                     UP_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;                                                 END_IF;                                          END_CASE;                                  END_CASE;                              END_IF;                          ELSE                               CASE is_Local_control OF                                 Blind_control0_IN_Mode01:                                       IF Btn_mode &lt;> 0 THEN                                           CASE is_Mode01 OF                                             c_Blind_control0_IN_Pressed:                                                   IF is_active_Motor &lt;> 0 THEN                                                       CASE is_Motor OF                                                         Blind_control0_IN_DOWN:                                                               CASE is_DOWN OF                                                                 Blind_control0_IN_MOV_DOWN:                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                     DOWN_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 c_Blind_control0_IN_MOV_DOW:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                         Relay_PWR := TRUE;                                                                     ELSE                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                         DOWN_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                              END_CASE;                                                          Blind_control0_IN_IDLE:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                   IF Relay_DIR THEN                                                                      Relay_DIR := FALSE;                                                                     is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              END_IF;                                                          Blind_control0_IN_PreIDLE:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             END_IF;                                                          Blind_control0_IN_UP_j:                                                               CASE is_UP OF                                                                 Blind_control0_IN_MOV_UP:                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                     UP_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 c_Blind_control0_IN_MOV_UP_:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                         Relay_PWR := TRUE;                                                                     ELSE                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                         UP_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                              END_CASE;                                                      END_CASE;                                                  END_IF;                                                  is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                             d_Blind_control0_IN_Pressed:                                                   IF is_active_Motor &lt;> 0 THEN                                                       CASE is_Motor OF                                                         Blind_control0_IN_DOWN:                                                               CASE is_DOWN OF                                                                 Blind_control0_IN_MOV_DOWN:                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                     DOWN_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 c_Blind_control0_IN_MOV_DOW:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                         Relay_PWR := TRUE;                                                                     ELSE                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                         DOWN_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                              END_CASE;                                                          Blind_control0_IN_IDLE:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                   IF Relay_DIR THEN                                                                      Relay_DIR := FALSE;                                                                     is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              END_IF;                                                          Blind_control0_IN_PreIDLE:                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                              IF temporalCounter_i2.done THEN                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_PWR := FALSE;                                                             END_IF;                                                          Blind_control0_IN_UP_j:                                                               CASE is_UP OF                                                                 Blind_control0_IN_MOV_UP:                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                     UP_mode := FALSE;                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 c_Blind_control0_IN_MOV_UP_:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                         Relay_PWR := TRUE;                                                                     ELSE                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                         UP_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                              END_CASE;                                                      END_CASE;                                                  END_IF;                                                  is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                             ELSE                                                 is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;                                         END_CASE;                                          is_Local_control := c_Blind_contro_IN_NO_ACTIVE;                                         is_Button := Blind_control0_IN_Begin;                                     ELSE                                           CASE is_Mode01 OF                                             Blind_control0_IN_Begin:                                                   IF Btn_1 THEN                                                      is_Mode01 := c_Blind_control0_IN_Pressed;                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  is_Motor := Blind_control0_IN_DOWN;                                                                 DOWN_mode := TRUE;                                                                 is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_DIR := FALSE;                                                             Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  ELSIF Btn_2 THEN                                                      is_Mode01 := d_Blind_control0_IN_Pressed;                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  is_Motor := Blind_control0_IN_UP_j;                                                                 UP_mode := TRUE;                                                                 is_UP := c_Blind_control0_IN_MOV_UP_;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_DIR := TRUE;                                                             Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  ELSE                                                      is_Mode01 := Blind_control0_IN_Released;                                                 END_IF;                                              c_Blind_control0_IN_Pressed:                                                   IF  NOT Btn_1 THEN                                                       IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                         DOWN_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                       IF Relay_DIR THEN                                                                          Relay_DIR := FALSE;                                                                         is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  END_IF;                                                              Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                         UP_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                      is_Mode01 := Blind_control0_IN_Released;                                                 END_IF;                                              d_Blind_control0_IN_Pressed:                                                   IF  NOT Btn_2 THEN                                                       IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                         DOWN_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                       IF Relay_DIR THEN                                                                          Relay_DIR := FALSE;                                                                         is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  END_IF;                                                              Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                         UP_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                      is_Mode01 := Blind_control0_IN_Released;                                                 END_IF;                                              Blind_control0_IN_Released:                                                   IF Btn_1 THEN                                                      is_Mode01 := c_Blind_control0_IN_Pressed;                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  is_Motor := Blind_control0_IN_DOWN;                                                                 DOWN_mode := TRUE;                                                                 is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_DIR := FALSE;                                                             Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  ELSIF Btn_2 THEN                                                      is_Mode01 := d_Blind_control0_IN_Pressed;                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  is_Motor := Blind_control0_IN_UP_j;                                                                 UP_mode := TRUE;                                                                 is_UP := c_Blind_control0_IN_MOV_UP_;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_DIR := TRUE;                                                             Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  END_IF;                                          END_CASE;                                      END_IF;                                  Blind_control0_IN_Mode1:                                       IF Btn_mode &lt;> 1 THEN                                          is_Released := c_Blind_contro_IN_NO_ACTIVE;                                         is_Mode1 := c_Blind_contro_IN_NO_ACTIVE;                                         is_Local_control := c_Blind_contro_IN_NO_ACTIVE;                                         is_Button := Blind_control0_IN_Begin;                                     ELSE                                           CASE is_Mode1 OF                                             Blind_control0_IN_Begin:                                                   IF Btn_1 THEN                                                      is_Mode1 := Blind_control0_IN_Pressed;                                                     b_st := TRUE;                                                 ELSE                                                      is_Mode1 := c_Blind_control0_IN_Release;                                                      CASE was_Released OF                                                         Blind_control0_IN_DOWN:                                                              is_Released := Blind_control0_IN_DOWN;                                                             was_Released := Blind_control0_IN_DOWN;                                                             temporalCounter_i1(timerAction := 1, maxTime := 0);                                                         Blind_control0_IN_DOWN_Tout:                                                              is_Released := Blind_control0_IN_DOWN_Tout;                                                             was_Released := Blind_control0_IN_DOWN_Tout;                                                             b_st := FALSE;                                                              IF is_active_Motor &lt;> 0 THEN                                                                   CASE is_Motor OF                                                                     Blind_control0_IN_DOWN:                                                                           CASE is_DOWN OF                                                                             Blind_control0_IN_MOV_DOWN:                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_DOW:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                      Blind_control0_IN_IDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                               IF Relay_DIR THEN                                                                                  Relay_DIR := FALSE;                                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          END_IF;                                                                      Blind_control0_IN_PreIDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      Blind_control0_IN_UP_j:                                                                           CASE is_UP OF                                                                             Blind_control0_IN_MOV_UP:                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_UP_:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                  END_CASE;                                                              END_IF;                                                          Blind_control0_IN_STOP_DOWN:                                                              is_Released := Blind_control0_IN_STOP_DOWN;                                                             was_Released := Blind_control0_IN_STOP_DOWN;                                                         Blind_control0_IN_STOP_UP:                                                              is_Released := Blind_control0_IN_STOP_UP;                                                             was_Released := Blind_control0_IN_STOP_UP;                                                         Blind_control0_IN_UP:                                                              is_Released := Blind_control0_IN_UP;                                                             was_Released := Blind_control0_IN_UP;                                                             temporalCounter_i1(timerAction := 1, maxTime := 0);                                                         Blind_control0_IN_UP_Tout:                                                              is_Released := Blind_control0_IN_UP_Tout;                                                             was_Released := Blind_control0_IN_UP_Tout;                                                             b_st := FALSE;                                                              IF is_active_Motor &lt;> 0 THEN                                                                   CASE is_Motor OF                                                                     Blind_control0_IN_DOWN:                                                                           CASE is_DOWN OF                                                                             Blind_control0_IN_MOV_DOWN:                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_DOW:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                      Blind_control0_IN_IDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                               IF Relay_DIR THEN                                                                                  Relay_DIR := FALSE;                                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          END_IF;                                                                      Blind_control0_IN_PreIDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      Blind_control0_IN_UP_j:                                                                           CASE is_UP OF                                                                             Blind_control0_IN_MOV_UP:                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_UP_:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                  END_CASE;                                                              END_IF;                                                          ELSE                                                             is_Released := Blind_control0_IN_STOP_UP;                                                             was_Released := Blind_control0_IN_STOP_UP;                                                     END_CASE;                                                  END_IF;                                              Blind_control0_IN_Pressed:                                                   IF  NOT Btn_1 THEN                                                      is_Mode1 := c_Blind_control0_IN_Release;                                                      CASE was_Released OF                                                         Blind_control0_IN_DOWN:                                                              is_Released := Blind_control0_IN_DOWN;                                                             was_Released := Blind_control0_IN_DOWN;                                                             temporalCounter_i1(timerAction := 1, maxTime := 0);                                                         Blind_control0_IN_DOWN_Tout:                                                              is_Released := Blind_control0_IN_DOWN_Tout;                                                             was_Released := Blind_control0_IN_DOWN_Tout;                                                             b_st := FALSE;                                                              IF is_active_Motor &lt;> 0 THEN                                                                   CASE is_Motor OF                                                                     Blind_control0_IN_DOWN:                                                                           CASE is_DOWN OF                                                                             Blind_control0_IN_MOV_DOWN:                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_DOW:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                      Blind_control0_IN_IDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                               IF Relay_DIR THEN                                                                                  Relay_DIR := FALSE;                                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          END_IF;                                                                      Blind_control0_IN_PreIDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      Blind_control0_IN_UP_j:                                                                           CASE is_UP OF                                                                             Blind_control0_IN_MOV_UP:                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_UP_:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                  END_CASE;                                                              END_IF;                                                          Blind_control0_IN_STOP_DOWN:                                                              is_Released := Blind_control0_IN_STOP_DOWN;                                                             was_Released := Blind_control0_IN_STOP_DOWN;                                                         Blind_control0_IN_STOP_UP:                                                              is_Released := Blind_control0_IN_STOP_UP;                                                             was_Released := Blind_control0_IN_STOP_UP;                                                         Blind_control0_IN_UP:                                                              is_Released := Blind_control0_IN_UP;                                                             was_Released := Blind_control0_IN_UP;                                                             temporalCounter_i1(timerAction := 1, maxTime := 0);                                                         Blind_control0_IN_UP_Tout:                                                              is_Released := Blind_control0_IN_UP_Tout;                                                             was_Released := Blind_control0_IN_UP_Tout;                                                             b_st := FALSE;                                                              IF is_active_Motor &lt;> 0 THEN                                                                   CASE is_Motor OF                                                                     Blind_control0_IN_DOWN:                                                                           CASE is_DOWN OF                                                                             Blind_control0_IN_MOV_DOWN:                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_DOW:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                      Blind_control0_IN_IDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                               IF Relay_DIR THEN                                                                                  Relay_DIR := FALSE;                                                                                 is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          END_IF;                                                                      Blind_control0_IN_PreIDLE:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      Blind_control0_IN_UP_j:                                                                           CASE is_UP OF                                                                             Blind_control0_IN_MOV_UP:                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             c_Blind_control0_IN_MOV_UP_:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_UP := Blind_control0_IN_MOV_UP;                                                                                     Relay_PWR := TRUE;                                                                                 ELSE                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                          END_CASE;                                                                  END_CASE;                                                              END_IF;                                                          ELSE                                                             is_Released := Blind_control0_IN_STOP_UP;                                                             was_Released := Blind_control0_IN_STOP_UP;                                                     END_CASE;                                                  END_IF;                                              c_Blind_control0_IN_Release:                                                   IF Btn_1 THEN                                                      is_Released := c_Blind_contro_IN_NO_ACTIVE;                                                     is_Mode1 := Blind_control0_IN_Pressed;                                                     b_st := TRUE;                                                 ELSE                                                       CASE is_Released OF                                                         Blind_control0_IN_DOWN:                                                              temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                                              IF temporalCounter_i1.done THEN                                                                  is_Released := Blind_control0_IN_DOWN_Tout;                                                                 was_Released := Blind_control0_IN_DOWN_Tout;                                                                 b_st := FALSE;                                                                  IF is_active_Motor &lt;> 0 THEN                                                                       CASE is_Motor OF                                                                         Blind_control0_IN_DOWN:                                                                               CASE is_DOWN OF                                                                                 Blind_control0_IN_MOV_DOWN:                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_DOW:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                         DOWN_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                          Blind_control0_IN_IDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                   IF Relay_DIR THEN                                                                                      Relay_DIR := FALSE;                                                                                     is_Motor := Blind_control0_IN_IDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                              END_IF;                                                                          Blind_control0_IN_PreIDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          Blind_control0_IN_UP_j:                                                                               CASE is_UP OF                                                                                 Blind_control0_IN_MOV_UP:                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_UP_:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                         UP_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                      END_CASE;                                                                  END_IF;                                                              ELSIF b_st THEN                                                                  b_st := FALSE;                                                                  IF is_active_Motor &lt;> 0 THEN                                                                       CASE is_Motor OF                                                                         Blind_control0_IN_DOWN:                                                                               CASE is_DOWN OF                                                                                 Blind_control0_IN_MOV_DOWN:                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_DOW:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                         DOWN_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                          Blind_control0_IN_IDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                   IF Relay_DIR THEN                                                                                      Relay_DIR := FALSE;                                                                                     is_Motor := Blind_control0_IN_IDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                              END_IF;                                                                          Blind_control0_IN_PreIDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          Blind_control0_IN_UP_j:                                                                               CASE is_UP OF                                                                                 Blind_control0_IN_MOV_UP:                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_UP_:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                         UP_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                      END_CASE;                                                                  END_IF;                                                                  is_Released := Blind_control0_IN_STOP_UP;                                                                 was_Released := Blind_control0_IN_STOP_UP;                                                             END_IF;                                                          Blind_control0_IN_DOWN_Tout:                                                              is_Released := Blind_control0_IN_STOP_DOWN;                                                             was_Released := Blind_control0_IN_STOP_DOWN;                                                         Blind_control0_IN_STOP_DOWN:                                                               IF b_st THEN                                                                  b_st := FALSE;                                                                  IF is_active_Motor &lt;> 0 THEN                                                                       CASE is_Motor OF                                                                         Blind_control0_IN_DOWN:                                                                               CASE is_DOWN OF                                                                                 Blind_control0_IN_MOV_DOWN:                                                                                      ;                                                                                     ;                                                                                 c_Blind_control0_IN_MOV_DOW:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                         Relay_PWR := TRUE;                                                                                     END_IF;                                                                              END_CASE;                                                                          Blind_control0_IN_IDLE:                                                                              is_Motor := Blind_control0_IN_DOWN;                                                                             DOWN_mode := TRUE;                                                                             is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_DIR := FALSE;                                                                         Blind_control0_IN_PreIDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          Blind_control0_IN_UP_j:                                                                               CASE is_UP OF                                                                                 Blind_control0_IN_MOV_UP:                                                                                      ;                                                                                     ;                                                                                 c_Blind_control0_IN_MOV_UP_:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                                         Relay_PWR := TRUE;                                                                                     END_IF;                                                                              END_CASE;                                                                      END_CASE;                                                                  END_IF;                                                                  is_Released := Blind_control0_IN_DOWN;                                                                 was_Released := Blind_control0_IN_DOWN;                                                                 temporalCounter_i1(timerAction := 1, maxTime := 0);                                                             END_IF;                                                          Blind_control0_IN_STOP_UP:                                                               IF b_st THEN                                                                  b_st := FALSE;                                                                  IF is_active_Motor &lt;> 0 THEN                                                                       CASE is_Motor OF                                                                         Blind_control0_IN_DOWN:                                                                               CASE is_DOWN OF                                                                                 Blind_control0_IN_MOV_DOWN:                                                                                      ;                                                                                     ;                                                                                 c_Blind_control0_IN_MOV_DOW:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                         Relay_PWR := TRUE;                                                                                     END_IF;                                                                              END_CASE;                                                                          Blind_control0_IN_IDLE:                                                                              is_Motor := Blind_control0_IN_UP_j;                                                                             UP_mode := TRUE;                                                                             is_UP := c_Blind_control0_IN_MOV_UP_;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_DIR := TRUE;                                                                         Blind_control0_IN_PreIDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          Blind_control0_IN_UP_j:                                                                               CASE is_UP OF                                                                                 Blind_control0_IN_MOV_UP:                                                                                      ;                                                                                     ;                                                                                 c_Blind_control0_IN_MOV_UP_:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                                         Relay_PWR := TRUE;                                                                                     END_IF;                                                                              END_CASE;                                                                      END_CASE;                                                                  END_IF;                                                                  is_Released := Blind_control0_IN_UP;                                                                 was_Released := Blind_control0_IN_UP;                                                                 temporalCounter_i1(timerAction := 1, maxTime := 0);                                                             END_IF;                                                          Blind_control0_IN_UP:                                                               IF b_st THEN                                                                  b_st := FALSE;                                                                  IF is_active_Motor &lt;> 0 THEN                                                                       CASE is_Motor OF                                                                         Blind_control0_IN_DOWN:                                                                               CASE is_DOWN OF                                                                                 Blind_control0_IN_MOV_DOWN:                                                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                     DOWN_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_DOW:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                         DOWN_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                          Blind_control0_IN_IDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                   IF Relay_DIR THEN                                                                                      Relay_DIR := FALSE;                                                                                     is_Motor := Blind_control0_IN_IDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                              END_IF;                                                                          Blind_control0_IN_PreIDLE:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_Motor := Blind_control0_IN_IDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                          Blind_control0_IN_UP_j:                                                                               CASE is_UP OF                                                                                 Blind_control0_IN_MOV_UP:                                                                                      is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                     UP_mode := FALSE;                                                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 c_Blind_control0_IN_MOV_UP_:                                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                      IF temporalCounter_i2.done THEN                                                                                          is_UP := Blind_control0_IN_MOV_UP;                                                                                         Relay_PWR := TRUE;                                                                                     ELSE                                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                         UP_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                              END_CASE;                                                                      END_CASE;                                                                  END_IF;                                                                  is_Released := Blind_control0_IN_STOP_DOWN;                                                                 was_Released := Blind_control0_IN_STOP_DOWN;                                                             ELSE                                                                  temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                                                  IF temporalCounter_i1.done THEN                                                                      is_Released := Blind_control0_IN_UP_Tout;                                                                     was_Released := Blind_control0_IN_UP_Tout;                                                                     b_st := FALSE;                                                                      IF is_active_Motor &lt;> 0 THEN                                                                           CASE is_Motor OF                                                                             Blind_control0_IN_DOWN:                                                                                   CASE is_DOWN OF                                                                                     Blind_control0_IN_MOV_DOWN:                                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                         DOWN_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     c_Blind_control0_IN_MOV_DOW:                                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                          IF temporalCounter_i2.done THEN                                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                             Relay_PWR := TRUE;                                                                                         ELSE                                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                             DOWN_mode := FALSE;                                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                             Relay_PWR := FALSE;                                                                                         END_IF;                                                                                  END_CASE;                                                                              Blind_control0_IN_IDLE:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                       IF Relay_DIR THEN                                                                                          Relay_DIR := FALSE;                                                                                         is_Motor := Blind_control0_IN_IDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     END_IF;                                                                                  END_IF;                                                                              Blind_control0_IN_PreIDLE:                                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                  IF temporalCounter_i2.done THEN                                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                     Relay_PWR := FALSE;                                                                                 END_IF;                                                                              Blind_control0_IN_UP_j:                                                                                   CASE is_UP OF                                                                                     Blind_control0_IN_MOV_UP:                                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                         UP_mode := FALSE;                                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                         Relay_PWR := FALSE;                                                                                     c_Blind_control0_IN_MOV_UP_:                                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                                          IF temporalCounter_i2.done THEN                                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                                             Relay_PWR := TRUE;                                                                                         ELSE                                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                             UP_mode := FALSE;                                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                             Relay_PWR := FALSE;                                                                                         END_IF;                                                                                  END_CASE;                                                                          END_CASE;                                                                      END_IF;                                                                  END_IF;                                                              END_IF;                                                          Blind_control0_IN_UP_Tout:                                                              is_Released := Blind_control0_IN_STOP_UP;                                                             was_Released := Blind_control0_IN_STOP_UP;                                                     END_CASE;                                                  END_IF;                                          END_CASE;                                      END_IF;                                  Blind_control0_IN_Mode2:                                       IF Btn_mode &lt;> 2 THEN                                          is_Mode2 := c_Blind_contro_IN_NO_ACTIVE;                                         is_Local_control := c_Blind_contro_IN_NO_ACTIVE;                                         is_Button := Blind_control0_IN_Begin;                                     ELSE                                           CASE is_Mode2 OF                                             Blind_control0_IN_Begin:                                                   IF Btn_1 THEN                                                      is_Mode2 := Blind_control0_IN_Press1;                                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                                                 ELSE                                                      temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                                      IF temporalCounter_i1.done THEN                                                           IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                           IF Relay_DIR THEN                                                                              Relay_DIR := FALSE;                                                                             is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      END_IF;                                                                  Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                          is_Mode2 := Blind_control0_IN_Begin;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                     END_IF;                                                  END_IF;                                              Blind_control0_IN_Press1:                                                   IF is_Motor &lt;> 2 THEN                                                      is_Mode2 := c_Blind_control0_IN_Stop_mo;                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                         DOWN_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                       IF Relay_DIR THEN                                                                          Relay_DIR := FALSE;                                                                         is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  END_IF;                                                              Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                         UP_mode := FALSE;                                                                         is_Motor := Blind_control0_IN_PreIDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         ELSE                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  ELSE                                                      temporalCounter_i1(timerAction := 2, maxTime := 1000);                                                      IF temporalCounter_i1.done THEN                                                          is_Mode2 := Blind_control0_IN_Start_UP;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                          IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      is_Motor := Blind_control0_IN_UP_j;                                                                     UP_mode := TRUE;                                                                     is_UP := c_Blind_control0_IN_MOV_UP_;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_DIR := TRUE;                                                                 Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                      ELSIF  NOT Btn_1 THEN                                                          is_Mode2 := Blind_control0_IN_Releas1;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                     END_IF;                                                  END_IF;                                              Blind_control0_IN_Releas1:                                                   IF Btn_1 THEN                                                      is_Mode2 := c_Blind_control0_IN_Start_D;                                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                                                      IF is_active_Motor &lt;> 0 THEN                                                           CASE is_Motor OF                                                             Blind_control0_IN_DOWN:                                                                   CASE is_DOWN OF                                                                     Blind_control0_IN_MOV_DOWN:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_DOW:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                              Blind_control0_IN_IDLE:                                                                  is_Motor := Blind_control0_IN_DOWN;                                                                 DOWN_mode := TRUE;                                                                 is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                 Relay_DIR := FALSE;                                                             Blind_control0_IN_PreIDLE:                                                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                  IF temporalCounter_i2.done THEN                                                                      is_Motor := Blind_control0_IN_IDLE;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_PWR := FALSE;                                                                 END_IF;                                                              Blind_control0_IN_UP_j:                                                                   CASE is_UP OF                                                                     Blind_control0_IN_MOV_UP:                                                                          ;                                                                         ;                                                                     c_Blind_control0_IN_MOV_UP_:                                                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                          IF temporalCounter_i2.done THEN                                                                              is_UP := Blind_control0_IN_MOV_UP;                                                                             Relay_PWR := TRUE;                                                                         END_IF;                                                                  END_CASE;                                                          END_CASE;                                                      END_IF;                                                  ELSE                                                      temporalCounter_i1(timerAction := 2, maxTime := 1000);                                                      IF temporalCounter_i1.done THEN                                                          is_Mode2 := Blind_control0_IN_Start_UP;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                          IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      is_Motor := Blind_control0_IN_UP_j;                                                                     UP_mode := TRUE;                                                                     is_UP := c_Blind_control0_IN_MOV_UP_;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_DIR := TRUE;                                                                 Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                      END_IF;                                                  END_IF;                                              c_Blind_control0_IN_Start_D:                                                   IF  NOT Btn_1 THEN                                                      is_Mode2 := Blind_control0_IN_Begin;                                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                                                 ELSE                                                      temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                                      IF temporalCounter_i1.done THEN                                                           IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                           IF Relay_DIR THEN                                                                              Relay_DIR := FALSE;                                                                             is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      END_IF;                                                                  Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                          is_Mode2 := c_Blind_control0_IN_Start_D;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                          IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      is_Motor := Blind_control0_IN_DOWN;                                                                     DOWN_mode := TRUE;                                                                     is_DOWN := c_Blind_control0_IN_MOV_DOW;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_DIR := FALSE;                                                                 Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                      END_IF;                                                  END_IF;                                              Blind_control0_IN_Start_UP:                                                   IF  NOT Btn_1 THEN                                                      is_Mode2 := Blind_control0_IN_Begin;                                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                                                 ELSE                                                      temporalCounter_i1(timerAction := 2, maxTime := TRUNC(REAL_TO_LREAL(Mot_timeout) * 1000.0));                                                      IF temporalCounter_i1.done THEN                                                           IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                             DOWN_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                                                 DOWN_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                           IF Relay_DIR THEN                                                                              Relay_DIR := FALSE;                                                                             is_Motor := Blind_control0_IN_IDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         END_IF;                                                                      END_IF;                                                                  Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                             UP_mode := FALSE;                                                                             is_Motor := Blind_control0_IN_PreIDLE;                                                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                             Relay_PWR := FALSE;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             ELSE                                                                                  is_UP := c_Blind_contro_IN_NO_ACTIVE;                                                                                 UP_mode := FALSE;                                                                                 is_Motor := Blind_control0_IN_PreIDLE;                                                                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                                 Relay_PWR := FALSE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                          is_Mode2 := Blind_control0_IN_Start_UP;                                                         temporalCounter_i1(timerAction := 1, maxTime := 0);                                                          IF is_active_Motor &lt;> 0 THEN                                                               CASE is_Motor OF                                                                 Blind_control0_IN_DOWN:                                                                       CASE is_DOWN OF                                                                         Blind_control0_IN_MOV_DOWN:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_DOW:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_DOWN := Blind_control0_IN_MOV_DOWN;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                                  Blind_control0_IN_IDLE:                                                                      is_Motor := Blind_control0_IN_UP_j;                                                                     UP_mode := TRUE;                                                                     is_UP := c_Blind_control0_IN_MOV_UP_;                                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                     Relay_DIR := TRUE;                                                                 Blind_control0_IN_PreIDLE:                                                                      temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                      IF temporalCounter_i2.done THEN                                                                          is_Motor := Blind_control0_IN_IDLE;                                                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                                                         Relay_PWR := FALSE;                                                                     END_IF;                                                                  Blind_control0_IN_UP_j:                                                                       CASE is_UP OF                                                                         Blind_control0_IN_MOV_UP:                                                                              ;                                                                             ;                                                                         c_Blind_control0_IN_MOV_UP_:                                                                              temporalCounter_i2(timerAction := 2, maxTime := 100);                                                                              IF temporalCounter_i2.done THEN                                                                                  is_UP := Blind_control0_IN_MOV_UP;                                                                                 Relay_PWR := TRUE;                                                                             END_IF;                                                                      END_CASE;                                                              END_CASE;                                                          END_IF;                                                      END_IF;                                                  END_IF;                                              c_Blind_control0_IN_Stop_mo:                                                   IF (is_Motor = 2) AND tmp THEN                                                      is_Mode2 := Blind_control0_IN_Begin;                                                     temporalCounter_i1(timerAction := 1, maxTime := 0);                                                 END_IF;                                          END_CASE;                                      END_IF;                              END_CASE;                          END_IF;                  END_CASE;                   IF temp2 THEN                      HMI_Btn_Down_req := FALSE;                     HMI_Btn_Stop_req := FALSE;                     is_HMI_control := Blind_control0_IN_DoStop;                     temporalCounter_i1(timerAction := 1, maxTime := 0);                      IF is_active_Motor &lt;> 0 THEN                           CASE is_Motor OF                             Blind_control0_IN_DOWN:                                   CASE is_DOWN OF                                     Blind_control0_IN_MOV_DOWN:                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                         DOWN_mode := FALSE;                                         is_Motor := Blind_control0_IN_PreIDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     c_Blind_control0_IN_MOV_DOW:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                             Relay_PWR := TRUE;                                         ELSE                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                             DOWN_mode := FALSE;                                             is_Motor := Blind_control0_IN_PreIDLE;                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                             Relay_PWR := FALSE;                                         END_IF;                                  END_CASE;                              Blind_control0_IN_IDLE:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                       IF Relay_DIR THEN                                          Relay_DIR := FALSE;                                         is_Motor := Blind_control0_IN_IDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     END_IF;                                  END_IF;                              Blind_control0_IN_PreIDLE:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_Motor := Blind_control0_IN_IDLE;                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                     Relay_PWR := FALSE;                                 END_IF;                              Blind_control0_IN_UP_j:                                   CASE is_UP OF                                     Blind_control0_IN_MOV_UP:                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                         UP_mode := FALSE;                                         is_Motor := Blind_control0_IN_PreIDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     c_Blind_control0_IN_MOV_UP_:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                              is_UP := Blind_control0_IN_MOV_UP;                                             Relay_PWR := TRUE;                                         ELSE                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                             UP_mode := FALSE;                                             is_Motor := Blind_control0_IN_PreIDLE;                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                             Relay_PWR := FALSE;                                         END_IF;                                  END_CASE;                          END_CASE;                      END_IF;                  END_IF;                   IF temp1 THEN                      HMI_Btn_UP_req := FALSE;                     HMI_Btn_Stop_req := FALSE;                     is_HMI_control := Blind_control0_IN_DoStop;                     temporalCounter_i1(timerAction := 1, maxTime := 0);                      IF is_active_Motor &lt;> 0 THEN                           CASE is_Motor OF                             Blind_control0_IN_DOWN:                                   CASE is_DOWN OF                                     Blind_control0_IN_MOV_DOWN:                                          is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                         DOWN_mode := FALSE;                                         is_Motor := Blind_control0_IN_PreIDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     c_Blind_control0_IN_MOV_DOW:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                              is_DOWN := Blind_control0_IN_MOV_DOWN;                                             Relay_PWR := TRUE;                                         ELSE                                              is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                             DOWN_mode := FALSE;                                             is_Motor := Blind_control0_IN_PreIDLE;                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                             Relay_PWR := FALSE;                                         END_IF;                                  END_CASE;                              Blind_control0_IN_IDLE:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                       IF Relay_DIR THEN                                          Relay_DIR := FALSE;                                         is_Motor := Blind_control0_IN_IDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     END_IF;                                  END_IF;                              Blind_control0_IN_PreIDLE:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_Motor := Blind_control0_IN_IDLE;                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                     Relay_PWR := FALSE;                                 END_IF;                              Blind_control0_IN_UP_j:                                   CASE is_UP OF                                     Blind_control0_IN_MOV_UP:                                          is_UP := c_Blind_contro_IN_NO_ACTIVE;                                         UP_mode := FALSE;                                         is_Motor := Blind_control0_IN_PreIDLE;                                         temporalCounter_i2(timerAction := 1, maxTime := 0);                                         Relay_PWR := FALSE;                                     c_Blind_control0_IN_MOV_UP_:                                          temporalCounter_i2(timerAction := 2, maxTime := 100);                                          IF temporalCounter_i2.done THEN                                              is_UP := Blind_control0_IN_MOV_UP;                                             Relay_PWR := TRUE;                                         ELSE                                              is_UP := c_Blind_contro_IN_NO_ACTIVE;                                             UP_mode := FALSE;                                             is_Motor := Blind_control0_IN_PreIDLE;                                             temporalCounter_i2(timerAction := 1, maxTime := 0);                                             Relay_PWR := FALSE;                                         END_IF;                                  END_CASE;                          END_CASE;                      END_IF;                  END_IF;              END_IF;               IF (is_active_HMI_buttons &lt;> 0) AND (is_HMI_buttons = 1) THEN                   IF rtb_FixPtRelationalOperator THEN                      HMI_Btn_UP_req := TRUE;                     HMI_req := TRUE;                     local_block := TRUE;                     is_HMI_buttons := Blind_control0_IN_Btns;                 ELSIF c_rtb_FixPtRelationalOperat THEN                      HMI_Btn_Stop_req := TRUE;                     HMI_req := TRUE;                     local_block := TRUE;                     is_HMI_buttons := Blind_control0_IN_Btns;                 ELSIF b_rtb_FixPtRelationalOperat THEN                      HMI_Btn_Down_req := TRUE;                     HMI_req := TRUE;                     local_block := TRUE;                     is_HMI_buttons := Blind_control0_IN_Btns;                 END_IF;              END_IF;          END_IF;          DelayInput1_DSTATE := HMI_Btn_Up;         DelayInput1_DSTATE_i := HMI_Btn_Down;         DelayInput1_DSTATE_m := HMI_Btn_Stop; END_CASE; <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 240 \u041a\u0431 \u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0447\u0438\u0439! <br \/>\u041a\u043e\u0434 \u0431\u044b\u043b \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0441\u0440\u0435\u0434\u0435 <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-software\/ecockpit-engineering-software\" rel=\"noopener noreferrer nofollow\"><strong><em>e!COCKPIT<\/em><\/strong><\/a> , \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 \u041f\u041b\u041a \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p>\u041d\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u041b\u041a \u043f\u0440\u0438\u0432\u0435\u043b\u0430 \u043a \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043c\u0443 \u043a\u043e\u0434\u0430. \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 STL  \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0436\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0412\u044b\u0440\u0443\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044f MATLAB Stateflow.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 HMI. \u041d\u0430 HMI \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u041f\u041b\u041a \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430. <br \/>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0440\u0435\u0434\u043a\u043e HMI \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0430 STL, \u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043d\u0435\u043a\u0438\u0445 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430\u0445 BASIC \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0435 \u0438 \u044d\u0442\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 HMI. <\/p>\n<p>\u0421\u043b\u043e\u0432\u043e\u043c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 \u041f\u041b\u041a \u0443\u0434\u043e\u0431\u043d\u0430 \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443, \u0431\u0435\u0437 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0422\u0417, \u0438 \u0441 \u043d\u0435\u044f\u0441\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0434\u0430\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0445 \u043d\u043e\u0442\u0430\u0446\u0438\u044f\u0445 \u0447\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u044f\u0442\u0435\u0440\u043a\u0430: LAD, FBD, SFC, ST, IL.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/581468\/\"> https:\/\/habr.com\/ru\/articles\/581468\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e<a href=\"https:\/\/habr.com\/ru\/post\/580538\/\" rel=\"noopener noreferrer nofollow\"> \u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0430 \u043c\u043d\u0435 \u043e\u0434\u0438\u043d \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f, \u043d\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041e\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u044f\u0441\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0445 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0430.  \u0412 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0432\u043e\u0442 \u0447\u0442\u043e \u0432\u044b\u0448\u043b\u043e. <\/p>\n<p>\u0412 \u0437\u0430\u0434\u0430\u0447\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0438 \u043a \u041f\u041b\u041a.  \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442. \u0415\u0441\u0442\u044c \u0442\u0440\u0443\u0431\u0447\u0430\u0442\u044b\u0439 \u043c\u043e\u0442\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u043f\u043e\u043b\u043e\u0442\u043d\u043e \u0441\u0442\u0430\u0432\u043d\u0435\u0439.   <br \/>\u041c\u043e\u0442\u043e\u0440 \u043e\u0434\u043d\u043e\u0444\u0430\u0437\u043d\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0437\u044b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0438\u0437 \u043c\u043e\u0442\u043e\u0440\u0430. <br \/>\u041e\u0431\u044b\u0447\u043d\u043e \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0438 \u043f\u043e\u043a\u0443\u043f\u0430\u044e\u0442 \u0441\u0440\u0430\u0437\u0443 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041d\u043e \u0442\u0443\u0442 \u0431\u044b\u043b \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439. \u0418 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c HMI \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u043c\u0438 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0435\u0437 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438, \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439, \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447. \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u0441 \u0446\u0435\u043b\u044c\u044e \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438.   <\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0442\u043e\u0440\u0430 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.<\/figcaption><\/figure>\n<\/p>\n<figure class=\"full-width\"><figcaption>\u0421\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041b\u041a \u043a \u043c\u043e\u0442\u043e\u0440\u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439.<\/figcaption><\/figure>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u041f\u041b\u041a \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441\u0435\u0440\u0438\u044f <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-plcs\/pfc200\" rel=\"noopener noreferrer nofollow\">WAGO PFC200<\/a>, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-software\/ecockpit-engineering-software\" rel=\"noopener noreferrer nofollow\"><strong><em>e!COCKPIT<\/em><\/strong><\/a>  .   \u0421\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442 WAGO \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u0442\u0435\u043c \u0447\u0442\u043e \u0432 \u043d\u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 MATLAB. \u0412 MATLAB \u044f \u0438 \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u044f\u0437\u044b\u043a\u0438 \u041f\u041b\u041a \u0438 \u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0445\u0435\u043c \u0432\u044b\u0448\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438. \u0412\u044b\u0445\u043e\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u043e\u0432 \u0443 \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043a\u043e\u043d\u0446\u0435\u0432\u0438\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0442\u043e\u0440\u0430 \u0438 \u0442\u043e\u0447\u043a\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0440\u0435\u0434\u0443\u043a\u0442\u043e\u0440 \u0432\u0438\u043d\u0442\u0430\u043c\u0438 \u0441 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0440\u0443\u0436\u0443 \u0448\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u043e\u0434 \u043e\u0442\u0432\u0451\u0440\u0442\u043a\u0443.  \u0412\u0441\u0435 \u044d\u0442\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0418 \u0432\u0441\u0435 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0432 MATLAB &#8212; Similink &#8212; Stateflow \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f:<\/p>\n<figure class=\"full-width\"><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 Blind_control<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u044c\u0441\u0442\u0430\u0432\u043d\u044f\u043c\u0438<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_contro<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u043b\u043e\u043a\u0430 HMI_buttons<\/figcaption><\/figure>\n<p>\u0423\u0442\u043e\u0447\u043d\u044e, \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0438\u043c \u043c\u043e\u0442\u043e\u0440\u043e\u043c. \u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u041f\u041b\u041a \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0438\u0440\u0430\u0436\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0442\u043e\u0440\u043e\u0432.  <br \/>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443!? <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0437\u0434\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043b\u043e\u0433\u0438\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 HMI, \u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u041f\u041b\u041a. \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 HMI \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0442\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0438: \u0432\u0432\u0435\u0440\u0445, \u0441\u0442\u043e\u043f, \u0432\u043d\u0438\u0437.<br \/>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 HMI \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043a\u0430\u0437\u044b  \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a, \u0438 \u044d\u0442\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0430 HMI.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u041f\u041b\u041a \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c. \u041a\u043d\u043e\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0438 \u0431\u0435\u0437 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u044f. \u0420\u0435\u0436\u0438\u043c \u0438 \u0442\u0438\u043f \u043a\u043d\u043e\u043f\u043e\u043a \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c Btn_mode. \u041e\u043d \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u043d\u043e\u043f\u043a\u0438.  <\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u043b\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0440\u0435\u043b\u0435. \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430 \u043c\u043e\u0442\u043e\u0440 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438 \u043f\u0443\u0441\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440 \u043d\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u0438\u043b\u0441\u044f. \u0418\u043d\u0430\u0447\u0435 \u0440\u0435\u043b\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0431\u0433\u043e\u0440\u044f\u0442 \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043a\u043e\u043d\u0442\u0430\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043b\u0438\u043f\u043d\u0443\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 Stateflow \u0441 \u0438\u043c\u0435\u043d\u0435\u043c Motor.     <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043d\u043e\u043f\u043e\u043a:<\/p>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 <\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Btn_1 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u043d\u0438\u0437<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Btn_2 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 1 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 <\/strong><\/p>\n<ul>\n<li>\n<p>1.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u043b\u0438 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445<\/p>\n<\/li>\n<li>\n<p>2.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>3.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432\u043d\u0438\u0437<\/p>\n<\/li>\n<li>\n<p>4.\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 &#8212; \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u0443\u043d\u043a\u0442\u0443 1 <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 2 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0442\u043e\u0440 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u044a\u0435\u043c \u0432\u0432\u0435\u0440\u0445,<\/p>\n<\/li>\n<li>\n<p>\u0414\u0432\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c \u0432 Stateflow \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0442\u043b\u0430\u0436\u0435\u043d\u0430 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Statement List (STL) \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <a href=\"https:\/\/www.wago.com\/global\/automation-technology\/discover-software\/ecockpit-engineering-software\" rel=\"noopener noreferrer nofollow\"><strong><em>e!COCKPIT<\/em><\/strong><\/a><strong><em>. <br \/><\/em><\/strong>\u0418 \u0432\u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e! \u0420\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>CASE ssMethodType OF     SS_INITIALIZE:          DelayInput1_DSTATE := FALSE;         DelayInput1_DSTATE_i := FALSE;         DelayInput1_DSTATE_m := FALSE;         is_active_Button := 0;         is_Button := c_Blind_contro_IN_NO_ACTIVE;         is_HMI_control := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_Local_control := c_Blind_contro_IN_NO_ACTIVE;         was_Local_control := c_Blind_contro_IN_NO_ACTIVE;         is_Mode01 := c_Blind_contro_IN_NO_ACTIVE;         is_Mode1 := c_Blind_contro_IN_NO_ACTIVE;         is_Released := c_Blind_contro_IN_NO_ACTIVE;         was_Released := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_Mode2 := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i1(timerAction := 1, maxTime := 0);         is_active_HMI_buttons := 0;         is_HMI_buttons := c_Blind_contro_IN_NO_ACTIVE;         is_active_Motor := 0;         is_Motor := c_Blind_contro_IN_NO_ACTIVE;         is_DOWN := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i2(timerAction := 1, maxTime := 0);         is_UP := c_Blind_contro_IN_NO_ACTIVE;         temporalCounter_i2(timerAction := 1, maxTime := 0);         is_active_c3_Blind_control0 := 0;         b_st := FALSE;         HMI_Btn_UP_req := FALSE;         HMI_Btn_Down_req := FALSE;         HMI_Btn_Stop_req := FALSE;         HMI_req := FALSE;         UP_mode := FALSE;         DOWN_mode := FALSE;     SS_STEP:          rtb_FixPtRelationalOperator := BOOL_TO_DINT(HMI_Btn_Up) > BOOL_TO_DINT(DelayInput1_DSTATE);         b_rtb_FixPtRelationalOperat := BOOL_TO_DINT(HMI_Btn_Down) > BOOL_TO_DINT(DelayInput1_DSTATE_i);         c_rtb_FixPtRelationalOperat := BOOL_TO_DINT(HMI_Btn_Stop) > BOOL_TO_DINT(DelayInput1_DSTATE_m);          IF is_active_c3_Blind_control0 = 0 THEN              is_active_c3_Blind_control0 := 1;             is_active_Motor := 1;             Relay_DIR := FALSE;             is_Motor := Blind_control0_IN_IDLE;             temporalCounter_i2(timerAction := 1, maxTime := 0);             Relay_PWR := FALSE;             is_active_Button := 1;             is_Button := Blind_control0_IN_Begin;             is_active_HMI_buttons := 1;             is_HMI_buttons := Blind_control0_IN_Btns;         ELSE               IF is_active_Motor &lt;> 0 THEN                   CASE is_Motor OF                     Blind_control0_IN_DOWN:                           CASE is_DOWN OF                             Blind_control0_IN_MOV_DOWN:                                  ;                                 ;                             c_Blind_control0_IN_MOV_DOW:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_DOWN := Blind_control0_IN_MOV_DOWN;                                     Relay_PWR := TRUE;                                 END_IF;                          END_CASE;                      Blind_control0_IN_IDLE:                          temporalCounter_i2(timerAction := 2, maxTime := 100);                          IF temporalCounter_i2.done THEN                               IF Relay_DIR THEN                                  Relay_DIR := FALSE;                                 is_Motor := Blind_control0_IN_IDLE;                                 temporalCounter_i2(timerAction := 1, maxTime := 0);                                 Relay_PWR := FALSE;                             END_IF;                          END_IF;                      Blind_control0_IN_PreIDLE:                          temporalCounter_i2(timerAction := 2, maxTime := 100);                          IF temporalCounter_i2.done THEN                              is_Motor := Blind_control0_IN_IDLE;                             temporalCounter_i2(timerAction := 1, maxTime := 0);                             Relay_PWR := FALSE;                         END_IF;                      Blind_control0_IN_UP_j:                           CASE is_UP OF                             Blind_control0_IN_MOV_UP:                                  ;                                 ;                             c_Blind_control0_IN_MOV_UP_:                                  temporalCounter_i2(timerAction := 2, maxTime := 100);                                  IF temporalCounter_i2.done THEN                                      is_UP := Blind_control0_IN_MOV_UP;                                     Relay_PWR := TRUE;                                 END_IF;                          END_CASE;                  END_CASE;              END_IF;               IF is_active_Button &lt;> 0 THEN                  temp1 := FALSE;                 temp2 := FALSE;                  CASE is_Button OF                     Blind_control0_IN_Begin:                           CASE Btn_mode OF                             1:                                  is_Button := c_Blind_control0_IN_Local_c;                                 is_Local_control := Blind_control0_IN_Mode1;                                 was_Local_control := Blind_control0_IN_Mode1;                                  IF is_active_Motor &lt;> 0 THEN                                       CASE is_Motor OF                                         Blind_control0_IN_DOWN:                                               CASE is_DOWN OF                                                 Blind_control0_IN_MOV_DOWN:                                                      is_DOWN := c_Blind_contro_IN_NO_ACTIVE;                                                     DOWN_mode := FALSE;                                                     is_Motor := Blind_control0_IN_PreIDLE;                                                     temporalCounter_i2(timerAction := 1, maxTime := 0);                                                     Relay_PWR := FALSE;<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-387501","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/387501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=387501"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/387501\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=387501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=387501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=387501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}