Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CONTROLLER WITH ON-DEMAND NONLINEARITY
Document Type and Number:
WIPO Patent Application WO/2024/043933
Kind Code:
A1
Abstract:
A computer-implemented method and system are provided for modeling a nonlinear system having on-demand nonlinear components. Controller design engine generates an initial nonlinear system model having system components and controllers represented as interconnected system blocks. A system component assessment identifies which system blocks are linear blocks and nonlinear blocks. A linear component engine linearizes each nonlinear block by performing a linear system approximation. A simulation of the system is performed using inputs and parameters for an expected operating range. Response of each system block is monitored for whether one or more output values exhibit an active nonlinearity. Nonlinear component engine converts linear blocks to nonlinear blocks for any linear blocks with a detected active nonlinearity. The process iterates until no new active nonlinearity is detected.

Inventors:
GUMUSSOY SUAT (US)
Application Number:
PCT/US2022/075457
Publication Date:
February 29, 2024
Filing Date:
August 25, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIEMENS CORP (US)
International Classes:
G05B17/02; G05B13/04
Foreign References:
US20100312364A12010-12-09
US20130030554A12013-01-31
Other References:
MATHWORKS: "MATLAB and Simulink Release 2022a - Excerpts", 15 March 2022 (2022-03-15), XP093035032, Retrieved from the Internet [retrieved on 20230327]
SOON CHONG CHEE ET AL: "PID CONTROLLER TUNING OPTIMIZATION USING GRADIENT DESCENT TECHNIQUE FOR AN ELECTRO-HYDRAULIC SERVO SYSTEM", JURNAL TEKNOLOGI, vol. 77, no. 21, 6 December 2015 (2015-12-06), Malaysia, XP093035068, ISSN: 0127-9696, Retrieved from the Internet DOI: 10.11113/jt.v77.6605
Attorney, Agent or Firm:
VENEZIA, Anthony L. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1 . A computer-implemented system for modeling a controller for a nonlinear system having on-demand nonlinear components, the method comprising: a controller design engine configured to: generate an initial nonlinear system model having one or more controllers and system components to be controlled by the one or more controllers, all of which represented by interconnected system blocks; and perform an assessment of the system components by identifying which of the system blocks are linear blocks and nonlinear blocks; a linear component engine configured to linearize each nonlinear block by performing a linear system approximation; a simulation engine configured to perform a simulation of the system using inputs and parameters for an expected operating range, wherein response of each system block is monitored for whether one or more output values exhibit an active nonlinearity; and a nonlinear component engine configured to convert linear blocks to nonlinear blocks for any linear block corresponding to a detected active nonlinearity; wherein the controller design engine is further configured to: update the system model by replacing each linear block converted to a nonlinear block, wherein the updated controller design model is a nonlinear system design model, and tune the one or more controllers in the nonlinear system design model starting with previous controller parameters; wherein iterations of simulation, linear block conversion, and update of the controller design are repeated until no new active nonlinearity is detected.

2. The system of claim 1 , wherein the simulation engine is further configured to detecting active nonlinearity by detecting an output value of a block response in a nonlinear region of the linear system approximation.

3. The system of claim 1 , wherein the linear component engine is further configured to linearize nonlinear components by extending, for all inputs, linear regions of a nonlinear function corresponding to the nonlinear block.

4. The system of claim 1 , wherein the controller design engine is further configured to identify nonlinear blocks by: performing a perturbation-based linearization of a target block; and comparing the perturbation-based linearization to a response of the target block to detect nonlinearity properties.

5. The system of claim 1 , wherein the linear component engine is further configured to linearize nonlinear components by generating a linearized model with a set of defined variables for system states, input signals and output signals centered about an operating point.

6. The system of claim 4, wherein the linear component engine is further configured to linearize nonlinear components by: defining constant coefficient matrices representing Jacobians of the system evaluated at the operating point.

7. The system of claim 1 , wherein the nonlinear component engine is configured to convert linear blocks to nonlinear blocks by restoring nonlinearities removed by the linear component engine.

8. A computer-implemented method for modeling a controller for a nonlinear system having on-demand nonlinear components, the method comprising: generating an initial nonlinear system model having one or more controllers and system components to be controlled by the one or more controllers, all of which represented as interconnected system blocks; performing an assessment of the system components by identifying which of the system blocks are linear blocks and nonlinear blocks; linearizing each nonlinear block by performing a linear system approximation; performing an iteration of the following steps: performing a simulation of the system using inputs and parameters for an expected operating range, wherein response of each system block is monitored for whether one or more output values exhibit an active nonlinearity; converting linear component blocks to nonlinear blocks for any linear block corresponding to a detected active nonlinearity; updating the system model by replacing each linear block converted to a nonlinear block, wherein the updated controller design model is a nonlinear system design model; and tuning the one or more controllers in the nonlinear system design model starting with previous controller parameters; and repeating the iteration until no new active nonlinearity is detected.

