AN AUTOMATION SYSTEM AND A METHOD THAT PROVIDE A GLOBAL VIEW FOR MANAGING ANY INDUSTRIAL CONTROLLER IN A NETWORK

A system and a method provide a global view of an automation system for any industrial controller in a network. The method comprises providing a distributed version control runtime system for managing industrial controller process images in that an automation engineering process provides non-linear workflows. The method further comprises providing an engineering system having a first industrial controller program database of an industrial controller program. The method further comprises providing a first industrial controller having a first process image including a second industrial controller program database of an industrial controller program and a first historian database. The method further comprises providing a second industrial controller having a second process image including a third industrial controller program database of an industrial controller program and a second historian database. The method further comprises managing versions of the automation code and versions of the data of the industrial controller process image.

BACKGROUND

Aspects of the present invention generally relate to a system and a method that provide a global view for managing any industrial controller in a network. A zero downtime distributed process image management system is provided.

2. Description of the Related Art

A process image is the heart of a running programmable logic controller (PLC). It provides a snapshot of all inputs, outputs, and internal variables that the PLC has access to at any given point in time, and the PLC source code. The process image is always bound to a specific PLC. The process image may be inspected using an engineering system (e.g., TIA Portal) via a debugging interface to inspect it live.

Today, unfortunately, the process image cannot be explicitly managed. This includes the inability to save it, create copies for testing, clone it to another PLC for inspection or further development, change the values on-the-fly, or push code changes to analyze their effect.

Today, process images are not visible to a user. In PLCs, the process image is a data structure that is visible only to a runtime system and it is used to execute cyclic or event-based PLC programs. When things go wrong in the real world, there are only two ways for people to inspect the problem:

1. Engineering system (e.g., TIA Portal). The engineer must inspect the live process image of each PLC through the engineering system's debugging capabilities. This gives them access to PLC code as it executes live values of inputs, outputs, DBs, and memory. If there are other PLCs involved, the process must be repeated as a separate session. The current limitations only allow the engineer to see a process image that is local to a specific PLC. Moreover, current PLCs do not allow the engineer to save a copy of the process image.

2. Historian. To overcome the limitation #1, the PLCs can save their process image to disk via the historian. This provides engineers more evidence when things go wrong in the real world, however, the historian only provides a recording of the values for only a few minutes. This is true for TIA Portal. The historian feature provided is called S7-Trace. The user can configure a S7-Trace in memory using TIA Portal and depends on the frequency of the data tag, it may only store a few minutes of data before the trace gets overwritten in the memory. The memory in the PLC is very limited. Definitely it is not possible to get a snapshot of the entire process image today. Even if the historian would allow for larger storage and potentially save the process image for years, current PLCs do not allow to load a snapshot of the process image to the PLC for inspection. Other Process Historian solutions come from HMI/SCADA, which is higher layer than PLC in the automation pyramid. The update rate (typically in seconds) is much slower and it is not suitable to store high-speed, high frequency process data.

Therefore, there is a need to better manage a process image of a running programmable logic controller (PLC).

SUMMARY

Briefly described, aspects of the present invention relate to a system and a method that provide a global view for managing any industrial controller in a network. It manages a process image of a running programmable logic controller (PLC). In particular, a distributed version control runtime system is provided for PLC process images. The runtime system is capable of managing the process image that allows: Versioning of process images—assign tags to process images, Branching of process images—create a fresh copy of a process image, merging of process images—merge changes from one process image version to Another, identifying difference of process images—what's different between process image version 1.0 and version 1.6, attaching process image to device—associate a process image to a PLC, detaching process image from device—disassociate a process image from a PLC, and reverting to any process image version—load a specific process image version. The present invention enables the rapid discovery of bugs and errors in runtime systems, and it provides more flexibility to the automation engineering process by providing non-linear workflows.

