[go: up one dir, main page]

CN103793346B - The method of the function of automatic control system, machine readable media and modification part - Google Patents

The method of the function of automatic control system, machine readable media and modification part Download PDF

Info

Publication number
CN103793346B
CN103793346B CN201210452565.4A CN201210452565A CN103793346B CN 103793346 B CN103793346 B CN 103793346B CN 201210452565 A CN201210452565 A CN 201210452565A CN 103793346 B CN103793346 B CN 103793346B
Authority
CN
China
Prior art keywords
chain
data
chain connector
resource
control
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.)
Expired - Fee Related
Application number
CN201210452565.4A
Other languages
Chinese (zh)
Other versions
CN103793346A (en
Inventor
道格拉斯·W·里德
约瑟夫·布罗尼科夫斯基
迈克尔·D·卡兰恩
史蒂文·约翰·科瓦尔
苏比安·戈文达拉杰
塔里尔·J·贾斯帕
肯尼斯·S·普拉赫
道格拉斯·J·赖夏德
查尔斯·M·里斯查尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rockwell Automation Technologies Inc
Original Assignee
Rockwell Automation Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US13/663,347 external-priority patent/US9606521B2/en
Application filed by Rockwell Automation Technologies Inc filed Critical Rockwell Automation Technologies Inc
Publication of CN103793346A publication Critical patent/CN103793346A/en
Application granted granted Critical
Publication of CN103793346B publication Critical patent/CN103793346B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

提供了一种自动控制与监视系统,包括可以彼此结合地工作以转换数据或生成事件的可链接插件。可以基于通用对象模型多态地定义自动控制与监视系统的资源。可以链接可链接插件以利用和/或影响任何类型的资源。

An automatic control and monitoring system is provided including linkable plug-ins that can work in conjunction with each other to transform data or generate events. The resources of the automatic control and monitoring system can be defined polymorphically based on the common object model. Linkable plugins can be linked to utilize and/or affect any type of resource.

Description

自动控制系统、机器可读介质及修改部件的功能的方法Automatic control system, machine-readable medium, and method of modifying functionality of components

相关申请的交叉引用Cross References to Related Applications

本申请为于2011年11月11日提交的题为“Chainable Plugin Business LogicThrough a Generalized Object Model”的美国临时专利申请No.61/559,020的非临时申请,通过引用将其合并到本文中。This application is a non-provisional application of US Provisional Patent Application No. 61/559,020, filed November 11, 2011, entitled "Chainable Plugin Business Logic Through a Generalized Object Model," which is incorporated herein by reference.

背景技术Background technique

本公开的实施例总体上涉及自动控制与监视系统的领域。更具体地,本公开的实施例涉及自动控制与监视系统的可链接插件架构。Embodiments of the present disclosure relate generally to the field of automatic control and monitoring systems. More specifically, embodiments of the present disclosure relate to a linkable plug-in architecture for automatic control and monitoring systems.

尤其在工业设置中,对于自动控制与监视系统存在广泛的应用。这样的应用可以包括各种各样的执行机构,例如阀、电动机等的动力估计以及经由传感器的数据收集。典型的自动控制与监视系统可以包括一个或更多个部件,例如:编程终端、自动控制器、输入/输出(I/O)模块和/或人机接口(HMI)终端。There is a wide range of applications for automatic control and monitoring systems, especially in industrial settings. Such applications may include power estimation of various actuators, such as valves, electric motors, etc., and data collection via sensors. A typical automation control and monitoring system may include one or more components such as: programming terminals, automation controllers, input/output (I/O) modules, and/or human machine interface (HMI) terminals.

人机接口或者“HMI”通常用于监视或者控制各种处理。HMI可以从具体的寄存器读取或者向具体的寄存器写入,以使得它们可以反映各种机器、传感器、处理等的操作状态。接口还可以写入寄存器和存储器,以使得它们在一定程度上可以控制处理的功能。在单独的监视功能中,很少或者不执行实际的控制。在许多其他设置中,采用类似的设备,例如在汽车、飞机、商业设置以及许多其他应用中。在许多应用中,接口可以不是与远程设备或者处理通信,而是可以以独立的方式被操作。A Human Machine Interface or "HMI" is commonly used to monitor or control various processes. The HMI can read from or write to specific registers so that they can reflect the operational status of various machines, sensors, processes, and the like. The interface can also write to registers and memory, so that they can control the function of the process to some extent. In a separate monitoring function, little or no actual control is performed. Similar devices are employed in many other settings, such as in automobiles, airplanes, commercial settings, and many other applications. In many applications, rather than communicating with a remote device or process, an interface may be operated in an independent manner.

在这些接口设备中,用在接口中的对象可以与工业自动化设备的不同的控制、监视或者任何其他参数相关联。这些对象中的一些对象可能在接口设备上具有视觉表示,而其他对象可能不能被视觉地表示但是可以由用户访问以用于配置和编程。用户可能期望例如通过创建新的对象、复制对象、编辑对象等来操作这些对象,以创建并且自定义接口。In these interface devices, the objects used in the interface can be associated with different control, monitoring or any other parameters of the industrial automation device. Some of these objects may have a visual representation on the interface device, while other objects may not be visually represented but accessible by the user for configuration and programming. Users may desire to manipulate these objects, eg, by creating new objects, duplicating objects, editing objects, etc., to create and customize interfaces.

自动控制与监视系统中的部件中的每个可以利用控制与监视系统的一个或更多个对象(例如,控制程序、标签、模块配置以及HMI屏幕)的状态信息。有时,部件可以被用于修改对象的状态信息。因此,部件可能需要将状态的变化传达给控制与监视系统,以使得其他部件可以获知控制与监视系统的对象的状态变化。实际上有情况下状态的变化可以包括添加或者删除控制与监视系统内的某些对象。例如,传达控制与监视系统对象的状态的传统方法包括将对象的整个状态提供给控制与监视系统。现在认识到这样的方法有时是低效的,其提供了多于描述控制与监视系统内的对象的变化的状态所必需的信息。提供对象的整个状态可能导致传达状态数据过程中的带宽低效以及消耗和使用数据过程中的处理低效。此外,现在认识到这种提供全状态数据的方法有些情况下可能使下述情况的可能性增大:因疏忽而对设置在控制与监视系统中的其他状态变化进行覆写。Each of the components in the automatic control and monitoring system can utilize status information for one or more objects of the control and monitoring system (eg, control programs, tags, module configurations, and HMI screens). Sometimes widgets can be used to modify the state information of an object. Therefore, a component may need to communicate a change of state to the control and monitoring system so that other components can learn of a state change of an object of the control and monitoring system. In fact there are cases where state changes may include adding or deleting certain objects within the control and monitoring system. For example, traditional methods of communicating the state of a control and monitoring system object include providing the entire state of the object to the control and monitoring system. It is now recognized that such an approach is sometimes inefficient, providing more information than necessary to describe the changing state of objects within the control and monitoring system. Providing the entire state of an object can lead to bandwidth inefficiencies in communicating state data and processing inefficiencies in consuming and using the data. Furthermore, it is now recognized that this method of providing full state data may in some cases increase the likelihood of inadvertently overwriting other state changes provided in the control and monitoring system.

此外,传统方法依靠集中控制与监视。例如,传统的控制与监视系统依靠描述控制系统的集中式数据模型。对集中式数据模型的依赖可能导致处理低效以及对托管集中式数据模型的部件(例如控制器)的依赖的增加。Additionally, traditional approaches rely on centralized control and monitoring. For example, traditional control and monitoring systems rely on a centralized data model that describes the control system. Reliance on a centralized data model can lead to processing inefficiencies and increased reliance on components hosting the centralized data model, such as controllers.

发明内容Contents of the invention

以下概述了与最初要求保护的本发明范围相当的某些实施例。这些实施例不是要限制要求保护的本发明的范围,相反地这些实施例仅意图提供本发明的可能的形式的简要摘要。实际上,本发明可以包含可以与以下陈述的实施例类似的或者不同的各种形式。Certain embodiments commensurate in scope with the originally claimed invention are outlined below. These embodiments are not intended to limit the scope of the claimed invention, but rather these embodiments are intended only to provide a brief summary of possible forms of the invention. Actually, the present invention may encompass various forms which may be similar to or different from the embodiments set forth below.

本实施例提供一种在自动控制与监视系统中的部件之间传达对象的状态变化的新颖的方法。由于状态变化发生在控制与监视系统内,所以只将改变的数据被传达给控制与监视系统内的其他部件。例如,控制与监视系统对象可以包括控制程序、标签、模块控制以及用于HMI屏幕的图形。当这些对象的要素变化时,变化的要素可以被提供给以数据驱动方式存储对象的状态信息的部件。通过仅提供变化的要素,而不是提供对象的全套要素,可以显著地减少传递到部件的数据量。此外,当对象被删除时,可以不需要对象的全状态。反而,可以仅提供删除的对象的指示,由此在对象被删除的情况下减少要传递的数据量。此外,以数据驱动方式提供变化可能使得传达是不可知的,或者不取决于具体的编程技术。The present embodiment provides a novel method of communicating state changes of objects between components in an automatic control and monitoring system. Since state changes occur within the control and monitoring system, only changed data is communicated to other components within the control and monitoring system. For example, control and monitoring system objects may include control programs, tags, module controls, and graphics for HMI screens. When elements of these objects change, the changed elements may be provided to components that store state information of objects in a data-driven manner. By providing only the features that vary, rather than the full set of features for an object, you can significantly reduce the amount of data passed to the part. Furthermore, the full state of an object may not be required when the object is deleted. Instead, only an indication of deleted objects may be provided, thereby reducing the amount of data to be transferred if an object is deleted. Furthermore, providing changes in a data-driven manner may make the communication agnostic, or independent of specific programming techniques.

此外,本发明提供使用分布遍及控制与监视系统的执行引擎来施加传达的变化和/或分布式命令,以基于变化来异步执行命令的新颖的方法。例如,控制与监视系统的部件中的一个或更多个部件(例如,灵巧的I/O设备、编程终端、PLC以及HMI等)可以各自包括嵌入式执行引擎。执行引擎可以被存储在部件的有形的、非暂时的、计算机可读取的介质上。当被触发时(例如,通过接收改变的状态信息),控制与监视系统的各种部件上的嵌入式执行引擎可以基于触发器或者预定的执行时间来异步地响应。例如,分布式命令可以是用户和/或系统定义的以一种或更多种方式对状态变化做出反应的命令脚本。通过借助于嵌入在控制与监视系统的部件上的执行引擎使得能够执行控制逻辑,可以产生更高效的处理。例如,这种执行方案可以通过将逻辑分布遍及控制与监视系统来更好的利用多中央处理单元(CPU)核心。Furthermore, the present invention provides a novel method of applying communicated changes and/or distributed commands using execution engines distributed throughout the control and monitoring system to asynchronously execute commands based on changes. For example, one or more of the components of the control and monitoring system (eg, smart I/O devices, programming terminals, PLCs, and HMIs, etc.) may each include an embedded execution engine. The execution engine may be stored on a tangible, non-transitory, computer-readable medium of the component. When triggered (eg, by receiving changed state information), embedded execution engines on various components of the control and monitoring system may respond asynchronously based on triggers or predetermined execution times. For example, distributed commands may be user and/or system defined command scripts that react to state changes in one or more ways. By enabling execution of control logic by means of execution engines embedded on components of the control and monitoring system, more efficient processing can result. For example, this implementation scheme can better utilize multiple central processing unit (CPU) cores by distributing logic throughout the control and monitoring system.

附图说明Description of drawings

当参照附图阅读下面的详细说明时,本实施例的这些以及其他特征、方面和优势将被更好地理解,在全部图中同样的标记代表同样的部分,在附图中:These and other features, aspects and advantages of the present embodiments will be better understood when the following detailed description is read with reference to the accompanying drawings, in which like numerals represent like parts throughout:

图1是根据本发明的某些方面的自动控制与监视系统的部分的框架的总体概观图;FIG. 1 is a general overview of the framework of portions of an automatic control and monitoring system according to certain aspects of the present invention;

图2是根据本发明的实施例的自动控制与监视系统的图解概观图;Figure 2 is a schematic overview of an automatic control and monitoring system according to an embodiment of the present invention;

图3是根据本发明的实施例的接口和编程终端中的某些功能部件的概观图;Figure 3 is an overview of some functional components in an interface and a programming terminal according to an embodiment of the present invention;

图4是根据本发明的实施例的设备要素的某些视图或容器的概观图;Figure 4 is an overview of certain views of elements of equipment or containers according to an embodiment of the invention;

图5是图1的控制与监视系统的图,其示出了根据实施例的用于传达状态变化的持久化对象模型的使用;5 is a diagram of the control and monitoring system of FIG. 1 illustrating the use of a persistent object model for communicating state changes, according to an embodiment;

图6示出了根据实施例的变化的仪器、变化的仲裁器以及受众成员之间的状态变化传达的进展;Figure 6 shows the progression of state change communication between instrumentation of changes, arbitrators of changes, and audience members, according to an embodiment;

图7示出了根据实施例的在状态变化未完成的情况下的处理;Fig. 7 shows the processing in the case that the state change is not completed according to an embodiment;

图8示出了根据实施例的在未定编辑期间做出外部变化的情况下的处理;Fig. 8 shows the processing in case an external change is made during a pending edit, according to an embodiment;

图9示出了根据实施例的用于中止未定变化的处理;Figure 9 illustrates a process for aborting pending changes, according to an embodiment;

图10示出了根据实施例的用于把未定变化压缩成一组变化的处理;Figure 10 illustrates a process for compressing pending changes into a set of changes, according to an embodiment;

图11示出了根据实施例的使用分布式执行引擎来执行控制命令的自动控制与监视系统;Figure 11 illustrates an automatic control and monitoring system using a distributed execution engine to execute control commands, according to an embodiment;

图12示出了根据实施例的通过执行引擎执行的处理循环;Figure 12 illustrates a processing loop executed by an execution engine, according to an embodiment;

图13示出了根据实施例的用于调度命令的处理;以及Figure 13 shows the process for scheduling commands according to an embodiment; and

图14示出了一种自动控制与监视系统,该系统使用可链接插件来修改该控制与监视系统的功能。Figure 14 shows an automatic control and monitoring system that uses linkable plug-ins to modify the functionality of the control and monitoring system.

具体实施方式detailed description

通常,当状态变化被传达时,控制与监视系统严重地依靠自动控制器,例如可编程序逻辑控制器(PLC),以及自动控制器编程(例如,PLC编程)来对控制与监视系统进行影响。自动控制器编程严重地依靠任务和/或逻辑的基于事件和/或基于进度表的执行(例如,用编程语言编写的机器可读指令,例如继电器梯形逻辑)来对控制与监视系统的变化进行影响。自动控制器经常被用于消耗所有的输入数据、计算并且分布输出数据、处理数据的变化、以及将数据分布到控制与监视系统的部件。不幸地,这样的对由控制与监视系统的部件(例如,自动控制器和自动控制器编程)影响和托管的集中式数据模型的严重依赖导致了许多低效率。例如,随着用于集中式模型的调度的和基于事件的任务的数目增加,由于可能导致单个模型的许多附加的变化,所以可能出现性能的劣化。此外,集中式模型的严重的使用(例如,经由自动控制器)创建了处理控制逻辑的更加集中的方法,导致控制逻辑的低效执行、单点故障(例如,当自动控制器发生故障时,整个控制与监视系统可能发生故障),并且可能造成对自动控制器的处理负担。Typically, control and monitoring systems rely heavily on automatic controllers, such as programmable logic controllers (PLCs), and automatic controller programming (eg, PLC programming) to effect control and monitoring systems when state changes are communicated . Automatic 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 implement changes to the control and monitoring system influences. Automatic controllers are often used to consume all input data, calculate and distribute output data, handle changes in data, and distribute data to components of the control and monitoring system. Unfortunately, such a heavy reliance on a centralized data model influenced and hosted by components of the control and monitoring system (eg, automation controllers and automation controller programming) leads to many inefficiencies. For example, as the number of scheduled and event-based tasks for a centralized model increases, performance degradation may occur since many additional changes to a single model may result. Furthermore, heavy use of a centralized model (e.g., via an automated controller) creates a more centralized approach to handling control logic, resulting in inefficient execution of control logic, single points of failure (e.g., when an automated controller fails, The entire control and monitoring system may fail) and may place a processing burden on the automatic controller.

根据本实施例,通过利用分布式数据模型、分布式状态变化传达以及分布式命令执行,控制与监视系统可以变得更加灵活。例如,通过在整个控制与监视系统提供增加的协作能力、增加的数据冗余以及处理负载平衡,本实施例展示了更加鲁棒及灵活的自动控制与监视环境。According to this embodiment, the control and monitoring system can become more flexible by utilizing a distributed data model, distributed state change communication, and distributed command execution. For example, the present embodiments demonstrate a more robust and flexible automatic control and monitoring environment by providing increased collaboration capabilities, increased data redundancy, and processing load balancing throughout the control and monitoring system.

鲁棒控制与监视系统Robust Control and Surveillance System

将通过以下讨论来描述许多方面、部件以及处理。经由介绍,总体系统综述目的在于使这些创新位于本文中。图1是根据本公开的实施例的用于接口的控制与监视软件框架10的图解表示。框架10有利于通过利用基于模块的互连机构12来构建功能软件,互连机构12内在地支持动态操作和配置。该动态操作和配置能力利于有效地为可配置的接口提供特征丰富的配置环境。也就是说,如下所述,单个设备要素被设置成可以被单独地编程的独立操作的代码,在库中时预写以便使用,自定义他们的功能以及在屏幕中的外观,并且互相连接以提供信息给用户以及控制与监视功能。A number of aspects, components, and processes will be described through the following discussion. By way of introduction, the overall systematic review aims to locate these innovations in this paper. FIG. 1 is a diagrammatic representation of a control and monitoring software framework 10 for an interface according to an embodiment of the present disclosure. Framework 10 facilitates building functional software by utilizing a module-based interconnection mechanism 12 that inherently supports dynamic operation and configuration. This dynamic manipulation and configuration capability facilitates effectively providing a feature-rich configuration environment for configurable interfaces. That is, as described below, individual device elements are configured as independently-operating codes that can be individually programmed, pre-written for use when in libraries, customize their functionality and appearance on screen, and interconnected to Provides information to users as well as control and monitoring functions.

框架10包括可以属于单个系统(例如,计算机)的两个相关的软件环境。具体地,运行时环境14使操作者(例如,人用户)能够与应用交互,例如在运行期间(例如,在使用接口期间,通常在与操作中的处理交互期间或者在观察操作中的处理期间)的处理。设计时环境16允许设计者来配置接口及其部件。例如,系统可以经由运行时环境14在显示器(例如,计算机或者接口设备屏幕)上将运行信息以图形方式呈现给操作者。此外,系统可以包括用于接收可经由运行时环境14来检测和管理的操作者输入的装置(例如,小键盘)。环境如以下详细描述的那样相互作用,以创新的方式来提供大大增强的接口的使用以及编程。Framework 10 includes two related software environments that may belong to a single system (eg, computer). Specifically, the runtime environment 14 enables an operator (e.g., a human user) to interact with the application, such as during runtime (e.g., during use of an interface, typically during interaction with or observation of the process in operation ) processing. The design-time environment 16 allows the designer to configure the interface and its components. For example, the system may graphically present operational information to an operator via the runtime environment 14 on a display (eg, a computer or interface device screen). Additionally, the system may include means for receiving operator input that may be detected and managed via the runtime environment 14 (eg, a keypad). The environments interact as described in detail below, in innovative ways to provide greatly enhanced interface usage and programming.

运行时环境14包括或者设置有通向设备要素18的入口。设备要素18为软件部件,其可以包括软件环境中的任何可存取或可配置的要素。例如,设备要素18包括通过运行时环境14来管理的软件部件,例如“ActiveX”控制或者“.NET”部件。“ActiveX”和“.NET”指的是面向对象的概念、技术和工具。通常本领域技术人员将非常熟悉这样的程序设计方法。在本文中,这样的标准应该仅被当作是示例,并且“设备要素”应该被理解为包括任何可以作为准独立的要素而运行的大体上类似的部件或者自偿性程序,其有时被称为“对象”。针对这样的要素存在其他标准和平台,通常被不同的公司或者工业群体所支持。Runtime environment 14 includes or is provided with access to device elements 18 . Device elements 18 are software components that may include any accessible or configurable element in a software environment. For example, device elements 18 include software components managed by runtime environment 14, such as "ActiveX" controls or ".NET" components. "ActiveX" and ".NET" refer to object-oriented concepts, technologies, and tools. Such programming methods will generally be familiar to those skilled in the art. In this context, such criteria should be considered as examples only, and "element of equipment" should be understood to include any substantially similar component or self-compensating process that can operate as a quasi-independent element, sometimes referred to as for "object". Other standards and platforms exist for such elements, often supported by different companies or industry groups.

因为这样的设备要素对本文中陈述的概念中的某些概念来说是基本的,所以先按顺序稍作介绍。设备要素通常包括四个特征:性质、方法、连接(或者接点)以及通信接口。在本文中,性质是可以被调整的属性,例如用于定义要素在屏幕视图中的表示或者图像,以及要素在屏幕上的位置等。在本文中,方法是可执行的函数(有时本文中称作要素“功能性”或者“状态引擎”),并且定义通过执行要素而进行的操作。在本文中,连接是要素之间的链接,并且可以被用于使(从存储器读取的或者写入存储器的)数据被发送到另一个要素。Because such equipment elements are fundamental to some of the concepts presented in this article, they are introduced briefly in order. Equipment elements usually include four characteristics: properties, methods, connections (or joints), and communication interfaces. In this context, a property is an attribute that can be adjusted, for example, to define the representation or image of an element in a screen view, its position on the screen, etc. Herein, a method is an executable function (sometimes referred to herein as an element's "functionality" or "state engine") and defines an operation to be performed by executing the element. In this context, a connection is a link between elements and can be used to cause data (read from or written to memory) to be sent to another element.

设备要素18的具体示例可以包括软件按钮、计时器、计量表、PLC通信服务器、可视化(例如示出在自动控制与监视系统内的部件的状态的屏幕)以及应用。通常,几乎任何可识别的功能都可以被配置为这样的要素。此外,如以下所讨论的,这样的要素可以互相通信以进行各种各样的显示、监视操作和控制功能。应指出,设备要素18不需要用于支持设计模式的特别的限制。而且,虽然与图像关联的要素非常有用,尤其是用于可视化,但是许多要素可以不具有视觉表示,而是可以在HMI中执行功能,例如计算,或者甚至管理以及在其他要素之间进行数据交换。Specific examples of equipment elements 18 may include software buttons, timers, meters, PLC communication servers, visualizations (such as screens showing the status of components within an automatic control and monitoring system), and applications. In general, almost any recognizable function can be configured as such an element. Furthermore, as discussed below, such elements can communicate with each other to perform various display, monitoring operations and control functions. It should be noted that device element 18 does not require special constraints for supporting design patterns. And, while elements associated with images are very useful, especially for visualization, many elements may not have a visual representation, but may instead perform functions within the HMI, such as calculations, or even management and data exchange between other elements .

运行时环境14通常使用通信子系统20来进行操作。通信子系统20适于互连设备要素18。实际上,通信子系统20可以被看作包括设备要素18的连接。然而,通信子系统20可以包括发送数据到外部电路以及从外部电路接收数据的一系列软件、硬件以及固件,例如自动控制器、其他计算机、网络、卫星、传感器、执行机构等。Runtime environment 14 typically operates using communications subsystem 20 . The communication subsystem 20 is adapted to interconnect the equipment elements 18 . In practice, communication subsystem 20 may be viewed as comprising a connection of equipment elements 18 . However, communications subsystem 20 may include a range of software, hardware, and firmware that transmits data to and receives data from external circuits, such as automated controllers, other computers, networks, satellites, sensors, actuators, and the like.

运行时环境14通常使用行为子系统22来进行操作,行为子系统22适于管理设备要素18的行为。例如,行为子系统22的职责可以包括如下:放置和移动设备要素、修改设备要素、将设备要素聚集在可换屏幕上、保存和恢复屏幕布局、管理安全性、保存和恢复连接列表,以及对运行时环境14提供远程访问。同样,实际上,这样的行为可以被称为每个设备要素的简档(profile)(即,“方法”或者“状态引擎”)的一部分。The runtime environment 14 generally operates using a behavioral subsystem 22 adapted to manage the behavior of the equipment elements 18 . For example, the responsibilities of behavioral subsystem 22 may include the following: placing and moving device elements, modifying device elements, aggregating device elements on swappable screens, saving and restoring screen layouts, managing security, saving and restoring connection lists, and The runtime environment 14 provides remote access. Also, in practice, such behavior may be referred to as part of each device element's profile (ie, "method" or "state engine").

设计时环境16包括行为子系统22的预先实现,行为子系统22的预先实现利于在不妨碍或者损害运行时环境14的行为的情况下,直接或者间接的操作运行时环境14。也就是说,即使在接口被操作的情况下也可以设计和重新配置设备要素18。行为子系统22经由设计时环境16的远程提供来扩展访问运行时环境14,例如在常规的浏览器中。行为子系统22允许设计者经由远程编程终端通过将设计时环境16或者设计时环境16的方面从HMI提供到编程终端,来与HMI的运行时环境14的方面交互以及改变HMI的运行时环境14的方面。例如,经由网络耦接到膝上型电脑的HMI可以通过经由网络将具体的设计时环境16提供给膝上型电脑来给用户提供配置能力。Design-time environment 16 includes a pre-implementation of behavioral subsystem 22 that facilitates operating runtime environment 14 directly or indirectly without interfering with or impairing the behavior of runtime environment 14 . That is, the equipment element 18 can be designed and reconfigured even while the interface is operated. Behavior subsystem 22 extends access to runtime environment 14 via remote provisioning of design-time environment 16, such as in a conventional browser. Behavior subsystem 22 allows a designer to interact with and change aspects of the HMI's runtime environment 14 by providing the design-time environment 16 or aspects of the design-time environment 16 from the HMI to the programming terminal via a remote programming terminal aspect. For example, an HMI coupled to a laptop via a network may provide configuration capabilities to a user by providing a specific design-time environment 16 to the laptop via the network.

以下提供如何实现这一点的细节和示例。在当前实施例中,设计时环境16可以是结合动态超文本标记语言(DHTML)和动态服务器页面(ASP)服务器脚本来将动态内容提供给浏览器的产物。ASP脚本是专门编写的代码,包括在页面被发送到用户之前在服务器(例如,Web服务器)上处理的一个或更多个脚本(即,小的嵌入式程序)。通常,在常规应用中,这样的脚本提示服务器从数据库访问数据以及在数据库中做出改变。接下来,在将页面发送给请求者之前,脚本通常构造或者自定义页面。如以下所讨论的那样,这样的脚本非常不同地用在本框架中,例如在没有设备要素的功能性或者他们的相互关系的先前知识的情况下创建可视化。Details and examples of how to achieve this are provided below. In the current embodiment, the design-time environment 16 may be the product of a combination of Dynamic Hypertext Markup Language (DHTML) and Dynamic Server Pages (ASP) server scripting to provide dynamic content to a browser. ASP scripts are specially written code consisting of one or more scripts (ie, small embedded programs) that are processed on a server (eg, a Web server) before the page is sent to the user. Typically, in conventional applications, such scripts prompt the server to access data from and make changes in the database. Next, the script typically constructs or customizes the page before sending it to the requester. As discussed below, such scripts are used very differently in the present framework, for example to create visualizations without prior knowledge of the functionality of the device elements or their interrelationships.

通过促进设备要素的变化,设计时环境16允许设计者做出行为子系统22的专门实现或者可互换的设计时模型。行为子系统22的设计时实现的具体示例包括基于Web的设计时环境16,基于Web的设计时环境16经由HMI与远程设备之间的TCP/IP连接来扩展访问HMI上的运行时环境14。基于Web的设计时环境16利于在不危害运行性能或者安全的情况下管理设备要素。在一个专门的实现中,行为子系统22给予设计者使用能够访问相关接口或者HMI的Web浏览器来操作运行时环境14的方面的能力。如上所述,以及如以下详细描述的,这通过使用动态内容、脚本以及设备要素性质的配置的组合来实现。Design-time environment 16 allows designers to make specialized implementations of behavioral subsystems 22 or interchangeable design-time models by facilitating changes to device elements. A specific example of a design-time implementation of the behavioral subsystem 22 includes a Web-based design-time environment 16 that extends access to the runtime environment 14 on the HMI via a TCP/IP connection between the HMI and the remote device. The web-based design-time environment 16 facilitates managing device elements without compromising operational performance or security. In one specialized implementation, the behavioral subsystem 22 gives the designer the ability to manipulate aspects of the runtime environment 14 using a web browser that can access the relevant interface or HMI. As noted above, and as described in detail below, this is accomplished using a combination of dynamic content, scripting, and configuration of device element properties.

图2是根据本公开的实施例的例如用于工业自动化的实现上述框架的控制与监视系统24的图解表示。系统24包括HMI 26,HMI 26适于与联网的部件及配置装备连接。系统24被示出为包括HMI 26,HMI 26适于通过控制/监视设备30(例如,远程计算机、自动控制器,例如可编程逻辑控制器(PLC),或者其他控制器)来与处理28的部件合作。HMI 26可以物理地类似现有的硬件,例如面板、监视器或者独立设备。FIG. 2 is a diagrammatic representation of a control and monitoring system 24 implementing the above-described framework, eg, for industrial automation, according to an embodiment of the present disclosure. System 24 includes HMI 26 adapted to interface with networked components and configuration equipment. System 24 is shown to include HMI 26 adapted to communicate with process 28 via control/monitoring device 30 (e.g., remote computer, automated controller, such as a programmable logic controller (PLC), or other controller). Component cooperation. HMI 26 may physically resemble existing hardware, such as panels, monitors, or stand-alone devices.

可以通过使用任何适当的网络策略来促进HMI 26与处理28的部件之间的合作。实际上,可以采用产业标准网络,例如DeviceNet,以使得能够进行数据传递。这样的网络允许根据预定义的协议来进行数据交换,并且可以提供用于操作联网要素的能力。如上所述,虽然在当前讨论中参考了联网系统以及结合控制器和其他装备的系统,所描述的HMI 26和编程技术可以同样适用于非联网部件(例如,GPS显示器、游戏显示器、手机显示器、平板电脑显示器等)以及适用于在工业自动化领域之外的联网系统。例如,以下描述的布置和处理可以被用于设施管理、汽车和车辆接口、计算机数控(CNC)机器、销售点(POS)系统、用于商业市场(例如,电梯、入口系统)的控制接口等,仅举几个例子。Cooperation between HMI 26 and components of process 28 may be facilitated through the use of any suitable network strategy. In practice, an industry standard network, such as DeviceNet, may be employed to enable data transfer. Such a network allows data exchange according to predefined protocols and may provide capabilities for operating networked elements. As noted above, while the present discussion refers to networked systems and systems incorporating controllers and other equipment, the HMI 26 and programming techniques described can be equally applied to non-networked components (e.g., GPS displays, gaming displays, cell phone displays, Tablet PC monitors, etc.) and for networked systems outside of industrial automation. For example, the arrangements and processes described below may be used in facility management, automotive and vehicle interfaces, computer numerical control (CNC) machines, point-of-sale (POS) systems, control interfaces for commercial markets (e.g., elevators, entrance systems), etc. , just to name a few examples.

由相应的行为子系统管理和构造的运行时或者操作环境14被存储并且驻留在HMI26上。例如,这样的行为子系统可以适于从存储位置加载应用配置框架(例如,10),例如在HMI 26的初始制造或者设置期间。当被加载时,存储的应用框架可以适于创建屏幕以及在屏幕中定位用户接口设备要素(与要素对应的实际的图像或者图形表示)。这些应用、屏幕以及用户接口要素为各个类型的设备要素。如以下所描述的,HMI 26包括规定布局和设备要素的交互的存储的应用。基于运行时引擎的基于Web的设计时环境16也被加载且驻留在HMI 26上。设计时环境16可以适于为设计时环境和运行时环境两者来处理先进的特征(例如,安全管理)。The runtime or operating environment 14 managed and structured by the corresponding behavioral subsystems is stored and resides on the HMI 26 . For example, such a behavioral subsystem may be adapted to load an application configuration framework (eg, 10 ) from a storage location, such as during initial manufacture or setup of HMI 26 . When loaded, the stored application framework may be adapted to create screens and position user interface device elements (the actual images or graphical representations corresponding to the elements) in the screens. These application, screen, and user interface elements are various types of device elements. As described below, the HMI 26 includes stored applications that specify the layout and interaction of equipment elements. A web-based design-time environment 16 based on a runtime engine is also loaded and resides on the HMI 26 . The design-time environment 16 may be adapted to handle advanced features (eg, security management) for both the design-time environment and the runtime environment.

HMI 26可以适于允许用户与几乎任何处理交互。例如,处理可以包括:压缩机站、炼油厂、用于制造食物项目(food items)的分批操作、机械化的装配线等。因此,处理28可以包括各种操作部件,例如电动机、阀、执行机构、传感器,或者无数的制造、加工、材料处理及其他应用程序。此外,处理28可以包括用于通过自动化和/或观察来调节处理变量的控制与监视装备。示出的处理28包括传感器34和执行机构36。传感器34可以包括适于提供关于处理条件的信息的许多设备。执行机构36可以类似地包括适于响应于输入信号来进行机械作用的许多设备。HMI 26 can be adapted to allow a user to interact with almost any process. For example, processes may include: compressor stations, oil refineries, batch operations for manufacturing food items, mechanized assembly lines, and the like. Accordingly, process 28 may include various operating components such as electric motors, valves, actuators, sensors, or a myriad of manufacturing, machining, material handling, and other applications. Additionally, process 28 may include control and monitoring equipment for adjusting process variables through automation and/or observation. The illustrated process 28 includes sensors 34 and actuators 36 . Sensors 34 may include any number of devices suitable for providing information about processing conditions. Actuator 36 may similarly include any number of devices adapted to perform mechanical action in response to input signals.

如所示出的,这些传感器34和执行机构36与控制/监视设备30(例如,自动控制器)通信并且可以被分配给可由HMI 26访问的控制/监视设备30中的具体的地址。传感器34和执行机构36可以与HMI 26直接进行通信。这些设备可以被用于操作处理装备。实际上,他们可以被用在处理循环中,该处理循环由控制/监视设备30和/或HMI 26控制与监视。可以基于处理输入(例如,来自传感器34的输入)或者直接输入(例如,通过HMI 26接收的操作者输入)来启动这样的处理循环。As shown, these sensors 34 and actuators 36 are in communication with a control/monitoring device 30 (eg, an automation controller) and may be assigned to specific addresses in the control/monitoring device 30 that are accessible by the HMI 26 . Sensors 34 and actuators 36 may communicate directly with HMI 26 . These devices can be used to operate processing equipment. In fact, they can be used in a process loop that is controlled and monitored by the control/monitoring device 30 and/or the HMI 26 . Such process loops may be initiated based on process input (eg, input from sensors 34 ) or direct input (eg, operator input received through HMI 26 ).

接口上的服务器软件允许查看开发环境,以及直接重新配置接口(具体地设备要素及他们的关联的外观和功能)而不需要专门查看或者配置软件。该益处来自于下述事实:设备要素和设计时环境本身归属于HMI 26,并且通过HMI 26“提供”给编程终端46上的浏览器或者其他通用的查看器。换句话说,可以降低或者消除对外部计算机工作站(例如,膝上型计算机和台式计算机)的必要的支持。应指出,用于查看和修改接口的配置的“浏览器”的引用不限于Web浏览器或者任何具体的浏览器。浏览器的引用意图是示例性的。一般地说,术语“浏览器”被用在本文中来引用包括任何通用查看器的软件。Server software on the interface allows viewing of the development environment, and direct reconfiguration of the interface (specifically device elements and their associated appearance and function) without the need for specialized viewing or configuration software. This benefit comes from the fact that the device elements and the design-time environment are themselves owned by the HMI 26 and are "provided" by the HMI 26 to a browser or other common viewer on the programming terminal 46 . In other words, the necessary support for external computer workstations (eg, laptops and desktops) can be reduced or eliminated. It should be noted that references to a "browser" for viewing and modifying the configuration of an interface are not limited to web browsers or any specific browser. The browser's reference intent is exemplary. Generally, the term "browser" is used herein to refer to software including any general-purpose viewer.

通过如以下所描述的设备要素的编程,HMI 26可以被认为包括用于呈现一个或更多个屏幕视图或者可视化的指令和在通过参考屏幕视图(例如,按钮、触摸屏幕的位置等)来与HMI 26进行交互的情况下执行的设备要素。可以通过任何期望的软件或者软件包来定义屏幕视图和设备要素。例如,屏幕视图和设备要素可以被操作系统38调用或执行。如上所述,根据本实施例的设备要素可以是符合“.NET”或者“ActiveX”标准的对象。操作系统本身可以基于任何适当的平台,例如Window CE、OS-X等。如本文中所引用的,设备要素和工具支持用于在网络(例如,因特网)上发送数据的网络服务或者技术。因此如以下所描述的,这些设备要素遵循关于信息共享的一套规则。并且被各种脚本和编程语言适应性调整以便使用。这样的设备要素使得能够将交互内容供应给外部应用,例如LAN、WAN、内联网、外联网乃至万维网。因此,操作系统38和各种设备要素利于借助于浏览器48通过允许对浏览器48的配置访问(例如,提供(serving up))来动态地配置HMI26。Through programming of device elements as described below, the HMI 26 may be considered to include instructions for presenting one or more screen views or visualizations and interact with them by reference to the screen views (e.g., buttons, position of touch screen, etc.) The device elements that are executed when the HMI 26 interacts. Screen views and device elements can be defined by any desired software or software package. For example, screen views and device elements may be invoked or executed by the operating system 38 . As described above, the device element according to the present embodiment may be an object conforming to the ".NET" or "ActiveX" standard. The operating system itself may be based on any suitable platform, such as Window CE, OS-X, etc. As referenced herein, device elements and tools support network services or technologies for sending data over a network (eg, the Internet). These device elements thus follow a set of rules regarding information sharing as described below. And is adapted for use by various scripting and programming languages. Such device elements enable provisioning of interactive content to external applications, such as LANs, WANs, Intranets, Extranets or even the World Wide Web. Thus, operating system 38 and various device elements facilitate dynamically configuring HMI 26 via browser 48 by allowing configuration access (eg, serving up) to browser 48 .

例如,这样的配置访问包括用于例示设备要素的访问。换句话说,实际上可以从浏览器48创建和执行新设备要素。此外,应指出,浏览器48不需要实际的功能访问。确实,在一个实施例中,经由浏览器48的请求导致基于数据功能性和容器中设备要素的内容的操作的“抽出(draw)”序列,由此在实际上没有提供功能方面的情况下允许设备要素表示的示出和对他们的配置的访问。这允许在不需要对远程工作站技术支持的情况下经由远程工作站进行配置。For example, such configuration accesses include accesses for instantiating device elements. In other words, new device elements can actually be created and executed from the browser 48 . Furthermore, it should be noted that the browser 48 does not require actual functional access. Indeed, in one embodiment, a request via the browser 48 results in a "draw" sequence of operations based on the functionality of the data and the content of the device element in the container, thereby allowing Representation of device elements and access to their configuration. This allows configuration via a remote workstation without requiring technical support for the remote workstation.

除了如上所述(并且如以下更详细地描述)的操作系统38和设备要素之外,HMI 26包括应用或应用层40。可以自身包括设备要素的应用利于访问并且从HMI 26的各种设备要素获取信息。具体地,应用40表示可以是用于执行而枚举的多级设备要素中的第一级。在实际实现中,应用40可以包括XML页面形式的用户应用。然后用户应用与用户或者操作者,以及与设计者交互,如以下更详细地描述的。In addition to the operating system 38 and device elements as described above (and as described in more detail below), the HMI 26 includes an application or application layer 40 . An application that may itself include device elements facilitates accessing and obtaining information from various device elements of the HMI 26 . Specifically, the application 40 representation may be the first level in a multi-level device element enumerated for execution. In an actual implementation, the application 40 may include a user application in the form of an XML page. The user application then interacts with the user or operator, and with the designer, as described in more detail below.

屏幕视图和设备要素可以被描述为独立的可执行的软件。在本实现中,通过用标记语言(例如,超文本标记语言或者HTML)编写的适当的代码来定义屏幕视图。因此,可以在不使用转换程序的情况下进行HMI 26的图形接口屏幕的配置。此外,通过对设备要素进行编程,可以经由下述驻留服务器软件(称为服务器42)来直接在HMI 26上开发屏幕视图,该驻留服务器软件使驻留的开发环境可用于远程访问。具体地,在一个实施例中,某些设备要素的表示(例如,ActiveX控制)被提供给浏览器48而没有提供软件部件本身。因为可以经由浏览器48访问开发或设计时环境,因此可以消除将变化下载到屏幕以及更新远程配置软件应用的需要。Screen views and device elements can be described as independent executable software. In this implementation, screen views are defined by appropriate code written in a markup language (eg, hypertext markup language or HTML). Therefore, configuration of the graphic interface screen of the HMI 26 can be performed without using a conversion program. Additionally, by programming the device elements, screen views can be developed directly on the HMI 26 via resident server software (referred to as server 42 ) that makes the resident development environment available for remote access. Specifically, in one embodiment, representations of certain device elements (eg, ActiveX controls) are provided to the browser 48 without providing the software components themselves. Because the development or design-time environment can be accessed via the browser 48, the need to download changes to screens and update remote configuration software applications can be eliminated.

如上所述,设备要素可以包括功能性,他们通过该功能性从通常在其他设备中(但是也可以在HMI内)的具体存储器或者存储寄存器读取或写入具体存储器或存储寄存器。例如,具体的功能可以对应于写入控制/监视设备30的寄存器32或者从控制/监视设备30的寄存器32读取。在简单的情况下,例如,对象访问一段数据(例如,如由传感器确定的部件的状态),并且生成输出信号以编写对应于不同联网设备的状态的值。如以下将更加详细地讨论的,可以经由状态增量43来传达这种状态信息。例如,在图2中描述的实施例中,控制/监视设备30和HMI 26可以使用状态增量43来传达状态信息。此外,编程终端46也可以使用状态增量43来与控制/监视设备30和HMI26进行状态信息的传达。As noted above, device elements may include functionality by which they read from or write to specific memories or storage registers, typically in other devices (but also within the HMI). For example, a specific function may correspond to writing to or reading from a register 32 of the control/monitoring device 30 . In simple cases, for example, an object accesses a piece of data (eg, the state of a component as determined by a sensor), and generates output signals to write values corresponding to the states of different networked devices. As will be discussed in more detail below, such status information may be communicated via status delta 43 . For example, in the embodiment depicted in FIG. 2 , control/monitoring device 30 and HMI 26 may use status increment 43 to communicate status information. Additionally, programming terminal 46 may also use status increment 43 to communicate status information with control/monitoring device 30 and HMI 26 .

当然,可以配置更加复杂的功能。例如,在工业控制与监视环境中,这样的设备要素可以对一系列物理部件的操作进行仿真,例如瞬时接触按钮、具有延迟输出的按钮、开关等。许多预编程的设备要素可以供HMI 26使用。这样的功能模块可以是可经由网络访问的,或者可以驻留在HMI 26上,或者驻留在直接链接到HMI 26的单独的设备上。用这种方式,HMI供应者或者软件供应者可以提供许多可能的构建块,根据该构建块可以对屏幕以及复杂的控制与监视功能进行编程。实际上,可利用的设备要素的库44可以驻留在HMI 26上以利于配置HMI 26,如以下描述的。屏幕指令可以基于操作者输入来调用用于执行期望的功能的设备要素,并且这些指令可以被编程成预编程要素的版本。例如,操作者可以通过触摸触摸屏上的位置或者压下键盘上的键来提供初始输入。然后基于屏幕指令和与指令相关联的设备要素(例如,具有具体的位置触发调用或者执行预配置的设备要素),可以执行期望的功能。因此,操作者能够与处理进行交互以通常改变屏幕视图、写入寄存器或者命令生成其他输出或控制信号。在单机实现中,交互可以是简单地再调用或者存储数据、改变屏幕等。Of course, more complex functions can be configured. For example, in an industrial control and monitoring environment, such equipment elements can simulate the operation of a series of physical parts, such as momentary contact buttons, buttons with delayed outputs, switches, etc. A number of pre-programmed device elements are available for use with the HMI 26 . Such functional modules may be accessible via a network, or may reside on the HMI 26 , or on a separate device directly linked to the HMI 26 . In this way, the HMI provider or software provider can provide many possible building blocks from which screens and complex control and monitoring functions can be programmed. In fact, a library 44 of available equipment elements may reside on the HMI 26 to facilitate configuring the HMI 26, as described below. On-screen instructions may invoke device elements for performing desired functions based on operator input, and these instructions may be programmed as versions of pre-programmed elements. For example, an operator may provide initial input by touching a location on a touch screen or depressing a key on a keyboard. Then based on the on-screen instructions and the device elements associated with the instructions (eg, having a specific location trigger a call or execute a pre-configured device element), the desired function can be performed. Thus, an operator can interact with the process to generally change screen views, write to registers, or command the generation of other output or control signals. In a stand-alone implementation, interactions can be as simple as recalling or storing data, changing screens, etc.

对于一些具有许多这样的屏幕和大量的设备要素的HMI,可以采用一个或更多个单独的接口屏幕。每个设备要素进而可以被唯一地编程以考虑具体的输入、执行具体的功能以及生成用于具体输出的信号。如以下所描述的,多个这样的设备要素可以被加载和被托管在单个软件“容器”(例如,ActiveX容器)中。For some HMIs with many such screens and a large number of device elements, one or more separate interface screens may be employed. Each device element, in turn, can be uniquely programmed to consider specific inputs, perform specific functions, and generate signals for specific outputs. As described below, multiple such device elements may be loaded and hosted in a single software "container" (eg, an ActiveX container).

可以通过直接地与HMI 26本身(如果存在一个)的屏幕或者面板进行交互来配置HMI 26,但是在许多情况下将从远程编程终端46来执行配置。例如,经由浏览器48或者类似的应用来直接地提供对驻留库44和/或操作系统38及应用40的访问。在本实现中,在编程终端46处不需要其他的专用软件。实际上,驻留在HMI 26上的服务器42可以提供对库44中的设备要素的访问。通过直接在HMI 26上存储库44中的设备要素,消除或者降低了版本冲突等的风险。因此。HMI 26可以直接连接到编程终端46,或者按照分配给HMI 26的IP地址(因特网协议地址)来访问HMI 26。The HMI 26 can be configured by interacting directly with the screen or panel of the HMI 26 itself (if one exists), but in many cases the configuration will be performed from the remote programming terminal 46 . Access to the resident repository 44 and/or the operating system 38 and applications 40 is provided directly, for example, via a browser 48 or similar application. In this implementation, no other special purpose software is required at programming terminal 46 . In effect, server 42 residing on HMI 26 may provide access to device elements in library 44 . By storing the device elements in the library 44 directly on the HMI 26, the risk of version conflicts etc. is eliminated or reduced. therefore. HMI 26 can be connected directly to programming terminal 46 , or HMI 26 can be accessed via an IP address (Internet Protocol address) assigned to HMI 26 .

访问控制方案可以被用于限制改变屏幕和设备要素的能力。例如,可能需要密码或者用户访问状态来获得这样的访问。此外,在目前预期的实施例中,编程终端自动地识别HMI 26或者下述终端,在该终端上HMI 26驻留作为耦接到编程终端46的设备(例如,类似于外部存储器或者驱动)。因此,一旦连接到编程终端,HMI 26可以简单地被“识别”为可以被访问的设备(提供下述的配置屏幕和工具)。Access control schemes can be used to limit the ability to change screen and device elements. For example, a password or user access status may be required to gain such access. Furthermore, in presently contemplated embodiments, programming terminal automatically recognizes HMI 26 or a terminal on which HMI 26 resides as a device coupled to programming terminal 46 (eg, like an external memory or drive). Thus, once connected to the programming terminal, the HMI 26 can simply be "recognized" as a device that can be accessed (providing the configuration screens and tools described below).

一旦随后驻留在HMI 26上的设备要素可被编程终端46访问,那么可以经由来自编程终端46的通信链路直接在HMI 26上修改或更新HMI 26的方面。例如,用户可能希望更新具体的HMI图形以提供数据,例如历史数据或者与从新安装的传感器34接收的信息相关的趋势。此外,用户可以发现在以脱机模式(例如,不立即执行变化)的情况下更新用于表示这样的数据的HMI图形是期望的或者便利的。在这种情况下,用户可以经由编程终端46链接到可利用的设备要素的库44,并且使用其来在开发环境中修改HMI图形或者功能。Once the device elements residing on HMI 26 are then accessible to programming terminal 46 , aspects of HMI 26 may be modified or updated directly on HMI 26 via a communication link from programming terminal 46 . For example, a user may wish to update a particular HMI graphic to provide data, such as historical data or trends related to information received from a newly installed sensor 34 . Furthermore, users may find it desirable or convenient to update HMI graphics representing such data in an offline mode (eg, without performing changes immediately). In this case, the user can link via the programming terminal 46 to the library 44 of available equipment elements and use it to modify the HMI graphics or functions in the development environment.

应指出,附加的设备要素可以被增加到库44。例如,如果趋势设备要素没有驻留在HMI 26上,用户可以从驻留在编程终端46上的配置库50将这样的元素下载到HMI 26。或者,用户可以经由网络(例如,因特网)从可访问的资源库52访问趋势设备要素,直接到HMI 26或者通过编程终端46。这可以特别有益,因为新的且改进的设备要素可以单独地并且在定期的基础上被下载到HMI 26,由此在不需要定期发布新的转换程序或HMI操作系统、或者运行时或设计时环境软件的情况下增加新的功能。开发环境可以设置到这样的库的链接。此外,在使用嵌入代码的实施例中(例如,操作系统、服务器软件、设备对象等),由于嵌入代码驻留在HMI 26上,所以可以避免与嵌入代码的版本冲突并且可以消除编程终端软件升级的必要性。It should be noted that additional equipment elements may be added to library 44 . For example, if trending device elements are not resident on HMI 26 , the user may download such elements to HMI 26 from configuration library 50 resident on programming terminal 46 . Alternatively, a user may access trending device elements from accessible repository 52 via a network (eg, the Internet), either directly to HMI 26 or through programming terminal 46 . This can be particularly beneficial because new and improved equipment elements can be downloaded to the HMI 26 individually and on a regular basis, thereby eliminating the need for periodic releases of new conversion programs or HMI operating systems, or runtime or design-time In the case of environmental software, new functions are added. Development environments can be set up to link to such libraries. Furthermore, in embodiments where embedded code is used (e.g., operating system, server software, device objects, etc.), since the embedded code resides on the HMI 26, version conflicts with embedded code can be avoided and programming terminal software upgrades can be eliminated. necessity.

为了追踪控制与监视系统24的一个或更多个部件的状态信息,控制与监视系统24的部件可以使用代表控制与监视系统24的各个方面的分布式数据模型。例如,分布式数据模型可以使代表控制与监视系统24的数据模型的多个高速缓存的副本能够存在于控制与监视系统24内(例如,在控制与监视系统24的部件中的一个或更多个处)。如以下将更详细地描述的,分布式数据模型可以结合增量脚本和分布式命令处理来工作。增量脚本可以使控制与监视系统24的一个或更多个部件能够确定数据模型的状态变化,生成只包含数据模型的变化和/或整个数据模型的增量脚本,以及将增量脚本提供给控制与监视系统24的其他部件。其他部件可以消耗增量脚本并且将包含在增量脚本内的数据施加到本地数据模型的高速缓存的副本(例如,包含在控制与监视系统24的部件之一的分布式副本)。此外,如以下将更详细地讨论的,控制与监视系统24的某些部件可以利用使得能够进行分布式命令处理的分布式执行引擎。这样的分布式命令处理使控制与监视系统24的分布式部件能够基于提供给分布式部件的事件或调度来处理命令执行。To track status information for one or more components of control and monitoring system 24 , components of control and monitoring system 24 may use a distributed data model representing various aspects of control and monitoring system 24 . For example, a distributed data model may enable multiple cached copies of the data model representing control and monitoring system 24 to exist within control and monitoring system 24 (e.g., in one or more of the components of control and monitoring system 24 places). As will be described in more detail below, the distributed data model can work in conjunction with incremental scripting and distributed command processing. Delta scripts may enable one or more components of the control and monitoring system 24 to determine changes in the state of the data model, generate delta scripts that contain only the changes to the data model and/or the entire data model, and provide the delta scripts to Other components of the control and monitoring system 24. Other components may consume the delta script and apply the data contained within the delta script to a cached copy of the local data model (eg, a distributed copy contained in one of the components of the control and monitoring system 24 ). Furthermore, as will be discussed in more detail below, certain components of the control and monitoring system 24 may utilize a distributed execution engine that enables distributed command processing. Such distributed command processing enables distributed components of the control and monitoring system 24 to process command execution based on events or schedules provided to the distributed components.

通过使用分布式的数据模型、分布式增量通信(例如,经由增量脚本)以及分布式命令执行,产生的控制与监视系统24可以更加鲁棒和灵活。例如,可以使用分布式数据模型的副本以影响控制与监视系统24内的变化,而不是取决于集中式控制/监视设备30处的集中式数据模型。例如,HMI 26可以包括分布式数据模式的副本,依赖于该副本来影响HMI 26之内的变化,而不是依赖于控制/监视设备30处的集中式数据模型来影响HMI 26的变化。此外,HMI 26可以接收下述状态增量43(例如,经由增量脚本):状态增量43由HMI 26消耗,并且是通过HMI 26施加到HMI的数据模型的本地副本。此外,如将在以下更详细地描述的,HMI26可以包括下述本地执行引擎(例如,分布在HMI 26的执行引擎):该本地执行引擎对于在HMI 26处执行提供至HMI 26的命令是有用的。By using a distributed data model, distributed incremental communication (eg, via incremental scripting), and distributed command execution, the resulting control and monitoring system 24 can be more robust and flexible. For example, a distributed copy of the data model may be used to effect changes within the control and monitoring system 24 rather than depending on the centralized data model at the centralized control/monitoring device 30 . For example, HMI 26 may include a distributed copy of the data schema upon which changes are effected within HMI 26 , rather than relying on a centralized data model at control/monitoring device 30 to affect changes to HMI 26 . Additionally, HMI 26 may receive state deltas 43 (eg, via delta scripts) that are consumed by HMI 26 and that are local copies of the data model applied to the HMI by HMI 26 . Additionally, as will be described in more detail below, HMI 26 may include a local execution engine (e.g., an execution engine distributed to HMI 26) that is useful for executing commands provided to HMI 26 at HMI 26 of.

此外,这种功能使同步的数据存储能够遍及控制与监视系统24存在。这些同步的数据存储可以通过使多个用户能够对将要与其他的数据存储中的每一个数据存储同步的单个数据存储做出改变而使的能够进行协作。此外,由于数据存储可以高速缓存控制与监视系统24的数据的单个副本,所以可以进行脱机修改。例如,即使当控制器不可用时,通过使用在数据存储之一中高速缓存的数据,用户可以对控制与监视系统24进行修改。当用户恢复联机(例如,可以访问处理器)时,由用户在脱机情况下所做的修改可以与其他的数据存储同步。因此,用户能够以更一致且可靠的方式将变化提供给控制与监视系统24。Furthermore, this functionality enables synchronized data storage to exist throughout the control and monitoring system 24 . These synchronized data stores may enable collaboration by enabling multiple users to make changes to a single data store to be synchronized with each of the other data stores. In addition, because the data store can cache a single copy of the control and monitoring system 24 data, offline modifications can be made. For example, by using data cached in one of the data stores, a user can make modifications to the control and monitoring system 24 even when the controller is unavailable. Modifications made by the user offline can be synchronized with the other data stores when the user comes back online (eg, with access to the processor). Thus, the user is able to provide changes to the control and monitoring system 24 in a more consistent and reliable manner.

例如,一个用户可以在设计软件(例如Rockwell自动化股份有限公司的LogixTM)中对标记定义、元数据定义进行改变,可以对设计的要素重命名,可以修改报警设置、改变数据类型和/或修改数据记录情况。这些由用户提交的改变可以制成本地数据存储。联机时,这些变化可以传播至控制与监视系统24内的其他数据存储,从而遍及系统24应用这些变化。脱机时,这些变化可以保留在本地数据存储,而一旦返回联机时(例如,重新连接到控制与监视系统24的控制器)则可以被同步。通过变化的自动传播,可以避免冗余的变化录入,从而节约开发劳动。此外,通过系统24基于自动重命名传播可以减少调试和初始化。此外,由于这些变化可以起源于整个系统,所以当不同用户开发控制器和HMI时可以允许灵活的工作流。For example, a user can make changes to tag definitions, metadata definitions, rename elements of the design, modify alarm settings, change data types, and/or modify Data logging condition. These user-submitted changes can be made into a local data store. When online, these changes can be propagated to other data stores within the control and monitoring system 24 , applying the changes throughout the system 24 . While offline, these changes may remain in the local data store, but may be synchronized once back online (eg, reconnected to the controller of the control and monitoring system 24). Through the automatic propagation of changes, redundant change entry can be avoided, thereby saving development labor. Furthermore, automatic renaming based propagation through the system 24 can reduce debugging and initialization. Furthermore, since these changes can originate throughout the system, it allows for flexible workflows when different users develop controllers and HMIs.

如上所述,通过分布式数据模型、经由增量脚本将变化传播至分布式数据模型、以及分布式命令执行,可以相对于传统控制与监视系统极大地改进控制与监视系统24。例如,可以由控制与监视系统24内分布的数据模型的多份副本中的任何一个来服务控制与监视系统24的客户端(例如,请求控制与监视系统24的数据模型的数据的部件)。控制与监视系统24可以从基于许多判定因素之一确定哪一个副本来服务客户端。例如,可以选择具体的分布式数据模型副本,以基于性能效率例如高效网络通路(例如,靠近客户端的副本、本地的或网络上的、或者具有最大带宽的网络通路等)将数据提供至客户端。此外,处理考虑也可以被作为这样的决策的音素。例如,这种鲁棒的控制与监视系统24可以使数据能够被提供至使用负载均衡技术的客户端。在一个实施例中,可以从包含已知的或可能比控制与监视系统24的另外部件提供较少的请求的数据模型的分布式副本的部件向客户端提供数据。在一个示例中,控制与监视系统24可以包括两个控制/监视设备30(例如,2个自动控制器)。控制与监视系统24可以预测或观察第一控制/监视设备30比第二控制/监视设备30接收更多的对数据的请求。因此,控制与监视系统24可以确定从第二控制/监视设备30服务客户端以避免过度利用第一控制/监视设备30。因而,控制与监视系统24可以通过基于控制与监视系统24内的部件的负载而均衡请求,来避免控制/监视设备30的溢流。在某些实施例中,这可以包括从单个部件将请求提供至请求的阈值数或数据的量并且当达到阈值时移动至溢流源。在一些实施例中,这可以包括在提供数据时基本上均匀分摊请求的负载或数据的量。As described above, by distributing the data model, propagating changes to the distributed data model via delta scripts, and distributing command execution, the control and monitoring system 24 can be greatly improved over traditional control and monitoring systems. For example, clients of control and monitoring system 24 (eg, components requesting data for the data model of control and monitoring system 24 ) may be served by any of multiple copies of the data model distributed within control and monitoring system 24 . Control and monitoring system 24 may determine which replica to service a client based on one of a number of decision factors. For example, specific distributed data model replicas may be selected to serve data to clients based on performance efficiencies such as efficient network access (e.g., replicas close to the client, locally or on a network, or network access with maximum bandwidth, etc.) . Furthermore, processing considerations can also be used as phonemes for such decisions. For example, such a robust control and monitoring system 24 may enable data to be provided to clients using load balancing techniques. In one embodiment, data may be provided to clients from components that contain distributed copies of data models that are known or may provide fewer requests than other components of the control and monitoring system 24 . In one example, the control and monitoring system 24 may include two control/monitoring devices 30 (eg, 2 automatic controllers). The control and monitoring system 24 may predict or observe that the first control/monitoring device 30 receives more requests for data than the second control/monitoring device 30 . Accordingly, the control and monitoring system 24 may determine to service clients from the second control/monitoring device 30 to avoid overutilizing the first control/monitoring device 30 . Thus, control and monitoring system 24 may avoid flooding of control/monitoring device 30 by balancing requests based on the load of components within control and monitoring system 24 . In some embodiments, this may include feeding requests from a single component up to a threshold number or amount of data requested and moving to a flood source when the threshold is reached. In some embodiments, this may include substantially evenly distributing the load of requests or the amount of data when serving the data.

除了可以提供分布式数据模型、增量脚本以及执行引擎的负载均衡能力之外,这些能力还可以有益于控制与监视系统24中的数据冗余。例如,控制与监视系统24内的一个或多个部件可以监视数据模型的一个或多个分布式副本。一旦检测到副本不稳定(例如不准确地表示分布式模型的副本),不稳定的副本可以被稳定的副本(例如准确地表示分布式模型的副本)代替。可以从分布在被确定为具有准确地表示数据模型的副本的控制与监视系统24中的数据模型的其他副本中的任何一个获得稳定的副本。These capabilities may also benefit data redundancy in the control and monitoring system 24, in addition to providing distributed data models, delta scripts, and load balancing capabilities of the execution engines. For example, one or more components within control and monitoring system 24 may monitor one or more distributed copies of the data model. Once unstable replicas (eg, replicas that do not accurately represent the distributed model) are detected, unstable replicas can be replaced by stable replicas (eg, replicas that accurately represent the distributed model). A stable copy may be obtained from any of the other copies of the data model distributed in the control and monitoring system 24 determined to have a copy that accurately represents the data model.

在一些实施例中,控制与监视系统24的部件可以访问下述冗余池,该冗余池向分布式数据模型的有效副本或存储分布式数据模型的有效副本的控制与监视系统24的部件提供指针。例如,当客户端部件请求数据模型中的数据时,其可以对传达哪里可以获得数据的冗余池进行访问。如上所述,控制与监视系统24的一个或多个部件可以监视数据模型的副本,以确定不稳定的副本。当检测到一个或更多个不稳定的副本时,控制与监视系统24的部件可以移除不稳定的副本的指针或存储不稳定的副本的控制与监视系统24的部件。因此,不可经由冗余池访问不稳定的副本。In some embodiments, components of the control and monitoring system 24 may have access to a redundant pool that provides a valid copy of the distributed data model or a component of the control and monitoring system 24 that stores a valid copy of the distributed data model. Provide pointers. For example, when a client component requests data in the data model, it may have access to a redundant pool that communicates where the data can be obtained. As noted above, one or more components of the control and monitoring system 24 may monitor replicas of the data model to determine unstable replicas. When one or more unstable copies are detected, components of control and monitoring system 24 may remove pointers to the unstable copies or components of control and monitoring system 24 that store unstable copies. Therefore, unstable replicas are not accessible via the redundancy pool.

在某些实施例中,如上所述,在从冗余池移除不稳定的副本(或存储不稳定的副本的部件)之后,控制与监视系统24的部件可以用稳定的版本代替不稳定的副本。在不稳定的副本被代替之后,控制与监视系统24的部件可以将替换稳定版本(或存储替换稳定版本的部件)重新加入回用于将来使用的冗余池。In some embodiments, as described above, after removing an unstable copy (or a component storing an unstable copy) from a redundancy pool, components of the control and monitoring system 24 may replace the unstable copy with a stable version. copy. After the unstable copy is replaced, components of the control and monitoring system 24 may rejoin the replacement stable version (or store the replacement stable version) back into the redundancy pool for future use.

为了更好的示出设计时环境与运行时环境之间的关系,图3提供了表示HMI 26与编程终端46之间相互作用的高层面流程图。以下提供了关于这种过程的更多细节。通常,用于HMI 26与编程终端46的平台将包括操作系统或执行程序软件38、应用软件40、以及任何通信软件、微处理器、网络接口、输入/输出硬件、通配软件库、数据库管理、用户界面软件等(图3中未具体表示)。在示出的实施例中,设计时平台和运行时平台在HMI 26内相互作用。设计时平台提供以下视图,该视图用作到台式个人计算机的设计时环境16(例如运行合适的操作系统38例如Windows XP、Windows Vista或Linux)而运行时平台经由操作系统(例如Windows CE、Linux)与设计时平台合作。设计时平台提供动态服务器内容54,而运行时平台显示关于HMI 26自身的视图(如果在HMI 26上提供显示屏)。设计时环境16在浏览器48(例如Web浏览器或其他的通用浏览器)中显示。To better illustrate the relationship between the design-time environment and the run-time environment, FIG. 3 provides a high-level flowchart representing the interaction between HMI 26 and programming terminal 46 . More details on this process are provided below. Typically, the platform for the HMI 26 and programming terminal 46 will include operating system or executive software 38, application software 40, and any communications software, microprocessors, network interfaces, input/output hardware, generic software libraries, database management , user interface software, etc. (not specifically shown in FIG. 3 ). In the illustrated embodiment, the design-time platform and the runtime platform interact within HMI 26 . The design-time platform provides a view for use as a design-time environment 16 to a desktop personal computer (e.g. running a suitable operating system 38 such as Windows XP, Windows Vista or Linux) and the runtime platform provides access via an operating system (e.g. Windows CE, Linux ) to work with the design-time platform. The design-time platform provides dynamic server content 54, while the runtime platform displays views on the HMI 26 itself (if a display is provided on the HMI 26). The design-time environment 16 is displayed in a browser 48 (eg, a Web browser or other general-purpose browser).

图3在非常高层面示出设计时环境16如何与操作系统38、应用40和运行时环境14相互作用。箭头56表示HMI 26与编程终端46之间的动态内容交换。通常,与设计时环境16的相互作用是下述设计者58的任务,设计者58最初配置HMI屏或可视化、设备要素及它们的功能和相互作用,或者设计者58重新配置这种软件。运行时环境14通常由操作者60直接在HMI26上与设计时环境16相互作用。应该注意的是,当设计时环境16具有特殊需要时,在本实施例中,这很大程度上依赖于操作系统38、应用40和运行时环境14。设计时环境16和运行时环境14可以利用某些基准技术(例如DHTML、HTML、HTTP、动态服务器内容,JavaScript、Web浏览器)以分别在设计时平台和运行时平台中操作。虽然在所示出的实施例中,运行时环境14和设计时环境16属于分别的平台,但是在一些实施例中,运行时环境14和设计时环境16可以属于同一平台。例如,设计时平台和运行时平台可以被配置为或被认为是单个平台。FIG. 3 shows at a very high level how design-time environment 16 interacts with operating system 38 , applications 40 and runtime environment 14 . Arrow 56 represents dynamic content exchange between HMI 26 and programming terminal 46 . Typically, interaction with the design-time environment 16 is the task of a designer 58 who initially configures HMI screens or visualizations, device elements and their functions and interactions, or who reconfigures such software. Runtime environment 14 typically interacts with design-time environment 16 directly on HMI 26 by operator 60 . It should be noted that when the design-time environment 16 has specific needs, in this embodiment this is largely dependent on the operating system 38 , applications 40 and runtime environment 14 . Design-time environment 16 and runtime environment 14 may utilize certain baseline technologies (eg, DHTML, HTML, HTTP, Dynamic Server Content, JavaScript, Web browsers) to operate in the design-time and runtime platforms, respectively. Although in the illustrated embodiment, runtime environment 14 and design-time environment 16 belong to separate platforms, in some embodiments, runtime environment 14 and design-time environment 16 may belong to the same platform. For example, a design-time platform and a runtime platform can be configured or considered as a single platform.

在本发明的一个实施例中,利用了设计时Web实施。如由图3中的动态服务器内容54所记录的以及由以下所描述的,该设计时Web实施通过使用具有来自HMI的DHTML支持的Web浏览器(例如,48)来提供运行在设计时平台上的软件的速度和灵活性。DHTML用于对设计时环境16中的Web内容进行动态操作。此外,在HMI中使用动态服务器内容54以将动态Web内容用到设计时环境16。该动态的客户端-服务器环境使得网络浏览器能够在不需要针对有关处理进行汇编的软件的情况下对运行在设计时平台上的应用进行模拟。In one embodiment of the invention, a design-time Web implementation is utilized. As documented by Dynamic Server Content 54 in FIG. 3 and described below, the design-time Web implementation provides the ability to run on a design-time platform by using a Web browser (e.g., 48) with DHTML support from the HMI. The speed and flexibility of the software. DHTML is used for dynamic manipulation of Web content in a design-time environment 16 . Additionally, dynamic server content 54 is used in the HMI to bring dynamic web content to the design-time environment 16 . This dynamic client-server environment enables web browsers to emulate applications running on design-time platforms without requiring software compiled for processing.

图4是示出了根据本技术实施例的设计时环境中的一个或更多个设备要素的图。该图包括通过显示器100(例如,用于浏览器显示的屏幕)、属性编辑器102和HMI 26之间的关系来示出的相互作用。FIG. 4 is a diagram illustrating one or more device elements in a design-time environment according to an embodiment of the present technology. The diagram includes interactions shown through the relationship between display 100 (eg, a screen for browser display), property editor 102 , and HMI 26 .

用配置屏幕或显示器100表示的设计时环境包括静态内容104和动态内容。动态内容包括与任何所显示或表示的设备要素106对应的图像(例如,虚拟的开/关按钮、测量仪器)。在本技术的一个实施例中,图像是由HTML中的图像标签指定的,并且是由如以下所描述的HMI创建的JPEG文件的一部分。静态内容104可以由动态服务器页面(ASP)服务器来创建,或者它可以预先存在于HTML文件中。应当注意,在一些实施例中,只有指定的设计者才能够对静态内容104进行编辑。The design-time environment represented by configuration screen or display 100 includes static content 104 and dynamic content. Dynamic content includes images corresponding to any displayed or represented equipment elements 106 (eg, virtual on/off buttons, gauges). In one embodiment of the present technology, the image is specified by an image tag in HTML and is part of a JPEG file created by the HMI as described below. Static content 104 can be created by an Active Server Pages (ASP) server, or it can pre-exist in an HTML file. It should be noted that in some embodiments only designated designers are able to edit static content 104 .

由配置屏幕或显示器100表示的设计时环境包括静态内容104和动态内容。动态内容包括与任何所显示或表示的设备要素106对应的图像(例如,虚拟的开/关按钮、测量仪器)。在本技术的一个实施例中,图像是由HTML中的图像标签来指定的,并且是由如以下所描述的HMI创建的JPEG文件的一部分。静态内容104可以由ASP服务器来创建,或者它可以预先存在于HTML文件中。应当注意,在一些实施例中,只有指定的设计者才能够对静态内容104进行编辑。The design-time environment represented by configuration screen or display 100 includes static content 104 and dynamic content. Dynamic content includes images corresponding to any displayed or represented equipment elements 106 (eg, virtual on/off buttons, gauges). In one embodiment of the present technology, the image is specified by an image tag in HTML and is part of a JPEG file created by the HMI as described below. Static content 104 can be created by an ASP server, or it can pre-exist in an HTML file. It should be noted that in some embodiments only designated designers are able to edit static content 104 .

在图4的表示中,设备要素表示106被包括在视图容器108中。如本领域技术人员所理解的,容器一般限定打开特定设备要素并且可以使用的处理空间的一部分。因此,容器108可以与仅包括可在当前屏幕内观看的要素的第一视图容器相对应。如上面所讨论的,在HMI中可以设置许多这样的屏幕。在其他视图容器如容器110中可以设置有其他屏幕如替代的控制或接口屏幕。一般地,为了加速HMI的操作(如,屏幕视图之间的改变),通过限定这些相关联的或在其内设置有设备要素的表示的各个设备要素,来预定义这些视图容器以及将其彼此关联。可以将全局容器112限定为包括各种视图容器所需的所有设备要素以及任何视图容器中没有表示出的其他要素。如在图4中示出的,因此,视图容器108包括执行“慢进给(jog)”功能的并且由第一屏幕中的表示来显示的虚拟按钮106。新容器110包括若干部件如“开始”按钮114、“停止”按钮116、虚拟仪表118和数字读出120等。全局容器112则可以包括用于各种视图容器的所有这些设备要素,以及可见设备的操作所需要的但其自身不可见的任何设备要素122。这些设备要素可以包括执行计算、趋势分析、通信和许多其他功能的要素。In the representation of FIG. 4 , device element representation 106 is contained within view container 108 . As understood by those skilled in the art, a container generally defines a portion of a processing space that is opened and available to a particular device element. Accordingly, container 108 may correspond to a first view container that includes only elements viewable within the current screen. As discussed above, 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 container 110 . Generally, in order to speed up the operation of the HMI (e.g., changing between screen views), these view containers are predefined and linked to each other by defining the individual equipment elements associated with or within which the representation of the equipment element is set. associated. The global container 112 may be defined to include all device elements required by the various view containers as well as other elements not represented in any view container. As shown in FIG. 4, therefore, the view container 108 includes a virtual button 106 that performs a "jog" function and is displayed by the representation in the first screen. The new container 110 includes several components such as a "Start" button 114, a "Stop" button 116, a virtual gauge 118, a digital readout 120, and the like. The global container 112 may then include all of these device elements for the various view containers, as well as any device elements 122 that are required for the operation of visible devices but are not themselves visible. These equipment elements can include elements that perform calculations, trending, communication, and many other functions.

图4还示出了在其中用户可以访问要素106的各种属性的属性编辑器102。如上所讨论的,要素106还可以包括与要素106相关联的联系和文本,其还可以由用户通过与属性编辑器102类似的编辑器来配置。FIG. 4 also shows attribute editor 102 in which a user can access various attributes of element 106 . As discussed above, element 106 may also include links and text associated with element 106 , which may also be configured by a user through an editor similar to attribute editor 102 .

在一个实施例中,属性编辑器102可以通过驻留在HMI 26中的从浏览器(如,图2的浏览器48)到服务器96(如,HTTP服务器)的查询字符串来与HMI 26进行交互。服务器96与包括诸如动态链接库(DLL)的基于模块的互连机构12的ASP服务器98进行协作以接收和响应查询。DLL允许将可执行例程存储为单独的文件,当程序需要或引用时,这些单独的文件能够被加载。在上述示例中,当收到调用时,由ASP服务器98重载该页面并且对查询字符串进行初始解析导致对移动命令进行评估。服务器侧脚本然后对由图像106表示的设备要素18进行访问以更新其位置属性。然后在页面上对新的属性信息进行更新并且将该页面传递给浏览器48。In one embodiment, property editor 102 may communicate with HMI 26 via a query string residing in HMI 26 from a browser (e.g., browser 48 of FIG. 2 ) to server 96 (e.g., an HTTP server). interact. Server 96 cooperates with ASP server 98, which includes a module-based interconnect mechanism 12, such as a dynamic link library (DLL), to receive and respond to queries. DLLs allow executable routines to be stored as separate files that can be loaded when needed or referenced by the program. In the above example, when a call is received, the page is reloaded by the ASP server 98 and the initial parsing of the query string results in the evaluation of the move command. The server-side script then accesses the equipment element 18 represented by the image 106 to update its location attribute. The new attribute information is then updated on the page and the page is passed to the browser 48 .

传达状态变化communicate state changes

现已经讨论了使用结合通过增量脚本和分布式命令执行的分布式状态变化使用分布式数据模型的益处,下面将更加详细地对分布式状态变化通知进行讨论。如上所讨论的,图2是根据本技术实施例的适于使用增量脚本来提供部件状态信息的示例性控制与监视系统24的概略表示。如所示出的,控制与监视系统24可以包括一个或更多个人机接口(HMI)26和适于与处理28的部件进行接口的一个或更多个控制/监视设备30。控制/监视设备30可以包括有助于在控制与监视系统24上执行任务(如,处理控制、远程装备监视、数据获取等)的一个或更多个处理器以及数据存储设备。此外,编程终端46可以使得一个或更多个用户能够对HMI 26和/或控制/监视设备30的属性进行配置。Now that the benefits of using a distributed data model with distributed state changes via incremental scripting and distributed command execution have been discussed, distributed state change notification is discussed in more detail below. As discussed above, FIG. 2 is a diagrammatic representation of an exemplary control and monitoring system 24 adapted to provide component status information using incremental scripts in accordance with embodiments of the present technology. As shown, control and monitoring system 24 may include one or more human-machine interfaces (HMIs) 26 and one or more control/monitoring devices 30 adapted to interface with components of process 28 . Control/monitoring device 30 may include one or more processors and data storage devices that facilitate performing tasks on control and monitoring system 24 (eg, process control, remote equipment monitoring, data acquisition, etc.). Additionally, programming terminal 46 may enable one or more users to configure properties of HMI 26 and/or control/monitoring device 30 .

在控制环境中,控制与监视系统24的各种对象(如,控制程序、标签、模块配置和HMI屏幕)的状态可以存储在控制与监视系统24的各个部件(如,编程终端46、控制/监视设备30、I/O模块和/或HMI终端26)的存储器(如,硬盘驱动器、只读存储器、和/或随机存取存储器)中。控制与监视系统24的部件中的每个可以以松耦合、异步的方式独立地操作。此外,部件可以不同的编程技术(如,C++、Java、和/或C#)来实施。由于对控制环境对象的状态信息做出了改变,可能需要将该状态信息与驻留在其他部件上的状态信息进行同步,以使得部件可以连续地理解控制与监视系统24内的对象的状态。根据本实施例,为了保持通知状态信息,存储状态信息的自动部件可以接收被称为状态增量43的数据(如,已经改变的状态要素),而不接收还没有改变并且已经出现在存储状态信息的各个部件上的所存储的状态信息中的状态要素。例如,状态增量43可以包括因控制与监视系统24内的作用而已经改变的任何数据。通过提供状态增量43而不提供未改变的状态信息,可以观测到效率的提高。例如,在具有100个状态要素的传统的控制与监视系统24中,可以将100个状态要素中的每个提供给存储那个对象的状态信息的每个部件。通过仅提供状态增量43,控制与监视系统24的部件可以只传输针对已改变的要素的数据。因此,如果100个状态要素中仅有一个状态要素改变,则不会传输其他99个要素,从而相对于传统系统减小了的网络流量。此外,仅提供状态增量43可以减小因疏忽而覆写了在控制与监视系统24内的别处生成的状态变化信息的可能性。例如,在上面提到的100个状态要素的情况下,如果将所有100个状态要素传输到其他部件,则99个未改变的要素可能导致在别处对这99个要素之一做出变化的覆写。通过仅提供未改变的要素(如,状态增量43),上述99个未改变的要素可以不受已改变的并且与其他部件通信的一个要素的影响。In a control environment, the state of various objects of the control and monitoring system 24 (e.g., control programs, tags, module configurations, and HMI screens) can be stored in various components of the control and monitoring system 24 (e.g., programming terminals 46, control/ monitoring device 30, I/O module, and/or HMI terminal 26) in memory (eg, hard drive, read-only memory, and/or random access memory). Each of the components of the control and monitoring system 24 may operate independently in a loosely coupled, asynchronous fashion. Furthermore, components can be implemented in different programming technologies (eg, C++, Java, and/or C#). As changes are made to the state information of control environment objects, it may be necessary to synchronize this state information with state information residing on other components so that the components have a continuous understanding of the state of objects within the control and monitoring system 24 . According to this embodiment, in order to keep informed state information, automatic components that store state information may receive data called state deltas 43 (eg, state elements that have changed), and not receive state State element in the stored state information on each component of the information. For example, status delta 43 may include any data that has changed due to actions within control and monitoring system 24 . By providing state increments 43 instead of unchanged state information, an increase in efficiency can be observed. For example, in a conventional control and monitoring system 24 with 100 status elements, each of the 100 status elements may be provided to each component that stores status information for that object. By providing only status increments 43, components of the control and monitoring system 24 can only transmit data for elements that have changed. Therefore, if only one status element out of 100 status elements changes, the other 99 elements will not be transmitted, thereby reducing network traffic relative to conventional systems. Furthermore, providing only the state delta 43 may reduce the likelihood of inadvertently overwriting state change information generated elsewhere within the control and monitoring system 24 . For example, in the case of 100 state elements mentioned above, if all 100 state elements are transmitted to other parts, 99 unchanged elements may cause an override of a change made elsewhere to one of these 99 elements. Write. By providing only unchanged elements (eg, state delta 43), the above 99 unchanged elements can be unaffected by one element that has changed and communicates with other components.

现在已经讨论了状态增量24的用途,图5示出了包括有用于对控制与监视系统24的部件之间的状态变化进行传达的持久化对象模型的控制与监视系统24。例如,上述部件可以包括控制/监视设备30(如,PLC)、提供项目文件150的编程终端和如托管持久化对象模型152和协作会话154的控制/监视设备30和客户端156的部件。如先前所讨论的,控制/监视设备30可以适于与处理28(图1)的部件进行接口。项目文件150可以是对控制与监视系统24的限定并且存储在编程终端46(图1)的存储器(如,硬盘驱动器)中的各种属性进行表示的计算机文件输出。持久化对象模型152可以是控制与监视系统24中的以持久的方式(如,通过将状态数据存储在如硬盘驱动器的非易失存储介质中)对控制与监视系统24中的状态数据的变化保持跟踪的一个或更多个部件的状态数据的计算机模型。持久化对象模型152可以用作变化传达认证方以使得所有提交的对对象的状态做出的变化都是通过持久化对象模型152来存储和传达的。如在以下所更加详细地讨论的,协作会话154可以是控制与监视系统24的部件之间交互性信息交换接口,其为未定变化的做出提供环境(如,在用户选择提交一些变化后,可以仅将这些变化传输到控制与监视系统24的其他部件中)。客户端156可以是控制与监视系统24的将对象的状态信息保存在存储器中的任何其他部件,例如,提供了对象的表示视图的部件。Now that the use of state increments 24 has been discussed, FIG. 5 shows a control and monitoring system 24 including a persistent object model for communicating state changes between components of the control and monitoring system 24 . For example, the aforementioned components may include control/monitoring device 30 (eg, PLC), programming terminal providing project file 150 and components of control/monitoring device 30 and client 156 such as hosting persistent object model 152 and collaboration session 154 . As previously discussed, control/monitoring device 30 may be adapted to interface with components of process 28 (FIG. 1). Project file 150 may be a computer file output representing various attributes defined by control and monitoring system 24 and stored in memory (eg, hard drive) of programming terminal 46 (FIG. 1). The persistent object model 152 may be a representation of changes to state data in the control and monitoring system 24 in a persistent manner (e.g., by storing the state data in a non-volatile storage medium such as a hard drive). A computer model that keeps track of state data for one or more components. The persistent object model 152 can be used as a change communication authenticator such that all committed changes to the state of an object are stored and communicated through the persistent object model 152 . As discussed in more detail below, collaboration session 154 may be an interactive information exchange interface between components of control and monitoring system 24 that provides an environment for pending changes to be made (e.g., after a user chooses to commit some changes, These changes may simply be communicated to other components of the control and monitoring system 24). Client 156 may be any other component of control and monitoring system 24 that maintains state information of objects in memory, eg, a component that provides a representational view of an object.

在所示出的实施例中,所示出的部件(提供协作会话数据154的控制/监视设备30、提供经更新的项目文件150的编程终端、提供持久化对象模型152和协作会话154的控制/监视设备30、以及客户端156)中的每个都包括有数据容器158(如,为数据保留的存储器)。数据容器158包括对控制与监视系统24的一个或更多个对象的状态进行定义的状态要素160。状态要素160可以以数据驱动方式来定义以使得不同的技术(如,C++、Java、和/或C#)可以使用由状态要素160表示的数据。如先前所讨论的,可能期望对存储在控制与监视系统24的各个部件中的状态信息有效地同步。因为存储在数据容器158中的状态要素160中的一个或更多个发生变化,可能需要对存储在其他部件中的数据要素160进行同步。In the illustrated embodiment, the components shown (control/monitoring device 30 providing collaboration session data 154, programming terminal providing updated project file 150, providing persistent object model 152 and control of collaboration session 154 Each of the /monitoring device 30, and the client 156) includes a data container 158 (eg, storage reserved for data). Data container 158 includes state elements 160 that define the state of one or more objects of control and monitoring system 24 . State elements 160 can be defined in a data-driven manner so that different technologies (eg, C++, Java, and/or C#) can use the data represented by state elements 160 . As previously discussed, it may be desirable to efficiently synchronize the state information stored in the various components of the control and monitoring system 24 . As one or more of the state elements 160 stored in the data container 158 changes, it may be necessary to synchronize the data elements 160 stored in other components.

如上所讨论的,持久化对象模型152可以是当在控制与监视系统24中的各个部件之间应用状态变化时所指定的认证方。持久化对象模型152可以包括被称为其数据容器158中的一个或更多个对象的状态信息的黄金副本162的东西(如由交叉影线所示出的)。黄金副本162包括状态信息的副本,控制与监视系统24总认为该副本是正确的。换言之,黄金副本162是状态信息的认证副本。每条状态信息具有它自己的黄金副本162,其可以或可以不与其他的状态信息的黄金副本162一起驻留在控制与监视系统24(如,在同一计算机系统上)。如果提交了一个或更多个状态要素变化,则以增量脚本170的形式将变化的要素提供给黄金副本162,增量脚本170基于状态要素变化来更新。然后通过增量脚本170将状态要素变化从黄金副本提供给控制与监视系统24内的其他部件。As discussed above, the persistent object model 152 may be the designated authenticator when applying state changes between various components in the control and monitoring system 24 . Persistent object model 152 may include what is referred to as a golden copy 162 of state information for one or more objects in its data container 158 (as shown by cross-hatching). Golden copy 162 includes a copy of the status information that control and monitoring system 24 always considers to be correct. In other words, golden copy 162 is an authenticated copy of state information. Each piece of state information has its own golden copy 162, which may or may not reside in the control and monitoring system 24 (eg, on the same computer system) with other golden copies 162 of state information. If one or more state element changes are committed, the changed elements are provided to golden copy 162 in the form of delta scripts 170 which are updated based on the state element changes. The state element changes are then provided from the golden copy to other components within the control and monitoring system 24 via delta script 170 .

为了在数据容器158内实现状态变化,控制与监视系统24的部件可以扮演不同的角色。这些角色可以包括变化仪器164、变化仲裁器166和受众168。变化仪器164(如,通过当前实施例中的编辑器来提供修改的项目文件150的客户端)给变化仲裁器166发送变化请求。变化仪器可以通过接收关于变化请求的异步的变化响应和/或错误响应来验证变化的成功。变化仲裁器166(如,托管持久化对象模型42的服务器)对进入的变化进行排队,通过执行所请求的变化来处理变化,基于请求来做出其他副作用变化或放弃该变化。变化仲裁器166可以提供对变化仪器164的变化响应,当变化出现时将变化通知公布给受众168(如,在协作会话154中涉及的客户端156和/或控制/监视设备30),和/或将变化写入黄金副本162。受众168接收变化通知并且使用上述通知来对状态信息的存储在它们的数据容器158中的它们的本地副本进行更新。To effectuate state changes within data container 158, components of control and monitoring system 24 may play different roles. These roles may include change instrument 164 , change arbitrator 166 and audience 168 . A change instrument 164 (eg, a client providing a modified project file 150 through an editor in the current embodiment) sends a change request to a change arbiter 166 . The change instrument can verify the success of the change by receiving asynchronous change responses and/or error responses on the change request. A change arbitrator 166 (eg, the server hosting the persistent object model 42 ) queues incoming changes, processes the changes by executing the requested changes, makes other side-effect changes or discards the changes based on the request. Change arbitrator 166 may provide a change response to change instrumentation 164, post change notifications to audience 168 (e.g., clients 156 and/or control/monitoring devices 30 involved in collaboration session 154) when changes occur, and/or Or write changes 162 to the golden copy. Audiences 168 receive change notifications and use them to update their local copies of state information stored in their data containers 158 .

如先前所讨论的,在控制与监视系统24的各个部件中使用的编程技术可能不是统一的。例如,一些部件可以使用C++,而其他部件可以使用C#或Java。因此,图2的设置在变化仪器164、变化仲裁器166和受众168之间的状态增量43可以被设置在不依赖于具体技术的数据驱动增量脚本170中。增量脚本170可以以创建、更新和/或删除(CRUD)数据的形式来描述对象状态变化。创建数据可以包括有助于对象的创建一些或所有数据(如,对于矩形,矩形的空间位置、宽度和高度)。默认值可以用于任何没有提供创建请求的数据。更新数据可以包括已经在对象中更新了的数据(如,对于具有更新了的空间位置的矩形图形,更新数据可以仅包括新的空间位置)。删除数据可以标识(如,描述其标示符)已经移除的对象状态数据(如,对于已经移除了的矩形,删除数据可以包括待删除的矩形的名称)。在一个示例中,如果使用以下C#伪码产生了变化:As previously discussed, the programming techniques used in the various components of the control and monitoring system 24 may not be uniform. For example, some components may use C++ while other components may use C# or Java. Thus, the state delta 43 of FIG. 2 set between the change instrument 164, the change arbiter 166, and the audience 168 can be set in a data-driven delta script 170 that is not dependent on a particular technology. Delta script 170 may describe object state changes in the form of create, update and/or delete (CRUD) data. Creation data may include some or all data that facilitates creation of the object (eg, for a rectangle, the rectangle's spatial position, width, and height). Default values can be used for any data not provided to create the request. The update data may include data that has been updated in the object (eg, for a rectangular shape with an updated spatial location, the update data may only include the new spatial location). The deletion data may identify (eg, describe its identifier) object state data that has been removed (eg, for a rectangle that has been removed, the deletion data may include the name of the rectangle to be deleted). In one example, if using the following C# pseudocode produces a change:

数据驱动增量脚本可能与以下伪XML示例相似:A data-driven incremental script might look like the following pseudo-XML example:

在可替代的实施例中,可以不必包括CreatorID或ParentID。但是,在当前实施例中提供了这些ID以对可能包括在变化中的附加数据(如,做出变化的实体的标识和/或在其下创建当前对象的父对象)进行说明。因为数据驱动增量脚本170是不可知的或不依赖于具体的编程技术,所以增量脚本170可以由控制与监视系统24的任意其他部件来消费,而与所使用的编程技术无关。In alternative embodiments, it may not be necessary to include CreatorID or ParentID. However, these IDs are provided in the current embodiment to account for additional data that may be included in the change (eg, the identification of the entity making the change and/or the parent object under which the current object was created). Because data-driven incremental script 170 is agnostic or independent of a particular programming technique, incremental script 170 can be consumed by any other component of control and monitoring system 24 regardless of the programming technique used.

如在上面的示例中示出的,在一些实施例中,增量脚本170可以包括不止一个变化。因此,增量脚本170提供了一种以全有或全无规则(all or nothing approach)来处理整个变化集合的方式。例如,如上所示出的,在增量脚本内包括有用于显示器上的可视化的两组创建数据,一组用于创建矩形图像,一组用于创建圆形图像。如果圆形图像的创建产生错误,则可以取消矩形变化,这导致全有或全无规则。As shown in the examples above, in some embodiments delta script 170 may include more than one change. Thus, the delta script 170 provides a way to handle the entire set of changes with an all or nothing approach. For example, as shown above, included within the delta script are two sets of creation data for visualization on the display, one set for creating rectangular images and one set for creating circular images. If the creation of the circular image produces errors, the rectangular variation can be canceled out, which results in an all-or-nothing rule.

增量脚本170还可以包括标题信息如变化修订编号、提交变化时的时间戳、做出变化的用户的标识符、和/或唯一修订标识符等。用户的标识符可能有助于对变化源进行认证。此外,增量脚本170包括变化所应用于的对象的标识符、已经改变的状态要素160和状态要素160的变化值。由于状态要素160中的每一个要素将是第一次被引入到增量脚本170的消费者,所以创建数据集合可以包括对象的全状态(如,所有的状态要素160)。Delta script 170 may also include header information such as a change revision number, a timestamp when the change was committed, an identifier of the user who made the change, and/or a unique revision identifier, among others. The user's identifier may help in authenticating the source of the change. In addition, the delta script 170 includes an identifier of the object to which the change applies, the state element 160 that has changed, and the change value of the state element 160 . Since each of the state elements 160 will be the first consumer introduced into the delta script 170, the create data set may include the full state of the object (eg, all state elements 160).

现转向图6,示出了变化仪器164、变化仲裁器166和受众成员168之间的状态变化传达的进展190。在当前实施例中,受众168(如,客户端156)向协作会话154提供了订阅请求192。订阅请求192可以包括对于存储在受众成员168中的状态信息的修订194的修订编号。如果协作会话154上的修订与在订阅请求192中所发送的修订编号不匹配,则协作会话将发出该组增量脚本170所需要的更新的直接通知以将受众成员168带至存储在协作会话154中的修订。例如,在面板A中,客户端156发出包括有修订5的订阅请求192。协作会话154在修订8上,因此发送针对修订6、7和8的增量脚本170给客户端156。客户端156可以将增量脚本170应用到它的状态,因此如在面板B中所示出的,客户端更新到修订8。Turning now to FIG. 6 , a progression 190 of status change communication between change instrument 164 , change arbitrator 166 , and audience members 168 is shown. In the current embodiment, audience 168 (eg, client 156 ) provides subscription request 192 to collaboration session 154 . Subscription request 192 may include a revision number for revision 194 of state information stored in audience member 168 . If the revision on the collaboration session 154 does not match the revision number sent in the subscription request 192, the collaboration session will issue a direct notification of the update required by the set of delta scripts 170 to bring the audience members 168 to the files stored in the collaboration session. Amendments in 154. For example, in panel A, client 156 issues subscription request 192 including revision 5. Collaboration session 154 is on revision 8, so delta scripts 170 for revisions 6, 7, and 8 are sent to client 156 . Client 156 can apply delta script 170 to its state, so as shown in panel B, the client updates to revision 8.

如果变化仪器164(如,提供更新的程序文件150的客户端或服务器)更新黄金副本162,则应该将变化通知给协作会话154和订阅受众成员(如,客户端156)。如在面板B中示出的,当黄金副本162从修订8更新到修订9时(如,经由通过发送来自变化仪器164的更新的项目文件150来安排的变化),变化仲裁器166向协作会话154提供对于修订9的增量脚本170。如在面板C中示出的,协作会话154应用对于修订9的增量脚本170,因此被更新至修订9。增量脚本170然后被传播至受众成员168(如,客户端156)。客户端156应用增量脚本170并更新至修订9。If change instrument 164 (eg, client or server providing updated program file 150) updates golden copy 162, collaboration session 154 and subscribing audience members (eg, client 156) should be notified of the change. As shown in panel B, when golden copy 162 is updated from revision 8 to revision 9 (e.g., via a change scheduled by sending an updated project file 150 from change instrument 164), change arbitrator 166 contributes to the collaboration session 154 provides a delta script 170 for revision 9. As shown in panel C, the collaboration session 154 applies the delta script 170 for revision 9 and is therefore updated to revision 9 . Delta script 170 is then disseminated to audience members 168 (eg, clients 156). Client 156 applies delta script 170 and updates to revision 9.

在某些场景中,受众成员可能需要比存储在协作会话154中的增量脚本170更多的增量脚本170。例如,如果当客户端156处于修订2时将发送订阅请求192并且协作会话154仅具有对于修订5至8的增量脚本170,则客户端156将仍然需要对于修订3和4的增量脚本170。如果协作会话154正缺少必要的增量脚本170,则它可以请求黄金副本162提供所需的增量脚本170。在一些实施例中,黄金副本162会存储针对对象的状态信息的每个修订的所有增量脚本。但是,在其他实施例中,仅会存储有限数量的脚本(如,增量脚本170的最后的5、10、50或100个修订)。如果黄金副本162可以提供必需的脚本,则可以通过协作会话154将它们传播至客户端156。但是,如果没能传播所必需的增量脚本,则可以通知受众成员168(如,通过异常消息)和/或使用与当前状态信息相关联的整个要素集合来重载受众成员168,使得受众成员168为最新。此外,如果受众成员168遭遇应用增量脚本170的一个或更多个的错误,则使用与当前状态信息相关联的整个要素集合来重载受众成员168。另外,在某些情况下,如果将需要大量的增量脚本170以更新受众成员168,则相比应用状态增量,完全地重载所有的状态信息可能更加有效或合乎需要。在某些实施例中,如果需要应用的增量脚本的数量超过了最大增量脚本阈值,则使用与当前状态信息相关联的整个要素集合来重载受众成员168。可以基于所感知到的会倾向于使得状态信息的完全重载比加载增加的增量脚本更加有效的增量脚本数量来定制最大增量脚本阈值。In some scenarios, audience members may require more delta scripts 170 than are stored in collaboration session 154 . For example, if the subscription request 192 was to be sent when the client 156 was at revision 2 and the collaboration session 154 only had delta scripts 170 for revisions 5 through 8, the client 156 would still need the delta scripts 170 for revisions 3 and 4 . If collaboration session 154 is missing the necessary delta script 170, it may request golden copy 162 to provide the required delta script 170. In some embodiments, golden copy 162 stores 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 (eg, the last 5, 10, 50, or 100 revisions of delta script 170). If the golden copy 162 can provide the necessary scripts, they can be propagated to the client 156 through the collaboration session 154 . However, if the necessary delta script fails to propagate, the audience member 168 may be notified (e.g., via an exception message) and/or reloaded with the entire set of elements associated with the current state information such that the audience member 168 is the latest. Furthermore, if an audience member 168 encounters an error applying one or more of the delta scripts 170, the audience member 168 is reloaded with the entire set of elements associated with the current state information. Also, in some cases, if a large number of delta scripts 170 will be required to update audience members 168, it may be more efficient or desirable to completely reload all state information than to apply state deltas. In some embodiments, if the number of delta scripts that need to be applied exceeds a maximum delta script threshold, audience members 168 are reloaded with the entire set of elements associated with current state information. The maximum delta script threshold may be customized based on a perceived number of delta scripts that would tend to make a full reload of state information more efficient than loading incremental delta scripts.

在某些实施例中,控制与监视系统24还可以包括反向增量。反向增量对从当前修订回退到前一修订所必需的变化进行描述。如果被应用,则反向增量脚本会将对象的状态信息回退一个修订。将这种反向增量脚本应用到包括与反向增量脚本的数量相同的修订编号的数据容器(如,图5的数据容器158)。反向增量脚本可以有助于创建针对在控制与监视系统24中提交的变化“取消”功能,并且还可以用于收回还没有提交的未定变化,如在提交变化之前在协作会话154中创建的那些变化。In some embodiments, control and monitoring system 24 may also include reverse increments. A reverse delta describes the changes necessary to roll back from the current revision to the previous revision. If applied, the reverse delta script rolls back the object's state information by one revision. This reverse delta script is applied to a data container (eg, data container 158 of FIG. 5 ) that includes the same number of revision numbers as the reverse delta script. The reverse delta script can be helpful in creating a "cancel" functionality for changes committed in the control and monitoring system 24, and can also be used to retract pending changes that have not been committed, as created in the collaboration session 154 before committing the changes of those changes.

图7示出了根据本实施例的一个取消方案。在面板A中,由第一客户端发起对象210的针对修订211的编辑会话。第一客户端在该会话内进行编辑以将对象210带至面板B中的未定修订214。第一客户端断开,并且当被断开时,第二客户端取消修订214和213,如在面板C中示出的。然后,第二客户端可以做出新的变化213和214。Fig. 7 shows a cancellation scheme according to this embodiment. In panel A, an editing session of object 210 for revision 211 is initiated by a first client. The first client makes edits within the session to bring object 210 to pending revision 214 in panel B. The first client disconnects, and when disconnected, the second client undoes revisions 214 and 213, as shown in panel C. Then, the second client can make new changes 213 and 214 .

为了防止第一客户端仅基于修订编号来检测它是最新的,可以赋给每个修订一个标识符以使得修订编号和标识符的组合创建针对该修订编号的唯一标识符。如果应用反向增量脚本以取消变化,则可以保留所取消的增量脚本,以使得可以实施“重做”功能。如果重做变化,则重新使用针对该修订的先前标识符,这是因为该增量脚本正在重新引入先前已经移除的相同变化。但是,如果做出新的修订,则使用新的修订标识符,以使得没有控制与监视系统24的部件将已取消的修订与具有相同编号的新修订混淆。To prevent a first client from detecting that it is up-to-date based only on the revision number, each revision may be assigned an identifier such that the combination of the revision number and the identifier creates a unique identifier for that revision number. If a reverse delta script is applied to undo the changes, the canceled delta script can be preserved so that a "redo" function can be implemented. If a change is redone, the previous identifier for that revision is reused, since the delta script is reintroducing the same change that had previously been removed. However, if a new revision is made, a new revision identifier is used so that no component of the control and monitoring system 24 confuses the canceled revision with a new revision with the same number.

例如,图7中的修订中的每个都具有相关联的标识符。修订211具有标识符M,修订212具有标识符R,原始的修订213具有标识符T,而原始的修订214具有标识符X。如果取消修订214和213,则将它们从未定修订中移除。如果它们被“取消”,则将它们重新添加到未定变化,重新生成具有相同标识符T和X的修订。但是,在当前示例中,做出新的变化,分别创建具有标识符S和Y的新修订213和214。因为它们完全是新的修订,所以使用标识符S和Y来标识上述修订。一旦第一客户端恢复在线并且针对更新进行重订阅,则将毫无疑问地,它不是当前最新的,这是因为最终的修订是214-X而当前修订是214-Y。在一些实施例中,可以通过追踪修订编号和标示符来找到编辑路径并相应地更新修订信息来更新第一客户端。在另外的实施例中,如果发现不一致的修订编号标识符,则使用状态信息的整个集合(如,所有的状态要素160)来重载该部件。For example, each of the revisions in Figure 7 has an associated identifier. Revision 211 has identifier M, revision 212 has identifier R, original revision 213 has identifier T, and original revision 214 has identifier X. If revisions 214 and 213 are canceled, they are removed from pending revisions. If they are "cancelled", add them back to pending changes, regenerating revisions with the same identifiers T and X. However, in the current example, new changes are made, creating new revisions 213 and 214 with identifiers S and Y, respectively. Because they are completely new revisions, the identifiers S and Y are used to identify the above revisions. Once the first client comes back online and resubscribes for updates, there will be no doubt that it is not current because the final revision is 214-X and the current revision is 214-Y. In some embodiments, the first client may be updated by tracking the revision number and designator to find the edit path and updating the revision information accordingly. In another embodiment, if inconsistent revision number identifiers are found, the component is reloaded with the entire set of state information (eg, all state elements 160).

可以对正在进行未定编辑的协作会话(如,图6中的协作会话154)外的黄金副本(如,图6中的黄金副本162)做出变化。图8示出了以下场景:在做出对于黄金副本162的外部变化的同时在协作会话154中当前正在做出未定编辑。如所示出的,对对象210的修订221-B应用第一未定变化Δ1以生成修订222-J。另外,分别将第二未定变化Δ2和第三未定变化Δ3用于生成修订223-N和修订224-D。在提交未定变化Δ1、Δ2和Δ3之前,由控制与监视系统24的另一个部件将外部变化Δ1’应用到当前处于修订221-B的黄金副本162。如果协作会话154接收到新的修订222存在的通知,则协作会话154收回未定变化Δ3、Δ2和Δ1(以将它们作为未来待处理的前向增量来保存)。然后,协作会话应用针对修订222-H的增量脚本,并且然后应用分别创建修订223-R、224-C和225-X的未定变化Δ1、Δ2和Δ3。在某些情况下,可以修改未定变化Δ1、Δ2和Δ3以在修订222-H后应用它们。在一些实施例中,可以通知在协作会话154中做出未定变化的受众成员未定变化正在以覆盖近期外部变化地应用到黄金副本162。Changes may be made to the golden copy (eg, golden copy 162 in FIG. 6 ) outside of a collaboration session (eg, collaboration session 154 in FIG. 6 ) that is undergoing pending editing. FIG. 8 illustrates a scenario where pending edits are currently being made in collaboration session 154 while external changes are being made to golden copy 162 . As shown, a first pending change Δ1 is applied to revision 221-B of object 210 to generate revision 222-J. Additionally, the second pending change Δ2 and the third pending change Δ3 are used to generate revision 223-N and revision 224-D, respectively. Before committing the pending changes Δ1, Δ2 and Δ3, the external change Δ1' is applied by another component of the control and monitoring system 24 to the golden copy 162 currently at revision 221-B. If collaboration session 154 receives notification that a new revision 222 exists, collaboration session 154 retracts pending changes Δ3, Δ2, and Δ1 (to save them as future pending forward deltas). The collaboration session then applies the delta script for revision 222-H, and then applies pending changes Δ1, Δ2, and Δ3 that create revisions 223-R, 224-C, and 225-X, respectively. In some cases, pending changes Δ1, Δ2, and Δ3 may be amended to apply them after revision 222-H. In some embodiments, audience members who made pending changes in collaboration session 154 may be notified that pending changes are being applied to golden copy 162 overriding recent external changes.

在某些情况下,用户可能期望中止在协作会话154中做出的变化。图9示出了用于针对中止协作会话154中的未定变化的过程。如在当前示例中所示出的,用户从修订221-B创建未定变化Δ1,生成修订222-J。从修订222-J创建未定变化Δ2,生成修订223-N。此外,从状态223-N创建未定变化Δ3,生成修订224-D。用户可以确定变化不是必需的和/或不是期望的并且可以取消变化(如,通过选择图2中的编程终端46中的取消按钮)。为了收回未定变化,具有未定状态变化的部件可以应用针对每一个未定变化(如,Δ3、Δ2和Δ1)的反向增量以保留原始的非未定修订(如,修订221-B)。可替代地,因为黄金副本162具有所存储的最新的非未定修订(如,不包括待中止的变化的修订),所以部件可以简单地从黄金副本162重载全部的状态信息。因此,如图9所示,通过反向增量或从黄金副本162重载,在时间T1处将协作会话留在修订221-B。因此,协作会话可用来承担从修订221-B进行附加编辑(如,Δ4),在时间T2处生成新的修订222-R。In some cases, a user may desire to abort changes made in collaboration session 154 . FIG. 9 illustrates a process for pending changes in a collaborative session 154 for aborting. As shown in the current example, the user creates pending change Δ1 from revision 221-B, generating revision 222-J. Create pending change Δ2 from revision 222-J, resulting in revision 223-N. Additionally, pending change Δ3 is created from state 223-N, generating revision 224-D. The user may determine that changes are not necessary and/or desired and may cancel the changes (eg, by selecting the cancel button in programming terminal 46 of FIG. 2 ). To revert pending changes, components with pending state changes can apply reverse deltas for each pending change (eg, Δ3, Δ2, and Δ1) to preserve the original non-pending revision (eg, revision 221-B). Alternatively, components can simply reload all state information from golden copy 162 because golden copy 162 has the latest non-pending revision stored (eg, a revision that does not include pending changes). Thus, as shown in FIG. 9 , the collaboration session is left at revision 221 -B at time T1 , by back deltaing or reloading from golden copy 162 . Accordingly, a collaboration session may be used to undertake additional edits (eg, Δ4) from revision 221-B, generating a new revision 222-R at time T2.

在某些情况下,相比于针对未定变化中的每个来创建单独的修订,将多个未定变化压缩成一个修订可能是有益的。图10示出了以下实施例:将一些未定变化组合成一组编辑,以生成较少的修订。如所示出的,在时间T0处打开编辑会话。将未定变化应用到修订221-B,生成修订222-J、223-N和224-D。未定变化可能与对共同状态要素做出的变化有关(如,每个变化都可能修改矩形在显示器上的空间位置)。例如,修订222-J可以将矩形布置在屏幕的中央,修订223-N可以将矩形位置更新到屏幕的左上角,并且修订224-D可以将该位置更新到屏幕的左下角。因此,虽然施加了若干值变化,但是可能仅需要从原始值(如,修订221-B)到最终值(例如,屏幕的左下角布置,如在修订224-D中所描述的)的增量。因此,协作会话154中的中间修订可能缩到黄金副本162上的单个修订。因此,如在T2处所示出的,未定变化Δ1、Δ2和Δ3被压缩并应用到修订221-B,产生了修订222-R。在部件被配置成当检测到与修订版号相关联的冲突标识符时完全地重载所有状态信息的实施例中,当通知部件修订222-R可用(如,在T3处示出的)时,部件可以重载针对修订222-R的所有状态信息。如本领域技术人员所应当理解的,这仅仅是可以用来组合增量的压缩的形式中的一种。所提供的示例无意限定针对未定变化的压缩技术。In some cases, it may be beneficial to condense multiple pending changes into a single revision, rather than creating separate revisions for each of the pending changes. Figure 10 shows an example of combining some pending changes into a set of edits to generate fewer revisions. As shown, an editing session is opened at time T0. Apply pending changes to revision 221-B, resulting in revisions 222-J, 223-N, and 224-D. The pending changes may relate to changes made to common state elements (eg, each change may modify the spatial position of the rectangle on the display). For example, revision 222-J may place the rectangle in the center of the screen, revision 223-N may update the rectangle position to the upper left corner of the screen, and revision 224-D may update the position to the lower left corner of the screen. Thus, although several value changes are imposed, only an increment from the original value (e.g., Amendment 221-B) to the final value (e.g., the bottom left corner of the screen arrangement, as described in Amendment 224-D) may be required . Thus, intermediate revisions in collaboration session 154 may shrink down to a single revision on golden copy 162 . Thus, as shown at T2, pending changes Δ1, Δ2, and Δ3 are compressed and applied to revision 221-B, resulting in revision 222-R. In an embodiment where a component is configured to completely reload all state information when a conflicting identifier associated with a revision number is detected, when the component is notified that a revision 222-R is available (as shown at T3) , the component can override all state information for revision 222-R. As will be appreciated by those skilled in the art, this is just one of the forms of compression that can be used to combine deltas. The examples provided are not intended to limit compression techniques for pending changes.

分布式命令执行Distributed command execution

现转到以下讨论:变化一旦被传达,如何在控制与监视系统24内应用变化,图11示出了具有各种部件(如,HMI终端26、控制/监视设备30、编程终端46、智能输入/输出设备260和哑输入/输出(I/O)设备262)的控制与监视系统24。智能I/O设备260可以包括中央处理单元(CPU),以使得智能I/O设备260可以基于提供给它们的数据来执行逻辑。哑I/O设备262可以不包括CPU,因此可以依赖于控制器来将逻辑应用到它们的输入。Turning now to the discussion of how changes are applied within the control and monitoring system 24 once they are communicated, FIG. /output device 260 and dummy input/output (I/O) device 262) control and monitoring system 24. Intelligent I/O devices 260 may include a central processing unit (CPU) such that intelligent I/O devices 260 may execute logic based on data provided to them. Dumb I/O devices 262 may not include a CPU and thus may rely on a controller to apply logic to their inputs.

执行引擎264可以嵌入在控制与监视系统24的能够支持执行引擎的各个部件内。在一个示例中,利用执行引擎264来实施带有CPU的部件。执行引擎264能够将控制与监视系统24(如,状态增量43)中的变化应用到嵌入有执行引擎264的各个部件中。执行引擎264包括命令(如,命令脚本266)和触发条件268。当触发条件268被评估为真时,由执行引擎264来执行命令脚本266。例如,触发条件268在以下情况下可以评估为真:当智能I/O设备260或哑I/O设备262的状态有变化,控制/监视设备30中的数据值有变化(如,由增量脚本170产生)和/或当用户与HMI 26进行交互。通过将执行引擎264遍及控制与监视系统24的各个部件来分布,可以更加有效地处理控制与监视系统24中的变化。例如,可以利用各个部件的CPU的处理能力来执行控制与监视系统24的部件所需控制逻辑。此外,与集中的控制器相比,控制与监视系统24的各种部件上的命令执行可以增加冗余度和/或提供更好的地点来执行命令。例如,响应于控制与监视系统24使能智能I/O设备260以执行智能I/O设备260所特有的逻辑,而不需要依赖于控制/监视设备30。Execution engine 264 may be embedded within various components of control and monitoring system 24 capable of supporting an execution engine. In one example, an execution engine 264 is utilized to implement a component with a CPU. Execution engine 264 is capable of applying changes in control and monitoring system 24 (eg, state increment 43 ) to various components in which execution engine 264 is embedded. Execution engine 264 includes commands (eg, command script 266 ) and trigger conditions 268 . Command script 266 is executed by execution engine 264 when trigger condition 268 evaluates to true. For example, trigger condition 268 may evaluate to true if there is a change in the data value in control/monitoring device 30 (e.g., by increment script 170) and/or when the user interacts with the HMI 26. By distributing execution engines 264 throughout the various components of control and monitoring system 24, changes in control and monitoring system 24 may be handled more efficiently. For example, the processing capability of the CPU of each component may be utilized to execute the control logic required by the components of the control and monitoring system 24 . Additionally, command execution on various components of the control and monitoring system 24 may increase redundancy and/or provide a better location to execute commands than a centralized controller. For example, intelligent I/O device 260 is enabled in response to control and monitoring system 24 to execute logic specific to intelligent I/O device 260 without relying on control/monitoring device 30 .

如上所讨论的,一些部件(如,哑I/O设备262)可能不能支持嵌入的执行引擎264,或可能支持执行引擎264但是没有嵌入执行引擎264。这些部件可以依赖于其他部件(如,控制/监视设备30)来执行针对没有嵌入执行引擎264的部件的逻辑。例如,如在图11中示出的,哑I/O设备262没有嵌入的执行引擎264。此外,使用控制/监视设备30的传统逻辑(如,梯形逻辑(LL)、功能框图(FBD)、顺序功能图(SFC)等)来轮询数据。As discussed above, some components (eg, dumb I/O devices 262 ) may not support an embedded execution engine 264 , or may support an execution engine 264 but not have an embedded execution engine 264 . These components may rely on other components (eg, control/monitoring device 30 ) to execute logic for components not embedded in execution engine 264 . For example, as shown in FIG. 11 , dumb I/O device 262 has no embedded execution engine 264 . In addition, the data is polled using conventional logic of the control/monitoring device 30 (eg, ladder logic (LL), functional block diagram (FBD), sequential function chart (SFC), etc.).

命令(例如命令脚本266,如用户和/或系统所定义的继电器梯形逻辑)可以是存储在有形、非易失、计算机可读介质(例如,硬盘驱动器、数据库、只读存储器、和/或随机存取存储器)中的在当触发条件出现时或在调度时间处被执行的计算机可读指令(如,对象)。例如,命令可以存储在图5中的数据容器158中。命令可以从命令基类中继承属性和/或功能的基集。可以将特定的属性和行为添加到基类中,以衍生出其他命令类,如用于屏幕导航和写标签值等的类。在某些实施例中,命令基类可以包括参数,或可以用于输入和输出的参数数据名称/值对的参数集合。此外,命令基类可以包括指示命令已经执行完成的“完成”属性。命令基类可以包括指示因错误而导致命令执行停止的错误属性。此外,命令基类可以包括由控制与监视系统24用于确定谁来负责命令的存储清除(如,什么实体应当在执行之后将命令从数据容器158删除)的父属性。命令基类可以包括对命令进行标识的名称属性。可以将名称属性用在表示与触发条件268中,以使得命令的属性可以触发附加命令。命令基类可以包括指示命令的执行进展的进展属性,并且还可以具有指示命令的执行已经超时(如,在所分配的时间段内没有执行完)的超时属性。命令基类可以包括将命令添加到适当的执行线程的调度属性,将在下面对其进行更加详细的讨论。此外,命令基类可以包括包含执行指令的执行属性。Commands (e.g., command script 266, relay ladder logic as defined by the user and/or system) may be stored on a tangible, non-volatile, computer-readable medium (e.g., hard drive, database, read-only memory, and/or random computer readable instructions (eg, objects) in memory) that are executed when a trigger condition occurs or at a scheduled time. For example, commands may be stored in data container 158 in FIG. 5 . Commands can inherit a base set of attributes and/or functionality from a command base class. Specific attributes and behaviors can be added to the base class to derive other command classes such as those for screen navigation and writing tag values, etc. In some embodiments, a command base class may include parameters, or parameter collections of parameter data name/value pairs that may be used for input and output. Additionally, the command base class may include a "done" property to indicate that the command has completed executing. The command base class can include an error attribute indicating that the command execution stopped due to an error. Additionally, the command base class may include a parent attribute that is used by the control and monitoring system 24 to determine who is responsible for storage cleanup of the command (eg, what entity should delete the command from the data container 158 after execution). The command base class can include a name attribute to identify the command. The name attribute can be used in the representation and trigger condition 268 so that the attribute of the command can trigger additional commands. The command base class may include a progress attribute to indicate the progress of the execution of the command, and may also have a timeout attribute to indicate that the execution of the command has timed out (eg, has not completed within the allotted time period). The command base class may include dispatch attributes that add the command to the appropriate thread of execution, as discussed in more detail below. Additionally, the command base class may include an execute attribute that contains the instruction to execute.

在某些实施例中,可以将命令复合或放在一起。具有两种基本的复合形式:顺序命令复合和平行命令复合。在顺序命令复合中,组中被放在一起的每个命令以给定的顺序每次一个地执行。有用的顺序命令复合的一个示例可以是进行以下处理的一组命令:1)写入标签以开始罐填充,2)等待具体的标签值,以及3)改变图形状态要素。以下是可能的顺序命令复合的伪代码示例:In some embodiments, commands may be compounded or put together. There are two basic forms of compounding: sequential command compounding and parallel command compounding. In sequential command composition, each command that is put together in a group is executed one at a time in the order given. One example of a useful sequential command compound could be a set of commands that 1) write to a tag to start tank filling, 2) wait for a specific tag value, and 3) change a graphics state element. The following is a pseudocode example of possible sequential command composition:

<Sequence><Sequence>

<WriteTag ref=”mytank”…><WriteTag ref="mytank"...>

<WaitFor trigger=”mytank.fill==100”…><WaitFor trigger="mytank.fill==100"...>

<SetState ref=”myTankDoneText”state=”Done”/><SetState ref="myTankDoneText" state="Done"/>

</Sequence></Sequence>

在并行命令复合中,复合中的在一起的每个命令在同一时间执行。例如,下面的写标签命令可以在同一开始时间执行:In parallel command compounding, each command that is together in the compound executes at the same time. For example, the following write tag commands can be executed at the same start time:

在某些实施例中,命令复合可以包括顺序复合和并行复合的组合。例如:In some embodiments, command composition may include a combination of sequential composition and parallel composition. E.g:

现转向图12,提供了通过执行引擎来执行的帧循环300的实施例。帧循环300是关于受控的时间周期(如,每秒30次)来执行的一组计算机可读指令。帧循环300的目标是对提供给图11的执行引擎264的数据变化(如,状态增量43)做出反应。如所示出的,帧循环300可以评估框302处的表示。例如,通过数据获取线程303来提供表达数据(如,数据对象的值),数据获取线程303可以对控制与监视系统24的状态数据进行访问。帧循环基于所评估的表达来在框304处对触发条件(如,图11中的触发条件268)进行评估。如果基于所评估的表达将触发条件268中的任意一个评估为真,则可以对与触发条件268相关联的命令(如,图11中的命令脚本266)进行调度或执行。如在下面所更加详细地讨论的,关于图13,可以在帧循环300内执行某些命令,并且可以在其他线程或线程池(如,用户输入线程305和线程池307)中对其他命令进行调度及执行。帧命令或被调度以在帧循环300中运行的命令可以在框306处执行。接着,在框308处执行任何过渡更新(如,如何从一个值变化到另一个值的计算机可读指令)。过渡更新的一个示例可以包括指定状态变化的图形动画,例如,示出针对打开的阀的流动的动画箭头,或针对图形表示的最近状态变化的淡出的动画箭头。然后,帧循环300可以提供由所执行的命令应用的变化(如,提供更新的屏幕图像和/或新的数据值)。Turning now to FIG. 12, an embodiment of a frame loop 300 executed by an execution engine is provided. Frame loop 300 is a set of computer readable instructions executed with respect to a controlled period of time (eg, 30 times per second). The purpose of frame loop 300 is to react to data changes (eg, state increment 43 ) provided to execution engine 264 of FIG. 11 . As shown, frame loop 300 may evaluate the representation at block 302 . For example, data acquisition thread 303 may access status data of control and monitoring system 24 by providing presentation data (eg, the value of a data object) through data acquisition thread 303 . The frame loop evaluates a trigger condition (eg, trigger condition 268 in FIG. 11 ) at block 304 based on the evaluated expression. If any one of trigger conditions 268 evaluates to true based on the evaluated expressions, the command (eg, command script 266 in FIG. 11 ) associated with trigger condition 268 may be scheduled or executed. As discussed in more detail below, with respect to FIG. 13, certain commands may be executed within frame loop 300, and other commands may be executed in other threads or thread pools (e.g., user input thread 305 and thread pool 307). Scheduling and execution. Frame commands or commands scheduled to run in the frame cycle 300 may be executed at block 306 . Next, any transition updates (eg, computer readable instructions on how to change from one value to another) are performed at block 308 . One example of a transition update may include a graphical animation specifying a state change, eg, an animated arrow showing flow for an open valve, or an animated arrow fading out for the most recent state change of a graphical representation. Frame loop 300 may then provide the changes applied by the executed commands (eg, provide updated screen images and/or new data values).