9. The method of claim 8, wherein detecting active nonlinearity comprises: detecting an output value of a block response in a nonlinear region of the linear system approximation.

10. The method of claim 8, wherein the linearizing comprises: extending, for all inputs, linear regions of a nonlinear function corresponding to the nonlinear block.

11 . The method of claim 8, wherein identifying nonlinear blocks comprises: performing a perturbation-based linearization of a target block; and comparing the perturbation-based linearization to a response of the target block to detect nonlinearity properties.

12. The method of claim 8, wherein the linearizing comprises: generating a linearized model with a set of defined variables for system states, input signals and output signals centered about an operating point.

13. The method of claim 12, further comprising: defining constant coefficient matrices representing Jacobians of the system evaluated at the operating point.

14. The method of claim 8, further comprising: wherein the converting linear blocks to nonlinear blocks includes restoring nonlinearities removed by the linear component engine. .

Description:
CONTROLLER WITH ON-DEMAND NONLINEARITY

TECHNICAL FIELD

[0001] This application relates to computer aided design of nonlinear control systems. More particularly, this application relates to on-demand inclusion of nonlinear components in a controller design.

BACKGROUND

[0002] Design of nonlinear controllers in dynamic systems and processes has a long history of research. In a basic sense, a system having inputs is to be controlled to modify the outputs through feedback, feedforward, or signal filtering. In linear control theory, control devices obey the superposition principle with behavior governed by linear differential equations. However, systems controlled by the controllers in real-world dynamic systems include some nonlinearity, which require solutions applying rigorous mathematical techniques that are less general than in linear control theory. There are three main approaches to consider the effects of the nonlinearities: (1 ) linearization of all system components, including conversion of nonlinear components for simplified solution; design controller with linear controller design techniques, (2) model the nonlinear system mathematically and design the controller using a mathematical-based nonlinear control design for truer matching the control response, and (3) design an optimization- based controller that incorporate nonlinearities through tuning of the controller parameters.

[0003] In the linearization approach, the controller design is validated by simulations of the nonlinear system and improved by iteration. However, the nonlinearities of the system may degrade the performance of the controller and the result may not be satisfactory. As an example of an application for the linearization approach, frequency, voltage, and power controller components of power networks are designed by linearizing nonlinear model components. Since controllers have fixed structure due to legacy controllers in power systems, a controller tuning method is used to tune a set of individual controller parameters for the linear system model. This is different and more restrictive than the classical controller tuning paradigm where the designer is flexible to design controllers consistently with input and output signals. Finally, the tuned controller parameters’ performance is evaluated on the original nonlinear system. But the nonlinearities are not incorporated in the controller parameter tuning and the controller performance may suffer from them.

[0004] In the nonlinear control design approach, the nonlinear control system is mathematically modeled to capture a more accurate control response than a linearized approximation of the first approach. The advantage is nonlinearity being fully incorporated without any approximation, which yields accurate results. However, this approach is best suited to small designs and for academic studies. In real world systems, the design is highly technical with complex mathematical representations and difficult to apply.

[0005] For the optimization control design, a predefined controller structure is defined. Tuning of control parameters is optimization-based (e.g., gradient descent, simplex, or pattern search) and directly applied to tune the controller for incorporating the nonlinear effects of the model. The advantage is having nonlinearities directly incorporated for better results by the controller. However, the controller may get stuck into local minima, requiring careful initialization and several iterations. SUMMARY

[0006] Aspects of the present disclosure provide a technique for on-demand nonlinearity components in a controller design for more efficient modeling and control. An initial nonlinear system model is generated having system components and one or more controllers represented as interconnected system blocks. An assessment of the system components identifies linear blocks and nonlinear blocks. Each nonlinear block is linearized by performing a linear system approximation. A simulation of the system is performed using inputs and parameters for an expected operating range. Response of each block is monitored for whether one or more output values exhibit an active nonlinearity. Linear blocks corresponding to a detected active nonlinearity are converted to nonlinear blocks. System design model is updated by replacement of linear blocks converted to nonlinear blocks, such that the updated model is a nonlinear system design model. Controllers are tuned in the nonlinear design model using parameters from the previous iteration. The process iterates until no new active nonlinearity is detected.

BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Non-limiting and non-exhaustive embodiments of the present embodiments are described with reference to the following FIGURES, wherein like reference numerals refer to like elements throughout the drawings unless otherwise specified.

