PROVISIONING OF CONTROL LAYER APPLICATIONS FOR USE IN INDUSTRIAL CONTROL ENVIRONMENTS
20180011465 · 2018-01-11
Inventors
- George Lo (Langhorne, PA, US)
- Livio Dalloro (Plainsboro, NJ, US)
- Thomas Gruenewald (Somerset, NJ, US)
- Christian Winkler (Gräfelfing, DE)
- Peter Kob (Heroldsberg, DE)
- Andreas Scholz (Unterschleißheim, DE)
- Mina Azib (Princeton, NJ, US)
- Hermann Friedrich (Zorneding, DE)
- Ren-Yi Lo (Monmouth Junction, NJ, US)
Cpc classification
Y02P90/02
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G05B23/0213
PHYSICS
Y02P90/80
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G05B19/05
PHYSICS
G06Q20/085
PHYSICS
G05B2219/23297
PHYSICS
H04W4/60
ELECTRICITY
International classification
G05B19/05
PHYSICS
H04W4/00
ELECTRICITY
Abstract
A control layer automation device comprises a processor, one or more control layer applications, a database, a wireless interface, a device memory. Each control layer application is configured to perform a discrete set of automation functions. The database comprises a plurality of operator device identifiers and the wireless interface allows the one or more control layer applications to communicate with a plurality of operator devices via the plurality of operator device identifiers. The device memory comprises the one or more control layer applications. The control layer application manager is configured to manage execution of the one or more control layer applications on the processor.
Claims
1. A programmable logic controller operating in an automation system, the programmable logic controller comprising: a processor; one or more control layer applications, each control layer application configured to perform a discrete set of automation functions; a database comprising a plurality of operator device identifiers; a wireless interface allowing the one or more control layer applications to communicate with a plurality of operator devices via the plurality of operator device identifiers; a device memory comprising the one or more control layer applications; and a control layer application manager configured to manage execution of the one or more control layer applications on the processor, wherein the control layer applications comprise a diagnostic application configured to (a) detect a fault occurring in the automation system via inputs received from one or more field devices; and (b) send a notification to at least one of the plurality of operator devices using the wireless interface.
2. The programmable logic controller of claim 1, further comprising: a marketplace client configured to communicate with a marketplace server to download the one or more control layer applications.
3. The programmable logic controller device of claim 2, wherein the control layer application manager is further configured to: receive a request for functionality that is not available in the one or more control layer applications; identify a new control layer application providing the functionality; and retrieve the new control layer application from the marketplace server via the marketplace client.
4. The programmable logic controller of claim 3, wherein the control layer application manager is configured to autonomously identify and retrieve the new control layer application.
5. The programmable logic controller of claim 1, wherein the one or more control layer applications comprise at least one interface application configured to present a graphical user interface comprising status information on an operator device.
6. The programmable logic controller of claim 1, further comprising: a plurality of isolated computing environments, each isolated computing environment providing runtime computing resources for a distinct one of the control layer applications.
7. The programmable logic controller of claim 6, wherein each of the plurality of isolated computing environments comprises a discrete portion of the device memory.
8. The programmable logic controller of claim 6, wherein each of the plurality of isolated computing environments restricts network access for a respective control layer application to communication with the plurality of operator devices.
9. The programmable logic controller of claim 1, further comprising: a real-time scheduler configured to schedule processing of the one or more control layer applications to facilitate real-time or near real-time execution on the processor.
10. The programmable logic controller of claim 1, further comprising: a peer device interface configured to: transmit first data associated with the one or more control layer applications to a first external control layer automation device, and receive second data associated with one or more external control layer applications from a second external control layer automation device.
11. A method for managing control layer applications in an automation system, the method comprising: executing, by a programmable logic controller, a plurality of control layer application comprising a diagnostic application; generating, by the diagnostic application, a notification event in response to detecting a fault occurring in the automation system via inputs received from one or more field devices; identifying, by the programmable logic controller, an operator device associated with the notification event; generating, by the programmable logic controller, a message based on the notification event; and transmitting, by the programmable logic controller, the message to the operator device via a network interface included in the programmable logic controller.
12. The method of claim 11, further comprising: receiving, by the programmable logic controller, a request to modify one or more device settings associated with a first control layer application included in the plurality of control layer applications; and modifying, by the programmable logic controller, the one or more device settings based on the request.
13. The method of claim 11, further comprising: maintaining, by the programmable logic controller, a plurality of isolated computing environments, each isolated computing environment providing distinct runtime computing resources, wherein each of the plurality of control layer applications is executed in a discrete isolated computing environment included in the plurality of isolated computing environments.
14. The method of claim 13, wherein each of the plurality of isolated computing environments comprises a discrete portion of device memory associated with the programmable logic controller
15. The method of claim 13, wherein each of the plurality of isolated computing environments restricts network access for a respective control layer application to communication with external devices.
16. A method for managing control layer applications, the method comprising: maintaining, by a programmable logic controller, a plurality of isolated computing environments, each isolated computing environment providing distinct runtime computing resources; executing, by the programmable logic controller, a plurality of control layer applications in the plurality of isolated computing environments, each control layer application configured to perform a discrete set of automation functions; scheduling, by the programmable logic controller, processing of the plurality of control layer applications to facilitate real-time or near real-time execution on a processor associated with the programmable logic controller.
17. The method of claim 16, further comprising: receiving, by the programmable logic controller, a request to modify one or more device settings associated with a first control layer application included in the plurality of control layer applications; and modifying, by the programmable logic controller the one or more device settings based on the request.
18. The method of claim 16, further comprising: receiving, by the programmable logic controller, a request for functionality that is not available in the plurality of control layer applications; identifying, by the programmable logic controller, a new control layer application providing the functionality; and retrieving, by the programmable logic controller, the new control layer application from a marketplace server.
19. The method of claim 18, wherein the request is received from an operator device external to the programmable logic controller.
20. The method of claim 18, further comprising: facilitating, by the programmable logic controller, a transaction with the marketplace server for payment of the new control layer application.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The foregoing and other aspects of the present invention are best understood from the following detailed description when read in connection with the accompanying drawings. For the purpose of illustrating the invention, there are shown in the drawings embodiments that are presently preferred, it being understood, however, that the invention is not limited to the specific instrumentalities disclosed. Included in the drawings are the following Figures:
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
DETAILED DESCRIPTION
[0021] Systems, methods, and apparatuses are described herein which relate generally to software applications that are downloaded to control layer automation devices to perform a specific set of functions not typically found in such devices. More specifically, these applications, referred to herein as “control layer applications” are self-contained programs or pieces of software designed to perform functions which supplement, extend, or replace the functionality currently available in automation systems. The technology described herein may be applied in a variety of settings where control systems are used including, without limitation, industrial production environments.
[0022]
[0023] Briefly, data received from the Production Units (e.g., Units 105A, 105B, 105C, and 105D) is transferred by the Control Layer Devices to the IT Layer 115. The IT Layer 115 includes systems which perform various post-processing and storage tasks. The example of
[0024] One or more of the devices at the Control Layer 110 are configured to execute control layer applications. Various functions can be performed by these applications. Example functions that may be performed by control layer applications include tasks related to one or more of product engineering, production engineering, commissioning, sensing/acting, control, monitoring, optimization, collaboration, diagnostics, and business intelligence. For example, in some embodiments, each control layer device includes a control layer Application providing onboard engineering tools which allow a user to do basic configuration and engineering without the need of workstation engineering program. Additionally, because these applications are operating at the control layer, they may take advantage of data not typically made available at higher layers. For example, in some embodiments, the control layer applications may enrich data using additional context dimensions such as control knowledge, environmental conditions, and service incidences. This allows insights to be made from data analytics with higher confidence and quality. The additional context dimensions may also yield new insights. In some embodiments, the control layer applications each use semantic data representation languages and/or standards for data in automation systems in order to integrate with the other components of the system 100 with minimal effort. In some embodiments, the control layer applications may also provide distributed data sharing both within the system 100 and externally, integrating with Big Data infrastructures.
[0025]
[0026] A Marketplace Component 110F1 is configured to download control layer applications from an external Marketplace Server which hosts control layer applications. The downloads may be initiated by a user such as a maintenance engineer. For example, the Marketplace Component 110F1 may provide a graphical user interface (GUI) which allows the user to view and download control layer applications available on the server. Additionally, in some embodiments, downloads are performed automatically by the Controller 110F. Thus, if the Controller 110F determines that it requires a particular control layer application to perform an operation, it can download it autonomously using the Marketplace Component 110F1. The downloaded applications are stored in an App Repository 110F3 (e.g., a designated portion of the Controller's 110F's non-volatile memory).
[0027] Continuing with reference to
[0028] The App Manager 110F4 is configured to manage execution of the control layer applications on the Controller 110F. In some embodiments, the App Manager 110F4 includes a real-time scheduler configured to schedule processing of the control layer applications to facilitate real-time or near real-time execution on the Controller's 110F processor. The App Manager 110F4 may also record information such as events associated with the control layer applications executing on the Controller 110F. This information may be used, for example, by an engineer to provide an initial analysis of a problem with the Controller 110F. Additionally, the App Manager 110F4 may enable a user to connect to the Controller 110F indirectly or directly using a wireless network connection (e.g., via a Wi-Fi or Bluetooth). Using this connection, the user's device can retrieve and display a graphical user interface (GUI) which enables the user to view state information and modify configuration settings associated with the Controller 110F or the control layer applications used by the Controller 110F. In some embodiments, the GUI is delivered in a well-supported format (e.g., HTML) allowing for cross-device compatibility.
[0029]
[0030] Control layer applications are created by application developers in development environments such as Application Development Environment 205 in
[0031] The Application Hosting Environment 210 provides functionality for creating, managing, and hosting control layer applications. In the example of
[0032] The Control Layer Application IDE 210A provides functionality for creating and maintaining control layer applications. This IDE 210A may provide, for example, tools, documentation, and source code which allow the Application Developer 205A to quickly develop applications for the Production Environment 215. In some embodiments, the IDE 210A may also include functionality for testing and debugging the application code. One example of a Control Layer Application IDE 210A is described in greater detail below with reference to
[0033] The Control Layer Application Marketplace 210B makes control layer applications available to users (e.g., via download). In some embodiments, the Control Layer Application Marketplace 210B includes a web-based store interface where users can browse through different categories of control layer applications, view descriptive information about each control layer applications, and acquire control layer applications. The Control Layer Application Marketplace 210B may also provide information such as reviews or ratings with each control layer application. In one embodiment, the Control Layer Application Marketplace 210B also handles any financial transactions associated with acquiring control layer application. For example, the Application Developer 205A may set a price for each control layer application uploaded to the Control Layer Application Marketplace 210B. Upon a purchase of one of the Application Developer's 205 applications, the Control Layer Application Marketplace 210B will send the funds to the Application Developer 205A. A portion of the funds representing commission fees due to the Control Layer Application Marketplace 210B may be automatically deducted by Control Layer Application Marketplace 210B prior to transmission to the Application Developer. In some embodiments, the Control Layer Application Marketplace 210B may include security related functionality. For example, in one embodiment, the Control Layer Application Marketplace 210B notify an end user (e.g., operator or maintenance engineer) that a control layer application was found to include malicious software or critical errors. The end user can later safely disable or remove the application from the operational standpoint.
[0034] At the Production Environment 215, control layer applications are installed and used on control layer devices. In the example of
[0035] Each device in the Production Environment 215 may have its own unique set of applications. For example, Controller 215A includes two applications 215A2 and 215A3 that are not installed on Controller 215B. Similarly, Controller 215B includes an application 215B2 that is not installed on controller 215A. Thus, each device may be configured uniquely based on the desired functionality of the system. As an another example, Field Device 215C includes a Control Layer Application 215C2 that is not installed on Field Device 215D. The Control Layer Application 215C2 may provide functionality which may be incompatible. For example, if Field Device 215C is part of a beverage flavoring device system, the Control Layer Application 215C2 may provide functionality related to developing a specific flavor combination. If the other Field Device 215D is part of a different type of device system (e.g., a mixer), the functionality of a flavoring application may be meaningless. Thus, this Control Layer Application 215C2 can be omitted from the Field Device 215D.
[0036] In some embodiments, the control layer applications installed on the Control Layer Devices 215A, 215B, 215C, and 215D allow an onsite maintenance engineer 215E to perform functions such as administration, maintenance, and/or monitoring of the Control Layer Devices 215A, 215B, 215C, and 215D. For example, in some embodiments, the Control Layer Devices 215A, 215B, 215C, and 215D each include networking functionality which allows the devices to communicate (directly or indirectly) with a wireless device 215F (e.g., tablet computer) operated by the onsite maintenance engineer 215E. Thus, the onsite maintenance engineer 215E can directly interact with and modify the control layer devices 215A, 215B, 215C, and 215D within the Production Environment 215. To continue with the example of a beverage flavoring system, the onsite maintenance engineer 215E may use the wireless device 215F to modify the ratios of ingredients being used for each beverage. Alternatively, the onsite maintenance engineer 215E may install an entirely new application to provide new flavoring combinations not available in the system. In some embodiments, the onsite maintenance engineer 215E can perform many, if not all, configuration and maintenance operations with the devices 215A, 215B, 215C, and 215D directly with the wireless device 215F, even if the onsite maintenance engineer 215E is in close proximity to the devices 215A, 215B, 215C, and 215D. Moreover, in some embodiments, engineers can even perform such operations offsite over networks such as the Internet or corporate intranets. This may be contrasted with conventional systems where modification of system behavior requires the engineer to diagnose the problem onsite and then go offsite to develop the source code for the solution which must then be brought back to the site for installation. Thus, the control layer applications installed on the Control Layer Devices 215A, 215B, 215C, and 215D increase the engineer's 215E overall efficiency and allows the Production Environment 215 as a whole to be more productive.
[0037] For the examples presented in
[0038]
[0039] The Application Management Platform 305 performs tasks related to the creation and publication of new control layer applications, as well as the configuration and management of existing control layer applications. In the example of
[0040] The Application Management Platform 305 is operably coupled to an Application Development Platform 310 which includes tools for creating control layer applications. In some embodiments this Platform is implemented as a standalone executable file which developers can install and utilize on their computers. In other embodiments, the Platform 310 includes a set of libraries that may be downloaded and utilized by applications developers in other development environments known in the art such as, for example, IDEs released from the Eclipse Foundation. In still other embodiments, the Application Development Platform 310 may be entirely cloud-based, operating on a server remote from the application developer and accessible through a web browser interface or other web-based tool.
[0041] This Application Development Platform 310 includes a Control Layer Application Builder Component 310A. This Component 310A may include, for example, a source code editor, tools for automating building of applications, and a debugger. The Application Development Platform 310 also includes a Publication Component 310B which allows publication of an application on the Application Management Platform 305. In some embodiments, the Publication Component 310B simply handles communication of a completed application to the Application Management Platform 305. In other embodiments, the Publication Component 310B may provide additional functionality such as formatting, testing, verifying, and/or validating a control layer application. For example, as explained in greater detail below, the Application Management Platform 305 may include functionality for testing the behavior of a control layer application in a simulated environment. Thus, in some embodiments, the Publication Component 310B may handle functionality such as pre-processing the application and creating any inputs required for the simulation. Also, the Publication Component 310B may receive and process the results of a simulation for display, for example, via the Control Layer Application Builder Component 310A.
[0042] Once uploaded to the Application Management Platform 305, the control layer application may be tested in a simulated automation environment by Simulation Component 305C. For example, in some embodiments, the Simulation Component 305C provides a graphical simulation environment where logical and physical components reside in a three-dimensional graphical workspace and can be edited, modified, and executed in an ad hoc manner. The Simulation Component may automatically create components based on the control layer application itself or, alternatively, an application developer can interact with the Simulation Component 305C during the development process to create and test various configurations of components interactively. Once the developer is satisfied with the behavior of the simulation, the Simulation Component 305C may provide the developer with the option of creating a Control Layer Software Application based on the simulation. Thus, in this may, the Simulation Component 305C may be viewed as an extension of the tools offered in the Control Layer Application Builder Component 310A to program control layer applications.
[0043] Once a control layer application is ready for execution in a production environment, a Marketplace Interface Component 305D may be used to perform any pre-processing required by the marketplace and finalize the process of uploading the code of the control layer application to the server hosting the marketplace. Examples of pre-processing that may be performed by the Marketplace Interface Component 305D include virus checks, error checking, validation across a particular set of marketplace requirements, and generation of descriptive information about the control layer application. A Configuration Component 305B may be used to configure existing control layer applications that have been uploaded to the marketplace servers. For example, an application developer may use the Application Development Platform to push updates or settings changes to existing control layer applications via the Configuration Component 305B.
[0044]
[0045]
[0046] Unlike the process 400 illustrated in
[0047] Continuing with reference to
[0048]
[0049] Next, at 615, the controller starts a fill program and the tank rises to a critical level. At 620, the Diagnostic App detects the fault and brings the controller into a safe state. Next, at 625, the controller determines that a maintenance engineer needs to be notified, but it lacks the functionality to do so. Thus, at 630, the controller uses its marketplace client component to contact a marketplace server to download a control layer application for performing maintenance scheduling (a “Maintenance Scheduler App”), which is then installed. In other embodiments, not described in
[0050] Continuing with reference to
[0051] The processors described herein as used by control layer devices may include one or more central processing units (CPUs), graphical processing units (GPUs), or any other processor known in the art. More generally, a processor as used herein is a device for executing machine-readable instructions stored on a computer readable medium, for performing tasks and may comprise any one or combination of, hardware and firmware. A processor may also comprise memory storing machine-readable instructions executable for performing tasks. A processor acts upon information by manipulating, analyzing, modifying, converting or transmitting information for use by an executable procedure or an information device, and/or by routing the information to an output device. A processor may use or comprise the capabilities of a computer, controller or microprocessor, for example, and be conditioned using executable instructions to perform special purpose functions not performed by a general purpose computer. A processor may be coupled (electrically and/or as comprising executable components) with any other processor enabling interaction and/or communication there-between. A user interface processor or generator is a known element comprising electronic circuitry or software or a combination of both for generating display images or portions thereof. A user interface comprises one or more display images enabling user interaction with a processor or other device.
[0052] Various devices described herein including, without limitation to the control layer devices and related computing infrastructure, may include at least one computer readable medium or memory for holding instructions programmed according to embodiments of the invention and for containing data structures, tables, records, or other data described herein. The term “computer readable medium” as used herein refers to any medium that participates in providing instructions to one or more processors for execution. A computer readable medium may take many forms including, but not limited to, non-transitory, non-volatile media, volatile media, and transmission media. Non-limiting examples of non-volatile media include optical disks, solid state drives, magnetic disks, and magneto-optical disks. Non-limiting examples of volatile media include dynamic memory. Non-limiting examples of transmission media include coaxial cables, copper wire, and fiber optics, including the wires that make up a system bus. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
[0053] An executable application, as used herein, comprises code or machine readable instructions for conditioning the processor to implement predetermined functions, such as those of an operating system, a context data acquisition system or other information processing system, for example, in response to user command or input. An executable procedure is a segment of code or machine readable instruction, sub-routine, or other distinct section of code or portion of an executable application for performing one or more particular processes. These processes may include receiving input data and/or parameters, performing operations on received input data and/or performing functions in response to received input parameters, and providing resulting output data and/or parameters.
[0054] 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.
[0055] The functions and process steps herein may be performed automatically, 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.
[0056] 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. No claim element herein is to be construed under the provisions of 35 U.S.C. 112, sixth paragraph, unless the element is expressly recited using the phrase “means for.”