The present invention relates generally to the field of information processing, and more particularly to a visual programming system and method.
A wide variety of complex applications require custom processing logic. For instance, process measurement, monitoring and improvement applications interacting with control systems for electricity generating power plants require custom processing logic, since each electricity generating power plant has a unique design. Typically, custom processing logic for such applications has been implemented by directly generating program code in a conventional text-based programming language, such as C, C++ or FORTRAN to provide executable code or a dynamically linked library (DLL). Accordingly, power plant field engineers have had to rely upon the skills of computer programmers to implement custom processing logic.
The present invention overcomes these and other problems, to provide a visual programming system and method for implementing custom processing logic.
In accordance with the present invention, there is provided a visual programming system for generating custom processing logic, the system comprising: (a) means for selecting components from a group of components, wherein each component has associated properties, each selected component displayed in a design region; (b) means for defining the properties associated with each selected component; (c) means for linking the selected components to form one or more logic strings, said logic strings defining a control flow sequence; (d) means for generating from said control flow sequence at least one of: source code, executable code and a dynamically linked library (DLL); and (e) a global data store for storing data associated with each component of the control flow sequence, wherein each component of the control flow sequence shares their respective data with the other components through the global data store.
In accordance with another aspect of the present invention, there is provided a visual programming method for generating custom processing logic. The method includes the steps of: (a) selecting components from a group of components, wherein each component has associated properties, each selected component displayed in a design region; (b) defining the properties associated with each selected component, wherein data associated with each component of the control flow sequence is stored in a global data store, each component of the control flow sequence sharing their respective data with the other components through the global data store; (c) linking the selected components to form one or more logic strings, said logic strings defining a control flow sequence; and (d) generating from said control flow sequence at least one of: source code, executable code and a dynamically linked library (DLL).
In accordance with still another aspect of the present invention, there is provided a control system for an electricity generating power plant, comprising: (1) a central control system (as defined herein); (2) a plurality of sensing devices for sensing operating conditions and parameters associated with the power plant; (3) an optimization computer system for optimizing at least one power plant process; and (4) a visual programming system for programming the optimization computer system, said visual programming system comprising: (a) means for selecting components from a group of components, wherein each component has associated properties, each selected component displayed in a design region, (b) means for defining the properties associated with each selected component, (c) means for linking the selected components to form one or more logic strings, said logic strings defining a control flow sequence, (d) means for generating from said control flow sequence at least one of: source code, executable code and a dynamically linked library (DLL), and (e) a global data store for storing data associated with each component of the control flow sequence, wherein each component of the control flow sequence shares their respective data with the other components through the global data store.
An advantage of the present invention is the provision of a visual programming system and method that provides a simple user-friendly graphical interface for generating custom processing logic.
Another advantage of the present invention is the provision of a visual programming system and method that eliminates the need to directly code in a text-based programming language.
Still another advantage of the present invention is the provision of a visual programming system and method that generates processing logic in the form of at least one of: source code, executable code and a dynamically linked library (DLL).
Still another advantage of the present invention is the provision of a visual programming system and method that incorporates notification logic.
A still further advantage of the present invention is the provision of a visual programming system and method that can bi-directionally exchange information with one or more data sources for the purposes of advisory or closed-loop supervisory control and performance monitoring.
Yet another advantage of the present invention is the provision of a visual programming system and method that finds utility in connection with control systems for electricity generating power plants.
These and other advantages will become apparent from the following description of a preferred embodiment taken together with the accompanying drawings and the appended claims.
The invention may take physical form in certain parts and arrangement of parts, a preferred embodiment of which will be described in detail in the specification and illustrated in the accompanying drawings which form a part hereof, and wherein:
Referring now to the drawings wherein the showings are for the purposes of illustrating a preferred embodiment of the invention only and not for purposes of limiting same,
It should be understood that the visual programming system of the present invention can bi-directionally exchange information with one or more data sources. In this regard, the executable code generated by the visual programming system may be utilized to interface with data sources. The DLL generated by the visual programming system may alternatively be utilized by the executable code, which in turn interfaces with the data sources. In addition, the executable code generated by the visual programming system may be utilized to interface with a reference database, which in turn interfaces with the data sources. Furthermore, the DLL generated by the visual programming system may be utilized by executable code which interfaces with a reference database, which in turn interfaces with data sources.
Each component may have one or more input ports 162, or one or more output ports 164, or both. Input and output ports 162, 164 are used to pass control between components. In this regard, when processing enters an input port, the component performs its defined task, and then when required, passes control to a successor component in the control flow sequence. It should be understood that components that have neither an input port 162 nor an output port 164 are used to define data in a global data store described in detail below.
In a preferred embodiment of the present invention, user-defined comments may be added to design area 150 to explain the processing logic. A comment may take the form of multiple lines of text, and can include HTML tags for formatting. For example, <FONT COLOR=“#FF000”> COMMENT IN RED </FONT> will appear as red colored text “COMMENT IN RED.”
A property window is provided to enter properties associated with a respective component, as will be described in detail below. In the illustrated embodiment, a property window associated with a component is displayed when “double clicking” on the component. It should be understood that each component has a defined name. A name is associated with a component by entering the name in the “name field” of a property window associated with the component.
A Multiplex component merges two event flows into a single process flow. The multiplex component has two input ports and one output port (i.e., a top input port and a bottom input port). When two separate branches in the event flow are to perform the same processing steps, they can be combined into a single path.
A Distributor component serves as a connector to process multiple processing event flow. The distributor component has one input port and multiple output ports (i.e., a top output port and one or more additional output ports). The path connected to the top output port will be executed first. When that path is completed, the event trigger will be sent to the next output port. The order of processing flows from top to bottom ports.
A ContinueWithLoop component stops the current iteration and continues with the next iteration of a “For Loop.”
A Return component is used to return from the logic without proceeding further. When a Return component is encountered in a logic flow, the control returns from the logic.
It should be appreciated that a Function component is customizable for specialized applications of the visual programming system, as will be described in detail below. In this regard, the Function component may provide a specific function that the user can call in the control flow sequence, as will be described in further detail below.
In accordance with a preferred embodiment of the present invention, each component in a control flow sequence shares their respective data through a global data store 190 that acts as a data registry (see
Components refer to data objects stored in global data store 190 using data name and data type identifiers that are stored in respective fields. The number of components referring to a data object is maintained in the “reference count” field. When a component that has a reference to a data object is deleted from the control flow sequence in design area 150, the reference count to the data object is decremented. When the reference count becomes zero, the data object is deleted from global data store 190. It should be appreciated that no “data flow” connections are needed between components in design area 150, because each component can directly refer to a data object in global data store 190. Consequently, the display of the control flow sequence in design area 150 is simplified.
As indicated above, a set of components are assembled to define processing logic in the form of at least one: source code, executable code and a dynamically linked library (DLL). The connections between the components define logic strings. In accordance with a preferred embodiment of the present invention, components are connected by clicking on the output port of a first component and dragging the mouse to the input port of a second component. A logic string of connected components defines a control flow sequence to be performed to accomplish a task. Each logic string begins with a Start component. As noted above, each Start component has a sequence number that determines the sequence in which multiple logic strings are executed.
The visual programming system of the present invention also provides various consistency and error checks during different stages of the visual programming process. When a component is added to design area 150, the component is displayed in a first color if the properties associated with the component need to be set for it to be valid. Once the properties are validly set, the component color changes from the first color to a second color. Checks are also performed while adding, deleting or changing the properties of a component. If an error is detected in a component property, the component is highlighted (e.g., by use of an alternative color). Moreover, a user is prevented from entering improper data in component property fields.
It should be appreciated that the control flow process as represented by the components 160 and connecting lines 166, and any additional comments placed in design space 150, may be saved to a configuration file and loaded later. The configuration file will store the properties associated with each component. When a design is loaded, the properties stored in the configuration file are parsed and used to recreate components 160.
Generation of source code syntax (i.e., step 106 of
The completed source code syntax for the control flow sequence shown in
Since the control flow sequence includes variables A and B, these two variables are found in the global data store. Accordingly, control is passed to the global data store to generate the data definition for these two variables.
The Opening syntax for the main function is then generated.
Control then passes to the Start component to generate a C label with the sequence number.
Control then passes to the Check IF component that is connected to the Start component. The Check IF component generates the opening syntax.
For the logic “true” output port, a Pre Call Syntax is generated.
Control then passes to the next component in the chain connected to the logic “true” output port of the Check IF component (i.e., the first Arithmetic component). The first Arithmetic component generates code.
The call returns from the first Arithmetic component back to the Check IF component. The Check IF component generates the Post Call syntax for the logic “true” output port.
The Check IF component generates the “Pre Call” syntax for the logic “false” output port.
Control then passes to the next component in the chain connected to the logic “false” output port of the Check IF component (i.e., the second Arithmetic component). The second Arithmetic component generates code.
The call returns from the second Arithmetic component back to the Check IF component. The Check IF component generates the Post Call syntax for the logic “false” output port.
The Check IF component does not have any closing syntax, so it passes control back to the Start component. The Start component does not have any closing syntax, so closing syntax for the main function is generated.
The visual programming system of the present invention may be implemented on a wide variety of computer systems, including, but not limited to, a conventional Intel-Windows based personal computer system (PC), a SUN computer system, and other computer systems supporting Java Runtime and C++ Compiler.
As indicated above, the visual programming system of the present invention finds utility in a wide variety of specialized applications. One such application is a process control environment of an electricity generating power plant. In this regard, the visual programming system of the present invention is used for implementing custom processing logic for process measurement, monitoring and improvement applications.
Control system 200 is generally comprised of a central control system 202, sensing devices 204, actuator/control devices 212, a plurality of workstation and server computers 206, at least one optimization computer system 208, and at least one specialized control system 210. It should be understood that data may be transferred between the elements of control system 200 via TCP/IP, or other data communications protocol.
Central control system 202 typically takes the form of a distributed or digital control system (DCS). Alternatively, central control system 202 may take the form of other types of control systems, including, but not limited to, an Analog Control System (ACS), a Programmable Logic Control (PLC) System, and the like. Central control system 202 receives data from sensing devices 204 that sense various operating conditions and parameters associated with the power plant. For instance, sensing devices 204 may include a continuous emissions monitoring system (CEMS) for sensing pollution emissions, temperature, pressure, flow, speed, magnitude, etc., as well as electricity consumption recorders and the like.
Optimization computer system 208 is generally comprised of one or more computer systems for generating plant process optimization data to improve process performance of various power plant sub-systems (e.g., combustion and sootblower sub-systems). In accordance with a preferred embodiment, the visual programming system of the present invention may be run on one or more optimization computer systems 208. Source code, executable code, or DLLs generated by the visual programming system is processed by optimization computer system 208 and sent to a respective specialized control system 210 for the purposes of advisory or supervisory closed-loop control actions.
Actuator/Control devices 212 (e.g., motors, drive mechanisms, dampers, valves, and the like) take the data generated by various control and optimization computer systems 202, 208 and 210, and perform the necessary actuation/control actions to influence the operation of power plant processes.
Specialized control system 210 is used to control one or more specific sub-systems in a power plant, such as a sootblower. Plant operators may use computers 206 to interface with central control system 202 and optimization computer system 208. In this regard, plant operators can access the visual programming system residing on optimization computer system 208 by directly using optimization computer system 208 and/or using computers 206. Computers 206 also preferably archive operating data to maintain a historical database.
It should be appreciated that a computer network 215 may be used to provide access to optimization computer system 208 from a remote computer.
As indicated above, optimization computer system 208 generates plant process optimization data to improve process performance of various power plant sub-systems, including, but not limited to, combustion and sootblower sub-systems. In this respect, optimization computer system 208 may support a “Sequential Optimizer” application, a “Combustion Optimization System” (COS) application, a Smart Sootblowing application, and an Intelligent Sootblowing application, all of which are explained in further detail below. It should be appreciated that optimization computer system 208 may support additional applications not disclosed herein.
The “Sequential Optimizer” application applies artificial intelligence technologies to improve performance and reduce emissions at power plants. Other technologies used are neural network based optimization, model predictive control, feedback control, etc. The “Sequential Optimizer” application is used to reduce the “Total Performance Loss” value associated with the power plant. The Total Performance Loss is defined by a calculation function that takes current process parameters as inputs, and generates a Total Performance Loss for the current process state. The Sequential Optimizer application “tunes” the process parameter to reduce the Total Performance Loss. The Total Performance Loss calculation changes for each power plant installation, since the Total Performance Loss calculation depends upon the process type and the business goals of the power plant. The Total Performance Loss calculation is also periodically updated as the power plant or business demand changes. The visual programming system of the present invention facilitates design and maintenance of the Total Performance Loss calculation function, as will be described in detail below.
The following function components are for use in connection with the “Sequential Optimizer” application: Applis, Attenuate, Bound, CP, CPK, CR, IPM, LAND, PLA, PLS, Round, and Roundf.
Other specialized function components are summarized as follows: a CP function calculates a Process Capability Value, a CPK function calculates the Process Capability Value CPK, a CR function calculates the Capability Ratio (1/CP), an IPM Function calculates correction factors and estimated results, a LAND function is a blend of linear and exponential function (i.e., as Value goes below SHIFT, it continues exponentially approaching zero asymptotically), a PLA function calculates the Performance Loss (Asymmetric) value, a PLS function calculates the Performance Loss (Symmetric) value, a Round function rounds Value to the closest multiple of UNITS, and a Roundf function rounds Value close to a fraction.
The “Combustion Optimization System” (COS) application is used to improve efficiency and decreases toxic gas emissions of electricity generating power plants. A “PERFIndex” program for calculating a performance index value, referred to as the “PERFIndex” value, is calculated to measure performance factors, including, but not limited to, boiler efficiency and unit heat-rate, that can be controlled by a plant operator or a COS. More specifically, the PERFIndex program calculates the relative increase/decrease of efficiency of boiler operation. The PERFIndex value represents the boiler related controllable losses, and can be used as a goal for a neural network based optimizing system. The PERFIndex value is a function of: delta dry gas loss, delta superheat temperature loss, delta reheat temperature loss, delta superheat at temperator spray loss, delta reheat at temperator spray loss, delta unburned carbon loss, and delta auxiliary power loss. The visual programming system of the present invention facilitates design and maintenance of the PERFIndex program, as will be described in detail below.
The use of the visual programming system to generate a DLL for use with the Sequential Optimizer application will now be described with reference to
As discussed in detail above, the visual programming system can generate source code (e.g., C or C++ source code) from the control flow sequence. It should be appreciated that the “function signature” is defined in the header region of the source code, and the “function call” is generated in the form of source code. The C, C++, etc. code treats the function as an external function that will be linked at runtime. Below is an example of how the source code might look like.
The foregoing source code is compiled to produce a DLL called “SOGoalCalc DLL.” At Runtime, the SOGoalCalc DLL links with another DLL, “SOMathFunction,” which is part of the Sequential Optimizer application software. SOMathFunction DLL contains Sequential Optimization math functions associated with each function configurable through the visual programming system (e.g., the Bound Function).
The Smart and Intelligent Sootblowing applications are used to automate sootblower activation based on predefined events/conditions, bring about consistency in the sootblowing process, avoid unnecessary blowing at lower loads or under certain unit operating profiles, dynamically adjust sootblowing activities based on blowers in service, improve unit performance, reduce emissions, and notify appropriate personnel regarding abnormal operation or equipment failures. The Smart sootblowing application provides a control flow sequence-based system for improving boiler operation by consistently monitoring operational events and automating sootblowing activities. The control flow sequence-based system dynamically adjusts sootblower selection in a closed-loop supervisory control mode to automate the sootblowing activities thereby imposing consistency and improving plant performance. The Intelligent sootblowing application provides a neural network-based system for optimizing boiler operation by accommodating equipment performance changes due to wear and maintenance activities, adjusting to fluctuations in fuel quality, and improving operating flexibility. The neural network-based system dynamically adjusts combustion setpoints, bias settings and sootblower selection in a closed-loop supervisory control mode to simultaneously reduce NOx emissions, improve heat rate and fulfill other plant objectives.
The visual programming system of the present invention may be used in connection with a Smart or Intelligent Sootblowing application. In this regard, the visual programming system of the present invention may be used in a state space logic definition environment for real-time/dynamic retraining or retuning of neural-network based models. Expert Systems rely on a knowledge base to make expert decisions. The Knowledge base is a store of factual and heuristic knowledge. Typically, an expert updates the knowledge base frequently to keep the system updated. In a rule-based Expert System, the knowledge is a set of rules defined in a structure similar to “IF condition THEN action.” Accordingly, the Check IF component and other components of the visual programming system (i.e., Check Status component) can be conveniently used to define or update Expert System decisions logic.
Other modifications and alterations will occur to others upon their reading and understanding of the specification. While a preferred embodiment of the present invention has been described in connection with a power plant control application, it is contemplated that the present invention finds utility in a wide variety of specialized applications, including, but not limited, to manufacturing or production facilities utilizing control systems. It is also contemplated that the visual programming system of the present invention is suitable for use in connection with .NET framework. It is intended that all such modifications and alterations be included insofar as they come within the scope of the invention as claimed or the equivalents thereof