[0008] FIG. 1 illustrates an example of a framework for controller design with on- demand nonlinearity in accordance with the embodiments of this disclosure.

[0009] FIG. 2 illustrates a physical example for detection of active nonlinearity components in a controller design in accordance with embodiments of this disclosure. [0010] FIG. 3 shows an example of a computing environment in which embodiments of the present disclosure may operate.

DETAILED DESCRIPTION

[0011] Methods and systems are disclosed to solve the technical problem of designing and modeling controllers to control nonlinear systems. This invention focuses on incorporating the nonlinearities only affecting the controller design starting from the initial controller design. The nonlinearities include static nonlinearities such as saturation 121 , dead-zone 122, sigmoid 123, and piecewise linear 124 as shown in FIG. 1 , or other nonlinear mappings with internal states. In general, the approach of the disclosed embodiments is applicable to any engineering problem which benefits from any system model where nonlinearities are ignored either intentionally or unintentionally, and where inclusion of such nonlinearities will improve the overall controller performance.

[0012] FIG. 1 shows an example of a flow diagram for designing a controller in accordance with embodiments of this disclosure. Process 100 begins by a linearization of all components of the nonlinear system to be controlled, and iteratively adds active nonlinearity by substituting linearized components with nonlinear components as needed. Linearization involves finding a linear system representation of the nonlinear system where the underlying nonlinear system is a set of blocks, representing static functions or dynamical systems, interconnected with each other, and each nonlinear block is replaced by a linear system approximation.

[0013] As a preliminary matter, controller design engine 102 generates an initial nonlinear system model consisting of components of the nonlinear system to be controlled and one or more controllers represented by interconnected system blocks. Controller design engine 102 performs an assessment for identifying which system blocks are linear blocks and nonlinear blocks. It is possible to detect the nonlinear mapping if the analytical formulation for a block is available. Otherwise, perturbation-based linearization can be performed and comparing the linearization with the response of the target block to detect nonlinearity properties.

[0014] With nonlinear blocks identified, linear component engine 101 performs the linear system approximation for a continuous-time nonlinear system. For example, for a particular nonlinear function identified for a nonlinear block, such as static nonlinearities 121 , 122, 123, 124, the linear regions of the function at the operating point of interest can be extended for all input values. Using nonlinear function 121 as an example, if the operating point is in the linear region (i.e., F(x)=x), the linear line is extended for all x values, even for x values that fall in the nonlinear region (i.e., for constant F(x) values), forcing F(x) to be linear with respect to x. In an embodiment, a linearized model is generated in state-space form. The nonlinear system can be expressed by the following state-space equations: where x(t) are the system states, u(t) are the input signals, and y(t) are the output signals. To generate the linearized model, a new set of variables are defined in which the states, inputs, and outputs are centered about the operating point:

The output of the system at the operating point can be expressed by:

The linearized state-space equations in terms of δx(t), δu(t), δy(t) can be expressed by: where A, B, C, and D are constant coefficient matrices. These matrices are the Jacobians of the system evaluated at the operating point, and can be expressed by:

[0015] However, this ideal representation is limited since nonlinearities frequently occur in real systems. Since the controller design based solely on the linear system representation ignores such nonlinearities, the performance of such controller is typically impeded. However, the controller design for the nonlinear system is very difficult problem which requires a quite technical expertise. More importantly, not all nonlinearities are active near the operating point and often times only a few of the nonlinearities affects the desired trajectories. The following steps of process 100 aim to design a controller only for the relevant nonlinearities (i.e., on-demand nonlinearity), thereby improving the initial linear controller while avoiding unnecessary and complex full-scale nonlinear design as in the conventional nonlinear controller design approach.

[0016] Controller design engine 102 arranges the interconnection of system blocks. In an embodiment, parameters of the controller components are tuned based on feedback of system output. For 2 nd through n th iterations of process 100, the tuning leverages the previous iteration solution to initialize the current tuning step (known as warm start). In an embodiment, the tuning of the replacement nonlinear block may be achieved by using optimization based tuning methods, such as gradient descent, simplex, or pattern search to directly tune the controller to incorporate nonlinear effects. Controller design engine 102 updates the controller design model to include any on-demand nonlinear system blocks converted by nonlinear component engine 105, replacing the linearized version of the previous iteration.

[0017] Simulation engine 103 performs a simulation using inputs and parameters for an expected operating range. During simulation, response of each system block is monitored for whether simulated trajectories remain in the linear model region. At 104, if output values of a target system block are in a nonlinear region (i.e., one or more output values of a system block maps to a nonlinear region of the linear approximation function), such system blocks are designated as active nonlinearities. In other words, for the designed controller, these blocks with active nonlinearities violate the linear model assumption and must be modelled as nonlinear blocks in the overall controller design. At

