Sidecar Container Handover for Zero-Downtime PLC Function Upgrades
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current zero-downtime upgrade methods for automation functions controlling PLCs are limited to specific programming languages, such as C++ 11, requiring separate software libraries for each language, which increases development and maintenance efforts and restricts the choice of programming language for development teams.
Innovation Solution
Implementing a sidecar container approach where the test unit and upgrade unit are decoupled from the automation function, allowing communication via a network protocol, enabling zero-downtime upgrades for automation functions in any programming language as long as they can communicate with the sidecar container.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If separate software libraries are implemented for each programming language to enable zero-downtime upgrades, then zero-downtime upgrade capability is achieved, but development and maintenance effort increases
Solution Approach 1:
The patent implements a universal sidecar container architecture that can work with automation functions written in any programming language through standardized communication protocols. Instead of creating separate upgrade libraries for each language (C++, Java, Python, etc.), a single sidecar container design handles all languages uniformly, reducing development and maintenance effort while maintaining zero-downtime upgrade capability across diverse programming languages.
Solution Approach 2:
The sidecar container acts as an intermediary between the PLC and the automation function. It manages the upgrade process, handles communication, and coordinates the transition between old and new automation function versions. This mediator approach centralizes the complexity of zero-downtime upgrades in a single component rather than requiring language-specific implementation in each automation function.
2Reliability
If separate software libraries are implemented for each programming language, then zero-downtime upgrades can be performed, but the choice of programming language for development teams is restricted
Solution Approach 1:
The sidecar container is designed with language-agnostic communication interfaces that can interact with automation functions written in any programming language. The container handles the upgrade logic, version management, and coordination externally, allowing development teams to choose from any programming language (C++, Java, Python, C#, etc.) without being restricted to specific language libraries.
Solution Approach 2:
The system segments the zero-downtime upgrade functionality into a separate sidecar container component, decoupling it from the automation function itself. This segmentation allows the automation function to be written in any language while the upgrade management resides in the standardized container, thereby expanding programming language choices while maintaining upgrade capability.
3Ease of manufacture
If the automation function is stopped for upgrading, then the upgraded function can be deployed, but production downtime occurs
Solution Approach 1:
The sidecar container performs preliminary actions by loading and validating the upgraded automation function version before the current version is stopped. The container prepares the new version in advance, conducts pre-activation tests, and coordinates the handover timing, allowing the transition to occur without production downtime while ensuring the upgraded function is ready for deployment.
Solution Approach 2:
The system maintains continuous control of the actuator throughout the upgrade process. The sidecar container manages parallel execution of old and new automation function versions, ensuring that the actuator continues to be controlled without interruption. The handover between versions is coordinated to maintain continuous useful action, eliminating production downtime during upgrades.
Data Source
AI summary
Disclosed is an automated method and system for upgrading an automation function controlling an actuator via a PLC (programmable logic controller), including:providing a first container and a first sidecar container, whereby the first container contains a first automation function,the first automation function is controlling the actuator via the PLC,providing a second container and a second sidecar container, whereby the second container contains a second automation function,the second automation function is receiving data from the actuator but is not controlling the actuator,based on the received data pre-activation tests for the second automation function are executed in the second sidecar container by the second test unit,if the pre-activation tests are successfully finished, the time when the control of the actuator is handed over is determined, andthe control of the actuator is handed over from the first automation function to the second automation function.