In accordance with one illustrative embodiment of the present invention, a computer-implemented method for providing a global view of an automation system for any industrial controller in a network is provided. The method performed by the automation system comprises providing a distributed version control runtime system for managing industrial controller process images where an automation engineering process provides non-linear workflows. An industrial controller process image comprises a data structure of which data is visible to the distributed version control runtime system and an automation code that is used to execute cyclic or event-based industrial controller programs. The method further comprises providing an engineering system having a first industrial controller program database of an industrial controller program. The method further comprises providing a first industrial controller having a first process image including a second industrial controller program database of an industrial controller program and a first historian database of historian data. The method further comprises providing a second industrial controller having a second process image including a third industrial controller program database of an industrial controller program and a second historian database of historian data. The method further comprises managing versions of the automation code and versions of the data of the industrial controller process image via branching from a first version of the industrial controller process image to a second version of the industrial controller process image and merging the first version and the second version of the industrial controller process image.

In accordance with another illustrative embodiment of the present invention, an automation system is provided that provides a global view for managing any industrial controller in a network. The system comprises a processor and an accessible memory storing an automation program comprising software instructions that when executed by the processor are configured to provide a distributed version control runtime system for managing industrial controller process images in that an automation engineering process provides non-linear workflows. An industrial controller process image comprises a data structure in which data is visible to the distributed version control runtime system and an automation code that is used to execute cyclic or event-based industrial controller programs. The software instructions provide an engineering system having a first industrial controller program database of an industrial controller program. The software instructions provide a first industrial controller having a first process image including a second industrial controller program database of an industrial controller program and a first historian database of historian data. The software instructions provide a second industrial controller having a second process image including a third industrial controller program database of an industrial controller program and a second historian database of historian data. The software instructions manage versions of the automation code and versions of the data of the industrial controller process image via branching from a first version of the industrial controller process image to a second version of the industrial controller process image and merging the first version and the second version of the industrial controller process image.

DETAILED DESCRIPTION

To facilitate an understanding of embodiments, principles, and features of the present invention, they are explained hereinafter with reference to implementation in illustrative embodiments. In particular, they are described in the context of a system and a method that provide a global view for managing any industrial controller in a network. For example, to manage a process image of a running programmable logic controller (PLC). The present invention takes inspiration from distributed version control systems for source code to allow the process image in PLCs to be versioned and managed. This enables unprecedented new functionality and flexibility to the automation engineering and automation runtime of PLCs. Global view on the automation system is provided. The present invention allows the engineers to see any program version, with any process image version, from any PLC in the network. By providing access to both code and data, the present invention improves the efficiency of the automation engineering process. It allows engineers to quickly identify situations, errors, and problems that would otherwise take longer to identify via indirect methods. The present invention provides the management of process image branches. The present invention provides non-linear development. The present invention provides process image migration. Embodiments of the present invention, however, are not limited to use in the described devices or methods.

These and other embodiments of an automation system according to the present disclosure are described below with reference toFIGS.1-8herein. Like reference numerals used in the drawings identify similar or identical elements throughout the several views. The drawings are not necessarily drawn to scale.

Consistent with one embodiment of the present invention,FIG.1represents a block diagram of an automation system105that provides a global view for managing any industrial controller107in a network110in accordance with an exemplary embodiment of the present invention. The automation system105comprises a processor112and an accessible memory115storing an automation program117comprising software instructions120that when executed by the processor112are configured to provide a distributed version control runtime system122for managing industrial controller process images125in that an automation engineering process127provides non-linear workflows130. An industrial controller process image125(1) comprises a data structure132of which data135(1) is visible to the distributed version control runtime system122and an automation code135(2) that is used to execute cyclic or event-based industrial controller programs137.

The software instructions120to provide an engineering system140having a first industrial controller program database142(1) of an industrial controller program145(1). The software instructions120to provide a first industrial controller147(1) having a first process image150(1) including a second industrial controller program database142(2) of an industrial controller program145(2) and a first historian database152(1) of historian data155(1). The software instructions120to provide a second industrial controller147(2) having a second process image150(2) including a third industrial controller program database142(3) of an industrial controller program145(3) and a second historian database152(2) of historian data155(2). The software instructions120manage versions of the automation code135(2) and versions of the data135(1) of the industrial controller process image125(1) via branching from a first version157(1) of the industrial controller process image125(1) to a second version157(2) of the industrial controller process image125(1) and merging the first version157(1) and the second version157(2) of the industrial controller process image125(1).

