Distributed control system with seamless software update
A distributed control system includes low-level controllers interacting with field devices, a high-level controller providing instructions, a human-machine interface that receives an input from a user transmits it to the high-level controller, receive from the high-level controller state information of the process, and display this state information to the user; first and second instances of backend software that are communicatively coupled to the high-level controller, first and second instances of frontend software running on respective client devices of the plant, and a software manager that indicates to each client device which version of frontend software is available for the client device, wherein the first instance of frontend software interfaces with the version of the first instance of backend software, and the second instance of frontend software interfaces with the version of the second instance of backend software.
1 . A distributed control system (DCS) for controlling execution of at least one industrial process in an industrial plant, comprising:
one or more low-level controllers stored in one or more memories or one or more hardware low-level controllers configured to interact with field devices that are in a direct physical relationship with the industrial process;
at least one high-level controller stored in a memory or one hardware high-level controller configured to:
provide instructions for executing the industrial process, and/or set-point values at which at least one quantity of interest of the process and/or of the plant is to be kept, to the one or more low-level controllers; and/or
read in sensor data of any type from sensor field devices, and/or any values of quantities of interest reported by the one or more low-level controllers;
at least one human-machine interface (HMI) device configured to:
receive, from a user, user input and transmit the user input and/or a work product derived from it the user input, to the at least one high-level controller; and
receive, from the at least one high-level controller, state information of the process, and display the state information to the user;
at least a first instance and a second instance of backend software that are communicatively coupled to the high-level controller;
at least a first instance and a second instance of frontend software running on respective client devices of the plant; and
a software manager that is at least configured to indicate, to each client device, which version of frontend software is available for this the client device,
wherein the first instance of frontend software is of a version that is configured to interface with a version of the first instance of backend software, and
the second instance of frontend software is of a different version that is configured to interface with a version of the second instance of backend software.
2 . The system of claim 1 , wherein at least one instance of frontend software is running on a human-machine interface device as the client device.
3 . The system of claim 2 , wherein the at least one instance of frontend software is running inside a web browser application on the human-machine interface device.
4 . The system of claim 1 , wherein at least one instance of frontend software is running on a low-level controller as the client device.
5 . The system of claim 1 , wherein at least one client device is configured to report to the software manager a result of an update process of the frontend software on this client device to a new version.
6 . The system of claim 5 , wherein the software manager is configured to, in response to receiving of a failed update process to a new frontend software version, stop indicating this new frontend software version to client devices.
7 . The system of claim 5 , wherein the software manager is further configured to, in response to determining that all client devices have updated from an old version of the frontend software to a new version of the frontend software, cause the shutdown of instances of backend software that are configured to interface with the old version of the frontend software.
8 . The system of claim 5 , wherein the software manager is further configured to cause access to instances of backend software to be granted only to those client devices with a version of frontend software that is configured to interface with the version of the instance of backend software.
9 . The system of claim 1 , further comprising a policy server, wherein the policy server is configured to receive, from an administrator, assignments of versions of frontend software to client devices; and wherein the software manager is configured to receive the assignments from the policy server.
10 . The system of claim 9 , wherein the software manager is configured to, in response to receiving a failed update process to a new frontend software version, send a request to the policy server not to assign the new frontend software version to client devices.
11 . The system of claim 9 , wherein the policy server, and/or a separate advisor entity through which the assignments are passed to the policy server, is configured to check the assignments against a library of compatibilities between available versions of frontend software and running versions of backend software.
12 . The system of claim 1 , wherein the software manager is further configured to receive from a user a condition as to when frontend software on a client device shall be updated to new version; and, in response to receiving from the user the condition, indicate the new version of frontend software as available to the client device.
13 . The system of claim 12 , wherein the condition comprises one or more of a fixed time at which to update; an idle state of the client device; and/or availability of redundancy in case the client device becomes unavailable.
14 . The system of claim 1 , wherein at least one instance of frontend software is a Progressive Web Application (PWA).
15 . The system of claim 14 , wherein a web worker of the PWA is configured to obtain from the software manager an indication of whether new versions of the frontend software are available.