如上面所讨论的,帧循环300可以关于受控的时间周期来运行(如,30次每秒)。在一些实施例中,可以通过以给定的时间间隔跳过帧循环300的一部分来调节帧循环300执行。例如,假定帧循环300每秒运行30次,则可以将帧循环300设计成每个第三帧运行表达评估(框302),可以从第二帧开始在每个第三帧处对触发器进行评估(框304),并且可以从第三帧开始在每个第三帧处提供过渡更新(框308)。该提供(框310)可以在每个帧处连续执行,或可以仅当变化出现时最佳地运行。因此,框中的每个依然可以按顺序执行,但是被节制为以较小的频率(如,1/3频率或每秒10帧)来执行。As discussed above, frame loop 300 may run with respect to a controlled period of time (eg, 30 times per second). In some embodiments, frame cycle 300 execution may be adjusted by skipping a portion of frame cycle 300 at a given time interval. For example, assuming that the frame loop 300 runs 30 times per second, the frame loop 300 can be designed to run expression evaluation every third frame (block 302), and the trigger can be performed at every third frame starting from the second frame. is evaluated (block 304), and a transition update may be provided at every third frame beginning with the third frame (block 308). This provisioning (block 310 ) may be performed continuously at each frame, or may run optimally only when changes occur. Thus, each of the blocks can still be executed sequentially, but throttled to execute less frequently (eg, 1/3 frequency or 10 frames per second).