The software instructions120when executed by the processor112are configured to distribute management of a version control160of the industrial controller process image125(1) across the engineering system140, the first industrial controller147(1) and the second industrial controller147(2). The software instructions120when executed by the processor112are configured to clone a live branch162(1) of the industrial controller process image125(1) into a new branch162(2) of the industrial controller process image125(1). The software instructions120to modify the industrial controller process image125(1) by interacting between the live branch162(1) and the new branch162(2).

The software instructions120test a new automation code165of the industrial controller process image125(1) against a live data167(1) of a running system. The software instructions120test the new automation code165of the industrial controller process image125(1) against a historic data167(2). The software instructions120reproduce any historical situation of the industrial controller process image125(1) by combining a version of an industrial controller program145(1) from the engineering system140, the first industrial controller147(1) or the second industrial controller147(2) with a version of historian data155from any one or more of the engineering system140, the first industrial controller147(1) or the second industrial controller147(2).

The software instructions120store local changes to the automation code135(2) in the first industrial controller program database142(1). The software instructions120store local changes to inputs, outputs, databases, and memory in the first historian database152(1).

In one embodiment, the first industrial controller147(1) is a first programmable logic controller (PLC) and the second industrial controller147(2) is a second PLC and the industrial controller process image125(1) is a PLC process image. The software instructions120enable migration of the entire PLC process image including both the automation code135(2) and the data135(1) from the first PLC to the second PLC with zero downtime. The software instructions120patch a firmware of the first PLC with zero downtime. In case of a failure of the first PLC, a slave PLC being the second PLC switches a redundant branch of the second PLC to a live branch of the second PLC from a live branch of the first PLC.

In one embodiment, a global view of an automation system refers to all the data available in the system105, including sensors, actuators, and controllers. An industrial controller refers to an electronic device that controls an industrial process. A network is a group of interconnected devices. A distributed version control runtime system refers to a runtime system that is an engine that translates a given programming language or languages into machine code. An industrial controller process image comprises a list of inputs, outputs, and internal states of a controller. An automation engineering process refers to a task of writing a control logic in software, and configuration of a control device. A non-linear workflow refers to tasks that occur asynchronously and in a distributed manner. An automation code is a software that runs in a controller that controls a process. Cyclic or event-based industrial controller programs refer to cyclic (repeats itself every X time units) and event-based (repeats itself whenever an event occurs). An engineering system is a software tool to develop automation code and configuration. An industrial controller program database is a database where programs are stored. An industrial controller program is a control code. A historian database of historian data is a database where historian data is stored. A version control refers to a system that records changes in data so it can be recalled later. A live branch is a data set that is being used for controlling a process. Zero downtime means production is not stopped for re-engineering or maintenance.

Referring toFIG.2, it illustrates a block diagram of a distributed version control system205for PLC process images207(1-2) in accordance with an exemplary embodiment of the present invention. The main system architecture of the automation system105is as shown inFIG.2. An engineering system208and PLC 1 and PLC 2209(1-2) has local databases: PLC program DBs210(1-3) and Historian DBs212(1-2). The PLC program DB210(1) has versions VER 1-5215(1-5). The PLC program DB210(2) of PLC process image207(1) has versions VER 1-3217(1-3). The Historian DB212(1) of PLC process image207(1) has versions VER 1-5220(1-5). The PLC program DB210(3) of PLC process image207(2) has versions VER 1-2222(1-2). The Historian DB212(2) of PLC process image207(2) has versions VER 1-3225(1-3). For example, VER 1215(1), VER 1217(1), VER 1222(1) are the same versions.

