The present invention relates to industrial control systems, and, in particular, to techniques for improving industrial control systems.
Industrial controllers are special purpose computers used for controlling factory automation and the like. Under the direction of stored programs, a processor of the industrial controller examines a series of inputs reflecting the status of a controlled process and changes outputs affecting control of the controlled process. The stored control programs may be continuously executed in a series of execution cycles, executed periodically, or executed based on events.
The inputs received by the industrial controller from the controlled process and the outputs transmitted by the industrial controller to the controlled process are normally passed through one or more input/output (I/O) modules which serve as an electrical interface between the controller and the controlled process. The inputs and outputs are recorded in an I/O data table in processor memory as control level data. Input values may be asynchronously read from the controlled process by specialized circuitry. Output values are written directly to the I/O data table by the processor, and then communicated to the controlled process by the specialized communications circuitry. The industrial controller may accordingly interact with the controlled process via sensors and actuators in the controlled process environment.
In contrast to more conventional computer systems, industrial control systems generally provide for a more rugged construction resistant to environmental contamination. In addition, industrial control systems normally provide a modular architecture providing greater flexibility and hardware configuration (to match a variety of different control applications), often including distributed processing of multiple programs. In this regard, an industrial control system may be assembled among multiple programmable controllers connected to an arbitrary number of I/O modules (generally hardened and fault tolerant hardware).
The various components of the industrial control system may be connected together by means of a high-speed “control network” using a variety of special protocols that ensure predictable, timely and reliable communication of control data. A number of different control networks commonly used in the industrial controller art include, for example, ControlNet, DeviceNet, and EtherNet/IP, whose specifications are published and whose protocols are used broadly by a number of manufacturers and suppliers.
Control networks also typically employ a protocol for “connected messaging” in which the bandwidth of the network and buffer space is pre-allocated to dedicated “connections” to specific hardware elements to prevent lost, unpredictably delayed data transfer, or misdirected data transfer that can occur in standard network protocols such as Ethernet alone. Examples of connected messaging include Common Industrial Protocol (“CIP”) connected messaging, including as described in “The Common Industrial Protocol (CIP™) and the Family of CIP Networks,” Publication Number PUB00123R0, Copyright 2006, which is hereby incorporated by reference in its entirety.
In the typical implementation flow, a design environment using a standalone computing device is used to create a “project” for implementing a controlled process. The design environment includes knowledge about the particular industrial controllers to be used and their specific configurations, such as their physical I/O addresses. The control program is then prepared in the design environment, compiled and linked before transfer to the industrial controllers as fully executable files delivered him this in modules. Subsequently changing the control program often entails rebuilding the control program and the firmware in the design environment and updating in the industrial controllers. The industrial controllers are therefore typically taken off-line while the updated control program and firmware are delivered resulting in costly downtime.
However, this results in certain rigidity in which the control program cannot be readily changed to accommodate changes in the industrial controllers or the controlled process. For example, a module of the control program cannot be readily moved from one industrial controller to another without breaking previously established resource connections. In addition, transferring the control program to the industrial controllers typically requires disrupting or otherwise compromising the ability of the control system to maintain continuous operation.
Some control systems permit on-line modification and addition of control program modules. However, these on-line modifications and additions are typically limited in that they can only use the exposed interface and instructions provided by the operating system. This is ordinarily a consequence of the desire to provide separation between user applications and the operating system to increase reliability of operation.
Some control systems also allow users to build their own “instructions.” However, these instructions are also typically limited in that they can only use the exposed interface and instructions provided by the operating system.
It is also known in other systems to use “virtualization” to provide additional capabilities. Virtualization allows multiple instances of operating systems or services to operate independently on one hardware platform. However, virtualization typically requires significantly more memory and processing ability to run effectively as each virtual environment has its own copy of operating system services. Moreover, in virtualization, services in different virtual environments generally cannot directly interact.
What is needed is an industrial control system that provides increased efficiency and flexibility without the drawbacks of the prior art.