Aspects of the present invention generally relate to the field of programmable/configurable computerized control systems. More particularly, aspects of the invention concern application programs including graphical interfaces for creating/configuring control programs for continuous and/or discrete processes.
Industry increasingly depends upon highly automated data acquisition and control systems to ensure that industrial processes/operations run efficiently, safely, and reliably while lowering overall costs. In such systems, data acquisition begins with sensors measuring current values/status of process variables representing the status/operation of an industrial process or operation. The measurements are communicated to programmed controllers and data collection/management systems. The data collection/management systems, generally including process databases and data processing routines, manage and maintain the measurement data. Such data management and maintenance includes further processing the data (e.g., filtering), storing the data, and distributing the data to a variety of client applications. Such client applications include both automated and manual supervisory control processes and display/monitor user interfaces.
Industrial process/operation measurements come in a wide variety of forms and are used by industrial process control systems to regulate a variety of operations, both with respect to continuous and discrete manufacturing processes. By way of example, the measurements produced by a sensor/recorder include: a temperature, a pressure, a pH, a mass/volume flow of material, a quantity of bottles filled per hour, a tallied inventory of packages waiting in a shipping line, or a photograph of a room in a factory. Often, sophisticated automated process management and control hardware/software examine acquired process/operation measurement data, and respond by sending messages/signals to actuators/controllers that adjust the operation of at least a portion of the industrial process. The control software includes, for example, one or more control strategies that, in turn, include a set of control blocks. The control programs potentially operate at a variety of levels of control including, for example, regulatory control (e.g., maintaining a particular specified set point for a process variable) and supervisory control (e.g., specifying a set point for a controlled process variable).
Automated control systems for typical industrial processes are often complex. Developing customized control programs for such automated control systems is a complex and time-consuming task. However, today control system programming is streamlined and simplified by graphical user interface-based control program development environments/toolkits that allow creation of control programs by dragging and dropping, and thereafter connecting, graphical representations of pre-programmed components/elements of a control program. Such graphical representations are associated with control software objects (or more specifically control software object templates) that, when instantiated and deployed on a control software object execution platform, carry out particular defined operations/functions in an overall control environment.
Programming automated control of processes using graphical editors and sets of selectable, pre-programmed, object templates is a substantial improvement over programming control using written instructions. The graphical user interface-based control program environment has substantially eliminated the need for control engineers to develop control programs using low-level instruction code, or even higher level compiled source code languages. Instead, developers of control programs invoke graphical control program editors having associated pre-programmed control objects represented by symbols provided in a control template pallet. Thus, instead of learning to program control using written instructions/code, programmers need only become knowledgeable with regard to various tasks/functions carried out by control objects instantiated from selectable control object templates.
Known graphical control program editors support an extensible set of control object templates. The new control object templates include new control elements with new attributes/functionality not found in existing control object template sets/pallets. In some instances, the new control object templates are derived from existing templates. In other instances, the new control object templates include a set of connected, pre-existing, control object templates.
The template-based control development toolkit approach to developing automated control programs does not eliminate low-level programming altogether. Instead, such toolkits facilitate efficient/widespread exploitation of original programming efforts of a relatively small number of skilled low-level programmers who develop the original control object templates. Such exploitation occurs in the form of deriving child templates from a base class of original templates and creating object instances from the original and derived templates. However, updating the control programs is a manual process and requires a programmer to manually change the control block each time there is a process configuration update. Therefore, a need exists to automatically provide a dynamic method to update control blocks based on the configuration of the control block.
Briefly, aspects of the invention provide for editing a graphical depiction corresponding to a control object, via a graphical representation editor displayed on a graphical user interface.
In one aspect, a method of editing an appearance object displayed on a graphical user interface, such that the appearance object corresponds to a control object having a plurality of attributes. The method includes displaying, on the graphical user interface, a plurality of interconnected appearance objects in a strategy diagram, each of the plurality of interconnected appearance objects corresponding to an aspect of a control process. The method further includes selecting at least one of the plurality of appearance objects displayed in the strategy diagram for editing, and selecting a pre-defined symbol from one of a plurality of templates using a graphical editor, such that the selected symbol includes a plurality of elements, each of the plurality of elements representing a particular attribute of the control process. Furthermore, the method includes replacing, in the strategy diagram, the selected appearance object with the selected symbol, and modifying at least one of the plurality of elements associated with the selected symbol corresponding to a desired change of an attribute for the control process.
In another aspect, a method of editing an appearance object displayed on a graphical user interface, such that the appearance object corresponds to a control object having a plurality of attributes. The method includes displaying, on the graphical user interface, a plurality of interconnected appearance objects in a strategy diagram, each of the plurality of interconnected appearance objects corresponding to an aspect of a control process. The method further includes selecting at least one of the plurality of appearance objects displayed in the strategy diagram for editing, and selecting a pre-defined symbol from one of a plurality of templates using a graphical editor, such that the selected symbol includes a symbol definition defined in a computer programming language. Furthermore, the method includes replacing, in the strategy diagram, the selected appearance object with the selected symbol, and modifying the selected symbol definition using a symbol definition editor.
In another aspect, a system edits an appearance object corresponding to a control object having a plurality of attributes. The system includes a graphical user interface for displaying a plurality of interconnected appearance objects in a strategy diagram, each of the plurality of interconnected appearance objects corresponding to an aspect of a control process. The system further includes a graphical editor displayed on the graphical user interface. Furthermore, the system includes a plurality of templates containing a plurality of pre-defined symbols, wherein each pre-defined symbol includes a plurality of elements, each of the plurality of elements representing a particular attribute of the control process. In addition, at least one of the plurality of appearance objects displayed in the strategy diagram is selected for editing and at least one of the pre-defined symbols is selected using the graphical editor whereby the selected appearance object is replaced, in the strategy diagram, with the selected pre-defined symbol, and at least one of the plurality of elements associated with the selected pre-defined symbol is modified corresponding to a desired change of an attribute for the control process.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Other features will be in part apparent and in part pointed out hereinafter.
a lists an exemplary set of object attributes supported in the strategy object.
b lists an exemplary set of object attributes supported in control objects that support multiple appearance objects providing multiple, user-selectable, depictions for control objects within a control program development interface/environment.
a and 8b are exemplary graphical displays for connected blocks on a strategy editor canvas and a corresponding strategy appearance object, respectively.
a is an exemplary flowchart illustrating automatically resizing an attribute element when moved to another portion of an appearance object.
a is an exemplary flowchart illustrating creating a declaration connection via GUI-based actions on a strategy editor canvas.
In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
A graphical user interface-based editor facility for defining control programs (e.g., control strategies described herein below) for processes is described, and reference is made to figures illustratively depicting an exemplary embodiment of the invention. In accordance with the illustrative embodiment, the editor facility provides graphical user interface-driven functionality including, among other things: supporting a set of appearance objects, defining a variety of depictions for a single control object (e.g., a control block object, a control strategy object, and the like), connecting input and output attributes of the control objects through graphical user interface object manipulations (e.g., drag and drop actions), establishing execution order of control objects through graphical user interface selection, designating distinct visual appearances for different types of connections, automatically resizing attribute display elements in response to relocation of the element within a control block's appearance object display, and dynamically updating the appearance objects based on changes to parameter settings for a control block.
The illustrative examples provided herein are directed primarily to regulatory control programs (e.g., process control). The regulatory control programs include, by way of example, control objects. The term “control objects” generally refers to software objects that are instantiated and executed to perform a control function. Examples of control objects include control block objects and control strategy objects (including multiple connected control objects and child strategy objects). Such control block objects are typically executed on a cyclical basis by control processors (or other suitable processing hardware/platforms) to maintain process variables (representative of the status of a process) within specified operating ranges. However, many aspects of the exemplary editor facility are applicable to higher level (e.g., supervisory) control programs that determine/specify set points for controlled process variables. In other embodiments, the graphical editor functionality is incorporated into a discrete control program editor.
In an exemplary embodiment, multiple appearance objects associated with a same control object (e.g., control block/strategy object) template are referenced/incorporated within a data structure for the template. The associations are maintained in any object instances created from the template. The object template structure supporting associations with multiple appearance objects facilitates developing/providing sets of industry/application-specific template sets for a control program development/editing environment. Each set of industry/application-specific templates is potentially provided for a particular application/industry to accommodate particular symbol conventions associated with the particular application/industry. For example, a control block may be depicted as a Scientific Apparatus Makers Association (SAMA) symbol. In an embodiment, an Extensible Markup Language (XML) file includes default SAMA symbols for a plurality of control blocks. As understood by one skilled in the art, language for representing control schemes, such as the one developed by SAMA, permit engineers and the like to convey information about a process control scheme. The SAMA symbols are used to detail the complex interworking of, for example, boiler control loops. Many different people, including a distributed control system engineer, sales team, instrument engineers, plant site engineers, plant maintenance technicians, etc., can use the functional layout. In industry, four common control loops are temperature, pressure, level, and flow. These loops are typically comprised of three devices: a transmitter, a controller, and a control valve. Specifically, in the power industry, there are many interconnected control loops comprised of multiple transmitters, controllers, and final control devices. SAMA diagrams represent how these elements relate to and affect one another. Aspects of the invention automatically regenerate the SAMA symbol on the diagram based on the user changing the configuration of a block.
A single control object, having multiple sets of corresponding appearance objects, can be utilized in a variety of control program environments incorporating domain-specific knowledge associated with a particular industry/application for which the control program is developed. Industry/application-specific graphical element sets facilitate more meaningful and intuitive displays of control programs. Furthermore, rather than requiring users to adapt to the conventions of control program development tools, the multiple supported appearance objects for a corresponding control object facilitates adapting the development tools to the knowledge base or conventions of a particular industry or application.
Another feature of the appearance objects that enhances the overall utility of a control program editor is an execution order designator graphical interface. The execution order designator enables a user to manually assign, via a graphical interface, an ordinal value to a control block or connected collection of control blocks (referred to herein as a child strategy) within a parent control strategy. The ordinal value specifies a relative execution order for the control block or child strategy with respect to other blocks having assigned ordinal values. The ordinal value, once assigned, is rendered on the graphical display of an appearance object.
Another aspect of appearance objects is the relative ease with which display elements are relocated within the display space of an appearance object. When a display element (e.g., an input/output attribute) is added, removed, or moved to another portion of the appearance object, the display element is automatically re-sized, and its connection points are re-oriented according to the dimensions/space limitations of the new portion of the appearance object within which the element is relocated.
The appearance objects include displayed connection points that are associated with data structures corresponding to particular input/output attributes for a graphically represented block or child strategy. Connecting a displayed control block/strategy output to one or more control block/strategy inputs is accomplished by simple GUI-based selection operations. For example, using a line/connection drawing tool, a user initially positions a pointer over an output attribute point/handle displayed on a first control block and selects the particular output. Thereafter, the user repositions the pointer over an input attribute handle on a control block and selects the input to complete the designation of a connection (data transmission path) between the selected output and input attributes. Data structures associated with the control program (e.g., control strategy object) are updated according to the graphically displayed connection. Furthermore, the graphical depictions of the connections between control block attributes are assigned user-configurable display attributes that visually indicate the nature of the connection. By way of example, the color of a line can reflect the data source, the data destination, and the type of data passed between two connected I/O attributes (e.g., Boolean, integer, real, string, and the like).
In an exemplary embodiment, the control objects of a defined control program (e.g., a control strategy) are assigned to particular execution groups (referred to as compounds). The execution groups define a particular control processor upon which the control objects are executed in a runtime control environment. After deployment of the defined control program, and during runtime, process variable values corresponding to displayed attributes of the graphically edited control program are provided to the graphical editor of the control objects to facilitate displaying and setting values associated with live process control data sources. The live data values are displayed proximate to corresponding attributes on rendered appearance objects associated with the deployed control objects. In one embodiment, the current values for the attributes are displayed adjacent to a display element for the particular attributes. Thus, the appearance objects are used to provide a graphical representation of control object attribute values in a runtime environment, where the appearance objects monitor the current values of particular watched control program I/O attributes.
Before describing a control program editor facility embodying the present invention, an exemplary process control network environment/facility is briefly described. Aspects of the present invention can be potentially incorporated in a variety of process control facility arrangements, and other physical process control arrangements as known to those skilled in the art. Turning to
The workstation 102 includes any of a variety of hardware/operating system platforms. For example, the workstation 102 includes a personal computer potentially running any of a variety of operating systems such as: Windows XP, Windows 7, Windows Server 2003, and Windows Server 2008.
The workstation 102, by way of example, executes a live data display application. The live data display application extracts runtime data values associated with deployed control programs from a runtime data source (e.g., a runtime database maintained by a control module assembly 108). Exemplary embodiments of the control program editor and live data display applications are described in detail herein below. The extracted data values are rendered upon a graphical display created from previously defined appearance objects and their associated process variable attributes. The database server 104 maintains process control program elements (e.g., object templates and instances) associated with control program development tools and defined process control programs (also referred to herein as strategies). The database server 104 operates as a centralized repository of development information utilized by a plurality of workstations (not shown), such as workstation 102, that has communicative access to the database server 104.
In the illustrative example, the workstation 102 is connected via an Ethernet interface/wiring to an Ethernet switch 106 via a network link 105. Alternatively, a redundant mesh network provides a communicative path between workstations, database servers, and the switch 106. The Ethernet switch 106 can be any of a variety of commercially available switches. For example, the Ethernet switch 106 is manufactured by Allied Telesyn (e.g., model AT-8088/MT). While not specifically depicted in
The switch 106, and potentially other non-depicted switches, is also communicatively coupled to a control module assembly 108. The control module assembly 108 includes one or more control modules (also referred to as control processors) that execute control programs driven by process sensor data values and render output values to devices (e.g., valves, motors, and the like) controlling a plant process. An illustrative example of such a control module is a FOXBORO CP model FCP270, by Invensys Systems, Inc. In other embodiments, process control functionality is carried out in any of a variety of control modules, for example by control programs incorporated into the workstations, intelligent transmitters, or virtually any communicatively coupled device capable of executing control programs, loops, scripts, and the like.
In an embodiment where the control module assembly 108 is the FOXBORO FCP270, workload is divided, within the FCP270, between controlling data communications and executing control programs (blocks). The FCP270 processes data received from an I/O module assembly 110 in parallel using the two distinct hardware modules (e.g., a block processor module and a field communications module). The block processor module repeatedly executes control programs, created by the process control program development facility residing on the workstation 102, according to a relatively long block processing cycle period (e.g., 100 ms). The output values of the control programs executed within the block processor module are driven by process data received by the control module assembly 108 from the I/O module assembly 110. The I/O module assembly 110 includes, by way of example, INVENSYS FBM207 and/or FBM217 fieldbus modules that pass digital input values to the control module assembly 108. Both the process data and the output values calculated by the control programs on the control module assembly 108 are accessed, either directly or indirectly, by the live data display facility executing on the workstation 102. In an exemplary embodiment, the process data provided by the control module assembly 108 is displayed alongside corresponding attribute identifications provided by appearance objects associated with a presently displayed graphical representation of a control program, or a portion thereof.
With regard to the above-mentioned data communications task carried out by the control module assembly 108, the field communications module within the FCP270 receives data from the I/O module assembly 110. The received data is passed to both the above-mentioned block processor module (within the control module assembly 108) and to process data subscribers (e.g., data access servers, data acquisition services and the live data display application running on the workstation 102, etc.) according to an appropriate network communication protocol (e.g., TCP/IP) via the network link 105. The protocols/mechanisms used to provide data to the various subscribers vary in accordance with particular embodiments of the invention.
With continued reference to
I/O module assemblies, in general, incorporate one or more of a variety of specialized interfaces for communicating directly and/or indirectly to a variety of device types, including sensors/actuators embodying particular communications protocols, located at distributed locations in a plant. In the illustrative example, the I/O module assembly 110 includes a Foundation Fieldbus I/O module (e.g., an Invensys field bus module model FBM228) that supports communications between the control module assembly 108 and field devices coupled to a Foundation Fieldbus network 111. In the illustrative embodiment, a set of representative intelligent field devices 114 and 116, containing multiple application-dependent configurable parameters, are connected to the Foundation Fieldbus network 111. The field devices 114 and 116 operate at the lowest level of a control system to measure (e.g., by transmitters) and control (e.g., by positioners, motor switches, and the like) plant activity. A termination assembly 112 communicatively couples the I/O module assembly 110 to the field devices 114 and 116. The termination assembly 112 provides power and power conditioning to the extent needed by the field devices 114 and 116 on the network 111.
Having described an exemplary network environment within which a control program editor embodying the present invention is potentially incorporated, attention is directed to
The control program editor facility depicted in
The items represented in the template toolbox frame area of the strategy editor 202's user interface need not be control objects corresponding to individual control blocks. In an embodiment of the invention, a developer creates compositions of connected control object templates (corresponding to connected control blocks). The resulting intermediate-sized compositions of control object templates, referred to as “child strategies” herein, are added to the template toolbox 200 and presented as templates (e.g., as named template nodes on the hierarchical tree of control program object templates) within the template toolbox frame area of the user interface of the strategy editor 202. A user defines a control program including interconnected (through I/O attributes) control block/child strategy objects. The control program (also referred to as a control strategy herein) is maintained in a control strategy object data structure that includes a set of control objects defined by a user via the strategy editor 202 and appearance object editor 206.
In an exemplary embodiment, a set of control object templates are provided by the template toolbox 200 that are applicable to a variety of technological areas/applications. However, rather than supporting only a single graphical view for each one of the set of control object templates/instances, a user-extensible set of area/application-specific (e.g., power generation, oil refining, chemical production, and the like) graphical views/depictions are supported for individual ones of the set of control object templates/instances. Such area/application-specific graphical views/depictions for particular control objects are implemented by creating, for the particular control objects, associations with corresponding extensible sets of graphical faceplate definitions. Thus, a single control object can be represented by the strategy editor 202 graphical interface in multiple ways based upon the particular type of process within which the control object will ultimately execute. In an illustrative embodiment, the appearance objects 208 provide the graphical faceplate definitions for the control objects contained within the strategy object 204.
As indicated in
Thus, as explained above, the visual/graphical display aspect of a control program control block/child strategy object is provided/supported in a control strategy development/configuration environment by a separately defined component, referred to herein as an appearance object. Furthermore, each control block/child strategy object is associated with an extensible set of user specifiable graphical definitions. Each graphical definition, including specified input/output attributes, is maintained as a distinct appearance object associated with a control object. In this embodiment, one appearance object, of a set of associated appearance objects, is designated to provide a graphical representation for a control object at any particular point in time. However, any one of the appearance objects associated with the control object can be designated by a user to render a desired one of the multiple available graphical representations supported by the appearance objects.
The appearance object editor 206 performs tasks relating to defining the visual/graphical display aspects of a control program. With regard to control blocks and strategies displayed on a canvas area 1002 displayed by the strategy editor 202, as input and output attributes (e.g., strategy input/output declarations) are modified via the strategy editor 202, the changes are passed to the appearance object editor 206. The appearance object editor 206, in turn, updates the associated appearance object for the control object to incorporate the changes. In an exemplary generalized format for the arrangement of information presented by an appearance object for a control strategy (see,
The control program editor facility includes a number of additional interfaces to a variety of components of a control environment. The strategy editor 202 interfaces with a configuration database 210 that maintains an archive of control programs and portions thereof, including control objects and associated sets of appearance objects. The strategy editor 202 stores defined control programs, child strategies, and even individual control objects for later retrieval/editing.
The strategy editor 202 interfaces with a deployment process 212. The deployment process 212 is invoked by a user, through the strategy editor 202, to deploy an entire control program including many control objects. The deployment process 212 is also used to deploy individual control block/child strategies that include a portion of a deployed control program. In an embodiment of the invention, a modified, previously deployed control program is updated by the deployment process 212 on an as-needed basis. In particular, a deployment process scans the set of objects that make up the revised control program, and the deployment service 212 only deploys blocks and block attributes that have been modified since the previous deployment.
Furthermore, the strategy editor 202 interface to the deployment process 212 supports an upload operation in which a user may perform a “blind” upload. During a blind upload, all the configurable attribute values within a control block or child strategy are uploaded from the runtime database in the control module assembly 108, and stored within the configuration database 210. A smart upload operation is supported such that runtime values with database values are presented to a user. The user decides, based upon a comparison of two values for a same attribute, whether or not to upload one or more runtime values into the configuration database 210, or redeploy the block(s). Thus, sending attribute values from the database 210 to the runtime system via the deployment service 212. It is noted that the configuration database 210 corresponds to the database server 104 in
An exemplary control system includes device integration objects that operate as gateways/channels to live data associated with the control system. The strategy editor 202 interfaces with a device integration (DI) object 214 to receive and display live data values extracted from the runtime version of the control strategy object 204. Data for each attribute requested by the strategy editor 202 passes from the DI object 214 to the strategy editor 202. The strategy editor 202 thereafter displays the live data at an appropriate location within a canvas displaying the appearance objects 208 for the control objects contained by the strategy object 204. Conversely, the strategy editor 202 passes values (e.g., new set points, alarm limits, and the like.) to a deployed version of the strategy object 204 via the DI object 214.
The control program editor facility represented in
Both the strategy editor 202 and the appearance object editor 206 are described further herein below.
An exemplary set of object attributes supported in the strategy object 204 are summarized in
A BlockData attribute 302 contains a serialized collection of blocks contained within the strategy object 204.
A DeclarationData attribute 304 contains a serialized collection of I/O declarations that belong to the strategy object 204.
A Diagram attribute 306 contains a graphic definition (“blob”) describing the full-sized graphical display for the control strategy 204, rendered within the canvas area of the graphical interface supported by the strategy editor 202 (see,
An ExecutionOrder attribute 308 contains a list of all the block and child strategy objects in execution order within the strategy. By way of example, the data contained in this attribute is specified using XML in the form:
An FBMChannels attribute 310 is an array where each element of the array corresponds to an I/O channel on the FBM. The FBMChannels attribute 410 is used during I/O assignment expedite navigation to I/O blocks connected to the FBM.
An IOBlocks attribute 314 is an array element where each entry maps to a corresponding entry in the FBMChannels array. The array elements contain the block reference to which a particular FBM channel is connected.
A LinkedToTemplate attribute 316 is a flag indicating whether or not the strategy object 204 is linked to its defining template. The LinkedToTemplate attribute 414 allows a user to break a link between a strategy and its defining template under certain circumstances (e.g., when adding or removing blocks or renaming declarations in order to modify the intended control scheme or logic of the control strategy).
A ModifiedOutsideEditor attribute 318 is set to signify the appearance objects and positional information for blocks and child strategies when initially loading the canvas of the strategy editor 202. The ModifiedOutsideEditor attribute 416 contains an XML data stream in the form:
The “appname” XML property allows a user to specify which appearance object should be used to render an identified block and/or child strategy object within the graphical interface allocated for the strategy object 204, when the control block/child strategy objects have more than one associated appearance objects.
The “X” and “Y” XML properties allow the user to specify where the block or child strategy object's appearance object is supposed to appear on the canvas. If “X” and “Y” are not specified, the default positional algorithm used by the strategy editor 202 will place each successive block or child strategy to a default position. Initially empty, the contents of the “UpdateAction” XML structure is written to by a bulk generation process. The name of the appearance object(s) and positional information is supplied by a user within data contained in a bulk data object. The contents of the bulk data object are cleared when the strategy object 204 is first opened within the strategy editor 202 following bulk generation.
A Period attribute 320 specifies a default execution period applied to all blocks when initially added to the strategy.
A Phase attribute 322 specifies a default phase (within a multi-phased execution cycle for control programs) applied to all block and strategy objects when initially added to the strategy object 204.
A Prefix attribute 324 specifies a prefix that is appended to all blocks within the control strategy 204.
A GraphicsGUID attribute 326 contains a GUID which matches a shape on a graphical diagram. The GraphicsGUID attribute 326 is in the form:
{8F4871FA-5915-47FE-BB2C-862E1B4E99CD}.
The GUID value is used to link an IgObject in the configuration database 210 to the graphics shape, and is populated when a strategy template is dragged/dropped onto another containing strategy.
The above-described data content is included with control strategy objects. However, every control object (e.g., control block object, control strategy object) that can be associated with multiple appearance objects includes several data structures utilized within the appearance object editor 206 and/or other processes such as the strategy editor 202 that closely interoperate with the appearance object editor 206 to support potentially multiple appearance objects associated with the control object/template. These data structures are identified in
An AppearanceObjectsList primitive attribute 352 stores an appearance objects list. The AppearanceObjectsList attribute 352 facilitates keeping track of all of the appearance objects that have been defined for a particular block or strategy object template. There is one entry in the list for each page control defined within the appearance object editor 206. The first appearance object identified in the appearance object list is treated as the “preferred” (or default) appearance object that is used when initially rendering the control object on a control strategy canvas.
An XmlDefaultAppearance attribute 354 stores a listing of attributes that appear on a default appearance object. The XmlDefaultAppearance attribute 354 contains data specified using XML in the form:
To enhance performance, an XMLDescription attribute 356 specifies a list of control object attributes. The XMLDescription attribute 356 includes a series of comma-separated values, each value containing the following:
Finally, each control object that can be associated with an appearance object includes graphics (e.g., VISIO) stencils 358, delivered as part of each block or strategy object template. In an embodiment, the VISIO stencils 358 may contain SAMA symbols. The stencils are copied to required locations when an object is first opened. The appearance object editor 206 makes no modifications to the format.
The component interfaces supported by the strategy editor 202 and strategy object 204 to carry out the above-described strategy editor 202's functionality are now described with reference to
A CreateBlock function 402 creates a new block object instance. An input for CreateBlock function 402 includes the name of the block to be created and the block template from which the block object instance is to be created. A CreateBlock function 402 output is a new block object of the given name and type.
A RemoveBlock function 404 removes an identified block object from the strategy object 204. An input for RemoveBlock function 404 includes the contained name of the block object to be removed and a flag indicating whether execution order needs to be updated in other remaining blocks in the strategy object 204.
A RenameBlock function 406 assigns a new tagname or contained name for a block object. An input for RenameBlock function 406 includes the old block object name, the new name, and whether the name to be changed is the tagname or the contained name.
In the illustrative embodiment, declarations are used to specify an input or output of a control strategy object; and thus, provide a point of connection to other control strategy inputs/outputs. A CreateUniqueDeclarationName function 408 creates a unique declaration name within the strategy object 204. A CreateDeclaration function 410 creates a declaration instance, and the input includes a declaration name and type (input or output). The CreateDeclaration function 410 returns a declaration object of the indicated type. A RemoveDeclaration function 414 removes a named declaration from the control strategy 204. A RenameDeclaration function 416 assigns a new name to a declaration, and an input for RenameDeclaration function 416 includes the old and new declaration name.
In the illustrative embodiment, child strategy objects include collections of connected control objects. A CreateUniqueStrategyName function 418 creates a unique child strategy name within the strategy object 204 container. A CreateChildStrategy function 420 creates a new child strategy object. An input for the CreateChildStrategy function 420 includes a name for the new child strategy object to be created and a flag indicating whether contained objects should be created. The CreateChildStrategy function 420 returns a child strategy object. A RemoveChildStrategy function 422 removes a named child strategy from the control strategy object 204. A RenameChildStrategy function 424 assigns a new tagname or contained name to a child strategy object. An input includes the old and new names, as well as, whether the changed name is a contained name or a tagname. If the contained name is changed, then all sibling strategy object input declaration references are updated to include the new name assigned to the child strategy object.
A set of functions address the I/O assignments between fieldbus module channels and corresponding control block objects. An AddBlockIOAssignment function 426 adds an I/O assignment between a fieldbus module channel and a control block object. The input includes the name of an I/O block object and a fieldbus module channel. A RemoveBlockIOAssigniments function 428 removes all I/O assignments between a fieldbus module and a control block object. An input for RemoveBlockIOAssigniments function 428 includes the contained name of the control block object.
A Compile function 430 performs a bulk compilation of all sequence and programmable logic blocks contained in a strategy object. An UpdatedFromParent function 432 automatically updates a control strategy when the control strategy's parent template changes. The following are updated in the control strategy during the operation: added/renamed/deleted block objects, added/renamed/deleted declarations, added child strategies, and an updated execution order. A DetachFromParent function 434 detaches a control strategy object (e.g., strategy object 204) from its parent template. Detaching a control strategy object from its parent template prevents further changes made in the parent template from propagating down to the derived control strategy.
A set of interface functions supported by the strategy object 204 enable access to properties associated with declarations. A Name property 436 retrieves or sets a declaration name. A GUID property 438 retrieves or sets a declaration GUID. A Reference 440 retrieves or sets a declaration's reference string. A Type property 442 retrieves or sets the type (input/output) of the declaration. A Locked property 444 retrieves or sets the lock status of the declaration (e.g., unlocked, lock in me, locked in parent). An UpdatedFromParent function 446 updates the declaration from a defining declaration object. A DetachFromParent function 448 detaches the declaration from its defining declaration template.
An appearance object interface enables access to appearance object properties associated with the strategy object 204. A DefaultInputAttributes property 450 retrieves or sets input declarations on the strategy object 204. A DefaultOutputAttributes property 452 retrieves or sets output declarations for the strategy object 204. An AllAttributes property 454 provides all declarations on the strategy object 204. As noted above, a single control block or strategy object can have multiple potential appearance objects. An AppearanceObject property 456 retrieves or sets the appearance object that will be associated with the strategy from a group of potentially usable appearance objects.
Appearance Object Editor 206
Having described the strategy editor 202 functionality, attention is now directed to the appearance object editor 206 and appearance objects 208. The appearance object editor 206 is, by way of example, a component object control that is launched via a generalized control program configuration application that also hosts the strategy editor 202. The appearance object editor 206 is accessed, for example, via a tab control on the strategy editor 202 graphical user interface for each control block or strategy object template.
When activated, the appearance object editor 206 first loads in any graphics stencils (e.g., VISIO stencils) specified as being needed for a currently selected appearance object. The stencils are located in a block or strategy file that is imported into the configuration environment. When a template derived from one of the graphics stencil files is opened, the files are automatically copied to a proper directory on the local platform where the control program configuration application is running.
If an appearance object for a control block or child strategy object is being edited for the first time, the appearance object editor 206 loads a default appearance object for that block or strategy object template. Alternatively, a SAMA appearance object for control blocks can be utilized. However, if a selected control block does not support a SAMA symbol, the default appearance object is utilized. Once the appearance object is loaded, the appearance object editor 206 permits editing the appearance object.
Explained in detail further herein below, the appearance object editor 206 enables a user to perform the following actions: modify a default appearance object for a control object by resizing and/or dropping or moving attributes displayed on the default appearance object, change which attributes are displayed on the default appearance object, and determine where the attributes appear on the default appearance object. The appearance object editor 206 also enables a user to create a new appearance object using standard pre-defined features, which interact with the user in a very predictable manner, for example, automatically resizing properly when attributes are added or removed during configuration. And the appearance object editor 206 enables a user to create a new appearance object using non-standard features in a free form manner, which are often used to represent control objects in a control program development/configuration application for a particular industry (e.g., SAMA symbols within the Power industry, and the like) and to create multiple appearance objects for the same control block or strategy object template. A separate graphics page control is created for each appearance object defined by the user. The user names the page controls (effectively naming the appearance object) and orders the appearance objects for a same control object as desired.
During an edit session using the appearance object editor 206, a user defines a preferred appearance object, which will be the first display option the next time the appearance object editor 206 is invoked on the block or strategy template. The preferred appearance object is also used to generate a graphical representation for an associated control object when the block or strategy template, with which the preferred appearance object associated, is selected to create a corresponding control block or strategy object via the strategy editor 202.
The “preferred” appearance object is determined as follows: first, the appearance object appearing in the first page control of the appearance object editor 206 for a particular selected block or strategy object/template; second, the appearance object currently edited by the user, whether it be a modified pre-defined or fully customized appearance object; and third, the default Foxboro appearance object.
Having described the general functionality of the appearance object editor 206, the component interfaces supported by the appearance object editor 206 and the appearance objects 208 to carry out the above-described appearance object editor 206's functionality are now described with reference to
The LoadDefaultStencils method 502 opens a default set of stencils for the appearance object editor 206. In particular, the LoadDefaultStencils method 502 creates an instance of a stencil manager and then utilizes the instance to retrieve a hidden stencil entitled “Support”.
A BuildDefaultAO method 504 constructs a default appearance object for an identified control object (block or strategy) template. The BuildDefaultAO method 504 input includes an indicator of whether to preserve the width of the appearance object and whether zooming in on the graphical element is supported. The output of the BuildDefaultAO method 504 is a new appearance object instance graphically represented in the center of a designated area (e.g., current editor page) on the editor 206's display.
A CenterAO method 506 is invoked to center an appearance object in a current designated area (editor page). In addition to centering the appearance object's display element, the CenterAO method 506 returns the updated center coordinates of the appearance object.
An AddParameters method 508 adds parameters to a default appearance object for a control object. The input includes the appearance object. The AddParameters method 508 calls a GetDefaultIOParameters method 510 and inserts the returned parameters. The AddParameters method 508 returns the default appearance object with updated input, output, and information parameters.
The GetDefaultIOParameters method 510 extracts all attribute names of input, output, and information parameters for an identified control object (e.g., the contents of XMLDefaultAppearance Attribute 354) and returns the attribute names to the caller in the form of segregated and sorted lists. A first list includes the names of all the input/output parameters. A second list includes the information parameters for the control object.
A CalculateAOReadOnlyStatus method 512 determines whether an appearance object is read-only. The CalculateAOReadOnlyStatus method 512 determines whether or not an appearance object is read-only by first determining whether a parent of the appearance object is in read-only mode, then determining whether the AppearanceObject attribute 350 is locked, and finally checking to see if the default appearance object is being displayed.
A next set of functions associated with the appearance object editor 206 exist on a control that hosts the appearance object editor 206. An Initialize function 520 is responsible for a control containing the appearance object editor 206. An input for Initialize function 520 includes a form for a parent of the appearance object editor 206. The Initialize function 520 establishes a pointer to a manager class (a static class available to all editors) and initializes the control to receive/subscribe to events relating to the appearance object editor 206.
A DataChange method 522 processes data change events for an appearance object. An input for DataChange method 522 includes an identification of a changed item and a new value of the item. The DataChange method 522 accesses appearance objects from the appropriate attribute and updates pages within the appearance object editor 206 based upon the changed data. A resulting new appearance object is stored in a temporary graphics (e.g., VISIO) file.
An Apply method 524 stores an appearance object. In particular, the Apply method 524 calls a serialization method on the associated control object in order to store the appearance object in persistent memory.
A Close method 526 closes the control in an orderly manner by deleting a file containing a previously opened appearance object and unsubscribing from all the events previously subscribed to during the Initialize method 520.
A next set of functions relates to the operation of the appearance object editor 206 to facilitate editing a loaded appearance object by a user. An UpdateEditorUI method 530 updates a user interface on the appearance object editor 206 based upon various events/conditions. The UpdateEditorUI method 530 updates the enabled/disabled state of all buttons on the user interface based upon conditions such as a read-only mode or a user editing an appearance object.
An UpdateUpdateAOBtnStatus method 532 enables or disables update buttons. The UpdateUpdateAOBtnStatus method 532 determines whether objects have been added to the appearance object by the user, in response the appropriate update button is enabled.
An UpdateFinishFrameStnStatus method 534 enables/disables Finish Frame buttons on the user interface of the appearance object editor 206 based upon whether any objects have been added to the appearance object.
A btnResetAO_Click method 536 is invoked when a Default button is selected. Inputs for the btnResetAO_Click method 536 include event arguments and the source of the events. The btnResetAO_Click method 536 is invoked when a user has edited an appearance object and decides to re-establish the default appearance object. When selected, this method calls the BuildDefaultAO method 504.
A btnEditAO_Click method 538 is invoked when an Edit button is selected. Inputs for the btnEditAO_Click method 538 include event arguments and the source of the events. The btnEditAO_Click method 538 is invoked when a user selects the Edit button in order to edit the existing appearance object. The btnEditAO_Click method 538 decides the state of an appearance object (e.g., read-only, and the like), and prepares it for editing.
A btnBuild_Click method 540 is invoked when a Create Frame button is selected. Inputs for the btnBuild_Click method 540 include event arguments and the source of the events. The btnBuild_Click method 540 is invoked when a user selects the Create Frame button to build a new appearance object using defined features. After setting the proper state, the method opens a PortAreas stencil in the editor, and erases the contents of a canvas. In the illustrative embodiment, the appearance object editor 206 supports creating new appearance objects from multiple sources.
A btnFinish_Click method 542 is invoked when a Finish Frame button is selected. Inputs for the btnFinish_Click method 542 include event arguments and the source of the events. The btnFinish_Click method 542 is invoked when the user selects the Finish Frame button in order to finish building a new appearance object. The method is responsible for realigning all the features into a single cohesive appearance object display element.
Another group of interface functions supported by the appearance object editor 206 are directed to page maintenance. An OnAddNewPage method 550 is invoked when a user selects Add from a page control within the appearance object editor 206. In response the OnAddNewPage method 550 invokes a method on a graphical editor (e.g., a VISIO Document.Pages.Add method) to add a new page to the page control.
An OnDeletePage method 552 is invoked when a user selects Delete from a page control within the appearance object editor 206. The OnDeletePage method 552 invokes a method on the graphical editor to remove the page from the page control within the appearance object editor 206.
Aspects of the present invention involve graphically displayable faceplates for control objects for use in a configuration environment. Turning now to
An information area 602 in the default appearance object graphical display identifies a set of attributes and their current values. The values, though not shown, would be displayed to the right of the identified attributes (e.g., IOM_ID, PNT_NO).
The illustrative appearance object display also includes a left port area 604 that is generally allocated to input I/O attributes and a right port area 606 that is generally allocated to output I/O attributes. The port areas 604 and 606 are reserved for connectable attributes. In an illustrative embodiments, rotation of the port areas is supported in any direction (e.g., left, right, top, bottom) to facilitate connecting an I/O attribute to another I/O attribute or variable within a control strategy. I/O connection points (marked by an x) are provided for each I/O attribute.
In the illustrative embodiment, the default appearance object graphical faceplate is arranged such that the ports area 604 and 606 are placed along-side one another and above the information area 602. However, the relative positions of the various components of the exemplary display for a control block appearance object, and the type of information provided in the displayed components, will differ in accordance with alternative embodiments. For example, in an alternative embodiment, the information area 602 is placed between the left port area 604 and the right port area 606. Furthermore, a user will be allowed to place an object's name and execution order anywhere within a graphical appearance object display for a control block object. In addition to the left port area 604 and the right port area 606, the user has the ability to apply a top port area, and a bottom port area to the appearance object, if desired.
Furthermore, as will be explained further herein below, a user may customize a default appearance by moving an input attribute to another area (e.g., from the left port area to the right port area) within the appearance object's graphical display. In the event that the destination area of a moved attribute does not fit the attribute's originally specified dimensions, the shape of the attribute display element, or alternatively the destination area, is automatically resized. The orientation of the attribute display element is rotated to fit the orientation of attributes within the destination area of the appearance object. Furthermore, any connection points in the relocated attribute display element are modified to ensure the connection point resides on an outer edge of the appearance object.
The exemplary embodiment of the present invention supports fully customized appearance objects. Such customized appearance objects are useful for creating a set of industry/application-specific faceplates for a set of control block/strategy object templates. Using the appearance object editor 206, a user creates a fully customized appearance object, using graphics, bitmaps, pictures, and the like. An example of such a customized appearance object is provided in
A default appearance object for a child strategy, depicted by way of example in
Turning now to
In the illustrative example, when the appearance object editor 206 is invoked for a first time on a control object template, a default appearance object (see, e.g.,
After selecting the Edit button to enter the edit mode with regard to the default appearance object, the user can perform any of a variety of display element manipulations on the displayed graphical representation of the appearance object. Such manipulations include resizing by grabbing and dragging a resize handle on a side of the appearance object graphical element. Furthermore, while in the edit mode users rotates the entire graphical representation of the appearance object by grabbing and dragging a rotation tool handle. Both such graphical manipulation tools are supported by the VISIO graphical display editor.
The appearance object editor 206 supports a variety of manipulations to the position of attributes within an appearance object's graphical display. While in the Edit mode, a user selects individual attributes and move them up or down within the same port area by dragging and dropping the selected attributes in a new location within the same port area.
Furthermore, users are also able to move an attribute from a first area (e.g., a left port) to a second area (e.g., a right port) within an appearance object's graphical display area. In particular, users move such attributes by selecting and dragging a particular attribute from one area in the appearance object to another. In an embodiment, the only restriction is that a non-connectable attribute cannot be moved into a port area (rectangular areas within the appearance object reserved for those attributes that can connect to another).
Turning to
Finally, in some instances space requirements of an attribute's display element (e.g., a long attribute name) prevent shrinking of the attribute's display element. To accommodate this case, the appearance object editor 206 also adjusts, if necessary, both the source and the target areas, reducing the size of the area that the attribute element was dragged from, and/or enlarging the size of the area that the attribute element was dragged to accommodate the attribute display elements to a new area within the appearance object.
A user removes an attribute displayed within the appearance object's graphical display by dragging and dropping the attribute off the physical boundary defining the appearance object. A confirmation dialog is generated to verify that a user indeed intended to remove the attribute display element rather than merely move the attribute display element to another area within the appearance object.
A user adds an attribute to an appearance object by right clicking within the display area of an appearance object's graphical display area and selecting an Add Parameter option within a context menu that is thereafter generated by the appearance object editor 206. In response, a dialog box is generated that contains a filtered list of attributes for an associated control object that can be placed on the appearance object. A user specifies a filter of Inputs, Outputs, Configurable, Settable, and Data Store, or any combination of those filters, for the type of attributes to display within the dialog. Attributes that satisfy the specified filter are enumerated within the dialog box for selecting an attribute. In an embodiment, only attributes that are not already displayed within the appearance object appear within the enumerated list regardless of filter setting. When a connectable attribute is placed in a port area, an indicator (e.g., a yellow diamond representing the connection point) is displayed at the side of the attribute's display element. The connection points for attributes are displayed when the appearance object is selected on the appearance object editor 206.
In an embodiment of the invention, a user establishes a connection between two blocks, or a block and a strategy, by selecting a connection point from a source (output) attribute and thereafter dragging a GUI pointer to an intended sink (input) attribute. Connectable attributes placed in a non-port area shall not be accompanied by a yellow diamond, but rather appear as informational attributes only.
The Foxboro appearance objects editor control area 904 also includes a Default control button. When selected by a user, the Default control reverts an appearance object back to the default appearance state—even after the appearance object has been saved.
The appearance object editor 206 enables a user to create an appearance object consisting of standard Foxboro components by selecting a Create Frame Button within the Foxboro appearance objects editor control area 904. Selecting Create Frame invokes the Port Areas (e.g., left and right ports 604 and 606) stencil, which contains elements that the user can drag/drop onto the appearance object editor 206 canvas to make a new default appearance object. Selecting a Title Area graphical display element allows the user to create an area containing the object's name, type, and execution order number. Selecting the Information Area display element enables the user to create an area that displays the name and default value (separated by a colon) of any attribute placed inside it. Selecting a Left Port element allows the user to create an area wherein connectable attributes placed inside will be aligned with the left side of the area. Selecting a Right Port element allows a user to create an area wherein connectable attributes placed inside will be aligned with the right side of the area. Selecting a Top Port element allows the user to create an area wherein connectable attributes placed inside will be aligned with the top edge of the area. Selecting a Bottom Port element allows the user to create an area wherein connectable attributes placed inside will be aligned with the bottom edge of the area. Selecting a Left-Right Port element allows the user to create two areas joined together—a left and right port area. Selecting a Left-Info-Right Port element allows the user to create three areas joined together—a left, info, and right port area.
Once all elements have been dropped into the appearance object editor 206, the user selects a Finish Frame editor control button within the Foxboro appearance objects editor control area 904 to end editing, and re-align the elements into an appearance object that can be utilized in a predefined controlled way. Once the appearance object has been initialized, the user may add, move or delete attributes as described in the previous section.
The appearance object editor 206 furthermore includes a Custom appearance objects editor control area 906 that allows a user to create a fully customized appearance object consisting of images and attributes arranged in a free form manner (i.e., a Custom appearance object) by selecting the Create Frame button option in the Custom appearance objects editor control area 906. Selecting a Create Frame button invokes the Port Areas Visio stencil, which contains elements that the user can drag/drop onto the Appearance Object Editor canvas to make a new custom appearance object, including Name and Execution Order elements. Once the Create Frame button has been selected, the user is able to place any graphic object (e.g., a bitmap) into the work area. For example, the user places a bitmap representing a PID SAMA symbol into the work area, as depicted in the canvas area of
The appearance object editor 206 supports adding attributes to a custom appearance object. In the illustrative embodiment, a user right-clicks on the appearance object and selects an Add Parameter context menu option to invoke a Select Parameters dialog. As with the Foxboro appearance objects described above, the user determines which attributes are displayed in the Select Parameters dialog by selecting a parameter filter and then drags/drops attributes from the dialog onto the custom appearance object. The added attribute can be positioned anywhere on the custom appearance object. Attributes placed on a custom appearance object are not selectable. Therefore, care must be taken to place them in the correct location when initially dropped from the Select Parameter dialog. If the added attribute is a connectable attribute, then the appearance object editor 206 places a marker (e.g., a yellow diamond) representing the connection point for the attribute at the location where the attribute was placed on the appearance object. The appearance object editor 206 automatically determines a direction in which a connection line should be routed when a connection is made to an attribute on a custom appearance object (e.g., if the attribute is near the top of the appearance object, then the connection line will be routed through the top of the appearance)
Once all attributes have been placed on the custom appearance object, the user invokes a save operation on the appearance object editor 206 to preserve the work and store the new appearance object within the configuration database 210.
The attributes placed on a custom appearance object are not selectable. Therefore a user must right-click on a particular appearance object and select “Delete Parameter” to remove an attribute. A dialog box appears that displays a list of attributes that are currently located on the appearance object. To delete an attribute, a user selects the desired attribute within the dialog and then confirms the selection. When an attribute is deleted from a custom appearance object, the appearance object editor 206 removes any corresponding symbol from the graphical display of the appearance object.
In an exemplary embodiment, an attribute's name is normally not visible to the user in a custom appearance object. Therefore, to display attribute names on a custom appearance object, a user right-clicks on the custom appearance object and selects Show Parameter Names from a context menu rendered by the appearance object editor 206 for the custom appearance object. When selected, Show Parameter Names causes information symbols to appear next to each attribute on the appearance object. When the cursor is placed over one of these information symbols, a tooltip appears displaying the attribute name associated with the symbol. To remove the information symbols from the custom appearance object, a user right-clicks on the appearance object and selects Hide Parameter Names from the context menu.
The appearance object editor 206 supports adding graphics to an existing appearance object. The user places additional graphical elements into an existing appearance object. After updating the appearance object, the new graphical elements are fully integrated into the graphical display of the existing appearance object. The appearance object is treated as a single graphical object within the appearance object editor 206. To add graphical elements to a standard Foxboro default appearance object, a user enters the edit mode by selecting the Edit button within the Foxboro appearance objects editor control area 904, adds the desired graphical elements, and then selects Update within the Foxboro appearance objects editor control area 904. Similarly, to add graphical elements to a user-defined Foxboro appearance object or a custom appearance object, the user adds the desired graphical elements and then selects the Update button within the appropriate appearance objects editor control area 904 or 906.
The appearance object editor 206 also supports renaming an appearance object. A user renames an appearance object by right-clicking on the desired appearance object page control (e.g., SAMA.sub.--1 tab 908) within the appearance object editor 206's user interface to launch a context menu. Thereafter, a user selects a Rename Appearance Object menu option. The user thereafter enters a new name for the appearance object.
As mentioned above, the graphical control program editor facility supports multiple appearance objects for a same control object template. In an exemplary embodiment, a user creates multiple appearance objects for a same control object (e.g., control block, control strategy) template within the configuration database 210 by right-clicking within the page control of any appearance object to expose a context menu. Thereafter, the user selects an Add Appearance Object menu option. In response, the appearance object editor 206 creates a new page (e.g., SAMA.sub.--2 appearance object page represented by tab 910) initialized with the default appearance object for the control block or strategy object template being edited. After an appearance object is added to a control object template, each time the appearance object editor 206 is invoked on the control object, each of the associated appearance objects is exposed via the page control tabs (e.g., tabs 908 and 910). There are no restrictions on the type of appearance objects that users are able to create via the additional pages corresponding to multiple appearance objects for a control object template. Any added page may contain a default appearance object with attributes rearranged, a user-defined Foxboro appearance object, or a fully customized object such as a SAMA symbol.
The appearance object editor 206 supports deleting appearance objects from a control object template. By way of example, a user deletes an appearance object by right-clicking on the desired page control tab (e.g., SAMA.sub.--2 tab 910) to expose a context menu from which the user selects the Delete Appearance Object menu option.
The initial appearance object displayed for a control block or strategy object template selected from the control object template area 902 and dropped into the canvas area 912 is the appearance object occupying the first appearance object page control (e.g., SAMA.sub.--1 tab 908). A user re-orders the page controls corresponding to the multiple appearance objects for a selected control object template by selecting and dragging the desired page control tab to the desired relative position within the set of page control tabs below the canvas area 912.
In an exemplary embodiment, a user is able to dynamically select any one of a set of previously created appearance objects for a control object from within the strategy editor 202. With reference to
In response to the newly designated appearance object, the strategy editor 202 performs a set of automated tasks to update affected data structures and graphical user interfaces. In particular, the strategy editor updates the data structure for the selected control object to reflect the new preferred appearance object. The graphical representation for the new appearance object replaces the previous graphical representation. Furthermore, the connections are adjusted in accordance with the new appearance object's configuration. In addition to handling new positions of connections on the new appearance object, connection lines that were routed to an attribute on the replaced appearance object that are no longer visible on the new appearance object are removed from the canvas area of the strategy editor 202′ graphical user interface.
Having described the user actions supported by an exemplary appearance object editor 206 attention is directed to the functional capabilities of the strategy editor 202 by reference to an exemplary graphical user interface depicted in
In the illustrative embodiment, each control block object within a control program is an instance of a control object class created to model a particular type of control block. All instances of control block objects are serialized (stored in persistent storage) to a single attribute within the strategy object. As control objects are created by selecting them from the template toolbox 200 and designating a position for a graphical representation of the selected object within a current control program canvas graphical interface, a control object instance of the appropriate object class is created on a control program container object such as the strategy object 204.
In an embodiment, a control block object is assigned two names. A “contained name” is the name by which the control block object is referenced within its control strategy. A “tagname” is the name by which the control block object is known within a distributed process control runtime environment. The strategy editor 202 supports users assigning both the contained name and the tagname for a control object.
The control programs are deployed to particular control processors for execution in a runtime environment. One way to make such a designation is to assign the control program, or portion thereof, to a compound. The compound thereafter executes upon a particular control processor (or other appropriate control program execution hardware). A control program can be assigned directly to a compound. In the exemplary embodiment, control programs that specify a compound as a container/execution host are known as “top-level” strategy objects. Like control block objects, a top-level strategy object has two names: a contained name and a tagname. The contained name is the name by which the top-level strategy object is known within its compound. The tagname is the name by which the strategy is known outside of its compound (e.g., for designating a source or destination of I/O information provided by/to another object). Users can rename either the contained name or the tagname of a top-level strategy.
Child strategies are embedded within another strategy (either top-level or another child). Child strategies are embedded by selecting a child strategy template from the template toolbox 200 displayed in a template toolbox area of a graphical user interface supported by the strategy editor 202, and thereafter depositing a graphical representation of the selected child strategy object within a canvas area on the graphical user interface. A child strategy object also has two names: the contained name (e.g., the name by which the strategy object is known within its container) and the tagname. Users can rename either the contained name or the tagname of a child strategy object.
The strategy editor 202 automatically synchronizes a control program database with changes made to a control program (or portion thereof) graphically depicted within the strategy editor 202's canvas area. Thus, if a user deletes a control block representation on the canvas, the corresponding control block object instance and any associated connections are removed from the data structure corresponding to the contents of the canvas. If the user deletes a child strategy from the canvas, it is removed from both the canvas data structure and the configuration database 210. In this case, the child strategy is not removed from the configuration database 210 until the parent strategy is checked-in. Until that point, the user could still perform an “Undo Check Out”, negating any work they had done in the strategy editor 202.
Operation of the strategy editor 202 is described herein below with reference to various supported strategy creation and configuration capabilities. A user creates a strategy template by right-clicking on any strategy template to render a context menu and thereafter selecting a New->Derived Template menu option. When created, the new strategy template appears in: a Template Toolbox area 1004 and within a tree structure, depicting the derivation relationships between templates, under an appropriate base template.
A user creates a strategy instance by right-clicking on any strategy template to invoke a context menu and thereafter selecting the New->Instance menu option deletes a strategy instance or template from the Template Toolbox 200 by right-clicking on the object instance or template and selecting a Delete menu option.
With continued reference to
A user adds control objects to a strategy by locating a desired block or strategy template within a control object template area 1004, selecting the template, and then depositing the template at a desired location on the canvas area 1002. In the illustrative embodiment in
Once placed within the strategy editor 202's canvas area 1002, the appearance objects associated with the deposited objects are fully accessible for editing using the appearance object editor 206. In summary of such functionality described herein above: (1) the user may add and remove attributes displayed on an appearance object; (2) the user may change the location of an attribute displayed on an appearance object; (3) the user may select a preferred appearance object (for those objects that have multiple appearance objects defined), e.g., Control Strategy Declarations/Connections; and (4) the user may modify the attributes for the appearance object.
In an exemplary embodiment, connections between input and output parameters of control block objects within different strategies are facilitated by globally recognized variables referred to herein as “declarations”. A declaration is an instance of a class created to model the information associated with a declaration. When a declaration is created, an instance of the class is created, and serialized to an attribute on the strategy object.
The declarations are identified in an Input Declarations area 1010 and an Output Declarations area 1012 of the graphical user interface of the strategy editor 202. On the canvas area 1002, the declarations (e.g., Primary, Secondary, Initialize, Output) are represented by tags connected to corresponding control object I/O attributes. A user creates input or output declarations for a strategy to support inter-block connections between blocks and nested strategies, and blocks in different strategies.
In an exemplary embodiment, as declarations are added to a strategy, the appearance object editor 206 (running in the background) automatically updates corresponding appearance objects for the strategy. By way of example, the new Input declarations are added on the left side of the control strategy's appearance object and new output declarations are added on the right side. The appearance object for the strategy is not utilized unless the strategy is dropped into a containing strategy. However, if the strategy is dropped into another strategy canvas, then the currently preferred appearance object of the “child” strategy graphically represents the child strategy (including I/O declarations) in the canvas area for the containing strategy.
Turning to
After that, the user connects the new declaration to an I/O attribute on a control object displayed in the canvas area 1002 through a set of GUI operations. During step 1060 the user selects the named declaration in the declaration area 1010 or 1012 and drags the declaration to the canvas area 1002. In response, the strategy editor automatically generates an input or output tag based upon the named declaration's type. A graphical tag (e.g., Primary tag) representation is rendered by the strategy editor 202 at the drop location in the canvas area 1002.
Thereafter, during step 1070, the user creates a connection between the graphical tag declaration and a graphically depicted I/O attribute on a block or child strategy appearance object using GUI-based pointer selection operations (e.g., click to select a source, move pointer to sink, and click to complete connection). A graphical connection is rendered to indicate the declaration/attribute connection. The strategy editor 202 updates the underlying object data structures corresponding to the graphically depicted declaration-to-attribute connection.
The declarations are identified in an Input Declarations area 1010 and an Output Declarations area 1012 of the graphical user interface of the strategy editor 202. On the canvas area 1002, the declarations (e.g., Primary, Secondary, Initialize, Output) are represented by tags connected to corresponding control object I/O attributes. The user creates input or output declarations for a strategy to support inter-block connections between blocks and nested strategies, and blocks in different strategies.
In an exemplary embodiment, as declarations are added to a strategy, the appearance object editor 206 (running in the background) automatically updates corresponding appearance objects for the strategy. By way of example, the new Input declarations are added on the left side of the control strategy's appearance object and new output declarations are added on the right side. The appearance object for the strategy is not utilized unless the strategy is dropped into a containing strategy. However, if the strategy is dropped into another strategy canvas, then the currently preferred appearance object of the “child” strategy graphically represents the child strategy (including I/O declarations) in the canvas area for the containing strategy.
Turning to
The user then connects the new declaration to an I/O attribute on a control object displayed in the canvas area 1002 through a set of GUI operations. At step 1060, the user selects the named declaration in the declaration area 1010 or 1012 and drags the declaration to the canvas area 1002. In response, the strategy editor automatically generates an input or output tag based upon the named declaration's type. A graphical tag (e.g., Primary tag) representation is rendered by the strategy editor 202 at the drop location in the canvas area 1002.
At step 1070, the user creates a connection between the graphical tag declaration and a graphically depicted I/O attribute on a block or child strategy appearance object using GUI-based pointer selection operations (e.g., click to select a source, move pointer to sink, and click to complete connection). A graphical connection is rendered to indicate the declaration/attribute connection. The strategy editor 202 updates the underlying object data structures corresponding to the graphically depicted declaration-to-attribute connection.
The above described steps create the first of two points connected via the created declaration. To complete the overall connection, during step 1080 an association (referred to herein as a “connection reference”) is created between the declaration and another suitable I/O attribute (e.g., a complimentary declaration for an I/O attribute on another strategy). Connections are utilized to connect the I/O declarations of a strategy to the I/O declarations of other strategies. Therefore, in an embodiment, in addition to a name, each declaration also supports a connection reference that is displayed in the declarations areas 1010 and 1012. When a connection reference is created for an input or output declaration, the connection reference is initialized with the string “---.---” or any other suitable indicator of an undefined value. A connection can be made between an Input declaration (or sink) and an Output declaration in another strategy (or source). If the strategy is a top-level strategy (i.e., directly connected to a compound), then the Input declaration may additionally be connected to an attribute on the compound itself. In an embodiment, a connection reference for an Output declaration can only be specified for a block attribute on the strategy itself, or to another declaration in a child strategy. A user, by way of example, browses for a connection reference for a source declaration by double-clicking within the desired reference field to expose a browse button. Selecting the browse button invokes an Attribute Browser through which a user identifies and designates an appropriate I/O declaration to enter as the new declaration's connection reference.
Referring briefly to
The strategy editor also supports establishing one or more hyperlinks to other strategies from any I/O declaration represented on the strategy canvas 1002. To create a hyperlink, the user invokes a context menu on an I/O declaration and selects a Create Hyperlink To menu option to invoke a Create Hyperlink To dialog. Using the Create Hyperlink To dialog, the user adds hyperlinks to one or more strategy instances in the configuration database 210 by selecting the Add button.
The strategy editor also supports navigating to a strategy specified as a hyperlink on an I/O declaration. A context menu for the I/O declaration includes a Navigate To menu option. After selecting the desired strategy appearing in the Navigate To dialog, the strategy editor 202 for the selected strategy is invoked and a graphical representation of the strategy is presented to the user on the strategy editor 202's graphical display.
Finally, as noted above, the strategy editor 202 is closely coupled to the appearance object editor 206. Therefore at step 1090, in association with creating the new declaration on the strategy (regardless of whether a connection reference is designated), the appearance object editor 206 opens corresponding appearance object definitions and adds the I/O attribute to the appearance objects.
The strategy editor 202 also supports streamlined establishment of connections, with customized connection type-specific appearances, between connectable attributes of control objects using graphical user interface actions (e.g., drag & drop). The strategy editor automatically determines the indicated I/O attributes and completes the connection by updating associated data structures on the affected control objects. In an exemplary embodiment, the strategy editor 202 supports automatic/graphically constructed connections between the following elements:
Within the strategy editor 202, when the cursor/graphical pointer is placed over a potential source attribute, the cursor's appearance changes to an “okay to begin connection” state. A connection is established by placing the cursor over the source of the connection, selecting the source end (e.g., clicking), repositioning the cursor over an intended sink end, and then selecting the sink end (e.g., clicking). Furthermore, the strategy editor 202 provides visual feedback as a user repositions the cursor to select a sink end for the connection. For example, the strategy editor 202, upon detecting coincidence between the cursor and a potential connection sink attribute, changes the appearance of the cursor to an “okay to drop” state.
When the user selects the sink attribute on the user interface (by releasing a mouse button), strategy editor 202 auto-routes the graphical connection to form a path that avoids other displayed block and child strategy appearance objects. The resulting graphically displayed connections are represented by a single solid line on the canvas area 1002 of the strategy editor 202 that terminates with an arrowhead at the sink end.
Furthermore, the appearance of a connection line is customizable. In addition to allowing a customer to manually select various line attributes (e.g., thickness, color, arrowhead type, style, etc.), the strategy editor 202 supports user defined/specified line characteristics/styles for particular classes of connections (e.g., data types of connected attributes). Turning to
A pattern drop-down list 1204 allows a user to designate a line pattern for a selected connection type (from the connections box 1202). The pattern drop-down list 1204 presents a variety of available patterns for a visually depicted connection on the canvas area 1002.
A weight drop-down list 1206 allows a user to designate a line thickness for a selected connection type (from the connections box 1202). The weight drop-down list 1206 presents a variety of available line thicknesses for a visually depicted connection on the canvas area 1002.
A color drop-down list 1208 allows a user to designate a color for a selected connection type (from the connections box 1202). The color drop-down list 1208 presents a variety of available line colors for a visually depicted connection on the canvas area 1002.
A sample box 1210 displays an example based upon user selections from the pattern, weight, and color lists 1204, 1206, and 1208.
A set of control buttons are also included. The OK and Cancel buttons close the dialog and either save the changes (OK) or ignore any changes made during the dialog session (Cancel). In an embodiment, a set of default characteristics are associated with each of the supported connection types. A “Reset All” button resets each of the supported connection types to the default values.
Turning to
Referring to
Yet another feature supported by the strategy editor 202 is an execution order designation interface that enables a user to manually program the order of execution of control block and child strategy objects graphically represented on the canvas area 1002. The default order of execution for control block and child strategy objects within a strategy is the order in which a user inserts the objects into the containing strategy. Furthermore, execution order is handled at a top layer of each object within a strategy. Therefore, when an execution order for a child strategy is specified, all blocks (and child strategies) contained within that child strategy execute prior to going to a next sibling object (i.e., block or another child strategy) in the execution order sequence for a strategy. If a control block or child strategy object is inserted into a containing strategy after an execution order has been established, the strategy editor 202 assigns an execution order value to the new block or child strategy object that is one ordinal position greater than the previous highest execution order value within the containing strategy.
The strategy editor 202 also supports an automated criterion-driven execution order assignment process. By way of example, a user initiates an automatic determination of execution order for the blocks and child strategies contained in a strategy by invoking an Auto Set Execution Order function from a context menu provided by the canvas area 1002. In an illustrative embodiment, the strategy editor 202 applies criterion based upon the block types (e.g., sequential versus continuous control blocks). In other embodiments, a user is provided a menu of various pre-defined criteria from which to choose. The subsequent execution order is driven by the user-selected criterion. The set of criteria is extensible and thus supports user defined supplementation to the set of pre-defined execution order assignment criteria.
In addition to automated designation of execution order for the objects represented in the canvas area 1002, the strategy editor supports manual designation of execution order on a control object basis. In particular, a user manually overrides a previously assigned execution order value for a block or child strategy on the canvas area 1002. In an embodiment, the user enters a manual execution order mode by invoking an Execution Order mode from a context menu on the canvas area 1002.
While in the Execution Order mode, the strategy editor 202 presents a Begin Sequence dialog that prompts the user to enter an ordinal value at which manual numbering is to commence (thus enabling a user to determine an ordinal position at which new ordinal value assignments will commence). The default beginning ordinal value is one.
While in the Execution Order mode, the strategy editor 202 highlights the execution order sequence number displayed within the title area of the default appearance object for each control block or nested child strategy object. The highlighted values signifying the current execution order value assigned to the associated control object. A user sequentially designates a preferred order of execution by clicking on the appearance objects displayed in the canvas area 1002 in the desired execution order. A first click on an appearance object assigns an execution order equal to the number specified on the Begin Sequence dialog.
The current execution order of any block or child strategy is continuously updated and displayed within the execution order area 601 of the appearance object during the reordering process. Thus, in an exemplary embodiment, the strategy editor 202 re-calculates all assigned execution order values on control objects that may have been affected by the particular selection. Each successive click on an appearance object results in assignment of a next higher ordinal value to a control object with which the selected appearance object is associated.
The following are examples of manually-specifying execution order:
While in the Execution Order mode, the user specifies a new beginning sequence number by invoking a context menu on the canvas area 1002, and then selecting a Set Execution Sequence menu option.
In addition to creating and editing control programs, the strategy editor facility supports displaying live process data associated with attributes presented on rendered appearance objects. Turning to
The exemplary display in
A user invokes an Update Parameters dialog to display a list of all of the attributes on a selected control block or child strategy and their current values. The Update Parameters dialog allows users to view live data values on attributes that don't appear on the appearance object of the block or strategy.
A user invokes an Update dialog to change a current value for control attribute displayed in either the rectangular register adjacent the attribute on the canvas 1002 or the list of attributes in an Update Parameters dialog. The Update dialog is invoked, for example, by either double-clicking on the live data register for the desired attribute, or by double-clicking on the attribute within the Update Parameters dialog list. Referring to
The following summarizes the rules governing use of the Update dialog to change an attribute value. In order to update a block's attribute value in the configuration database 210, the attribute must be configurable. In order to update a block's attribute value on the controller, the attribute must be settable. Finally, if the block is not in Manual mode, according to this embodiment only input attributes can be updated. And in this embodiment updates to output attributes will only be allowed when the block is in the Manual mode. No updates to connected sink attributes are permitted.
Aspects of the invention provide configuration tools for creating a process control loop with a drag/drop of control blocks onto a drawing “canvas.” The blocks that make up the control loop can be represented in a number of different “‘appearances.” The SAMA standard representation of control blocks is used extensively by the Power industry. Each SAMA representation of a control block can have many different “appearances” based on the configuration of the control block. For example, there is specific SAMA appearance for a PID block having setpoint tracking turned on and a separate one having setpoint tracking turned off. Advantageously, aspects of the invention permit automatically updating the control block appearance on the canvas based on the configuration and do not require a manual process to keep the control loop diagram up to date.
In an embodiment,
A block editor is provided that permits the user to change how the appearance object 1502 is depicted on the canvas area 1002 of the graphical user interface (e.g., as a SAMA depiction, a digital logic depiction, and the like). In addition, the block editor provides the user the ability to modify one or more attributes for the appearance object 1502.
In an embodiment, the appearance object is automatically modified based on changes the user makes to the behavior of the block, i.e., the block configuration. The changes have to do with the visual representation of the configured control logic. As the block's control logic is modified through a tabular editor, the corresponding visual appearance object is automatically modified to reflect the control logic changes. For instance, SAMA has a standard detailing how to represent control blocks on logic diagrams. In an aspect, this invention automatically modifies a block's appearance on a logic diagram according to the SAMA standard.
To begin modifying the attributes of the default appearance object, the user selects the appearance object 1504 (e.g., bias block, count block and the like) displayed on the canvas area 1002. The user then selects Appearance Object 1508, resulting in a dialog box to appear from which the user can select appearance objects that are associated with the control object. One of the appearance objects the user can select is a dynamically generated SAMA appearance object (broadly, a Dynamic Appearance Object). A SAMA appearance object 1514 is subsequently generated and placed on the strategy diagram 1501 in place of the appearance object 1504.
The user then selects the SAMA appearance object 1514 and opens the block editor by selecting icon 1516 in order to modify the block's attributes. The block editor places a dashed line 1518 around the SAMA appearance object 1514 to indicate that the user has selected this particular block. Using the block editor shown in
Upon saving and closing the block editor, the SAMA appearance object 1514, for the control object, will be automatically regenerated reflecting the configuration changes.
In an embodiment, the Dynamic Appearance Object (e.g., the dynamic SAMA appearance object) is configurable by the user using a dynamic appearance object editor. For example, dynamic appearance object options can be configured from an editor preferences dialog (
The editor preferences dialog contains tab page “Dynamic Appearance Objects”, see
When “Use Dynamic Appearance objects” option is checked, the Strategy editor will use the Dynamic Appearance Object defined for a particular block type (if one is available) instead of the default Appearance Object.
The “Value Parameter Format” allows the user to select the display format for the Value Type parameter that is displayed on the Dynamic Appearance Object. The following formats are supported.
The “Edit Definitions” button displays the “Dynamic Appearance Object Definitions” editor. The editor allows the user to configure how the block's appearance object should be represented based on how the block has been configured, see
Each block's Dynamic Appearance Object is defined in XML. The elements and attributes within the XML will be described later in this document. A predefined list of block types, are already shipped, in which their Dynamic Appearance Object definition has been defined. These block types are displayed in the list box on the left hand side of the editor. In addition to setting the global option, “Use Dynamic Appearance Objects”, the user can individually specify which blocks should support dynamic appearance by checking or un-checking the checkbox next to the block type. The editor's rich textbox allows user to edit the definition XML.
The factory supplied block types are shown in one color, such as black, and user added block types are shown in another color, such as blue. If the user overrides a factory supplied block definition then the block type is visually distinguished (e.g., shown in BOLD).
Adding Dynamic Appearance Definition for a Block Type
Dynamic Appearance definition can be added, for a Block Type, that is not already available by clicking the “+” button. This button displays the “Add Definition” dialog, see
Selecting the block type and clicking the add button, will display the block type in blue (shown in italics below) and insert an XML template used to define the Dynamic Appearance Object, as shown below.
Overriding Default Dynamic Appearance Definition for a Block Type
The default Dynamic Appearance Definition can be overridden by editing the definition XML, for a factory supplied block type. Once the definition has been edited, the block type name will appear in ‘bold’ in the list box. Clicking the ‘Save’ button will store the overridden definition.
Deleting Dynamic Appearance Definition for a Block Type
Dynamic Appearance definition can be deleted, for a block type, by selecting the block type in the list box and clicking a [DELETE] button. The delete button is only enabled for block types added by the user. For factory supplied Block Types, this button is disabled.
Deleting Dynamic Appearance Definition Override.
The Overridden Dynamic Appearance definition can be deleted by selecting an [SET TO DEFAULT] button. The ‘Set to Default’ button is only available for factory supplied definitions that have been overridden. The button will be disabled for any block types created by the user.
Validating Dynamic Appearance Definitions
Dynamic Appearance Definitions can be validated against the XML Schema by clicking a [VALIDATE] button. After adding or modifying a definition, the user can validate the XML. Any errors in the definition are reported in the output window, see
Saving the Block Definitions
Dynamic Appearance definitions that have been added, modified, or deleted, the changes are saved when the user clicks a [SAVE] button. All definitions will be validated prior to the Save operation. Any errors will be reported to the Output Window. The user will be required to correct all errors before the definitions can be saved. If no errors are reported the block definitions are saved and a message stating, “Block Definitions saved successfully” is displayed in the Output Window.
Dynamic Appearance Object Definition Editor Context Menu
The context pop-up menu in the Edit window (
If you are deleting or copying text, select the text to be edited, right click the selection, and click the appropriate command on the pop-up menu. The table below describes the context menu commands.
Go To Line Dialog
To advance to a specific line in the text:
Symbol Browser
The Symbol Browser (
To open the browser, in the definition editor choose Insert Symbol from the pop-up menu.
Note: Modifications to Dynamic Appearance Object options and block type XML definitions will be applied to the following.
Dynamic Appearance Object Schema Definition
The Dynamic Appearance Object is defined in XML format with a set of rules and conditions. The definition must conform to the Schema standard and is validated against the Schema during validate and save operations. This section explains the XML elements, attributes, and values that are valid as per the Schema standard set by FCS.
The following is an XML template for a Dynamic Appearance Object definition.
Block XML Element
The <Block/> element is the root element in the XML definition which contains the Name, Type, and Descrp XML attributes. The Name attribute contains the name of the Block Template, Type attribute contains the Block Type, and Descrp attribute contains the description of the definition.
<Block Name=“$AIN” Type=“SAIN” Descrp=“AIN Block”>
The <Block/> XML element contains <InfoArea/>, <PortArea/>, <Parameters/>, and <Shapes/> XML elements.
Info Area XML Element
The <InfoArea/> element contains the Parameters and Location XML attributes. The Parameters attribute contains a comma delimited list of block parameters that will be displayed in the info area of the dynamic appearance object. The Location attribute specifies the location of the Info Area within the appearance object. The following locations are supported “TopLeft”, “TopCenter”, “TopRight”, “BottomLeft”, “BottomCenter”, and “BottomRight”. If the Location attribute is not present in the XML, the Info Area will default to the “BottomRight” of the Appearance Object, see
The <InfoArea/> and <Shape/> XML elements can contain a <Conditions/> element which defines one or more conditions for the shape. If the conditions are satisfied, the shape and/or Info Area will be visible on the appearance object. For more information refer to the <Conditions/> XML element section.
Note: If the Info Area is not visible because the conditions were not satisfied, the user will not be allowed to add info parameters via the “Add Parameter” dialog.
Port Area XML Element
The <PortArea/>element contains the Parameters and ExcludedParameters XML attributes. The Parameters attribute contains a comma delimited list of block parameters that will be displayed in the port area of the dynamic appearance object. The port area is located below the last symbol on the Appearance Object, see
<PortArea Parameters=“HHAIND” ExcludedParameters=“BCALCO,BCALCO,INITI,INITO”/>
The ExcludedParameters attribute contains a comma delimited list of block parameters. When an import save all is imported into a Bulk Data Application Object, Bulk Data analyzes the connections and creates two additional columns “VisibleInputs” and “VisibleOutputs” in the spreadsheet. These columns contain a list of parameters that need to be visible on the block's appearance object in order to display all connections on the strategy diagram. The list of ExcludedParameters acts as a filter to the list of visible inputs and visible output parameters. Parameters listed in this attribute will not be displayed on the blocks appearance object. The factory definitions for some block types contain initialization parameters such as BCALCI, BCALCO, INITI, and INITO in the ExcludedParameters attribute.
Parameters XML Element
The <Parameters/> element, when contained by the <Block/> element, constitutes a list of <Parameter/> elements that defines the Top and Bottom port parameters of the block's Appearance Object.
The Name attribute's value is the name of the block parameter.
The Type attribute's value specifies how the parameter should be displayed. The parameter can be displayed as a connection or value. The Type attribute's value supports “Connection” and “ValueOrConnection”.
When “ValueOrConnection” is used, the block attribute's value type will be analyzed. If the attribute contains a value, the value will be displayed next to the port on the Dynamic Appearance Object in the format specified in the Dynamic Appearance Object Options. If the attribute is a reference, only a port will be displayed on the Dynamic Appearance Object, see
Shapes XML Element
The <Shapes/> element, can contain one or more <Shape/> elements. The <Shape/> element contains the Name and SetUserMode attributes. The Name attribute's value specifies the master Visio shape's name to be displayed during generation of the Appearance Object.
The SetUserMode attribute's value, specifies which block parameter value should be used to specify the shapes visibility, in the group shape. The PID Visio shape, in
For example,
If MODOPT is equal to 1, “Proportional only”, the first shape will be visible.
If MODOPT is equal to 2, “Integral only”, the second shape will be visible.
If MODOPT is equal to 3, “Proportional plus derivative”, the third shape will be visible.
If MODOPT is equal to 4, “Proportional plus integral”, the fourth shape will be visible.
If MODOPT is equal to 5, “Proportional, integral, derivative”, the fifth shape will be visible.
The <Shape/> XML element can contain the <Parameters/> and <Conditions/> XML elements.
The <Parameters/> XML element, is where multiple parameters can be specified to display on the Visio shape.
The <Conditions/> XML element is used to control the visibility of the shape and/or info area. The XML element contains the Operator attribute and one or more <Condition/> XML elements. The Operator attribute's value can contain the “AND” or “OR” Boolean operator used to evaluate more than one condition. For example, if the attribute's value is equal to “AND” then both conditions must be true for the shape to be visible. If the attribute's value is equal to “OR” then only one condition needs to be true for the shape to be visible.
The <Condition/> XML element contains ParameterName, Configured Values, and ComparisonType, XML attributes.
The ParameterName attribute's value is the name of the block parameter.
The ComparisionType attribute's value is the type of comparison used when comparing the value stored in the block ParameterName with the list of ConfiguredValues. The following table describes the comparison types.
The ConfiguredValues attribute's value is the criteria that the attribute should meet in order for the shape to be visible on the Dynamic Appearance Object. The following table describes the allowed values in the ConfiguredValues attribute in relation to the ComparisonType attribute value.
Arithmetic Operators
The following arithmetic operators can be used in the ConfiguredValues attribute.
˜→Range
=→Equals
!=→Not equals
<=→Less than
<=→Less than or equals to
>→Greater than
>=→Greater than or equals to
For example:
The ConfiguredValues attribute value specifies the Visio shape will be displayed if the value of SCI is in the range of 4 and 7 and greater than 11.
The ConfiguredValues attribute value specifies the Visio shape will be displayed if the value of HLOP is not equal to 3.
The <Shape/> XML element can contain the <Parameters/> XML element, where multiple parameters can be displayed on the shape after Appearance Object generation.
The structures, techniques, and benefits discussed above are merely exemplary embodiments of the invention carried out by software executed on computing machines and stored on computer-readable media in the form of computer executable instructions. In view of the many possible embodiments to which the principles of this invention may be applied, it should be recognized that the embodiments described herein with respect to the drawing figures are meant to be illustrative only and should not be taken as limiting the scope of invention. The illustrated embodiments can be modified in arrangement and detail without departing from the spirit of the invention. Moreover, those of skill in the art will recognize that the disclosed principles are not limited to any particular local area network protocols and/or topologies. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.
The order of execution or performance of the operations in embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention.
Embodiments of the invention may be implemented with computer-executable instructions. The computer-executable instructions may be organized into one or more computer-executable components or modules. Aspects of the invention may be implemented with any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than illustrated and described herein.
When introducing elements of aspects of the invention or the embodiments thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.
In view of the above, it will be seen that the several objects of the invention are achieved and other advantageous results attained.
Having described aspects of the invention in detail, it will be apparent that modifications and variations are possible without departing from the scope of aspects of the invention as defined in the appended claims. As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.
This application claims the benefit of U.S. Provisional Application Ser. No. 61/713,320, filed Oct. 12, 2012, and U.S. Provisional Application Ser. No. 61/758,605, filed Jan. 30, 2013, the entire disclosures of which are incorporated herein by reference for all purposes.
Number | Date | Country | |
---|---|---|---|
61713320 | Oct 2012 | US | |
61758605 | Jan 2013 | US |