此外,可以基于运行执行引擎264的硬件来修改帧速率。例如,在一些实施例中,如果利用较低能力的处理器如基于的系统,则帧循环可以以每秒12帧来运行,如果使用基于Atom的系统,则帧循环可以以每秒30帧来运行,如果使用台式计算机,则帧循环可以以每秒60帧来运行,而如果使用基于浏览器的系统,则帧循环可以以每秒24帧来运行。此外,过渡选项可以允许较少的过渡(如,每6帧1次)和/或可以允许取决于所使用的平台而较不频繁(如,不是每一帧)地提供过渡。执行引擎264还可以适于基于所确定的帧循环300的各种阶段的执行时间,在运行期间对帧循环300进行调节。例如,表达繁重的屏幕可能需要更多的表达评估时间,并且过渡繁重的屏幕可能需要更多的过渡处理/执行时间。Furthermore, the frame rate may be modified based on the hardware on which execution engine 264 is running. For example, in some embodiments, if utilizing a less capable processor such as a The frame loop can run at 12 frames per second with an Atom-based system, 30 frames per second with an Atom-based system, and 60 frames per second with a desktop computer , while the frame loop can run at 24 frames per second if using a browser-based system. Additionally, transition options may allow for fewer transitions (eg, 1 every 6 frames) and/or may allow transitions to be provided less frequently (eg, not every frame) depending on the platform being used. Execution engine 264 may also be adapted to adjust frame loop 300 during runtime based on the determined execution times of various phases of frame loop 300 . For example, expression-heavy screens may require more expression evaluation time, and transition-heavy screens may require more transition processing/execution time.

