EP2592506B1 - Verkettbare Plug-ins - Google Patents
Verkettbare Plug-ins Download PDFInfo
- Publication number
- EP2592506B1 EP2592506B1 EP12192249.6A EP12192249A EP2592506B1 EP 2592506 B1 EP2592506 B1 EP 2592506B1 EP 12192249 A EP12192249 A EP 12192249A EP 2592506 B1 EP2592506 B1 EP 2592506B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- plug
- data
- control
- chainable
- hmi
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012544 monitoring process Methods 0.000 claims description 146
- 238000000034 method Methods 0.000 claims description 52
- 230000001131 transforming effect Effects 0.000 claims 1
- 230000008859 change Effects 0.000 description 77
- 238000013515 script Methods 0.000 description 68
- 230000008569 process Effects 0.000 description 39
- 238000013499 data model Methods 0.000 description 34
- 238000012806 monitoring device Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 16
- 230000015654 memory Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 11
- 238000013459 approach Methods 0.000 description 10
- 230000003542 behavioural effect Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 230000003993 interaction Effects 0.000 description 9
- 230000002441 reversible effect Effects 0.000 description 9
- 239000002131 composite material Substances 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000012800 visualization Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000001976 improved effect Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 101150098958 CMD1 gene Proteins 0.000 description 2
- 101100382321 Caenorhabditis elegans cal-1 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000012508 change request Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000037361 pathway Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000881 depressing effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000007363 regulatory process Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
Definitions
- Embodiments of the present disclosure relate generally to the field of automation control and monitoring systems. More particularly, embodiments of the present disclosure relate to chainable plug-in architecture of the automation control and monitoring systems.
- Typical automation control and monitoring systems may include one or more components, such as: programming terminals, automation controllers, input/output (I/O) modules, and/or human-machine interface (HMI) terminals.
- programming terminals such as: programming terminals, automation controllers, input/output (I/O) modules, and/or human-machine interface (HMI) terminals.
- I/O input/output
- HMI human-machine interface
- the human machine interfaces or "HMIs" are commonly employed for monitoring or controlling various processes.
- the HMIs may read from or write to specific registers such that they can reflect the operating state of various machines, sensors, processes, and so forth.
- the interfaces can also write to registers and memories such that they can, to some extent, control the functions of the process. In monitoring functions alone, little or no actual control is executed.
- similar devices are employed, such as in automobiles, aircraft, commercial settings, and a host of other applications.
- the interface may not communicate with a remote device or process, but may be operated in a stand-alone manner.
- the objects used in the interface may correlate to different controls, monitors, or any other parameter of an industrial automation device. Some of these objects may have visual representations on the interface devices, while other objects may not be visually represented but may be accessible for configuration and programming by a user. A user may desire to manipulate these objects, such as by creating new objects, copying objects, editing objects, etc., to create and customize an interface.
- Each of the components in an automation control and monitoring system may make use of state information of one or more objects (e.g., control programs, tags, module configuration, and HMI screens) of the control and monitoring system. From time to time, the components may be used to modify the state information of the objects. Thus, the components may need to communicate the change of states to the control and monitoring system, such that the other components may be apprised of state-changes to the objects of the control and monitoring system. Indeed in some cases the change of states may include the addition or deletion of certain objects within the control and monitoring system.
- Traditional approaches to communicate the state of an control and monitoring system object for example, have included providing an entire state of the object to the control and monitoring system.
- US 7,254,814 B1 discloses a method to manage initiation and operation of plug-in modules providing plug-in services.
- the plug-in manager obtains identities of a plurality of plug-in modules and retrieves a dependency list indicating respective plug-in services provided by, and required by, each plug-in module identified in the identities of the plug-in modules.
- the plug-in manager then calculates a plug-in initiation order based upon the dependency list indicating respective plug-in services provided by, and required by, each plug-in module.
- the plug-in manager then initiates service operation of plug-in modules according to the plug-in initiation order, such that if a first plug-in module provides a service required by a second plug-in module, the first plug-in module is initiated such that the service provided by the first plug-in module is available to the second plug-in module when required by the second plug-in module.
- US 7,644,161 B1 discloses that information from the control plug-ins organized in a hierarchy is received.
- the control plug-ins control an allocation of resources for an application. Relationships between the control plug-ins are determined based on the received information, and a topology of the control plug-ins is generated.
- Present embodiments provide a novel approach to communicating state change of objects between components in an automation control and monitoring system.
- state changes occur within the control and monitoring system, only the changed data is communicated to the other components within the control and monitoring system.
- the control and monitoring system objects may include control programs, tags, module configuration, and graphics for HMI screens.
- the changed elements may be provided to components that store state information of the objects in a data-driven manner.
- the amount of data transferred to the components may be significantly reduced.
- the full state of an object may not be required. Instead, a mere indication of the deleted object may be provided, thus reducing the amount of data to be transferred when the object has been deleted.
- providing the changes in a data-driven manner may enable the communication to be agnostic, or not dependent upon, a specific programming technology.
- the invention provides a novel approach to applying the communicated changes and/or distributed commands using execution engines distributed throughout the control and monitoring system to asynchronously execute commands based upon the changes.
- the components of the control and monitoring system e.g., a smart I/O device, a programming terminal, a PLC, and HMI, etc.
- the execution engines may be stored on a tangible, non-transitory, computer-readable medium of the components.
- the embedded execution engines on the various components of the control and monitoring system may asynchronously respond based upon the trigger or scheduled execution time.
- the distributed commands may be user and/or system defined command scripts that react to state changes in a one or more ways.
- execution of control logic through the execution engines embedded on components of the control and monitoring system, more efficient processing may occur.
- execution scheme may take better advantage of multiple central processing unit (CPU) cores by distributing the logic throughout the control and monitoring system.
- CPU central processing unit
- control and monitoring systems have relied heavily on automation controllers such as programmable logic controllers (PLCs) and automation controller programming (e.g., PLC programming) to affect the control and monitoring systems when state changes are communicated.
- Automation controller programming relies heavily on event-based and/or schedule-based execution of tasks and/or logic (e.g., machine-readable instructions written in a programming language, such as relay ladder logic) to affect change in the control and monitoring system.
- the automation controllers are often used to consume all input data, calculate and distribute output data, process changes to the data, and distribute data to the components of the control and monitoring system.
- control and monitoring system may become more agile. For example, by providing increased collaborative abilities, increased data redundancy, and processing load-balancing throughout the control and monitoring system, present embodiments exhibit a more robust and agile automation control and monitoring environment.
- FIG. 1 is a diagrammatical representation of an control and monitoring software framework 10 for an interface in accordance with an embodiment of the present disclosure.
- the framework 10 facilitates building functional software by utilizing a module based interconnection mechanism 12, which inherently supports dynamic manipulation and configuration.
- This dynamic manipulation and configuration ability facilitates efficient provision of feature-rich configuration environments for configurable interfaces. That is, as described below, individual device elements are provided as stand-alone code that can be individually programmed, prewritten for use, as in a library, customized in their function and appearance in screens, and interconnected to provide information to a user as well as control and monitoring functions.
- the framework 10 includes two interrelated software environments that can reside on a single system (e.g., computer).
- a run-time environment 14 enables an operator (e.g., a human user) to interact with an application, such as a process during run-time (e.g., during use of the interface, typically during interaction with or observance of a process in operation).
- a design-time environment 16 permits a designer to configure the interface and its components.
- a system may graphically present run-time information to an operator via the run-time environment 14 on a display (e.g., computer or interface device screen).
- the system may include means (e.g., a keypad) for accepting operator input that can be detected and managed via the run-time environment 14.
- the environments interact as described in detail below, in innovative ways to provide greatly enhanced programming and use of the interface.
- the run-time environment 14 includes or provides access to device elements 18.
- the device elements 18 are software components that may include any accessible or configurable element in a software environment.
- the device elements 18 include software components, such as "ActiveX” controls or “.NET” components that are managed by the run-time environment 14.
- ActiveX and ".NET” refer to object-oriented concepts, technologies and tools. Those skilled in the art will be well-acquainted with such programming approaches generally. In the present context, such standards should be taken as merely examples, and "device elements” should be understood as including any generally similar components or self-sufficient programs that can be run as quasi-independent elements, sometimes referred to as "objects”. Other standards and platforms exist for such elements, typically championed by different companies or industry groups.
- Device elements generally include four features: properties, methods, connections (or connection points) and communications interfaces.
- Properties in this context, are attributes that can be adjusted, such as to define an image or representation of the element in a screen view, as well as its location on the screen, and so forth.
- a method is an executable function (sometimes referred to herein as the elements "functionality” or "state engine"), and defines an operation performed by execution of the element.
- a connection in this context, is a link between elements, and can be used to cause data (read from a memory or written to a memory) to be sent to another element.
- device elements 18 may include software pushbuttons, timers, gauges, PLC communication servers, visualizations (such as screens that illustrate state of components within the automation control and monitoring system), and applications. In general, virtually any identifiable function may be configured as such an element. Moreover, as discussed below, such elements may communicate with one another to perform a wide range of display, monitoring operations and control functions. It should be noted that device elements 18 do not require special limitations for supporting a design mode. Also, while elements associated with an image are quite useful, particularly for visualizations, many elements may not have a visual representation, but may perform functions within an HMI, such as calculations, or even management and data exchange between other elements.
- the run-time environment 14 typically operates using a communications subsystem 20.
- the communications subsystem 20 is adapted to interconnect the device elements 18.
- the communications subsystem 20 may be thought of as including the connections of the device elements 18. However, it may include a range of software, hardware and firmware that send data to and receive data from external circuits, such as automation controllers, other computers, networks, satellites, sensors, actuators, and so forth.
- the run-time environment 14 typically operates using a behavioral subsystem 22, which is adapted to manage the behavior of the device elements 18.
- responsibilities of the behavioral subsystem 22 may include the following: place and move device elements, modify device elements, group device elements on interchangeable screens, save and restore screen layouts, manage security, save and restore connection lists, and supply remote access to the run-time environment 14.
- behaviors may be defined as part of the profile (i.e., the "method” or "state engine") of each device element.
- the design-time environment 16 includes an advanced implementation of the behavioral subsystem 22 that facilitates direct or indirect manipulation of the run-time environment 14, without impeding or compromising the behavior of the run-time environment 16. That is, design and reconfiguration of the device elements 18 can be done even while an interface is operating.
- the behavioral subsystem 22 extends access to the run-time environment 14 via remote provision of the design-time environment 16, such as in a conventional browser.
- the behavioral subsystem 22 allows a designer to interact with and change aspects of the run-time environment 14 of an HMI via a remote programming terminal by serving the design-time environment 16 or aspects thereof to the programming terminal from the HMI.
- an HMI coupled to a laptop via a network may provide a user with configuration capabilities by serving up a specific design-time environment 16 to the laptop via the network.
- the design-time environment 16 may be a product of combining Dynamic Hypertext Markup Language (DHTML) and an Active Server Page (ASP) server scripting to serve dynamic content to a browser.
- An ASP script is specially written code that includes one or more scripts (i.e., small embedded programs) that are processed on a server (e.g., Web server) before the page is sent to a user.
- a server e.g., Web server
- the script typically builds or customizes the page before sending it to the requestor.
- scripting is used in the present framework quite differently, such as to build visualizations without prior knowledge of either the functionality of device elements, or their interrelationships.
- the design-time environment 16 allows the designer to make interchangeable design-time models or specialized implementations of the behavioral subsystem 22.
- a specific example of a design-time implementation of the behavioral subsystem 22 includes a Web-based design-time environment 16, which extends access to a run-time environment 14 on an HMI via a TCP/IP connection between the HMI and a remote device.
- the Web-based design-time environment 16 facilitates management of the device elements without compromising run-time performance or security.
- the behavioral subsystem 22 gives designers the ability to manipulate aspects of the run-time environment 14 using a Web browser that is capable of accessing a related interface or HMI. As noted above, and as described in detail below this is achieved by using a combination of dynamic content, scripting, and configuration of the device element properties.
- FIG. 2 is a diagrammatical representation of a control and monitoring system 24, such as for industrial automation, implementing the framework described above in accordance with an embodiment of the present disclosure.
- the system 24 includes an HMI 26 adapted to interface with networked components and configuration equipment.
- the system 24 is illustrated as including an HMI 26 adapted to collaborate with components of a process 28 through a control/monitoring device 30 (e.g., a remote computer, automation controller, such as a programmable logic controller (PLC), or other controller).
- PLC programmable logic controller
- the HMI 26 may physically resemble existing hardware, such as a panel, monitor or stand-alone device.
- HMI 26 and components of the process 28 may be facilitated by the use of any suitable network strategies.
- an industry standard network may be employed, such as DeviceNet, to enable data transfer.
- Such networks permit the exchange of data in accordance with a predefined protocol, and may provide power for operation of networked elements.
- non-networked components e.g., GPS displays, game displays, cell phone displays, tablet displays, etc.
- networked systems outside the industrial automation field.
- CNC computer numeric control
- POS point of sale
- control interfaces for commercial markets e.g., elevators, entry systems
- the run-time or operation environment 14 constructed and managed by a corresponding behavioral subsystem is stored on and resident in the HMI 26.
- a behavioral subsystem can be adapted to load the application configuration framework (e.g., 10) from a storage location, such as during initial manufacture or setup of the HMI 26.
- the stored application framework may be adapted to create screens and locate user interface device elements (actual images or pictorial representations corresponding to the elements) in the screens. These applications, screens, and user interface elements are each types of device elements.
- the HMI 26 includes a stored application that dictates the layout and interaction of the device elements.
- the Web-based design-time environment 16, which is based on a run-time engine, is also loaded and resident on the HMI 26.
- the design-time environment 16 may be adapted to handle advanced features (e.g., security management) for both design-time and run-time environments.
- the HMI 26 may be adapted to allow a user to interact with virtually any process.
- the process may comprise a compressor station, an oil refinery, a batch operation for making food items, a mechanized assembly line, and so forth.
- the process 28 may comprise a variety of operational components, such as electric motors, valves, actuators, sensors, or a myriad of manufacturing, processing, material handling and other applications.
- the process 28 may comprise control and monitoring equipment for regulating process variables through automation and/or observation.
- the illustrated process 28 comprises sensors 34 and actuators 36.
- the sensors 34 may comprise any number of devices adapted to provide information regarding process conditions.
- the actuators 36 may similarly include any number of devices adapted to perform a mechanical action in response to an input signal.
- these sensors 34 and actuators 36 are in communication with the control/monitoring device 30 (e.g., an automation controller) and may be assigned a particular address in the control/monitoring device 30 that is accessible by the HMI 26.
- the sensors 34 and actuators 36 may be in direct communication with the HMI 26.
- These devices may be utilized to operate process equipment. Indeed, they may be utilized within process loops that are monitored and controlled by the control/monitoring device 30 and/or the HMI 26. Such a process loop may be activated based on process inputs (e.g., input from a sensor 34) or direct inputs (e.g., operator input received through the HMI 26).
- the server software on the interface permits viewing of the development environment, and direct reconfiguration of the interface (particularly of the device elements and their associated appearance and functionality) without the need for special viewing or configuration software.
- This benefit flows from the fact that the device elements and the design-time environment itself is resident in the HMI 26, and "served up" by the HMI 26 to a browser or other general purpose viewer on a programming terminal 46. In other words, necessary support for external computer workstations (e.g., laptop and desktop computers) may be reduced or eliminated.
- reference to a "browser” for viewing and modifying configuration of the interfaces is not limited to Web browsers or to any particular browser. References to a browser are intended to be exemplary. More generally, the term “browser” is utilized herein to reference software which includes any general purpose viewer.
- the HMI 26, through the programming of the device elements as described below, may be thought of as including instructions for presenting one or more screen views or visualizations, and device elements executed upon interaction with the HMI 26 by reference to the screen views (e.g., pressing a button, touching a location of a screen, and the like).
- the screen views and device elements may be defined by any desired software or software package.
- the screen views and device elements may be called by or executed by an operating system 38.
- the device elements, as discussed above, in accordance with present embodiments, may be objects conforming to ".NET" or "ActiveX" standards.
- the operating system itself may be based upon any suitable platform, such as Window CE, OS-X, etc.
- the device elements and tools support Web services or technology for transmitting data over networks (e.g., the Internet). These device elements thus follow a set of rules regarding information sharing and are adapted for use with various scripting and programming languages, as described below.
- Such device elements enable provision of interactive content to outside applications such as a LAN, WAN, an intranet, an extranet, or even the World Wide Web.
- the operating system 38 and the various device elements facilitate dynamic configuration of the HMI 26 through a browser 48 by allowing configuration access (e.g., serving up) to the browser 48.
- such configuration access includes access for instantiation of device elements.
- new device elements can actually be created and implemented from the browser 48.
- the browser 48 does not require actual functional access.
- requests via the browser 48 result in a "draw" sequence of operations based on data functionality and content of device elements in a container, thus allowing illustration of the device element representations and access to their configuration without actually serving up functional aspects. This allows for configuration via a remote workstation without necessitating technical support for the remote workstation.
- the HMI 26 includes an application or application layer 40.
- the application which may itself comprise a device element, facilitates access to and acquisition of information from the various device elements of the HMI 26.
- the application 40 represents a first level in a multi-level device element that can be enumerated for execution.
- the application 40 in a practical implementation may comprise a user application in the form of an XML page. The user application is then interacted with by the user or operator, as well as by the designer as described in greater detail below.
- the screen views and device elements may be described as independent executable pieces of software.
- the screen views are defined by appropriate code written in a markup language (e.g., Hypertext Markup Language or HTML).
- a markup language e.g., Hypertext Markup Language or HTML
- the configuration of graphical interface screens for the HMI 26 may be performed without the use of conversion programs.
- the screen views may be developed directly on the HMI 26 via resident server software (designated as server 42) that makes the resident development environment available for remote access.
- server 42 resident server software
- representations of certain device elements e.g., ActiveX controls
- device elements may include functionality by which they read from or write to specific memory or registers of memory, typically in other devices (but which could also be within the HMI).
- a particular function may correspond to writing to or reading from a register 32 of control/monitoring device 30.
- an object accesses a piece of data (e.g., a state of a component as determined by a sensor), and generates an output signal to write a value corresponding to the state of a different networked device.
- state information may be communicated via state deltas 43.
- the control/monitoring device 30 and HMI 26 may communicate state information using state deltas 43.
- the programming terminal 46 may communicate state information with the HMI 26 and control/monitoring device 30 using the state deltas 43, as well.
- Such device elements may emulate operation of a range of physical components, such as a momentary contact push button, a push button with delayed output, a switch, and so forth.
- Many pre-programmed device elements may be available for use by the HMI 26.
- Such functional modules may be accessible via a network, or may be resident on the HMI 26, or resident on a separate device directly linked to the HMI 26.
- an HMI supplier or software supplier may provide many possible building blocks from which screens and complex control and monitoring functions may be programmed.
- a library 44 of available device elements may reside on the HMI 26 to facilitate configuration of the HMI 26, as described below.
- the screen instructions may call upon the device elements for performing desired functions based upon operator inputs, and these instructions may be programmed into versions of the pre-programmed elements. For example, the operator may provide initiating inputs by touching a location on a touch screen or depressing keys on a keyboard. Based upon the screen instructions and the device elements associated with the instructions (e.g., with specific locations triggering calls or execution of preconfigured device elements) the desired functions may then be executed. Accordingly, the operator is enabled to interact with a process, typically to change screen views, write to registers, or command the generation of other output or control signals. In a stand-alone implementation, the interactions may simply recall or store data, change screens, and so forth.
- One or more separate interface screens may be employed, with some HMIs having many such screens and a great number of device elements.
- Each device element may, in turn, be uniquely programmed to consider specific inputs, perform specific functions, and generate signals for specific outputs.
- a plurality of such device elements can be loaded and hosted in a single software "container” (e.g., ActiveX container) as described below.
- the HMI 26 may be configured by interacting directly with a panel or screen on the HMI 26 itself (if one is present), but in many cases configuration will be performed from the remote programming terminal 46. For example, access is provided directly to the resident library 44 and/or operating system 38 and application 40 via a browser 48 or similar application. In a present implementation, no other specialized software is required at the programming terminal 46. Indeed, the server 42 resident on the HMI 26 may provide access to the device elements in library 44. By storing the device elements in library 44 directly on the HMI 26, the risk of version conflicts and so forth are eliminated or reduced. Additionally, the HMI 26 may be directly connected to the programming terminal 46, or accessed by reference to an IP address (Internet Protocol address) assigned to the HMI 26.
- IP address Internet Protocol address
- Access control schemes may be used to limit the ability to change screens and device elements. For example, a password or user access status may be required to gain such access.
- the programming terminal automatically recognizes the HMI 26 or the terminal on which the HMI 26 is resident as a device upon being coupled to the programming terminal 46 (e.g., similar to an external memory or drive). Thus, once connected to the programming terminal, the HMI 26 may simply be "recognized” as a device that can be accessed (providing the configuration screen and tools described below).
- aspects of the HMI 26 can be modified or updated directly on the HMI 26 via the communication link from the programming terminal 46.
- a user may wish to update a particular HMI graphic to provide data, such as historical data or trending relating to information being received from a newly installed sensor 34.
- the user may find it desirable or convenient to update the HMI graphic for presentation of such data while in an off-line mode (e.g., without immediately implementing the changes).
- the user may link to the library 44 of available device elements via the programming terminal 46 and use them to modify the HMI graphic or functionality in a development environment.
- additional device elements can be added to the library 44.
- a trending device element is not resident on the HMI 26
- a user can download such an element to the HMI 26 from a configuration library 50 resident on the programming terminal 46.
- a user could access the trending device element from a resource library 52 accessible via a network (e.g., the Internet), either directly to HMI 26 or through the programming terminal 46.
- a network e.g., the Internet
- This may be particularly beneficial because new and improved device elements can be downloaded to the HMI 26 individually and on a periodic basis, thus adding new functionality without necessitating the periodic release of new conversion programs or HMI operating systems, or run-time or design-time environment software.
- the development environment may provide links to such libraries.
- embedded code e.g., operating system, server software, device objects, etc.
- the components of the control and monitoring system 24 may use a distributed data model representing various aspects of the control and monitoring system 24.
- the distributed data model may enable multiple cached copies of a data model representing the control and monitoring system 24 to exist within the control and monitoring system 24 (e.g., at one or more of the components of the control and monitoring system 24).
- the distributed data model may work in conjunction with delta scripting and distributed command handling.
- the delta scripting may enable one or more components of the control and monitoring system 24 to determine state changes to the data model, generate a delta script that contains only the changes to the data model and/or the entire data model, and provide the delta script to other components of the control and monitoring system 24.
- the other components may consume the delta scripts and apply the data contained within the delta scripts to a locally cached copy of the data model (e.g., distributed copy contained at one of the components of the control and monitoring system 24).
- a locally cached copy of the data model e.g., distributed copy contained at one of the components of the control and monitoring system 24.
- certain components of the control and monitoring system 24 may utilize distributed execution engines that enable distributed command handling. Such distributed command handling enables distributed components of the control and monitoring system 24 to handle command execution based upon an event or schedule provided to the distributed components.
- the distributed delta communications e.g., via the delta scripts
- the distributed command execution the resultant control and monitoring system 24 may be more robust and agile.
- the distributed copies of the data model may be used to affect changes within the control and monitoring system 24.
- the HMI 26 may include a copy of the distributed data model, which it relies upon to affect change within the HMI 26.
- the HMI 26 may receive state deltas 43(e.g., via delta scripts) that are consumed by the HMI 26 and applied by the HMI 26 to the HMI's local copy of the data model. Additionally, as will be described in more detail below, the HMI 26 may include a local execution engine (e.g., an execution engine that is distributed at the HMI 26) that is useful for execution, at the HMI 26, of commands provided to the HMI 26.
- a local execution engine e.g., an execution engine that is distributed at the HMI 26
- Such functionality enables synchronized data stores to be present across the control and monitoring system 24.
- These synchronized data stores may enable collaboration by enabling multiple users to make changes to an individual data store that will be synchronized with each of the other data stores.
- the data stores may cache individual copies of the data of the control and monitoring system 24, offline modifications may be made. For example, through use of data cached in one of the data stores, a user may make modifications to the control and monitoring system 24, even when a controller is unavailable. When the user comes back online (e.g., can access a controller), the modifications made by the user while offline may be synchronized with the other data stores. Accordingly, the users may be able to provide changes to the control and monitoring system 24 in a more consistent and reliable manner.
- one user may make changes to tag definitions, metadata definitions, may rename elements of a design, may modify alarm settings, change data-types, and/or modify a data log condition in design software, such as LogixTM by Rockwell Automation, Inc.
- These changes submitted by the user may be made to a local data store.
- the changes When online, the changes may be propagated to other data stores within the control and monitoring system 24, thus applying the changes across the system 24.
- the changes When offline, the changes may be retained in the local data store and may be synchronized upon returning online (e.g., reconnecting to a controller of the control and monitoring system 24).
- Through automatic propagation of changes redundant change entry may be avoided, saving development efforts. Further, there may be reduced debug and initialization based upon the automatic renaming propagation through the system 24. Further, because these changes may originate throughout the system, flexible workflows may be enabled when different users develop the controller and the HMI.
- control and monitoring system 24 may be vastly improved over traditional control and monitoring systems.
- clients of the control and monitoring system 24 e.g., components that request data in the data model of the control and monitoring system 24
- the control and monitoring system 24 may determine which copy to serve the client from based upon one of many deciding factors.
- a particular distributed data model copy may be chosen to serve data to a client based upon performance efficiencies, such as an efficient network pathway (e.g., which copy is closest to the client, either locally or on the network, or which network pathway has the most bandwidth, etc.). Further, processing consideration may also be factored into such a decision.
- a robust control and monitoring system 24 may enable data to be served to a client utilizing load balancing techniques.
- the client may be served data from a component that contains a distributed copy of the data model that is known to or likely to serve fewer requests than another component of the control and monitoring system 24.
- a control and monitoring system 24 may include two control/monitoring devices 30 (e.g., 2 automation controllers).
- the control and monitoring system 24 may predict or observe that the first control/monitoring device 30 is receiving more requests for data than the second control/monitoring device 30. Accordingly, the control and monitoring system 24 may determine to serve the client from the second control/monitoring device 30 to avoid over-utilization of the first control/monitoring device 30. Thus, the control and monitoring system 24 may avoid flooding of the control/monitoring devices 30 by balancing the requests based upon the load of components within the control and monitoring system 24. In certain embodiments, this may include supplying requests from a single component to a threshold number of requests or amount of data and moving to an overflow source when the threshold is met. In some embodiments, this may include essentially evenly sharing a load of requests or amount of data in supplying the data.
- one or more components within the control and monitoring system 24 may monitor one or more of the distributed copies of the data model.
- the unstable copy may be replaced by a stable copy (e.g., a copy that accurately represents the distributed model).
- the stable copy may be obtained from any of the other copies of the data model distributed in the control and monitoring system 24 that are determined to have a copy that accurately represents the data model.
- a component of the control and monitoring system 24 may access a redundancy pool that provides a pointer to valid copies of the distributed data model or components of the control and monitoring system 24 storing valid copies of the distributed data model. For example, when a client component requests data in data model, it may access the redundancy pool which communicates where the data may be obtained. As discussed above, one or more components of the control and monitoring system 24 may monitor the copies of the data model to determine unstable copies. When one or more unstable copies are detected, a component of the control and monitoring system 24 may remove the pointer to the unstable copy or the component of the control and monitoring system 24 storing the unstable copy. Accordingly, the unstable copy is not accessible via the redundancy pool.
- a component of the control and monitoring system 24 may replace the unstable copy with a stable version, as discussed above. After the unstable copy has been replaced, a component of the control and monitoring system 24 may re-add the replacement stable version (or the component storing the replacement stable version) back to the redundancy pool for future use.
- FIG. 3 provides a high-level flow diagram representing interaction between an HMI 26 and a programming terminal 46. More detail regarding such processes is provided below.
- a platform for the HMI 26 and programming terminal 46 will include the operating system or executive software 38, application software 40, as well as any communication software, a microprocessor, a network interface, input/output hardware, generic software libraries, database management, user interface software, and the like (not specifically represented in FIG. 3 ).
- a design-time platform and a run-time platform interact within the HMI 26.
- the design-time platform provides views that are served as the design-time environment 16 to a desktop personal computer platform (e.g., running a suitable operating system 38, such as Windows XP, Windows Vista, or Linux) and the run-time platform cooperates with the design-time platform via the operating system (e.g., Windows CE, Linux).
- the design-time platform provides dynamic server content 54, while the run-time platform displays views on the HMI 26 itself (if a display screen is provided on the HMI 26).
- the design-time environment 16 is displayed in a browser 48 (e.g., Web browser or other general purpose viewer).
- FIG. 3 represents at a very high level how the design-time environment 16 interacts with the operating system 38, application 40 and run-time environment 14.
- the arrow 56 represents dynamic exchange of content between the HMI 26 and programming terminal 46.
- interaction with the design-time environment 16 is the task of a designer 58 who initially configures the HMI screens or visualizations, device elements, their functions and interactions, or who reconfigures such software.
- the run-time environment 14 is generally interacted with by an operator 60 directly at the HMI 26. It should be noted that while the design-time environment 16 has specific needs, in a current embodiment, it depends heavily on the operating system 38, application 40 and run-time environment 14.
- the design-time environment 16 and the run-time environment 14 may utilize certain base technologies (e.g., DHTML, HTML, HTTP, dynamic server content, JavaScript, Web browser) to operate respectively in the design-time platform and run-time platform. While, in the illustrated embodiment, the run-time environment 14 and the design-time environment 16 reside on separate platforms, in some embodiments they may reside on the same platform. For example, the design-time platform and run-time platform may be configured as or considered a single platform.
- base technologies e.g., DHTML, HTML, HTTP, dynamic server content, JavaScript, Web browser
- a design-time Web implementation is utilized.
- This design-time Web implementation offers the speed and flexibility of software running on the design-time platform by using a Web browser (e.g., 48) with DHTML support from the HMI, as noted by the dynamic server content 54 in FIG. 3 and as described below.
- DHTML is used to perform dynamic manipulation of Web content in the design-time environment 16.
- the dynamic server content 54 is used in the HMI to serve dynamic Web content to the design-time environment 16.
- This dynamic client-server environment allows the Web browser to simulate an application running on the design-time platform without requiring a piece of software compiled for a related processor.
- FIG. 4 is a diagram illustrating one or more device elements in a design-time environment in accordance with embodiments of the present techniques.
- the diagram includes interactions illustrated by relationships between a display 100 (e.g., a screen for browser display), a property editor 102, and the HMI 26.
- the design-time environment represented by the configuration screen or display 100 includes static content 104 and dynamic content.
- the dynamic content includes images corresponding to any displayed or represented device elements 106 (e.g., virtual on/off button, gauge).
- the image is specified by an image tag in HTML and is part of a JPEG file created by the HMI as described below.
- the static content 104 may be created by an active server page (ASP) server or it may preexist in an HTML file. It should be noted that, in some embodiments, only designated designers can edit the static content 104.
- the design-time environment represented by the configuration screen or display 100 includes static content 104 and dynamic content.
- the dynamic content includes images corresponding to any displayed or represented device elements 106 (e.g., virtual on/off button, gauge).
- the image is specified by an image tag in HTML and is part of a JPEG file created by the HMI as described below.
- the static content 104 may be created by the ASP server or it may preexist in an HTML file. It should be noted that, in some embodiments, designated designers only can edit the static content 104.
- the device element representation 106 is contained within a view container 108.
- a container generally defines a portion of a processing space in which certain device elements are opened and ready for use.
- the container 108 may thus correspond to a first view container that includes only the elements viewable within the current screen.
- many such screens may be provided in the HMI.
- Other screens, such as alternative control or interface screens may be provided in other view containers, such as a container 110.
- view containers are predefined and associated with one another by definition of the individual device elements with which they are either associated or within which representations of the device elements are provided.
- a global container 112 may be defined to include all of the device elements necessary for the various view containers, as well as other elements that may not be represented in any view container. As illustrated in FIG. 4 , therefore, view container 108 includes the virtual button 106 which performs a "jog" function and is manifested by a representation in a first screen. New container 110 includes several components, such as a "start” button 114, a "stop” button 116, a virtual gage 118 and a digital readout 120. The global container 112, then, will include all of these device elements for the various view containers, as well as any device elements 122 that are required for operation of the viewable device elements but that are not themselves viewable. Such device elements may include elements that perform computations, trending, communications, and a wide range of other functions.
- FIG. 4 also illustrates a property editor 102 in which a user may access various properties of the element 106.
- the element 106 may also include connections and text associated with the element 106, which may also be configured by the user via an editor, similar to the property editor 102.
- the property editor 102 may interact with the HMI 26 via a query string from the browser (e.g., browser 48 of FIG. 2 ) to a server 96 (e.g., HTTP server) that is resident on the HMI 26.
- the server 96 cooperates with an ASP server 98 including the module based interconnection mechanism 12, such as a dynamic-link library (DLL) to receive and respond to queries.
- the DLL allows for storage of executable routines as separate files, which can be loaded when needed or referenced by a program.
- the page upon receiving the call, the page is reloaded by the ASP server 98 and the query string is initially parsed resulting in evaluation of the move command.
- Server side scripts then access the device element 18 represented by the image 106 and to update its location property. The new property information is then updated on the page and the page is passed to the browser 48.
- FIG. 2 is a diagrammatical representation of an exemplary control and monitoring system 24 adapted to provide component state information using delta scripts in accordance with embodiments of the present techniques.
- the control and monitoring system 24 may include one or more human machine interfaces (HMI) 26 and one or more control/monitoring devices 30 adapted to interface with components of a process 28.
- the control/monitoring devices 30 may include one or more processors and a data storage device useful for performing tasks on the control and monitoring system 24 (e.g., process control, remote equipment monitoring, data acquisition, etc.).
- a programming terminal 46 may enable one or more users to configure attributes of the HMI 26 and/or control/monitoring devices 30.
- the state of various objects (e.g., control programs, tags, module configuration, and HMI screens) of the control and monitoring system 24 may be stored in memories (e.g., hard drives, read-only memory, and/or random-access memory) of various components of the control and monitoring system 24 (e.g., a programming terminal 46, the control/monitoring device 30, I/O modules, and/or HMI terminals 26.
- memories e.g., hard drives, read-only memory, and/or random-access memory
- components of the control and monitoring system 24 e.g., a programming terminal 46, the control/monitoring device 30, I/O modules, and/or HMI terminals 26.
- Each of the components of the control and monitoring system 24 may operate independently in a loosely coupled, asynchronous fashion. Further the components may be implemented with different programming technologies (e.g., C++, Java, and/or C#).
- state information may need to be synchronized with the state information residing on the other components, such that the components may continually understand the state of the objects within the control and monitoring system 24.
- automation components that store state information may receive data referred to as state deltas 43 (e.g., state elements that have changed), while not receiving state elements that have not changed and thus are already present in the stored state information on the various components storing the state information.
- state deltas 43 may include any data that has changed due to an action within the control and monitoring system 24.
- each of the 100 state elements may be provided to each component storing that object's state information.
- components of the control and monitoring system 24 may only transmit data for the elements that were changed.
- the 99 other elements would not be transmitted, thus reducing network traffic relative to traditional systems.
- providing only the state deltas 43 may reduce the potential of inadvertently overwriting state change information that is generated elsewhere within the control and monitoring system 24.
- the 99 unchanged elements may result in an overwrite of changes made to one of those 99 components elsewhere.
- the changed elements e.g., the state deltas 43
- FIG. 5 illustrates an control and monitoring system 24 that includes a persisted object model for communicating state changes between components of the control and monitoring system 24.
- the components may include the control/monitoring device 30 (e.g., a PLC), a programming terminal 46 providing a project file 150, and a component, such as a control/monitoring device 30 hosting the persisted object model 152and a collaborative session 154, and a client 156.
- the control/monitoring device 30 may be adapted to interface with components of a process 28 ( FIG. 1 ).
- the project file 150 may be a computer file output representing various attributes of the control and monitoring system 24 defined and stored in a memory (e.g., hard drive) of the programming terminal 46 ( FIG. 1 ).
- the persisted object model 152 may be a computer model of state data of one or more components in the control and monitoring system 24 that keeps track of changes made to the state data in the control and monitoring system 24 in a persistent fashion (e.g., by storing the state data on a non-volatile storage medium such as a hard drive).
- the persisted object model 152 may function as the change communication authority, such that all committed changes made to the state of an object are stored and communicated through the persisted object model 152.
- the collaborative session 154 may be an interactive information exchange interface between components of the control and monitoring system 24 that provides an environment for making pending changes (e.g., some changes may only be applied and communicated to other components of the control and monitoring system 24 after a user chooses to commit the changes).
- the client 156 may be any other component of the control and monitoring system 24 that retains state information of objects in memory, such as a component that provides a presentation view of an object.
- each of the illustrated components includes a data container 158 (e.g., a memory reserved for data).
- the data container 158 contains state elements 160 that define the state of one or more objects of the control and monitoring system 24.
- the state elements 160 may be defined in a data driven manner such that different technologies (e.g., C++, Java, and/or C#) may make use of the data represented by the state elements 160.
- different technologies e.g., C++, Java, and/or C#
- the persisted object model 152 may be the designated authority in applying state changes among the various components in the control and monitoring system 24.
- the persisted object model 152 may include what is referred to as a golden copy 162 of the state information for one or more objects in its data container 158 (as is illustrated by the cross-hatching).
- the golden copy 162 includes a copy of the state information, which the control and monitoring system 24 always considers correct. In other words, the golden copy 162 is an authoritative copy of the state information.
- Each piece of state information has its own golden copy 162 which may or may not reside with the golden copies 162 of other pieces of state information within the control and monitoring system 24 (e.g., on the same computer system).
- the changed elements are provided to the golden copy 162 in the form of a delta script 170, which is updated based upon the state element changes.
- the state element changes are then provided from the golden copy, via the delta scripts 170, to the other components within the control and monitoring system 24.
- the components of the control and monitoring system 24 may play various roles.
- the roles may include an instrument of change 164, an arbiter of change 166, and an audience 168.
- the instrument of change 164 e.g. a client providing a modified project file 150 via an editor in the current embodiment
- the instrument of change 164 may verify the success of the change by receiving an asynchronous change response and/or an error response regarding the change request.
- the arbiter of change 166 e.g., a server hosting the persisted object model 42 queues incoming changes, processes the changes by carrying out the requested changes, makes other side-effect changes based upon the request, or discards the change.
- the arbiter of change 166 may provide a change response to the instrument of change 164, publish a change notification to the audience 168 (e.g., a client 156 and/or control/monitoring device 30 involved in a collaborative session 154) when changes occur, and/or write the changes to the golden copy 162.
- the audience 168 receives the change notifications and uses the notifications to update their local copy of the state information stored in their data container 158.
- the programming technology used in the various components of the control and monitoring system 24 may not be uniform. For example, some components may utilize C++, while others may utilize C# or Java.
- the state deltas 43 of FIG. 1 provided between the instrument of change 164, the arbiter of change 166, and the audience 168 may be provided in a data-driven delta script 170 that is not dependent on a particular technology.
- the delta script 170 may describe the object state changes in the form of create, update, and/or delete (CRUD) data.
- Create data may include some or all of the data useful for creation of an object (e.g., for a rectangle, the spatial location, width, and height of the rectangle). Default values may be used for any data not provided with the create request.
- Update data may include data that has been updated in the object (e.g., for a rectangle graphic that has an updated spatial location, the update data may only include the new spatial location).
- the delete data may identify (e.g., describe an identifier of) the object state data that has been removed (e.g., for a rectangle that has been removed, the delete data may include a name of the rectangle to be deleted). In one example, if a change was created using the following C# pseudo code:
- a data-driven delta script might be similar to the following pseudo XML example:
- the delta script 170 may be consumed by any of the other components of the control and monitoring system 24, regardless of the programming technology used.
- the delta scripts 170 may include more than one change.
- the delta scripts 170 provide a way to process an entire set of changes in an all or nothing approach.
- two sets of create data are contained within the delta script for visualization on a display, one set to create a rectangle image and one set to create a circle image. If creation of the circle image results in an error, the rectangle change may be undone, resulting in an all or nothing approach.
- the delta scripts 170 may also include header information such as a change revision number, timestamp when the change was committed, an identifier of the user that made the change, and/or a unique revision identifier. The identifier of the user may be useful to authenticate the source of the change. Further, the delta scripts 170 include an identifier of the objects to which the change applies, the state elements 160 that have changed, and the change value of the state elements 160.
- a create data set may include an object's full state (e.g., all state elements 160), as it will be the first time each of the state elements 160 is introduced to the consumers of the delta scripts 170.
- the audience 168 (e.g., client 156) provides a subscription request 192 to the collaborative session 154.
- the subscription request 192 may include a revision number for the revision 194 of the state information stored in the audience member 168.
- the collaborative session will send out immediate notification of updates with the set of delta scripts 170 needed to bring the audience member 168 up to the revision stored in the collaborative session 154.
- the client 156 sends a subscription request 192 that includes revision 5.
- the collaborative session 154 is on revision 8, and thus sends delta scripts 170 for revisions 6, 7, and 8 to the client 156.
- the client 156 may apply the delta scripts 170 to its state and thus, as illustrated in panel B, the client is updated to revision 8.
- an instrument of change 164 e.g., a client or server that provides an updated program file 150
- the collaborative session 154 and the subscribing audience members e.g., client 1566 should be notified of the change.
- the arbiter of change 166 upon update of the golden copy 162 from revision 8 to revision 9 (e.g., via a change orchestrated by sending an updated project file 150 from the instrument of change 164), the arbiter of change 166 provides a delta script 170 for revision 9 to the collaborative session 154.
- the collaborative session 154 applies the delta script 170 for revision 9 and, thus, is updated to revision 9.
- the delta script 170 is then propagated to the audience member 168 (e.g., the client 156).
- the client 156 applies the delta script 170 and is updated to revision 9.
- an audience member may need more delta scripts 170 than are stored in the collaborative session 154.
- client 156 were to send a subscription request 192 while on revision 2, and the collaborative session 154 only had the delta scripts 170 for revisions 5-8, client 156 would still need the delta scripts 170 for revisions 3 and 4.
- the collaborative session 154 may request that the golden copy 162 provide the needed delta scripts 170.
- the golden copy 162 will store all delta scripts for each revision of an object's state information. However, in other embodiments, only a limited number of scripts will be stored (e.g., the last 5, 10, 50, or 100 revisions of delta scripts 170).
- the golden copy 162 can provide the necessary scripts, they are propagated through the collaborative session 154 to the client 156. However, if the necessary delta scripts cannot be propagated, the audience member 168 may be notified (e.g., via an exception message) and/or the audience member 168 may be reloaded with the entire set of elements associated with the current state information, bringing the audience member 168 up to date. Further, if the audience member 168 encounters errors applying one or more of the delta scripts 170, the audience member 168 may be reloaded with the entire set of elements associated with the current state information.
- the audience member 168 may be reloaded with the entire set of elements associated with the current state information when the number of delta scripts that would need to be applied is over a maximum delta script threshold.
- the maximum delta script threshold may be customized based upon a perceived number of delta scripts that would tend to make a full reload of state information more efficient than loading incremental delta scripts.
- control and monitoring system 24 may also include reverse deltas.
- Reverse deltas describe the changes necessary to change from a current revision back to the previous revision.
- the reverse delta scripts will take an object's state information back one revision.
- Such reverse delta scripts are applied to data containers (e.g., data containers 158 of FIG. 5 ) that contain the same revision number as the reverse delta script.
- Reverse delta scripts may be useful to create "undo" functionality for changes committed in the control and monitoring system 24 and may also be used to back out pending changes that have not yet been committed, such as those created in the collaborative session 154 prior to committing the changes.
- FIG. 7 illustrates one undo scenario, in accordance with an embodiment.
- an edit session for revision 211 of an object 210 is initiated by a first client. Edits are made within the session, by the first client, to bring the object 210 to pending revision 214 in panel B.
- the first client disconnects, and while disconnected, a second client undoes revisions 214 and 213, as illustrated in panel C.
- the second client then makes new changes 213 and 214.
- each revision will be assigned an identifier, such that the combination of the revision number and the identifier creates a unique identifier for the revision number.
- the undone delta scripts may be retained, such that "redo" functionality may be implemented.
- redo functionality may be implemented.
- the previous identifier for the revision is reused because the delta script is reintroducing the same change that was previously removed.
- a new revision identifier is used, such that no component of the control and monitoring system 24 confuses the undone revision with the new revision with the same number.
- each of the revisions in FIG. 7 have an associated identifier.
- Revision 211 has an identifier of M
- 212 has an identifier of R
- the original revision 213 has an identifier of T
- the original revision 214 has an identifier of X.
- revisions 214 and 213 are undone, they are removed from the pending revisions. If they are "redone," they are re-added to the pending changes, regenerating revisions with the same identifiers T and X.
- new changes are made, creating new revisions 213 and 214 with identifiers S and Y, respectively. Because they are completely new revisions, new identifiers S and Y are used to identify the revisions.
- the first client may be updated by tracing the revision numbers and identifiers to find the edit path and update the revision information accordingly.
- the component may be reloaded with the entire set of state information (e.g., all of the state elements 160).
- Changes may be made to the golden copy (e.g., golden copy 162 of FIG. 6 ) outside of the collaborative session (e.g., collaborative session 154 of FIG. 6 ) where pending edits are being made.
- FIG. 8 illustrates a scenario where external changes to the golden copy 162 are made while pending edits are currently being made in the collaborative session 154.
- a first pending change ⁇ 1 is applied to revision 221-B of object 210 generating revision 222-J.
- second and third pending changes ⁇ 2 and ⁇ 3 are applied to generate revisions 223-N and 224-D, respectively.
- an external change ⁇ 1' is applied by another component of the control and monitoring system 24 to the golden copy 162, which is currently on revision 221-B.
- the collaborative session 154 receives notification that a new revision 222 exists, it backs out pending changes ⁇ 3, ⁇ 2, and ⁇ 1 (holding them as forward deltas to be processed in the future).
- the collaborative session then applies the delta script for revision 222-H, and then reapplies pending changes ⁇ 1, ⁇ 2, and ⁇ 3, which create revisions 223-R, 224-C, and 225-X, respectively.
- pending changes ⁇ 1, ⁇ 2, and ⁇ 3 may be modified in order to be applied after revision 222-H.
- the audience member making pending changes in the collaborative session 154 may be notified that the pending changes are being applied over a recent external change to the golden copy 162.
- FIG. 9 illustrates a process for aborting pending revisions in a collaborative session 154.
- a user creates pending changes ⁇ 1 off of revision 221-B, generating revision 222-J.
- a pending change ⁇ 2 is created off of revision 222-J, generating revision 223-N.
- pending change ⁇ 3 is created off of state 223-N, generating revision 224-D.
- the user may determine that the changes are not necessary and/or undesirable and may cancel the changes (e.g., by selecting a cancel button in the programming terminal 46 of FIG. 2 ).
- components with pending state changes may apply reverse deltas for each of the pending changes (e.g., ⁇ 3, ⁇ 2, and ⁇ 1) such that the original non-pending revision (e.g., revision 51-B) remains.
- the components may simply reload the full state information from the golden copy 162, because the golden copy 162 has the latest non-pending revision stored (e.g., the revision that does not include the changes that are to be aborted).
- the collaborative session is left with revision 221-B at time T1.
- the collaborative session is available to take on additional edits (e.g. ⁇ 4) off of revision 221-B, generating a new revision 222-R at time T2.
- FIG. 10 illustrates an embodiment where some of the pending changes are combined into one set of edits, such that fewer revisions are generated.
- an edit session is opened.
- Pending changes are applied to the revision 221-B, generating revisions 222-J, 223-N, and 224-D.
- the pending changes may relate to changes made to a common state element (e.g., each change may modify the spatial location of a rectangle on a display).
- revision 222-J may place the rectangle in the center of the screen
- revision 223-N may update the rectangle location to the upper left hand corner of the screen
- revision 224-D may update the location to the bottom left hand corner of the screen.
- the intermediate revisions in the collaborative session 154 may be collapsed into a single revision on the golden copy 162.
- pending changes ⁇ 1, ⁇ 2, and ⁇ 3 are compressed and applied to revision 221-B, resulting in revision 222-R.
- the components may reload all state information for revision 222-R upon being notified that revision 222-R is available (as illustrated at T3).
- this is merely one form of compression that may be applied to combine deltas. The provided example is not intended to limit the techniques of compression for the pending changes.
- FIG. 11 illustrates a control and monitoring system 24 with a variety of components (e.g., HMI terminal 26, control/monitoring device 30, programming terminal 46, smart input/output devices 260, and dumb input/output (I/O) devices 262).
- the smart I/O devices 260 may include a central processing unit (CPU), such that the smart I/O devices 260 may execute logic based upon data provided to them.
- the dumb I/O devices 262 may not include a CPU, and thus may rely upon a controller to apply logic to their inputs.
- Execution engines 264 may be embedded within various components of the control and monitoring system 24 that can support them. In one example, components with CPUs are embedded with the execution engines 264. The execution engines 264 enable changes in the control and monitoring system 24 (e.g., state deltas 43) to be applied to the various components with embedded execution engines 264.
- the execution engines 264 contain commands (e.g., command scripts 266) and trigger conditions 268. The command scripts 266 are executed by the execution engine 264 upon a trigger condition 268 evaluating to true.
- a trigger condition 268 may evaluate to true when there is a change in state of a smart I/O device 260 or dumb I/O device 262, a change in value of data in the control/monitoring device 30 (e.g., produced by the delta scripts 170), and/or when a user interacts with the HMI 26.
- execution engines 264 may distribute execution engines 264 throughout various components of the control and monitoring system 24, control and monitoring system 24 changes may be more effectively handled.
- the processing power of CPUs of the various components may be utilized to perform control logic needed for the components of the control and monitoring system 24.
- execution of the commands on the various components of the control and monitoring system 24 may increase redundancy and/or provide better places to execute the commands than a centralized controller.
- a smart I/O device 260 is enabled to execute logic specific to the smart I/O device 260 in response to changes of the control and monitoring system 24, without relying on the control/monitoring device 30.
- dumb I/O device 262 may not be able to support an embedded execution engine 264 or may support an execution engine 264 but not have one embedded. These components may rely on other components (e.g., control/monitoring device 30) to execute logic for the components that do not have an embedded execution engine 84. For example, as illustrated in FIG. 11 , the dumb I/O device 262 does not have an embedded execution engine 264. Instead, data is polled using traditional logic of the control/monitoring device 30 (e.g., Ladder Logic (LL), Function Block Diagrams (FBD), Sequential Function Charts (SFC), etc.).
- LL Ladder Logic
- BBD Function Block Diagrams
- SFC Sequential Function Charts
- the commands may be computer-readable instructions (e.g., objects) stored on a tangible, non-transitory, computer-readable medium (e.g., a hard-drive, a database, read-only memory, and/or random access memory) to be executed upon a trigger condition or at a scheduled time.
- a tangible, non-transitory, computer-readable medium e.g., a hard-drive, a database, read-only memory, and/or random access memory
- the commands may be stored in the data containers 158 of FIG. 5 .
- the commands may inherit properties and/or a base set of functionality from a command base class. Specific properties and behaviors may be added to the base class, to derive other command classes, such as classes for screen navigation and writing tag values, etc.
- the command base class may include parameters, or a collection of parameter data name/value pairs that may be used for inputs and outputs. Further, the command base class may include a "done" property that indicates that a command has finished execution. The command base class may include an error property that indicates that a command execution has stopped due to an error. Further, the command base class may include a parent property that is used by the control and monitoring system 24 to determine who is responsible for memory clean up of the command (e.g., what entity should delete the command from the data containers 158 after execution). The command base class may include a name property that identifies the command. The name property may be used in expressions and trigger conditions 268, such that properties of the command may trigger additional commands.
- the command base class may include a progress property that indicates the progress of execution of the command and may also have a timed out property that indicates that execution of a command has timed out (e.g., has not executed within an allotted time period).
- the command base class may include a schedule property that adds the command to an appropriate thread of execution, which will be discussed in more detail below. Further, the command base class may include an execute property that include execution instructions.
- the commands may be composited, or brought together.
- sequential command compositing There are two basic forms of compositing: sequential command compositing and parallel command compositing.
- sequential command composites each command brought together in the group are executed one at a time, in a given order.
- One example of a useful sequential command composite may be a set of commands to 1) write a tag to start a tank filling, 2) wait for a specific tag value, and 3) change the state of a graphical element.
- the following is a pseudocode example of a possible sequential command composite:
- each command brought together in the composite is executed at the same time.
- the write tag commands below may be executed at the same start time:
- the command composites may include a combination of sequential and parallel composites. For example:
- the frame loop 300 is a set of computer-readable instructions that run for controlled periods of time (e.g., 30 times per second).
- the goal of the frame loop 300 is to react to data changes (e.g., state deltas 43) provided to the execution engines 264 of FIG. 11 .
- the frame loop 300 may evaluate expressions at block 302.
- expression data e.g., values of data objects
- the frame loop evaluates trigger conditions (e.g., trigger conditions 268 of FIG. 11 ) at block 304 based upon the evaluated expressions.
- the commands e.g., command scripts 266 of FIG. 11
- the commands may be scheduled or executed.
- certain commands may be executed within the frame loop 300 and others may be scheduled and executed in other threads or thread pools (e.g., user input thread 305 and thread pool 307).
- the frame commands, or commands that are scheduled to run in the frame loop 300, are executed at block 106.
- any transition updates e.g., a computer-readable instruction of how to change from one value to another
- transition update may include a graphical animation to signify a change in state, such as animated arrows illustrating a flow for an open valve, or a fade out for a recent state change that is graphically-represented.
- the frame loop 300 may then render the changes applied by the executed commands (e.g., rendering an updated screen image and/or new data values).
- the frame loop 300 may be run for controlled periods of time (e.g., 30 time per second).
- frame loop 300 performance may be tuned by skipping a portion of the frame loop 100 at given time intervals. For example, assuming that the frame loop 300 runs 30 times per second, the frame loop 300 may be designed to run expression evaluation (block 102) every third frame, the triggers may be evaluated (block 304) at every third frame, starting with the second frame, and the transition updates (block 308) may be rendered every third frame starting with the third frame.
- the rendering (block 310) may continue to execute at every frame, or may be optimized run only when changes have occurred. Thus, each of the blocks may still be executed in order, but throttled to execute with less frequency (e.g., one-third the frequency or 10 frames per second).
- the frame rate may be modified based upon the hardware running the execution engine 264.
- the frame loop may run at 12 frames per second, when an atom based system is used, the frame loop may execute 30 frames per second, when a desktop is used, the frame loop may execute 60 frames per second, and when a browser based system is used, the frame loop may execute 24 frames per second.
- transition options may allow fewer transitions (e.g., 1 for every 6 frames) and/or may allow transitions to render less often (e.g., not every frame) depending on the platform that is used.
- the execution engine 264 may also adapt to tune the frame loop 300 during runtime based on the determined execution times of the various stages of the frame loop 300. For example, expression heavy screens may need more expression evaluation time and transition heavy screens may need more transition processing/execution time.
- FIG. 13 illustrates a process 320 for scheduling commands, in accordance with an embodiment.
- the scheduling process 320 begins when a trigger condition 268 evaluates to true at block 322.
- the commands may be either a frame command 324 or a thread command 326.
- Frame commands 324 affect data on the main frame loop 300.
- the frame commands 324 may be added to a frame command list 326.
- the frame commands 324 may then be executed on the main frame loop 300 (block 306 of FIG. 12 ).
- these commands change data that necessitates a re-rendering of data.
- these commands may be executed prior to rendering (block 310 of FIG. 12 ).
- Thread commands 326 are commands that do not access data in the memory space of the frame loop 300 execution. These commands are free to be scheduled on a different thread than the frame loop 300. Thus, when a trigger condition 268 evaluates to true for a thread command 326, the thread command is scheduled to run in a thread pool 307. By utilizing the thread pool 307, more efficient use of resources may be obtained. For example, by keeping thread commands 326 off of the frame loop 300 thread, the frame loop 300 is free to execute the more important commands and/or the commands that must be run on the frame loop 300.
- control and monitoring system 27 may be a data-driven system with numerous types of resources that may be communicated between components of the system 27.
- Resource types are data classifications that identify what a resource is. Examples of such resource types may be tags, object data types, visualization screens, or any other user-definable object in the system 27. These resources may inherit functionality between one another, creating a highly dynamic typed system. In other words, many resource types with different levels of granularity may exist within the system.
- the system 350 of FIG. 14 includes a controller 30, which is representative of a control and/or monitoring device.
- the controller 30 monitors and controls a process 28 via sensors 34 and actuators 36.
- the system 350 includes an HMI 26 that includes services 352 for enabling a human to monitor and/or control various processes within the system 350.
- a programming terminal 46 in the system 350 may enable one or more users to configure attributes of the HMI 26 and/or controllers 30.
- components may include machine-readable instructions for handling plug-ins, which may be defined as portions of machine-readable code external to the instructions defining the HMI 26 and/or the programming terminal 46. These plug-ins may make it possible to modify functionalities of the components without requiring a restart of the components.
- the HMI 26 and programming terminal 46 are equipped with plug-in management systems 354 and 356, respectively. These plug-in management systems 354 and 356 may enable the HMI 26 and the programming terminal 46 to register plug-ins 358 and 360, respectively. By registering the plug-ins 358 and 360, the HMI 26 and programming terminal 46 may become aware of and implement the plug-in functionality.
- the plug-in 358 may include external security logic to be used in the HMI 26.
- a user or the HMI 26 manufacturer may create the plug-in 358 and register it with the HMI 26 via the plug-in management system 354.
- the plug-ins 358 and 360 may access services 352 and 355 of the components they are registered with.
- the HMI plug-in 358 may access services 352 of the HMI 26 via a service interface 364.
- the programming terminal plug-in 360 may access services 355 of the programming terminal 46 via the service interface 366.
- the interfaces 364 and 366 may be application programming interfaces (APIs) that may receive interaction instructions from the plug-ins 358 and 360.
- APIs application programming interfaces
- resources 362 may be communicated between components of the system 350.
- the resources 362 may be objects created in a polymorphic chain. Polymorphism relates to the ability of objects to have a common interface (e.g., of functions), despite being of different types. Additionally, a polymorphic chain may infer that resources of different types are derived from one another.
- resources 362 with the type of shape, rectangle, and square may be present in the system 350. The rectangle type may be derived from the shape type and the square type may be derived from the rectangle type.
- these resources 362 may be defined by a generalized object model, or a model that does not distinguish a recipient from other request parameters.
- the plug-in management systems 354 and 356 may be enabled to access and use data anywhere in a polymorphic chain.
- a plug-in to adjust the size of a resource 362 may be used to adjust the size of a rectangle and square as well. This may occur through a series of plug-ins that can chain together to handle a particular resource type.
- the plug-in management systems 354 and/or 356 may determine a proper subset of chainable plug-ins to handle a particular resource 362 based upon the generalized object model path that defines the resource 362.
- the plug-ins may specify particular types of resource that they handle.
- the plug-in management systems 354 and/or 356 may determine the proper chain (e.g., the proper set of plug-ins and the proper order) needed to implement functionality.
- plug-ins are chainable, features for virtually all resource types present in the system 350 may be generated, regardless of what point in the polymorphic chain that the resource types may be found. Further, plug-ins may be designed to add functionalities prior to, during, and/or after creation and/or deletion of the resource. Accordingly, a very dynamic set of plug-ins that are capable of handling many resource types may be possible.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Testing And Monitoring For Control Systems (AREA)
- Debugging And Monitoring (AREA)
Claims (13)
- Automatisierungssteuerungssystem (350), umfassend:eine oder mehrere Komponenten (26, 46), umfassend ein Plug-in-Verwaltungssystem (354, 356), das dazu konfiguriert ist, ein oder mehrere verkettbare Plug-ins (358, 360) bei den einen oder mehreren Komponenten (26, 46) zu registrieren,wobei die einen oder mehreren verkettbaren Plug-ins (358, 360) dazu konfiguriert sind, Ressourcen (162) unterschiedlicher Typen in einer polymorphen Kette zu erzeugen, wobei Ressourcen unterschiedlicher Typen in der polymorphen Kette voneinander abgeleitet werden,wobei das Plug-in-Verwaltungssystem (354, 356) dazu konfiguriert ist, eine geeignete polymorphe Kette zu bestimmen, undwobei die geeignete polymorphe Kette eine geeignete Teilmenge von verkettbaren Plug-ins und eine geeignete Reihenfolge umfasst und einen bestimmten Ressourcentyp angibt.
- Automatisierungssteuerungssystem nach Anspruch 1, wobei die einen oder mehreren Komponenten eine Mensch-Maschine-Schnittstelle, MMS (26), umfassen.
- Automatisierungssteuerungssystem nach Anspruch 2, wobei die einen oder mehreren Komponenten ein Programmierungsendgerät (46) umfassen.
- Automatisierungssteuerungssystem nach einem der Ansprüche 1 bis 3, wobei der Ressourcentyp mindestens eines aus einem Steuerungsprogramm, einem Tag, einem Datentyp, einer Modulkonfiguration oder einem MMS-Bildschirm umfasst.
- Automatisierungssteuerungssystem nach einem der Ansprüche 1 bis 4, wobei das Plug-in-Verwaltungssystem zu Folgendem konfiguriert ist:
Anwenden der einen oder mehreren verkettbaren Plug-ins, ohne dass ein Neustart der einen oder mehreren Komponenten erforderlich ist. - Automatisierungssteuerungssystem nach einem der Ansprüche 1 bis 5, wobei der Ressourcentyp gemäß einem generalisierten Objektmodell definiert ist.
- Automatisierungssteuerungssystem nach Anspruch 6, wobei das Plug-in-Verwaltungssystem dazu konfiguriert ist, einen geeigneten Teilsatz von verkettbaren Plug-ins, die zum Verwalten des Ressourcentyps erforderlich sind, basierend auf dem generalisierten Objektmodell zu bestimmen.
- Automatisierungssteuerungssystem nach einem der Ansprüche 1 bis 7, wobei die einen oder mehreren verkettbaren Plug-ins dazu konfiguriert sind, auf einen oder mehrere Dienste der einen oder mehrere Komponenten über eine Diensteschnittstelle zuzugreifen, wobei die Diensteschnittstelle eine Anwendungsprogrammierschnittstelle, API, umfasst.
- Verkettbares Plug-in (358, 360) für eine Komponente (26, 46) eines Automatisierungssteuerungs- und Überwachungssystems (350), das auf einem materiellen, nicht transitorischen, maschinenlesbaren Medium gespeichert ist, umfassend:
maschinenlesbaren Code, umfassend Anweisungen zu Folgendem:Zugreifen auf Dienste (352, 355) der Komponente (26, 46) des Automatisierungssteuerungs- und Überwachungssystems (350);Erhalten von Ressourcendaten oder Ereignissen von den Diensten (352, 355);Umwandeln von Daten, Erzeugen von Ereignissen oder beides in dem Automatisierungssteuerungs- und Überwachungssystem (350); undVerketten mit anderen verkettbaren Plug-ins (358, 360), basierend auf den Daten, den Ereignissen oder beidem, zu einer polymorphen Kette, wobei die polymorphe Kette eine geeignete Reihenfolge umfasst und einen bestimmten Ressourcentyp angibt, und wobei die polymorphe Kette Ressourcen (162) von verschiedenen Typen erzeugt, die voneinander abgeleitet werden. - Verkettbares Plug-in nach Anspruch 9, wobei das Plug-in maschinenlesbare Anweisungen umfasst, die von einem Hersteller der Komponente oder einem Benutzer der Komponente erzeugt werden.
- Verkettbares Plug-in nach Anspruch 9 oder 10, wobei die Anweisungen zum Verketten Anweisungen zum Verketten basierend auf einem generalisierten Objektmodell umfassen, das die Ressourcendaten oder Ereignisse definiert.
- Verkettbares Plug-in nach einem der Ansprüche 9 bis 11, umfassend Anweisungen zu Folgendem:Umwandeln der Daten, Erzeugen der Ereignisse oder beides, bevor eine Ressource erzeugt wird, während eine Ressource erzeugt wird, oder nachdem eine Ressource erzeugt wurde; und/oderUmwandeln der Daten, Erzeugen der Ereignisse oder beides, bevor eine Ressource gelöscht wird, während eine Ressource gelöscht wird, oder nachdem eine Ressource gelöscht wurde.
- Verfahren zum Modifizieren der Funktionalität einer Komponente (26, 46) eines Automatisierungsüberwachungs- und Steuerungssystems (350), umfassend:Registrieren eines verkettbaren Plug-ins (358, 360) bei der Komponente (26, 46);Bereitstellen von Ressourcendaten (362) oder Ereignissen für das verkettbaren Plug-in (358, 360);Verketten des verkettbaren Plug-ins mit anderen Plug-ins zu einer geeigneten polymorphen Kette, wobei die geeignete polymorphe Kette einen geeigneten Teilsatz von verkettbaren Plug-ins und eine geeignete Reihenfolge umfasst, und einen bestimmten Ressourcentyp angibt, und wobei die polymorphe Kette Ressourcen (162) von verschiedenen Typen erzeugt, die voneinander abgeleitet werden; undUmwandeln der Ressourcendaten (362) oder Erzeugen von zusätzlichen Ereignissen basierend auf dem verkettbaren Plug-in (358, 360), wobei das verkettbaren Plug-in (358, 360) zur Verkettung mit den anderen Plug-ins (358, 360) aktiviert ist, um die Ressourcendaten umzuwandeln oder die zusätzlichen Ereignisse zu erzeugen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161559020P | 2011-11-11 | 2011-11-11 | |
US13/663,347 US9606521B2 (en) | 2011-11-11 | 2012-10-29 | Chainable plug-ins |
Publications (3)
Publication Number | Publication Date |
---|---|
EP2592506A2 EP2592506A2 (de) | 2013-05-15 |
EP2592506A3 EP2592506A3 (de) | 2017-06-07 |
EP2592506B1 true EP2592506B1 (de) | 2021-08-25 |
Family
ID=47504592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP12192249.6A Active EP2592506B1 (de) | 2011-11-11 | 2012-11-12 | Verkettbare Plug-ins |
Country Status (2)
Country | Link |
---|---|
US (1) | US9606521B2 (de) |
EP (1) | EP2592506B1 (de) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292012B2 (en) * | 2012-11-05 | 2016-03-22 | Rockwell Automation Technologies, Inc. | Secure models for model-based control and optimization |
CN103381982B (zh) * | 2013-07-12 | 2015-05-27 | 中山市卓梅尼控制技术有限公司 | 电梯控制系统 |
US10372107B2 (en) * | 2014-10-15 | 2019-08-06 | Rockwell Automation Technologies, Inc. | Custom properties in an application environment |
US9712472B2 (en) | 2015-07-02 | 2017-07-18 | Microsoft Technology Licensing, Llc | Application spawning responsive to communication |
US9785484B2 (en) | 2015-07-02 | 2017-10-10 | Microsoft Technology Licensing, Llc | Distributed application interfacing across different hardware |
US9733915B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Building of compound application chain applications |
US9860145B2 (en) | 2015-07-02 | 2018-01-02 | Microsoft Technology Licensing, Llc | Recording of inter-application data flow |
US9658836B2 (en) | 2015-07-02 | 2017-05-23 | Microsoft Technology Licensing, Llc | Automated generation of transformation chain compatible class |
US10198252B2 (en) | 2015-07-02 | 2019-02-05 | Microsoft Technology Licensing, Llc | Transformation chain application splitting |
US10261985B2 (en) | 2015-07-02 | 2019-04-16 | Microsoft Technology Licensing, Llc | Output rendering in dynamic redefining application |
US9733993B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Application sharing using endpoint interface entities |
US10031724B2 (en) | 2015-07-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Application operation responsive to object spatial status |
US10198405B2 (en) | 2015-07-08 | 2019-02-05 | Microsoft Technology Licensing, Llc | Rule-based layout of changing information |
US10277582B2 (en) | 2015-08-27 | 2019-04-30 | Microsoft Technology Licensing, Llc | Application service architecture |
JP7087420B2 (ja) * | 2018-02-02 | 2022-06-21 | 富士通株式会社 | 処理プログラム、およびイベント処理方法 |
EP3885900A1 (de) * | 2020-03-25 | 2021-09-29 | Siemens Aktiengesellschaft | System und verfahren zur verwaltung von anwendungen, die auf einer berechnungsplattform gehostet werden |
US20220319480A1 (en) * | 2021-03-31 | 2022-10-06 | Xliv Collective Inc. | Collaboration platform system and method |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7254814B1 (en) * | 2001-09-28 | 2007-08-07 | Emc Corporation | Methods and apparatus for managing plug-in services |
US20030120560A1 (en) | 2001-12-20 | 2003-06-26 | John Almeida | Method for creating and maintaning worldwide e-commerce |
US7725877B2 (en) * | 2004-01-09 | 2010-05-25 | National Instruments Corporation | Graphical program which includes an I/O node for hardware abstraction |
US7644161B1 (en) * | 2005-01-28 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Topology for a hierarchy of control plug-ins used in a control system |
WO2007022513A2 (en) * | 2005-08-19 | 2007-02-22 | Google Inc. | Software architecture for displaying information content from plug-in modules in a user interface |
US7761473B2 (en) * | 2007-05-18 | 2010-07-20 | Microsoft Corporation | Typed relationships between items |
CN101303762B (zh) | 2008-06-06 | 2010-04-21 | 北京四方继保自动化股份有限公司 | 基于动态加载和插件技术的自动化系统图元管理方法 |
CN102033743B (zh) | 2010-09-02 | 2013-03-20 | 西安赛斐软件科技有限公司 | 一种应用插件扩充模型驱动开发能力的系统及其方法 |
-
2012
- 2012-10-29 US US13/663,347 patent/US9606521B2/en active Active
- 2012-11-12 EP EP12192249.6A patent/EP2592506B1/de active Active
Non-Patent Citations (1)
Title |
---|
None * |
Also Published As
Publication number | Publication date |
---|---|
EP2592506A3 (de) | 2017-06-07 |
US20130123954A1 (en) | 2013-05-16 |
US9606521B2 (en) | 2017-03-28 |
EP2592506A2 (de) | 2013-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10571898B2 (en) | Control environment change communication | |
EP2592506B1 (de) | Verkettbare Plug-ins | |
US9389606B2 (en) | Agile control model system and method | |
EP2592515B1 (de) | Skalierbares Automatisierungssystem | |
US9529355B2 (en) | Control environment change communication | |
US11294351B2 (en) | Control environment command execution | |
EP2592517B1 (de) | Systeme und Verfahren zum asynchronen Suchen und Filtern von Daten | |
EP2592516B1 (de) | Datenressourcenidentität | |
US8990768B2 (en) | Software object property return method and system | |
US9442473B2 (en) | Remote object data property replication method and system | |
US20190049908A1 (en) | Weakly-typed dataflow infrastructure with standalone, configurable connections | |
CN103792858A (zh) | 灵活的控制模型系统和方法 | |
CN103793200B (zh) | 控制环境命令执行 | |
CN103793346B (zh) | 自动控制系统、机器可读介质及修改部件的功能的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
PUAL | Search report despatched |
Free format text: ORIGINAL CODE: 0009013 |
|
AK | Designated contracting states |
Kind code of ref document: A3 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G05B 19/042 20060101AFI20170428BHEP |
|
PUAL | Search report despatched |
Free format text: ORIGINAL CODE: 0009013 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20171017 |
|
RBV | Designated contracting states (corrected) |
Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20190416 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20210326 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602012076508 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D Ref country code: AT Ref legal event code: REF Ref document number: 1424433 Country of ref document: AT Kind code of ref document: T Effective date: 20210915 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG9D |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20210825 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1424433 Country of ref document: AT Kind code of ref document: T Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211125 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211125 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211227 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211126 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602012076508 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20211112 Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20211130 |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20211130 |
|
26N | No opposition filed |
Effective date: 20220527 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20211112 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20121112 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
P01 | Opt-out of the competence of the unified patent court (upc) registered |
Effective date: 20230404 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220630 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20231019 Year of fee payment: 12 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20231019 Year of fee payment: 12 Ref country code: DE Payment date: 20231019 Year of fee payment: 12 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210825 |