The PLC Program Database (DB)210stores local changes to the automation code (e.g., IEC 61131-3). The Historian Database (DB)212stores local changes to the IOs, DBs, and Memory. This architecture allows the system105to reproduce any historical situation by combining a version of a PLC program—from any hardware—with a version of the Historian data—from the same or other hardware. For example, this is very useful after the commissioning phase when there are last-minute changes to the automation code made in the commissioned PLCs. As commissioning engineers find errors or bugs in the software fixes on the spot that today never make it back to the “main” program code. This causes a mismatch between versions. Next time an improvement of the “main” program code is pushed to the field PLCs, the commissioning changes are forever lost. In this architecture, the Historian Database212is updated every cycle, and the PLC program Database210is updated whenever there are changes to the automation code. The system105maintains these two databases separate as the Historian Database212is updated at a high-frequency, and the PLC Program Database210is updated at a lower frequency. In addition, it involves managing versions of code via branching, merging and cloning.

Turning now toFIG.3, it illustrates non-linear development, bug fixing, and feature improvement of automation engineering programs with data in accordance with an exemplary embodiment of the present invention. The system105supports branching and merging. These actions can be visualized through the engineering system as shown inFIG.3. In a PLC, a live branch305is the code version that the PLC is executing. However, the engineers can create branches at any point in time. For example, a bug fix307after commissioning done directly in the PLC Hardware is branched, fixed, and merged back to the live branch305. Similarly, the live branch305can be branched from the PLC Hardware into the Engineering System where a new Feature A310is developed and merged back to the PLC Hardware. Another type of typical changes are configuration changes to the running system. For example, disabling warnings in the HMI312attached to the PLC hardware can be done directly in the PLC Hardware. The live branch305of a PLC can also be branched to a remote system such as the Engineering System to reproduce errors315when combining a snapshot of the live branch305with data from the historian. Likewise, improvements to the Feature A and bug fixes317can be done in the Engineering System. After the errors have been fixed, the branch that reproduced errors can be merged locally in the Engineering System with the Feature A bug fixes317. Then, after some testing, the resulting branch from the Engineering System can be merged to the Live Branch305in the PLC Hardware. The live branch305has seven dots320(1-7) each of which represent a version going from left to right version 1 to version 7.

The system105allows the migration of the entire process image (both code and data) from one PLC to another with zero downtime. This enables the deployment of high availability applications such as failover, hot patching, and restoration of process images after failures.

FIG.4illustrates automation component replacement in accordance with an exemplary embodiment of the present invention. Consider the example inFIG.4where a legacy PLC (S7400) is decommissioned and a new PLC (S71500) is commissioned. The system105allows: the creation of a validation branch405in the new PLC (S71500), after a period of time elapses and the correct behavior of the new PLC is confirmed, a live branch407can then be swapped from the legacy system to the new system.

As seen inFIG.5, it illustrates a firmware update in accordance with an exemplary embodiment of the present invention. Consider the example inFIG.5where the firmware of a PLC is patched with zero downtime. First, a live branch505is swapped to another PLC. Then the PLC is patched. After the successful patch is confirmed, then a validation branch507is created and executed until correct behavior is confirmed. Then, the live branch505can be swapped back to the now patched PLC.

As shown inFIG.6, it illustrates high-availability failover in accordance with an exemplary embodiment of the present invention. Consider the example inFIG.6where two PLCs are configured redundantly. A redundant branch605in a slave PLC is created and synchronized on every cycle. In case of a failure, a live branch607does not synchronize, and the slave PLC switches the redundant branch605to the live branch607.

InFIG.7, it illustrates a schematic view of a flow chart of a method700for providing a global view of an automation system for any industrial controller in a network in accordance with an exemplary embodiment of the present invention. Reference is made to the elements and features described inFIGS.1-6. It should be appreciated that some steps are not required to be performed in any particular order, and that some steps are optional.