104, if there is no new active nonlinearity detected, the controller design is complete 111.

[0018] Nonlinear component engine 105 is configured to mathematically model a nonlinear component block for any linearized component block designated as an active nonlinearity. For example, the nonlinear component engine 105 may undo the linear approximation performed by the linear component engine 101 described above. The conversion of a linearized controller block is achieved either from its analytical formulas or numerical perturbations of the system block.

[0019] FIG. 2 illustrates a simple example for nonlinearity detection in accordance with embodiments of this disclosure. A cruise control device in a car involves speed tracking in cruise control. As shown in FIG. 2, a nonlinear system 200 is modeled for car dynamics P 204 and a cruise control C 202. The car has maximum input limit (IL) 203 for actuation in that the gas pedal cannot be pushed limitless, and output limit (OL) 205 for car speed limited by the engine thrust potential. Both limits IL, OL can be represented by saturation type nonlinearities 213, 215 as shown in FIG. 2, having nonlinear saturation regions 213s and 215s, and linear regions 213L, 215L. In this example, car dynamics P 204 and cruise control C 202 are linear dynamical models and limits IL 203, OL 205 are static nonlinearities. Due to analytical formulation, it is easy to detect such nonlinearities since they are not a function of a linear mapping. The nonlinear blocks, IL 203 and OL 205, are linearized by extending the linear regions between saturation regions 213s, 215s for all input values. Since the overall system is now a linearized model, controller C is initially designed using the linear control design approach. The trajectories of IL 203 and OL 205 are simulated for a set of desired speeds 201 and initial conditions (including other design specifications). Response to the simulation in IL 203 and OL 205 are monitored to detect any values overlapping with the saturation (nonlinear) regions. If any such detections occur in either IL 203 or OL 205, the IL 203 or OL 205 block is marked as an active nonlinearity. Depending on the desired speed profiles and other specifications, there may not be any active nonlinearities and the design process for nonlinear system 200 ends. That is, if the expected operating range for the system keeps the nonlinear system components within a linear region of response behavior, then the design of the controller can stay as is. However, if say block IL 203 responded as an active nonlinearity in the simulation, then linearized block IL 203 now has a nonlinear system mapping. When the nonlinear system is updated with a nonlinear block IL 203, the controller to be designed for the corresponding nonlinear system is tuned by starting with the previous controller parameter values (i.e., warm start).

[0020] FIG. 3 shows an example of a computing environment in which embodiments of the present disclosure may operate. Computer system 310 may be embodied, for example and without limitation, as a computing device for controller design. Processor

315 may include one or more central processing units (CPUs). System memory 316 stores information and instructions to be executed by processor 315. System memory

316 may be used for storing temporary variables or other intermediate information during the execution of instructions by the processor 315 and may contain data and/or program modules that are immediately accessible to and/or presently being operated on by the processor 315, such as linear component engine 311 , controller design engine 312 simulation model engine 313, nonlinear component engine 317, operating system 318, and other program modules 319. [0021] Computing system 310 may also include a user interface 321 with a display device to display information to a computer user, one or more input devices, such as a keyboard or pointing device, for interacting with a computer user and providing information to the processor 315. The display device may provide a touch screen interface which allows input to supplement or replace the communication of direction information and command selections.

[0022] The computing system 310 may perform all or a portion of the processing steps of embodiments of the disclosure in response to the processor 315 executing one or more sequences of one or more instructions contained in a memory, such as the system memory 316. Such instructions may be read into the system memory 316 from another computer readable storage medium, such as local storage device 322, implemented as a magnetic hard disk or a removable media drive. The local storage device may contain one or more datastores and data files used by embodiments of the present disclosure. Datastore contents and data files may be encrypted to improve security. The processor 315 may also be employed in a multi-processing arrangement to execute the one or more sequences of instructions contained in system memory 316. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.

[0023] The computing system 310 may include at least one computer readable storage medium or memory, such as local storage device 322, for holding instructions programmed according to embodiments of the disclosure and for containing data structures, tables, records, or other data described herein. The term “computer readable storage medium” as used herein refers to any medium that participates in providing instructions to the processor 315 for execution. A computer readable storage medium may take many forms including, but not limited to, non-transitory, non-volatile media, volatile media, and transmission media. Non-limiting examples of non-volatile media include optical disks, solid state drives, magnetic disks, and magneto-optical disks, such as magnetic hard disk or removable media drive. Non-limiting examples of volatile media include dynamic memory, such as system memory 316. Non-limiting examples of transmission media include coaxial cables, copper wire, and fiber optics. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.