现转向关于如何调度命令以执行的讨论,图13示出了根据实施例的用于调度命令的处理320。当在框322处将触发条件268评估为真时,开始调度处理320。如先前所讨论的,可以具有与触发条件268相关联的一个或更多个命令。取决于与触发条件268相关联的命令的类型,处理320可以采取两个路径中一个。命令可以是帧命令324或线程命令326中的任意一个。帧命令324影响主要的帧循环300上的数据。为了在主要的帧循环300上执行,可以将帧命令324添加到帧命令列表326。然后,可以在主要的帧循环300(图12中的框306)上执行帧命令324。通常,这些命令改变需要数据的重提供的数据。因此,可以在提供(图12中的框310)之前执行这些命令。Turning now to a discussion of how commands are scheduled for execution, FIG. 13 shows a process 320 for scheduling commands, according to an embodiment. When the trigger condition 268 is evaluated to be true at block 322, the scheduling process 320 begins. As previously discussed, there may be one or more commands associated with the trigger condition 268 . Depending on the type of command associated with trigger condition 268, process 320 may take one of two paths. The command can be either frame command 324 or thread command 326 . Frame commands 324 affect data on the main frame cycle 300 . Frame commands 324 may be added to frame command list 326 for execution on main frame cycle 300 . Frame commands 324 may then be executed on the main frame cycle 300 (block 306 in FIG. 12). Typically, these commands change data requiring a re-supply of the data. Accordingly, these commands may be executed prior to provisioning (block 310 in FIG. 12).