The method700comprises a step705of providing a distributed version control runtime system for managing industrial controller process images in that an automation engineering process provides non-linear workflows. An industrial controller process image comprises a data structure of which data is visible to the distributed version control runtime system and an automation code that is used to execute cyclic or event-based industrial controller programs. The method700further comprises a step710of providing an engineering system having a first industrial controller program database of an industrial controller program.

The method700further comprises a step715of providing a first industrial controller having a first process image including a second industrial controller program database of an industrial controller program and a first historian database of historian data. The method700further comprises a step720of providing a second industrial controller having a second process image including a third industrial controller program database of an industrial controller program and a second historian database of historian data. The method700further comprises a step725of managing versions of the automation code and versions of the data of the industrial controller process image via branching from a first version of the industrial controller process image to a second version of the industrial controller process image and merging the first version and the second version of the industrial controller process image.

With regard toFIG.8, it shows an example of a computing environment800within which embodiments of the disclosure may be implemented. For example, this computing environment800may be configured to execute the automation system discussed above with reference toFIG.1or to execute portions of the method700described above with respect toFIG.7. Computers and computing environments, such as computer system810and computing environment800, are known to those of skill in the art and thus are described briefly here.

As shown inFIG.8, the computer system810may include a communication mechanism such as a bus821or other communication mechanism for communicating information within the computer system810. The computer system810further includes one or more processors820coupled with the bus821for processing the information. The processors820may include one or more central processing units (CPUs), graphical processing units (GPUs), or any other processor known in the art.

The computer system810also includes a system memory830coupled to the bus821for storing information and instructions to be executed by processors820. The system memory830may include computer readable storage media in the form of volatile and/or nonvolatile memory, such as read only memory (ROM)831and/or random access memory (RAM)832. The system memory RAM832may include other dynamic storage device(s) (e.g., dynamic RAM, static RAM, and synchronous DRAM). The system memory ROM831may include other static storage device(s) (e.g., programmable ROM, erasable PROM, and electrically erasable PROM). In addition, the system memory830may be used for storing temporary variables or other intermediate information during the execution of instructions by the processors820. A basic input/output system (BIOS)833containing the basic routines that helps to transfer information between elements within computer system810, such as during start-up, may be stored in ROM831. RAM832may contain data and/or program modules that are immediately accessible to and/or presently being operated on by the processors820. System memory830may additionally include, for example, operating system1034, application programs835, other program modules836and program data837.

The computer system810also includes a disk controller840coupled to the bus821to control one or more storage devices for storing information and instructions, such as a hard disk841and a removable media drive842(e.g., floppy disk drive, compact disc drive, tape drive, and/or solid state drive). The storage devices may be added to the computer system810using an appropriate device interface (e.g., a small computer system interface (SCSI), integrated device electronics (IDE), Universal Serial Bus (USB), or FireWire).

The computer system810may also include a display controller865coupled to the bus821to control a display866, such as a cathode ray tube (CRT) or liquid crystal display (LCD), for displaying information to a computer user. The computer system includes an input interface860and one or more input devices, such as a keyboard862and a pointing device861, for interacting with a computer user and providing information to the processor820. The pointing device861, for example, may be a mouse, a trackball, or a pointing stick for communicating direction information and command selections to the processor820and for controlling cursor movement on the display866. The display866may provide a touch screen interface which allows input to supplement or replace the communication of direction information and command selections by the pointing device1061.

The computer system810may perform a portion or all of the processing steps of embodiments of the invention in response to the processors820executing one or more sequences of one or more instructions contained in a memory, such as the system memory830. Such instructions may be read into the system memory830from another computer readable medium, such as a hard disk841or a removable media drive842. The hard disk841may contain one or more datastores and data files used by embodiments of the present invention. Datastore contents and data files may be encrypted to improve security. The processors820may also be employed in a multi-processing arrangement to execute the one or more sequences of instructions contained in system memory830. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.

