{"id":1868,"date":"2023-09-03T15:57:13","date_gmt":"2023-09-03T15:57:13","guid":{"rendered":"https:\/\/www.softwaredefinedautomation.io\/?p=1868"},"modified":"2023-09-03T15:57:13","modified_gmt":"2023-09-03T15:57:13","slug":"closed-loop-automation","status":"publish","type":"post","link":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/","title":{"rendered":"Bringing closed-loop automation from theory to practice"},"content":{"rendered":"<h2><span style=\"font-weight: 400\">What is Closed-Loop Automation?<\/span><\/h2>\n<p>Closed-loop Automation is performing\/automating a self-adaptive output process based on meaningful insights derived from continuous data collected by a system without human interference. In other words, automatically bridging the gap between Data \u2192 Insight and Insight \u2192 Action. Although this concept is well-recognized in academia as \u201cself-adaptation\u201d, it has yet to be implemented in industry.<\/p>\n<p>In Closed-loop Automation, the necessary actions are identified based on knowledge and input information. Thus, data is the critical component. With good data and robust algorithms, systems can run without human intervention. Closed-loop Automation results in improved reliability, increased productivity, and a reduced mean-time to resolve incidents.<\/p>\n<figure id=\"attachment_1893\" aria-describedby=\"caption-attachment-1893\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1893 size-full\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/3-e1693756739782.png\" alt=\"Closed-loop automation\" width=\"800\" height=\"800\" \/><figcaption id=\"caption-attachment-1893\" class=\"wp-caption-text\">Closed-loop automation<\/figcaption><\/figure>\n<h2><span style=\"font-weight: 400\">The heart and brain of industrial automation<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Programmable Logic Controllers (PLCs) are industrial computers controlling various processes in manufacturing and other automation environments, often called the heart and brain of industrial automation. In industrial automation, PLCs have revolutionized factories by transforming traditional manual labor processes into efficient, machine-orchestrated factory operations. However, even with technologically advanced automation infrastructure in place, manufacturing factories face significant challenges when it comes to downtime, for e.g., human related downtimes, complex system failures, planned and unplanned downtimes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With the increasing complexity of manufacturing processes and the dynamic changes in demands of market and factory goals, mitigating downtime has become crucial. Traditional approaches to automation often lack the adaptability and flexibility to efficiently handle downtime-related tasks. One particular area that requires improvement is the reconfiguration processes of the Programmable Logic Controllers (PLCs) during manufacturing operations.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Optimizing machine commissioning time using SDA PLC Ops<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Commissioning a new machine to an existing shop floor is complex and time-consuming. A traditional commissioning process for a new machine controlled by a PLC involves a significant amount of PLC code testing and iterations being made to the PLC code of not only the new machine but also to the connected machines which are already installed on the shop floor. With the increasing complexity of machine behavior and user requirements, ensuring a smooth and faster commissioning process using this legacy approach is evolving into a limiting factor in the digital journey of manufacturers. The need for building self-adaptive systems is inevitable where in this case, the PLC should self-adapt to the shop floor requirements and ease the commissioning process to reduce labor, time, and cost.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Software Defined Automation is bringing closed-loop automation from theory to practice<\/span><\/h2>\n<p><span style=\"font-weight: 400\">SDA built a setup to showcase the commissioning of a new machine to an actual factory shop floor with the help of two motors. The leader motor represents the existing assembly line process, and the follower motor represents the new machine that needs to be commissioned. PLCs control these motors and the commissioning process is showcased by reconfiguring the PLCs to synchronize the motor speed parameters in the PLC program.\u00a0 Successful commissioning of the new machine to the existing assembly line process is determined by the successful synchronization of both motor speeds by performing the PLC self-adaptation.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Our team of engineers has performed the PLC self-adaptation process to demonstrate the PLC reconfigurations and auto-generation of PLC projects in response to changes detected through real-time data insights using cameras, programmatic upload of PLC projects to the cloud and automated deployment using APIs, all powered by SDA PLC Ops.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">SDA PLC Ops is a\u00a0cloud-based PLC operations platform for conventional and virtual PLCs, across different vendors. It enables uploading, downloading, and versioning of PLC projects, as well as automated code deployments directly from the cloud to PLC without opening vendor-specific IDEs.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1894\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4.png\" alt=\"Closed-loop automation: high-level system architecture of the experimental setup\" width=\"800\" height=\"800\" srcset=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4.png 800w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-300x300.png 300w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-150x150.png 150w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-768x768.png 768w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-520x520.png 520w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-574x574.png 574w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-720x720.png 720w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-620x620.png 620w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-180x180.png 180w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-72x72.png 72w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-50x50.png 50w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-190x190.png 190w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-338x338.png 338w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-52x52.png 52w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-48x48.png 48w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-70x70.png 70w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-333x333.png 333w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/08\/4-516x516.png 516w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><span style=\"font-weight: 400\">The experimental setup consists of the following components:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Two SIMOTICS S-1 FL6 servo motors driven by SINAMICS V90 servo drives. The leader motor is controlled by a Siemens SIMATIC S7-1200 PLC, which can change the speed of the motor in increasing steps of 10rpm with the help of a button. The follower motor is controlled by a CODESYS SoftPLC (Control Win V3) which is linked to the SDA console via a preconfigured gateway.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Two high-resolution cameras monitor the physical process and provide data about the speed of the motors.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A vision detection model that calculates the RPM of both motors using OpenCV library and detects the difference in speed.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CODESYS \u201cscripting engine\u201d for accessing CODESYS APIs to use functionalities like importing and exporting \u201cPLCopen XML\u201d files and generation of new PLC project file.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The Software Defined Automation platform provides solutions like SDA PLC Ops to link and manage PLCs and PLC projects and enables the \u201cSilent Deploy\u201d feature to deploy PLC projects directly from the cloud to the physical PLC.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Python program that functions as a state machine to integrate all the above components and controls the entire process.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">The main objective of this experiment is to show that when a difference in speeds of both the motors is detected, the system should self-adapt to synchronize their speeds by:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Using vision detection cameras to detect a difference in the speeds of both motors<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Auto-generating PLC code and project with the above-detected speed of the leader motor<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Uploading and storing the newly generated PLC project to the SDA cloud platform and,\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Deploying the project from the SDA cloud directly to the PLC connected to the follower motor without the need of human interaction. <\/span><\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400\">Putting it into practice<\/span><\/h2>\n<p><span style=\"font-weight: 400\">The figure below shows the elaborate version of the MAPE loop which has been used in this demo to put theoretical concepts into practice.<\/span><\/p>\n<figure id=\"attachment_1254\" aria-describedby=\"caption-attachment-1254\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1254 size-full\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1.png\" alt=\"\" width=\"800\" height=\"500\" srcset=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1.png 800w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-300x188.png 300w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-768x480.png 768w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-520x325.png 520w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-574x359.png 574w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-720x450.png 720w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-180x113.png 180w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-115x72.png 115w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-80x50.png 80w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-190x119.png 190w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-338x211.png 338w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-52x33.png 52w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-83x52.png 83w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-48x30.png 48w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-50x31.png 50w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-70x44.png 70w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Analysis-1-333x208.png 333w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-1254\" class=\"wp-caption-text\">MAPE loop<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">The self-adaptation process for PLC reconfiguration is performed in 4 stages of the MAPE loop as follows:<\/span><\/p>\n<p><b>Monitoring stage (Speed detection stage):<\/b><\/p>\n<p><span style=\"font-weight: 400\">The vision detection cameras detect the real-time speed of both motors using OpenCV modules. The frames captured by the cameras are used to detect these circles and their respective speeds. The figure below shows the OpenCV windows detecting the circular plates attached to the motors.<\/span><\/p>\n<figure id=\"attachment_1895\" aria-describedby=\"caption-attachment-1895\" style=\"width: 1925px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1895 size-full\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv.png\" alt=\"\" width=\"1925\" height=\"751\" srcset=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv.png 1925w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-300x117.png 300w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-1024x399.png 1024w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-768x300.png 768w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-1536x599.png 1536w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-520x203.png 520w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-1920x749.png 1920w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-574x224.png 574w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-720x281.png 720w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-180x70.png 180w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-130x51.png 130w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-128x50.png 128w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-190x74.png 190w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-338x132.png 338w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-52x20.png 52w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-106x41.png 106w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-1440x562.png 1440w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-48x19.png 48w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-50x20.png 50w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-70x27.png 70w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-333x130.png 333w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/opencv-1323x516.png 1323w\" sizes=\"auto, (max-width: 1925px) 100vw, 1925px\" \/><figcaption id=\"caption-attachment-1895\" class=\"wp-caption-text\">Motor speed synchronization setup<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">Both motors&#8217; speeds data are collected simultaneously and stored in two separate files on the local PC. In this case, the cameras detect the leader motor running at 10 RPM and the follower motor is stationary. This collected data can further be used to analyze, gather insights, and plan the next course of action.<\/span><\/p>\n<p><b>Analysis stage (Insights generation):<\/b><\/p>\n<p><span style=\"font-weight: 400\">The collected data from the monitoring stage is analyzed to check whether the two motors are running at the same speed or not. Suppose the speeds of both the motors (leader and follower) are not equal for three consecutive data points. In that case, the program triggers the initiation of the planning stage where the speed of the leader motor is given as input to plan a sequence of steps to generate PLC code and project for the follower motor to synchronize both motor speeds.\u00a0<\/span><\/p>\n<p><b>Planning stage (Auto-generation of PLC code and project):<\/b><\/p>\n<p><span style=\"font-weight: 400\">A CODESYS IDE is instantiated asynchronously in the SDA PLC Ops environment, which facilitates the use of CODESYS \u201cscripting engine\u201d and CODESYS APIs. These APIs enable the opening of an existing PLC project for the motor and extracting the PLCopen XML file of the project. This PLCopen XML file contains all the information of the PLC project and is modified using XML processing to change the variable value of the output speed of the motor. This updated PLCopen XML file is then imported back into the CODESYS IDE to generate and save a new PLC project with updated output speed.<\/span><\/p>\n<p><b>Execution Stage (Programmatic upload &amp; deploy of PLC projects)<\/b><\/p>\n<p><span style=\"font-weight: 400\">With the \u201cPlanning stage\u201d completion, the new PLC project file with updated PLC code has been successfully generated.. This project file must be deployed to the CODESYS SoftPLC which controls the follower motor to complete the synchronization process.<\/span><\/p>\n<p><b>Project Upload to SDA cloud<\/b><span style=\"font-weight: 400\"> &#8211; The newly generated PLC project is uploaded to the SDA console using the SDA PLC Ops solution. The file is uploaded and stored in the SDA cloud using REST APIs and is linked to the CODESYS SoftPLC.<\/span><\/p>\n<p><b>Project Deploy to PLC<\/b><span style=\"font-weight: 400\"> \u2013 SDA\u2019s \u201cSilent Deploy\u201d feature is used to perform programmatic deployments directly from the SDA cloud to the PLC\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The closed-loop process is completed and both the motors now run at the same speed (in this case 10 RPM). The cameras detect the same speed on both motors and acknowledge the completion of the synchronization process. The speed detection loops until a new difference in speeds of the two motors is detected and executes the above processes again.\u00a0 <\/span><\/p>\n<figure id=\"attachment_1169\" aria-describedby=\"caption-attachment-1169\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1169 size-full\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3.png\" alt=\"\" width=\"800\" height=\"350\" srcset=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3.png 800w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-300x131.png 300w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-768x336.png 768w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-520x228.png 520w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-574x251.png 574w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-720x315.png 720w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-180x79.png 180w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-130x57.png 130w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-114x50.png 114w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-190x83.png 190w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-338x148.png 338w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-52x23.png 52w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-106x46.png 106w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-48x21.png 48w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-50x22.png 50w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-70x31.png 70w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/03\/Graphic-3-333x146.png 333w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-1169\" class=\"wp-caption-text\">Closed-loop automation<\/figcaption><\/figure>\n<h2><span style=\"font-weight: 400\">Results<\/span><\/h2>\n<p><span style=\"font-weight: 400\">A set of 50 experiments has been performed using the PLC self-adaptation. Each experiment constitutes the 4 stages of the MAPE loop. The time required for auto-PLC code and project generation, project upload to the cloud, deployment of the PLC project from cloud to the physical PLC and the total adaptation time is recorded.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1896\" src=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot.png\" alt=\"Scatter plot\" width=\"1440\" height=\"864\" srcset=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot.png 1440w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-300x180.png 300w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-1024x614.png 1024w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-768x461.png 768w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-520x312.png 520w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-574x344.png 574w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-720x432.png 720w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-180x108.png 180w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-120x72.png 120w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-83x50.png 83w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-190x114.png 190w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-338x203.png 338w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-52x31.png 52w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-87x52.png 87w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-48x29.png 48w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-50x30.png 50w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-70x42.png 70w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-333x200.png 333w, https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/Scatter_Plot-860x516.png 860w\" sizes=\"auto, (max-width: 1440px) 100vw, 1440px\" \/><\/p>\n<p><span style=\"font-weight: 400\">The scatter plots provide accurate information about the time required to complete individual stages by each experiment. By excluding the outliers, the mean for total time required to perform the complete PLC self-adaptation is observed to be approximately 400 seconds (6 minutes 40 seconds). <\/span><\/p>\n<p><span style=\"font-weight: 400\">In reference to the commissioning of a machine to a factory shop floor addressed in this experiment, the time required to perform multiple iterations manually during commissioning by an automation engineer is a very long and laborious process. However, by implementing the PLC self-adaptation technique, the results show that the commissioning process can be performed in merely a few minutes without human interference with continuous adaptations based on insights gathered from real-time data. This relieves the automation engineer from a substantial workload and only acts as a supervisor for validating the process.<\/span><\/p>\n<p><span style=\"font-weight: 400\">These results provide a proof of concept of using closed-loop automation for rapid PLC adaptations as we:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Performed PLC self-adaptation using MAPE loop in approximately 6 minutes 40 seconds, also showing potential for optimization in the near future.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Achieved auto-generation of PLC code and project.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Successfully implemented upload and deploy of PLC project from AWS cloud to physical PLC.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Completed the entire cycle without human intervention.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">We conclude that such resilient systems, which rapidly adapt to changing operating conditions, are needed in today\u2019s industries to facilitate increase in overall productivity and efficiency of factory operations and a decrease in downtime.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Closed-loop Automation can be implemented in many other industrial processes, like assembly line changeover, predictive maintenance, scheduling, process optimization and many more.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is Closed-Loop Automation? Closed-loop Automation is performing\/automating a self-adaptive output process based on meaningful insights derived from continuous data collected by a system without human interference. In other words, automatically bridging the gap between Data \u2192 Insight and Insight \u2192 Action. Although this concept is well-recognized in academia as \u201cself-adaptation\u201d, it has yet to &hellip; <a href=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/\">Continued<\/a><\/p>\n","protected":false},"author":2,"featured_media":1897,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"tags":[],"class_list":["post-1868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bringing closed-loop automation from theory to practice - SDA old<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bringing closed-loop automation from theory to practice - SDA old\" \/>\n<meta property=\"og:description\" content=\"What is Closed-Loop Automation? Closed-loop Automation is performing\/automating a self-adaptive output process based on meaningful insights derived from continuous data collected by a system without human interference. In other words, automatically bridging the gap between Data \u2192 Insight and Insight \u2192 Action. Although this concept is well-recognized in academia as \u201cself-adaptation\u201d, it has yet to &hellip; Continued\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/\" \/>\n<meta property=\"og:site_name\" content=\"SDA old\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-03T15:57:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"markupus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"markupus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/\",\"url\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/\",\"name\":\"Bringing closed-loop automation from theory to practice - SDA old\",\"isPartOf\":{\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png\",\"datePublished\":\"2023-09-03T15:57:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/275c77780dc74bfbcad4288a8c530426\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage\",\"url\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png\",\"contentUrl\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png\",\"width\":800,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bringing closed-loop automation from theory to practice\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#website\",\"url\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/\",\"name\":\"SDA old\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/275c77780dc74bfbcad4288a8c530426\",\"name\":\"markupus\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/59dbbe0c00ab16a52b414bbb73667c6ac92a4048f99a41472c7ef3396e2a07fe?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/59dbbe0c00ab16a52b414bbb73667c6ac92a4048f99a41472c7ef3396e2a07fe?s=96&d=mm&r=g\",\"caption\":\"markupus\"},\"url\":\"https:\/\/www.softwaredefinedautomation.io\/sda-old\/author\/markupus\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bringing closed-loop automation from theory to practice - SDA old","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Bringing closed-loop automation from theory to practice - SDA old","og_description":"What is Closed-Loop Automation? Closed-loop Automation is performing\/automating a self-adaptive output process based on meaningful insights derived from continuous data collected by a system without human interference. In other words, automatically bridging the gap between Data \u2192 Insight and Insight \u2192 Action. Although this concept is well-recognized in academia as \u201cself-adaptation\u201d, it has yet to &hellip; Continued","og_url":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/","og_site_name":"SDA old","article_published_time":"2023-09-03T15:57:13+00:00","og_image":[{"width":800,"height":800,"url":"http:\/\/sda-new.staging.markupus.com\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png","type":"image\/png"}],"author":"markupus","twitter_card":"summary_large_image","twitter_misc":{"Written by":"markupus","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/","url":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/","name":"Bringing closed-loop automation from theory to practice - SDA old","isPartOf":{"@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage"},"image":{"@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png","datePublished":"2023-09-03T15:57:13+00:00","author":{"@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/275c77780dc74bfbcad4288a8c530426"},"breadcrumb":{"@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#primaryimage","url":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png","contentUrl":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-content\/uploads\/sites\/2\/2023\/09\/2.png","width":800,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/resources\/blog\/2023\/09\/03\/closed-loop-automation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/"},{"@type":"ListItem","position":2,"name":"Bringing closed-loop automation from theory to practice"}]},{"@type":"WebSite","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#website","url":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/","name":"SDA old","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/275c77780dc74bfbcad4288a8c530426","name":"markupus","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/59dbbe0c00ab16a52b414bbb73667c6ac92a4048f99a41472c7ef3396e2a07fe?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/59dbbe0c00ab16a52b414bbb73667c6ac92a4048f99a41472c7ef3396e2a07fe?s=96&d=mm&r=g","caption":"markupus"},"url":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/author\/markupus\/"}]}},"_links":{"self":[{"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/posts\/1868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/comments?post=1868"}],"version-history":[{"count":0,"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/posts\/1868\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/media\/1897"}],"wp:attachment":[{"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/media?parent=1868"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softwaredefinedautomation.io\/sda-old\/wp-json\/wp\/v2\/tags?post=1868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}