线程命令326是不对帧循环300执行的存储空间中的数据进行访问的命令。可以在与帧循环300不同的线程上自由调度这些命令。因此,如果触发条件268针对线程命令326评估为真,则调度线程命令以在线程池307中运行。通过利用线程池307可以更加有效地利用资源。例如,通过使线程命令326避开帧循环300线程,帧循环300自由地以执行更加重要的命令和/或必须在帧循环300上运行的命令。The thread command 326 is a command that does not access data in the memory space executed by the frame loop 300 . These commands can be freely scheduled on a different thread than the frame loop 300 . Thus, if trigger condition 268 evaluates to true for thread command 326 , the thread command is scheduled to run in thread pool 307 . By utilizing the thread pool 307 resources can be utilized more efficiently. For example, by keeping thread commands 326 off the frame loop 300 thread, the frame loop 300 is free to execute more important commands and/or commands that must run on the frame loop 300 .

可链接插件架构Linkable plugin architecture

现在已经讨论了控制与监视系统24内的变换传达与命令执行,下面讨论通过可链接插件功能进行的数据转换。如上所讨论的,控制与监视系统24可以是具有可以在系统24的部件之间传达的多种类型的资源的数据驱动系统。资源类型可以是标识资源是什么的数据分类。这些资源类型的示例可以是标签、对象数据类型、可视化屏幕或系统24中的任何其他可由用户定义的对象。这些资源可以继承彼此的功能,创建高动态类型系统。换言之,系统内可以存在具有不同水平的粒度的多种资源类型。Now that transformation communication and command execution within the control and monitoring system 24 has been discussed, data transformation through linkable plug-in functions is discussed next. As discussed above, control and monitoring system 24 may be a data-driven system with various types of resources that may be communicated between components of system 24 . A resource type may be a data classification that identifies what a resource is. Examples of these resource types may be tags, object data types, visualization screens, or any other user-definable object in system 24 . These resources can inherit functionality from each other, creating a highly dynamic type system. In other words, multiple resource types with different levels of granularity can exist within the system.