[0024] Network 350 may be any network or system generally known in the art, including the Internet, an intranet, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a direct connection or series of connections, a cellular telephone network, or any other network or medium capable of facilitating communication between computing system 310 and other computers such as remote server 341 and remote terminal 342. The network 350 may be wired, wireless or a combination thereof. Wired connections may be implemented using Ethernet, Universal Serial Bus (USB), RJ-6, or any other wired connection generally known in the art. Wireless connections may be implemented using Wi-Fi, WiMAX, and Bluetooth, infrared, cellular networks, satellite, or any other wireless connection methodology generally known in the art. Additionally, several networks may work alone or in communication with each other to facilitate communication in the network 350.

[0025] In an embodiment, controller design performed by linear component engine 311 , controller design engine 312 simulation model engine 313, and nonlinear component engine 317 may be performed utilizing local resources such as user interface 321 , processor 315, local storage 322 and system memory 316. In another embodiment, the controller design process may utilize resources of a remote server 341 having greater computing capability and processor capacity to operate the iterative process of simulations and controller tuning. User interface for controller design may be implemented by local user interface 321 or in a remote access via remote user terminal 341 .

[0026] The embodiments of the present disclosure may be implemented with any combination of hardware and software. In addition, the embodiments of the present disclosure may be included in an article of manufacture (e.g., one or more computer program products) having, for example, a non-transitory computer-readable storage medium. The computer readable storage medium has embodied therein, for instance, computer readable program instructions for providing and facilitating the mechanisms of the embodiments of the present disclosure. The article of manufacture can be included as part of a computer system or sold separately.

[0027] Computer readable medium instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the computing device, partly on the computing device, as a stand-alone software package, partly on the computing device and partly on a remote computer or entirely on the computing device or server. In the latter scenario, the remote computer may be connected to the computing device through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.

[0028] Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer readable medium instructions.

[0029] The program modules, applications, computer-executable instructions, code, or the like depicted in FIG. 3 as being stored in the system memory 316 are merely illustrative and not exhaustive and that processing described as being supported by any particular module may alternatively be distributed across multiple modules or performed by a different module. In addition, various program module(s), script(s), plug-in(s), Application Programming Interface(s) (API(s)), or any other suitable computer-executable code hosted locally on the computing system 310, and/or hosted on other computing device(s) accessible via one or more of network, may be provided to support functionality provided by the program modules, applications, or computer-executable code and/or additional or alternate functionality. Further, functionality may be modularized differently such that processing described as being supported collectively by the collection of program modules 311, 312, 313, 317 may be performed by a fewer or greater number of modules, or functionality described as being supported by any particular module may be supported, at least in part, by another module. In addition, program modules that support the functionality described herein may form part of one or more applications executable across any number of systems or devices in accordance with any suitable computing model such as, for example, a client-server model, a peer-to-peer model, and so forth. In addition, any of the functionality described as being supported by any of the program modules depicted in FIG. 3 may be implemented, at least partially, in hardware and/or firmware across any number of devices.

[0030] It should further be appreciated that the computing system 310 may include alternate and/or additional hardware, software, or firmware components beyond those described or depicted without departing from the scope of the disclosure. More particularly, it should be appreciated that software, firmware, or hardware components depicted as forming part of the computing system 310 are merely illustrative and that some components may not be present or additional components may be provided in various embodiments. While various illustrative program modules have been depicted and described as software modules stored in system memory 316, it should be appreciated that functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware. It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of software, hardware, and/or firmware for implementing the functionality. Accordingly, it should be appreciated that functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Moreover, while certain modules may be depicted and described as sub- modules of another module, in certain embodiments, such modules may be provided as independent modules or as sub-modules of other modules.

[0031] Although specific embodiments of the disclosure have been described, one of ordinary skill in the art will recognize that numerous other modifications and alternative embodiments are within the scope of the disclosure. For example, any of the functionality and/or processing capabilities described with respect to a particular device or component may be performed by any other device or component. Further, while various illustrative implementations and architectures have been described in accordance with embodiments of the disclosure, numerous other modifications to the illustrative implementations and architectures described herein are also within the scope of this disclosure. In addition, it should be appreciated that any operation, element, component, data, or the like described herein as being based on another operation, element, component, data, or the like can be additionally based on one or more other operations, elements, components, data, or the like. Accordingly, the phrase “based on,” or variants thereof, should be interpreted as “based at least in part on.”

[0032] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.