The computing environment800may further include the computer system810operating in a networked environment using logical connections to one or more remote computers, such as remote computer880. Remote computer880may be a personal computer (laptop or desktop), a mobile device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer system810. When used in a networking environment, computer system810may include modem872for establishing communications over a network871, such as the Internet. Modem872may be connected to bus821via user network interface870, or via another appropriate mechanism.

In some embodiments, the computer system810may be utilized in conjunction with a parallel processing platform comprising a plurality of processing units. This platform may allow parallel execution of one or more of the tasks associated with optimal design generation, as described above. For the example, in some embodiments, execution of multiple product lifecycle simulations may be performed in parallel, thereby allowing reduced overall processing times for optimal design selection.

The embodiments of the present disclosure may be implemented with any combination of hardware and software. In addition, the embodiments of the present disclosure may be included in an article of manufacture (e.g., one or more computer program products) having, for example, computer-readable, non-transitory media. The media has embodied therein, for instance, computer readable program code for providing and facilitating the mechanisms of the embodiments of the present disclosure. The article of manufacture can be included as part of a computer system or sold separately.

A graphical user interface (GUI), as used herein, comprises one or more display images, generated by a display processor and enabling user interaction with a processor or other device and associated data acquisition and processing functions. The GUI also includes an executable procedure or executable application. The executable procedure or executable application conditions the display processor to generate signals representing the GUI display images. These signals are supplied to a display device which displays the image for viewing by the user. The processor, under control of an executable procedure or executable application, manipulates the GUI display images in response to signals received from the input devices. In this way, the user may interact with the display image using the input devices, enabling user interaction with the processor or other device.

The functions and process steps herein may be performed automatically or wholly or partially in response to user command. An activity (including a step) performed automatically is performed in response to one or more executable instructions or device operation without user direct initiation of the activity.

The system and processes of the figures are not exclusive. Other systems, processes and menus may be derived in accordance with the principles of the invention to accomplish the same objectives. Although this invention has been described with reference to particular embodiments, it is to be understood that the embodiments and variations shown and described herein are for illustration purposes only. Modifications to the current design may be implemented by those skilled in the art, without departing from the scope of the invention. As described herein, the various systems, subsystems, agents, managers and processes can be implemented using hardware components, software components, and/or combinations thereof.

Although specific embodiments of the disclosure have been described, one of ordinary skill in the art will recognize that numerous other modifications and alternative embodiments are within the scope of the disclosure. For example, any of the functionality and/or processing capabilities described with respect to a particular device or component may be performed by any other device or component. Further, while various illustrative implementations and architectures have been described in accordance with embodiments of the disclosure, one of ordinary skill in the art will appreciate that numerous other modifications to the illustrative implementations and architectures described herein are also within the scope of this disclosure. In addition, it should be appreciated that any operation, element, component, data, or the like described herein as being based on another operation, element, component, data, or the like can be additionally based on one or more other operations, elements, components, data, or the like. Accordingly, the phrase “based on,” or variants thereof, should be interpreted as “based at least in part on.”

While a programmable logic controller (PLC) is described here a range of one or more other industrial controllers or other forms of industrial controllers are also contemplated by the present invention. For example, other types of industrial controllers may be implemented based on one or more features presented above without deviating from the spirit of the present invention.

The techniques described herein can be particularly useful for industrial controller process image. While particular embodiments are described in terms of the industrial controller process image, the techniques described herein are not limited to industrial controller process image but can also be used with other data structures.

Additionally, any examples or illustrations given herein are not to be regarded in any way as restrictions on, limits to, or express definitions of, any term or terms with which they are utilized. Instead, these examples or illustrations are to be regarded as being described with respect to one particular embodiment and as illustrative only. Those of ordinary skill in the art will appreciate that any term or terms with which these examples or illustrations are utilized will encompass other embodiments which may or may not be given therewith or elsewhere in the specification and all such embodiments are intended to be included within the scope of that term or terms.

Respective appearances of the phrases “in one embodiment,” “in an embodiment,” or “in a specific embodiment” or similar terminology in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any particular embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the invention.