有时可能期望对控制与监视系统24的部件进行修改。例如,控制与监视系统24的设计和/或控制软件的制造商或用户可能期望将一种类型的数据(或与该数据相关联的事件)转换成另一种类型的数据或事件。可以将这些修改添加到限定控制与监视系统24的潜在机器可读指令中,但是,这些修改很可能需要对这些机器可读指令进行重新编译。从而,控制与监视系统24的部件可以使得生成可以处理系统24中的各种资源类型的插件。插件可以是以下机器可读代码:与应用的机器可读代码分离开并且使能可定制或增加该应用的功能。图14提供了根据本实施例的一种这样的系统的示意图。From time to time it may be desirable to make modifications to the components of the control and monitoring system 24 . For example, the design of control and monitoring system 24 and/or the manufacturer or user of the control software may desire to convert one type of data (or events associated with that data) into another type of data or events. These modifications could be added to the underlying machine-readable instructions defining the control and monitoring system 24, however, these modifications will likely require recompilation of the machine-readable instructions. Thus, components of the control and monitoring system 24 may enable the generation of plug-ins that can handle various resource types in the system 24 . A plug-in may be machine-readable code that is separate from the machine-readable code of the application and enables customization or augmentation of the application's functionality. Figure 14 provides a schematic diagram of one such system according to the present embodiment.

与图1相似,图14的系统350包括控制器30,其代表控制和/或监视设备。在操作中,控制器30通过传感器34和执行机构36来对处理28进行监视与控制。此外,系统350包括HMI26,HMI 26包括用于使得人能够对系统350内的各种处理进行监视和/或控制的业务352。系统350中的编程终端46可以使得一个或更多个用户对HMI 26和/或控制器30的属性进行配置。Similar to FIG. 1, the system 350 of FIG. 14 includes a controller 30, which represents a control and/or monitoring device. In operation, controller 30 monitors and controls process 28 via sensors 34 and actuators 36 . Additionally, system 350 includes HMI 26 , which includes services 352 for enabling human monitoring and/or control of various processes within system 350 . Programming terminal 46 in system 350 may enable one or more users to configure properties of HMI 26 and/or controller 30 .

如上所讨论的,存在许多以下情况:可能期望给系统350添加附加的功能。例如,系统350的用户可能希望对在HMI 26和/或编程终端46中不可用的定制化的机器实施指令进行启用。另外,HMI 26和/或编程终端46的制造商可能希望实施新的特征而不重新建立定义系统350的这些部件的整套机器可读指令。因此,部件(如,HMI 26和/或编程终端46)可以包括用于处理插件的机器可读指令,这些指令可以限定为对HMI 26和/或编程终端46的指令以外的机器可读代码的一部分。这些插件可以使得以下成为可能:在不需要重启部件的情况下对部件的功能进行修改。As discussed above, there are many situations in which it may be desirable to add additional functionality to system 350 . For example, a user of system 350 may wish to enable customized machine-implemented instructions that are not available in HMI 26 and/or programming terminal 46 . Additionally, manufacturers of HMI 26 and/or programming terminal 46 may wish to implement new features without recreating the entire set of machine-readable instructions that define these components of system 350 . Thus, components (e.g., HMI 26 and/or programming terminal 46) may include machine-readable instructions for processing plug-ins, which may be defined as machine-readable code instructions other than instructions for HMI 26 and/or programming terminal 46. part. These plugins make it possible to modify the functionality of components without restarting the component.

如图14中示出的,HMI 26和编程终端46分别配备有插件管理系统354和356。这些插件管理系统354和356可以使得HMI 26和编程终端46能够分别对插件358和360进行注册。通过注册插件358和360,HMI 26和编程终端46可以意识到并且实施插件功能。例如,插件358可以包括要在HMI 26中使用的外部安全逻辑。用户或HMI 26的制造商可以创建插件358以及通过插件管理系统354向HMI 26注册插件358。As shown in FIG. 14, 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 HMI 26 and programming terminal 46 to register plug-ins 358 and 360, respectively. By registering plug-ins 358 and 360, HMI 26 and programming terminal 46 are aware of and implement plug-in functionality. For example, plug-in 358 may include external security logic to be used in HMI 26 . A user or the manufacturer of HMI 26 may create plug-ins 358 and register plug-ins 358 with HMI 26 through plug-in management system 354 .

当向HMI 26和/或编程终端46注册时,插件358和360可以访问它们所注册的部件的业务352和355。例如,HMI插件358可以通过业务接口364来访问HMI 26的业务352。编程终端插件360可以通过业务接口366来访问编程终端46的业务355。在一个实施例中,接口364和366可以是可以从插件358和360接收交互指令的应用编程接口(API)。When registered with HMI 26 and/or programming terminal 46, plug-ins 358 and 360 can access services 352 and 355 of the components they are registered with. For example, HMI plug-in 358 can access services 352 of HMI 26 through services interface 364 . The programming terminal plug-in 360 can access the services 355 of the programming terminal 46 through the service interface 366 . In one embodiment, interfaces 364 and 366 may be application programming interfaces (APIs) that may receive interactive instructions from plug-ins 358 and 360 .

如上所讨论的,资源162可以在系统350的部件之间传达。资源162可以是以多态链来创建的对象。多态性涉及对象的具有共用接口(如,功能的接口)的能力,即便其具有不同的类型。另外,多态链可能意味着不同类型的资源从彼此得出。在简单的示例中,具有形状、矩形和正方形类型的资源162可以出现在系统350中。矩形类型可以从形状类型中得出,正方形类型可以从矩形类型中得出。此外,这些资源162可以由通用的对象模型或不将接受者与其他请求参数进行区分的模型来限定。因为这些资源类型由通用的对象模型限定,所以资源162的数据访问和转换可以被推广,而不需要将转换接受者和与资源162相关联的其他参数区分开。从而,可以使得插件管理系统354和356能够访问和使用多态链中任何地方的数据。例如,可以使用调节资源162的尺寸的插件来对矩形以及正方形的尺寸进行调节。这可以通过能够将链接在一起来处理具体的资源类型的一系列插件来进行。例如,插件管理系统354和/或356可以确定可链接插件的适当子集,以基于限定资源162的通用对象模型路径来处理具体的资源162。在某些实施例中,插件可以指定它们所处理的资源的具体类型。插件管理系统354和/或356可以确定实施功能所需的适当链(如,插件的适当集合和适当的顺序)。As discussed above, resources 162 may be communicated between components of system 350 . Resource 162 may be an object created as a polymorphic chain. Polymorphism relates to the ability of objects to have a common interface (eg, that of a function) even though they are of different types. Additionally, polymorphic chains can mean that different types of resources derive from each other. In a simple example, resources 162 may appear in system 350 having the shape, rectangle, and square types. A rectangle type can be derived from a shape type, and a square type can be derived from a rectangle type. Furthermore, these resources 162 may be defined by a generic object model or a model that does not distinguish recipients from other request parameters. Because these resource types are defined by a common object model, data access and transformation of resources 162 can be generalized without distinguishing transformation recipients from other parameters associated with resources 162 . Thus, plug-in management systems 354 and 356 can be enabled to access and use data anywhere in the polymorphic chain. For example, a plug-in that resizes the resource 162 can be used to resize rectangles and squares. This can be done through a series of plugins that can be linked together to handle specific resource types. For example, plug-in management systems 354 and/or 356 may determine an appropriate subset of linkable plug-ins to process a particular resource 162 based on a generic object model path defining resource 162 . In some embodiments, plug-ins can specify specific types of resources that they handle. Plug-in management systems 354 and/or 356 may determine the appropriate chaining (eg, the proper set and proper order of plug-ins) needed to implement the functionality.

可以通过可链接插件来实施的特征的数量是非常大的。因为插件是可链接的,所以可以生成针对出现在系统350中几乎所有的资源类型的特征,而不管多态链中的哪一点可以找到资源类型。此外,可以将插件设计成:在资源的创建和/或删除之前、期间和/或之后添加功能。从而,可以实现能够处理许多资源类型的非常动态的插件集合。The number of features that can be implemented through linkable plug-ins is very large. Because plug-ins are chainable, signatures can be generated for nearly all resource types that appear in system 350, regardless of where in the polymorphic chain the resource type can be found. Furthermore, plug-ins can be designed to add functionality before, during and/or after creation and/or deletion of resources. Thus, a very dynamic collection of plugins capable of handling many resource types can be achieved.

虽然在本文中仅示出和描述了本发明的某些特征,但是本领域技术人员会想到许多修改和变化。因此应当理解,所附权利要求意在覆盖所有这些落入本发明的实质精神内的修改和变化。While only certain features of the invention have been shown and described herein, many modifications and changes will occur to those skilled in the art. It is therefore to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.

Claims (19)

1. a kind of automatic control system, including:
One or more parts, it includes being configured to relative with one or more individual part by following operation processing Answer can chain connector insert management system:
Determine it is multiple it is available can the processing of chain connector specific plug-in resource type;
Determine it is the multiple it is available can be in chain connector two or more it is available can chain connector appropriate chain, it is described two Or more it is available can chain connector when linked via it is different can chain connector resource type realize one can chain patch The function of part, wherein the appropriate chain include the multiple available can be in chain connector described two or more it is available can chain Connector, for realize for it is one can chain connector resource type function appropriate order;
Wherein, it is described can chain connector include it is polymorphic can chain connector, it is described it is polymorphic can chain connector include can handle it is polymorphic The shared interface for multiple resource types that chain defines;And
Wherein, the appropriate chain include it is described it is polymorphic can chain connector, so as to the multiple using being defined by the polymorphic chain A resource type in resource type.
2. automatic control system according to claim 1, wherein, one or more part includes man-machine interface.
3. automatic control system according to claim 2, wherein, one or more part includes program terminal.
4. automatic control system according to claim 1, wherein, the resource type includes control program, label, data It is at least one in type, module configuration or man-machine interface screen.
5. automatic control system according to claim 1, wherein, the insert management system is configured to weigh Can chain connector described in the case of newly starting one or more part.
6. automatic control system according to claim 1, wherein, the resource type is determined according to common object model Justice.
7. automatic control system according to claim 6, wherein, the insert management system is configured to:It is determined that it is based on The common object model handle required for the resource type can chain connector appropriate subset.
8. automatic control system according to claim 1, wherein, the insert management system is configured to can described in registration Chain connector.
9. automatic control system according to claim 1, wherein, it is described can chain connector be configured to:Connect by business Mouth conducts interviews to one or more business of one or more part.
10. automatic control system according to claim 9, wherein, the business interface includes API.
11. a kind of tangible nonvolatile machine-readable media, is stored thereon with for automatically controlling the part with monitoring system Can chain connector, it is described can chain connector include:
Machine readable code, it includes carrying out the instruction of following processing:
Described automatically control is conducted interviews with the business of the part of monitoring system;
Resource data or event are obtained from the business;
Automatically controlled and change data, generation event or progress both change data and generation event in monitoring system described; And
In the proper sequence can chain connector by described in based on the data, the event or both the data and the event With other can chain connector linked, with produce two or more can chain connector appropriate chain;
Wherein, the appropriate chain via it is different can chain connector resource type realize one can chain connector function, and The appropriate chain include described two or more it is available can chain connector, for realize for it is one can chain connector Resource type function appropriate order;
Wherein, it is described can chain connector include it is polymorphic can chain connector, it is described it is polymorphic can chain connector include can handle it is polymorphic The shared interface for multiple resource types that chain defines;And
Wherein, the appropriate chain include it is described it is polymorphic can chain connector, so as to the multiple using being defined by the polymorphic chain A resource type in resource type.
12. tangible nonvolatile machine-readable media according to claim 11, wherein, it is described can chain connector include The machine readable instructions created by the manufacturer of the part.
13. tangible nonvolatile machine-readable media according to claim 11, wherein, it is described can chain connector include The machine readable instructions created by the user of the part.
14. tangible nonvolatile machine-readable media according to claim 11, wherein, the instruction linked Including based on the common object model for defining the resource data or event the instruction that is linked.
15. tangible nonvolatile machine-readable media according to claim 11, including carry out the instruction of following processing:
Before establishing resource, just in establishing resource or after creating resource, change the data, generate the event or Carry out changing the data and generate both described events.
16. tangible nonvolatile machine-readable media according to claim 11, including carry out the instruction of following processing:
Before resource is deleted, when deleting resource or after deleting resource, change the data, generate the event or Carry out changing the data and generate both described events.
17. a kind of method for being used to modify to the function of the part of automatic supervision and control system, including:
Can chain connector to the component registration;
To it is described can chain connector resource data or event are provided;And
Based on it is described can chain connector come change the resource data or generation additional events;
Wherein, in the proper sequence will described in can chain connector with it is other can chain connector link can to produce two or more The appropriate chain and the conversion resource data or the generation additional events of chain connector, the appropriate chain can chain via difference The resource type of connector realize one can chain connector function, and the appropriate chain include described two or more can With can chain connector, for realize for it is one can chain connector resource type function appropriate order;
Wherein, it is described can chain connector include it is polymorphic can chain connector, it is described it is polymorphic can chain connector include can handle it is polymorphic The shared interface for multiple resource types that chain defines;And
Wherein, the appropriate chain include it is described it is polymorphic can chain connector, so as to the multiple using being defined by the polymorphic chain A resource type in resource type.
18. according to the method for claim 17, including determine to the following subset for handling other useful plug-in units:It is based on The common object model of the resource data or event is defined to change the resource data or the generation additional events.
19. according to the method for claim 18, including the subset of other plug-in units is linked, to cause State the subsets of other plug-in units with it is described can the combination of chain connector can handle any class in the common object model The resource data or event of type.
CN201210452565.4A 2012-10-29 2012-11-12 The method of the function of automatic control system, machine readable media and modification part Expired - Fee Related CN103793346B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/663,347 2012-10-29
US13/663,347 US9606521B2 (en) 2011-11-11 2012-10-29 Chainable plug-ins

Publications (2)

Publication Number Publication Date
CN103793346A CN103793346A (en) 2014-05-14
CN103793346B true CN103793346B (en) 2018-01-19

Family

ID=50669040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210452565.4A Expired - Fee Related CN103793346B (en) 2012-10-29 2012-11-12 The method of the function of automatic control system, machine readable media and modification part

Country Status (1)

Country Link
CN (1) CN103793346B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI709908B (en) * 2019-05-03 2020-11-11 直得科技股份有限公司 Method, program product, and computer readable medium for operating software in plc editing environment
CN119292088A (en) * 2024-10-26 2025-01-10 深圳市梦网科技发展有限公司 Home appliance control method, system, electronic device and computer program product

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050155014A1 (en) * 2004-01-09 2005-07-14 National Instruments Corporation Graphical program which includes an I/O node for hardware abstraction
CN101303762A (en) * 2008-06-06 2008-11-12 北京四方继保自动化股份有限公司 Method for managing primitive of automatization system based on dynamically loading and plug-in unit technique
CN102033743A (en) * 2010-09-02 2011-04-27 西安赛斐软件科技有限公司 System and method for expanding model driving development capability by applying plug-in

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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
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
CA2619970C (en) * 2005-08-19 2013-03-26 Google Inc. Software architecture for displaying information content from plug-in modules in a user interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050155014A1 (en) * 2004-01-09 2005-07-14 National Instruments Corporation Graphical program which includes an I/O node for hardware abstraction
CN101303762A (en) * 2008-06-06 2008-11-12 北京四方继保自动化股份有限公司 Method for managing primitive of automatization system based on dynamically loading and plug-in unit technique
CN102033743A (en) * 2010-09-02 2011-04-27 西安赛斐软件科技有限公司 System and method for expanding model driving development capability by applying plug-in

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
The PiVis Framework for Visualization of Digital Object Memories;Jens Haupert et al;《2011 Seventh International Conference on Intelligent Environments》;20110728;正文第IV部分 *

Also Published As

Publication number Publication date
CN103793346A (en) 2014-05-14

Similar Documents

Publication Publication Date Title
US10571898B2 (en) Control environment change communication
US9606521B2 (en) Chainable plug-ins
EP2592515B1 (en) Scalable automation system
US9389606B2 (en) Agile control model system and method
US9285800B2 (en) Systems and methods for asynchronous searching and filtering of data
US9529355B2 (en) Control environment change communication
US8990768B2 (en) Software object property return method and system
US11294351B2 (en) Control environment command execution
US9442473B2 (en) Remote object data property replication method and system
US20130124575A1 (en) System and Method for Dynamic Meta-Data in Control and Visualization
US10108158B2 (en) Weakly-typed dataflow infrastructure with standalone, configurable connections
CN103543684B (en) Method and automatic control component for the change of the status information of conveyed object
CN103792858B (en) Flexible Controlling model system and method
CN103793346B (en) The method of the function of automatic control system, machine readable media and modification part
US20170336772A1 (en) System and method for dynamic meta-data in control and visualization
CN103792873B (en) Environmental change is controlled to pass on
CN103793200B (en) CONTEXT command is controlled to perform

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: DOUGLAS W. REID

Inventor after: Bronikowski Joseph

Inventor after: Michael D. Karan

Inventor after: Kowal Steven John

Inventor after: SUBBIAN GOVINDARAJ

Inventor after: Taril J. Jasper

Inventor after: Kenneth S. Praher

Inventor after: Douglas J. Ryshade

Inventor after: Izzo Joseph P

Inventor before: DOUGLAS W. REID

Inventor before: RAY J. STARON

Inventor before: Thomas David E.

Inventor before: TIMOTHY P. BOPPRE

Inventor before: Bliss Ronald E

Inventor before: GORDON DAILY

Inventor before: Bronikowski Joseph

Inventor before: Michael D. Karan

Inventor before: Kowal Steven John

Inventor before: SUBBIAN GOVINDARAJ

Inventor before: Taril J. Jasper

Inventor before: Kenneth S. Praher

Inventor before: Douglas J. Ryshade

Inventor before: Izzo Joseph P

COR Change of bibliographic data
CB02 Change of applicant information

Address after: Ohio, USA

Applicant after: Rockwell Automation Technologies, Inc.

Address before: Ohio, USA

Applicant before: ROCKWELL AUTOMATION TECHNOLOGIES, Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180119

CF01 Termination of patent right due to non-payment of annual fee