US20030033037A1 - Method and system for developing a software program using compound templates - Google Patents

Method and system for developing a software program using compound templates Download PDF

Info

Publication number
US20030033037A1
US20030033037A1 US10/273,594 US27359402A US2003033037A1 US 20030033037 A1 US20030033037 A1 US 20030033037A1 US 27359402 A US27359402 A US 27359402A US 2003033037 A1 US2003033037 A1 US 2003033037A1
Authority
US
United States
Prior art keywords
template
templates
compound
control
replacement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US10/273,594
Other versions
US6850808B2 (en
Inventor
Kam-Por Yuen
Joseph Bronikowski
Paul Robak
Jason Weber
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rockwell Software Inc
Original Assignee
Rockwell Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/404,771 external-priority patent/US6477435B1/en
Application filed by Rockwell Software Inc filed Critical Rockwell Software Inc
Priority to US10/273,594 priority Critical patent/US6850808B2/en
Assigned to ROCKWELL SOFTWARE INC. reassignment ROCKWELL SOFTWARE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BRONIKOWSKI, JOSEPH T., ROBAK, PAUL T., WEBER, JASON A., YUEN, KAM-POR
Publication of US20030033037A1 publication Critical patent/US20030033037A1/en
Priority to EP03023037A priority patent/EP1422619A3/en
Application granted granted Critical
Publication of US6850808B2 publication Critical patent/US6850808B2/en
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23008Computer aided software engineering, program generation, case tools, CASE
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23067Control, human or man machine interface, interactive, HMI, MMI
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23258GUI graphical user interface, icon, function bloc editor, labview
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23261Use control template library
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23292Use of model of process, divided in part models with IN, OUT and actuator
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25428Field device

Definitions

  • the present invention relates to systems for developing software programs for use in a variety of a environments including, for example, programs for controlling industrial processes or manufacturing equipment.
  • a characteristic feature of many control programs is the use of a large number of input and output variables, each corresponding to control points on the controlled process.
  • the input and output variables of the reused program templates when integrated into the body of the control program being developed, must be re-named and cross referenced so as to preserve the uniqueness of the variable names for each template and so as to keep track of the variable's relationship both to the overall controlled process and to the program template of which it is a part. This renaming and cross-referencing is a laborious task.
  • a template having two rungs of ladder logic with four control variables can be used to control the operation of a motor that raises and lowers a conveyor table.
  • One rung of the ladder logic can (in this example) provide that the motor would raise the conveyor table so long as an up pushbutton was pressed (represented by a variable named UP_PB), and so long as an upper limit of the conveyor table's position was not reached (represented by a variable named UP_LIMIT).
  • a second rung of the ladder logic could provide that the motor would lower the conveyor table so long as a down pushbutton was pressed (represented by a variable DOWN_PB), and so long as a lower limit of the conveyor table's position was not reached (represented by a variable named DOWN_LIMIT).
  • the above-described system for developing a control program could properly instantiate the template.
  • the variables each could be provided with a prefix (e.g., MOTOR 1 _) indicating that the variables pertained to the first motor, thus producing the desired control program (or at least the desired portion of a control program) for controlling the motor.
  • a prefix e.g., MOTOR 1 _
  • this control program was being designed not only to control the motor for raising and lowering the conveyor table, but also to control a second motor for the conveyor itself.
  • the second motor for the conveyor could be controlled according to a third rung of ladder logic in which that motor would run so long as a run pushbutton was pressed (represented by a variable RUN_PB), so long as both the up limit of the conveyor table (represented by a variable UP) was attained and the down limit of the conveyor table (represented by a variable DOWN) was not attained.
  • each of these variables could be provided with another prefix (e.g., MOTOR 2 _) indicating that these variables pertained to a second motor.
  • variable names can be manually changed by the program designer after the instantiation process has occurred.
  • manual changes are what the programming system is intended to minimize.
  • a higher-level, specialized template for a conveyor could be designed, without involving the specific templates for the first and second motors.
  • the creation of such a specialized template would in itself be complicated.
  • the creation of such a specialized template would eliminate the benefits associated with creating control programs by way of lower-level, simpler, more modular templates such as those representing the motors.
  • variable names could be displayed to the program designer in a tabular format, with the program designer being presented with an opportunity to create substitute “interface” variable names or tags that would globally replace related control variable names throughout all of the related templates.
  • substitute “interface” variable names or tags could be generated with ease using the modular, lower-level “simple” templates.
  • the normal instantiation process could continue, with variable names being automatically modified to correspond to the particular system components for which the control program was being designed.
  • the present invention relates to a method of creating a program executable on an industrial controller to control an industrial process.
  • the method includes providing a plurality of templates from at least one library, where each template has at least one respective control variable, and receiving selections of at least some of the plurality of templates.
  • the method further includes identifying at least some of the control variables as replacement fields, and creating at least one interface mapping to link to the replacement fields, where the first and second templates linked by the interface mapping form at least a portion of a compound template.
  • the method additionally includes instantiating an object using the compound template, where the object forms at least a portion of the control program.
  • the present invention relates to a system for developing a program for operating an industrial process.
  • the system includes an operator interface, and a computer coupled to the operator interface, where the computer includes a memory.
  • the operator interface is capable of displaying a catalog of templates within a library stored in the memory, and capable of displaying a catalog of objects within a project stored in the memory.
  • the computer includes a program that is capable of automatically identifying, within at least some of the templates, control variables that are appropriate for replacement.
  • the operator interface is capable of receiving commands to link interface mappings to the identified control variables, so that a compound template is formed from the templates corresponding to those variables.
  • the computer is able to instantiate the compound template to create a compound object for inclusion in the project.
  • the present invention further relates to a system for developing a program for operating an industrial process.
  • the system includes means for receiving user inputs, means for storing libraries having templates and projects having objects, and means for automatically identifying control variables within the templates that are capable of being replaced.
  • the system additionally includes means for modifying the identified control variables to link a plurality of the templates together to form a compound template, and means for instantiating the compound template.
  • FIG. 1 is a simplified block diagram of a system for developing control programs for an industrial process, which includes server computers, operator interfaces, and a controller for controlling an industrial process based upon the control programs;
  • FIG. 2 is a detailed block diagram of the controller and one of the server computers of the system of FIG. 1;
  • FIG. 3 is a schematic diagram showing software programs and entities employed by the system of FIG. 1;
  • FIGS. 4 - 6 provide views of several exemplary screens that may be displayed by the operator interfaces of the system of FIG. 1, particularly during development of a control program;
  • FIG. 7 is a flow chart showing exemplary steps of operation the system of FIG. 1 during development of a control program
  • FIG. 8 provides a view of an additional exemplary screen that may be displayed by the operator interfaces of the system of FIG. 1;
  • FIG. 9 is a flow chart showing exemplary steps of operation of the system of FIG. 1, particular in connection with an advanced control hardware hierarchy pane as shown in FIG. 8.
  • an industrial control system 10 is used to control a process 12 which, for example, may include components such as a tank 14 , as well as a conveyor 13 operated by first and second motors 15 and 17 , which respectively control movement of a conveyor table up and down and control movement of the conveyor belt.
  • the process 12 may be controlled according to control variables communicated over lines 16 .
  • the control variables may be output signals controlling actuators (e.g., the motors 15 , 17 ) or may be inputs from sensors (e.g., on the tank 14 ) such as temperature sensors, motion sensors or level sensors.
  • the lines 16 are received by I/O circuits 18 providing for basic signal processing known in the art and for the conversion between analog signals and digital values for computer processing.
  • the digital values may be communicated over a communication link 20 between the I/O circuits 18 and a programmable logic controller (or PLC) 22 .
  • the programmable logic controller 22 also communicates, either over the communication link 20 or separate communication link(s), with one or more server computers 24 .
  • the server computers 24 are further in communication, either by way of the communication link 20 or separate communication link(s), with one or more operator interfaces 25 such as conventional desktop computers or workstations.
  • the server computers 24 , operator interfaces 25 , and programmable logic controller 22 can be configured in a network, such that the various devices are able to communicate with one another.
  • the various devices are able to communicate with one another.
  • either of the operator interfaces 25 potentially can communicate with both of the server computers 24 .
  • the programmable logic controller 22 includes at least one processor 26 connected with an internal memory 28 via a bus 30 also communicating with the communication link 20 by way of an I/O module 29 .
  • the memory 28 includes an I/O table storing values of the control variables received from or transmitted to the I/O circuits 18 .
  • the memory 28 also includes a control program 34 reading those I/O values and executing a control logic prepared by a programmer specifically for the controlled process 12 , and various operating system programs 36 well understood in the art.
  • the control program 34 is generated by way of one or more of the servers 24 operating in conjunction with one or more of the operator interfaces 25 , which allow for programmers or other persons to input commands or other information relating to the control program.
  • each of the servers 24 includes a processor 42 (e.g., a microprocessor, microcontroller, computer or the like), a memory 44 , and one or more I/O terminals 27 , all of which are coupled by way of an internal bus 46 .
  • the I/O terminals 27 allow for communication between the servers 24 and the communication link(s) 20 . As discussed further with reference to FIGS.
  • the memory 44 acts as a repository that operates according to specific procedures that make it possible for the control program 34 , and other information useful in creating the control program, to be input, accessed and modified in an organized manner by way of the multiple servers 24 , operator interfaces 25 , and programmable logic controller 22 (or possibly more than one such programmable logic controller), etc.
  • FIG. 3 aspects of the software programs that are operable on the industrial control system 10 are shown.
  • the memory 44 of the server computers 24 (as operated by the processor 42 of each respective computer) operates as a repository 50 .
  • the repository 50 Within the repository 50 are stored one or more libraries 60 of templates 70 .
  • the templates 70 constitute program fragments that have not yet been instantiated into program objects, that is, control variables and other portions of the templates have not been configured for operation in a specific control program.
  • Also stored within the repository 50 are one or more projects 80 .
  • the projects 80 are control programs that are either completed or in a state of development, and that are intended for eventual implementation on one or more programmable logic controllers 22 associated with one or more processes such as the process 12 .
  • the projects 80 constitute maps or models of industrial processes, which can be displayed in a hierarchical list of schematic form.
  • the projects 80 when completed, are made up of objects 91 that correspond to the different components within the projects, and which operate in conjunction with one another to form the overall control programs.
  • the templates 70 can include either or both of simple templates 72 and compound templates 74 .
  • Each simple template 72 typically includes three portions, namely, a main data portion 76 , control variables that can be replaced and thereby constitute replacement mappings 78 , and user defined properties 79 .
  • the main data portion 76 typically is the body or control logic code of a simple template 72 .
  • the main data portion 76 can include ladder code and graphic information that will be duplicated during instantiation.
  • the replacement mappings 78 which are described further with reference to FIGS. 4 - 6 , are particular input and output variables of the simple template 72 .
  • the user-defined properties 79 specify characteristics of the simple template and can be used to specify the replacement mappings as well.
  • Exemplary simple templates 72 could include, as shown in FIG. 3, ladder logic templates 71 , HMI graphic templates 73 , and field device templates 75 .
  • the templates 70 further can include compound templates 74 , each of which typically includes one or more simple templates 72 , one or more interface mappings 68 , and one or more user-defined properties 66 .
  • the interface mappings 68 constitute replacement variable names or tags that link the simple templates 72 of the compound template 74 together.
  • the user-defined properties 66 can specify characteristics of the compound template 74 and also be used to specify replacement mappings.
  • the objects 91 of the projects 80 can be either simple objects 82 or compound objects 84 .
  • the simple objects 82 can include data in a variety of formats.
  • the simple objects 82 can include (in one embodiment) field device objects, objects created using RSLogix 5000, RSView SE data, or MS Word, RSView SE HMI-created objects, objects created by way of MS Excel, other file-related objects and user-created objects (e.g., objects created by way of a simple editor).
  • the compound objects 84 are made up of one or more simple objects 82 .
  • the simple objects 82 are instantiated program portions that correspond to low-level components of the industrial process 12 or other process (e.g., individual motors).
  • the compound objects 84 which are instantiated versions of the compound templates 74 , constitute program portions that correspond to higher-level portions of the process 12 (or another process), e.g. portions of the process that include multiple lower-level components (e.g., a conveyor that depends for its operation upon two motors).
  • the projects 80 can be formatted in accordance with the S95 standard, which classifies equipments into three categories, namely, discrete, batch and continuous equipments, although other standards can also be employed.
  • the memory 44 includes, in addition to the data within the repository 50 , additional interface or “wrapper” programs 90 that interface between the data within the repository, such as the templates 70 and the objects 91 , and application programs 95 that can be invoked at the operator interfaces 25 .
  • the wrapper programs 90 need not be employed to interface between the data within the repository 50 and certain applications, such as an applications 98 , which for example may be specially designed to handle data within the repository or designed to perform a particular limited function.
  • the present system 10 is designed to enable the development of control programs by way of templates 70 and objects 91 that are formatted in accordance with a variety of software formats, including familiar third-party software programs such as MS Word and MS Excel.
  • wrapper programs 90 allow the system 10 to be highly flexible in terms of the types of data that can be incorporated into control programs and be accessed by users.
  • the wrapper “programs” 90 referred to herein should be understood to encompass a broad variety of different program routine types, including not only full-fledged programs or applications, but also template modules, interface modules, plug-in modules, or dynamic link libraries (“dlls”) that contain multiple executable program routines called upon by other applications.
  • the wrapper programs 90 provide several functions.
  • the wrapper programs 90 are able to import, export, extract and find (or call upon) specific data types.
  • the wrappers 90 are able to analyze the templates 70 and identify control variables that can be replaced during the instantiation process or that may be linked with other variables by way of interface mappings 68 in the formation of compound templates 74 .
  • the wrapper programs 90 are able to analyze the templates 70 or objects 91 to determine the type of software program or program format that was used to create that data. For example, in certain embodiments, MS Word and MS Excel wrapper programs 90 would respectively be able to determine whether data in a template 70 is within (or not within) a MS Word format or a MS Excel format.
  • application programs can assist in selecting which of the wrapper programs should be invoked in a given circumstance.
  • a given wrapper program 90 would be able to determine the format of data in a template 70 from among several formats. For example, in one such embodiment, a given wrapper program 90 would be able to determine whether data in a template 70 is within a MS Word format, a MS Excel format, or another format.
  • the wrapper programs 90 are further capable of determining which editing tools or other applications are appropriate for allowing a user to input or otherwise modify data at one of the operator interfaces 25 .
  • the system 10 enables the development of control programs by way of a variety of software programs and other tools.
  • FIGS. 4 - 6 exemplary screens 200 , 300 and 400 capable of being displayed at one or more of the operator interfaces 25 during the development of a control program 34 are shown.
  • the screens 200 , 300 and 400 include a variety of user-selectable buttons 202 , which provide various options to a user.
  • the buttons 202 and other selectable options discussed below, can be selected through the use of a conventional input/output device at the operator interfaces 25 , such as a mouse, and the buttons 202 in one embodiment are drop-down menus containing additional options.
  • the screens 200 , 300 and 400 can display several different windows or panes.
  • these panes can include a system equipment hierarchy pane 204 , which displays the physical layout of equipment components in a project as well as the objects 91 that have been instantiated in correspondence with those components.
  • the panes can include a template libraries pane 206 , which is able to display the templates within a selected template library.
  • the template libraries pane 206 includes a drop down menu 208 by which a user is able to select a particular library of templates from a list of existing templates.
  • the system equipment hierarchy pane 204 in certain embodiments provides a map or chart of the various equipment components and/or corresponding objects in a given project 80 .
  • a project entitled “Kam & Joe's plant” includes two assembly lines A- 1 and A- 2 , with the first assembly line A- 1 including a higher-level component conveyor 1 that includes two lower-level components motor 1 and motor 2 , while the second assembly line A- 2 includes three components start, stop and motor 1 .
  • FIGS. 1 includes two assembly lines A- 1 and A- 2 , with the first assembly line A- 1 including a higher-level component conveyor 1 that includes two lower-level components motor 1 and motor 2 , while the second assembly line A- 2 includes three components start, stop and motor 1 .
  • an exemplary template libraries pane 206 shows an exemplary library “testlib” that includes compound templates and simple templates, with the simple templates including templates created using MS Word, RS Logix 5000, and RSView. As shown, the panes 204 , 206 can display their information in the form of a set of folders, although in alternate embodiments the information can be cataloged in other formats.
  • the system 10 is capable of displaying several other panes (not shown). These can include, for example, a control hardware hierarchy pane, which displays the physical layout of control hardware devices (such as programmable controllers, chassis, and I/O modules) and which contains all the device service-related objects in a tree structure.
  • control hardware hierarchy pane which displays the physical layout of control hardware devices (such as programmable controllers, chassis, and I/O modules) and which contains all the device service-related objects in a tree structure.
  • a system 10 can display a control hardware catalog pane, which displays a catalog of all supported control hardware devices, a workflow pane, which displays all supported workflows, and a detail pane, which displays the properties of a selected object in the system equipment hierarchy pane 204 , template libraries pane 206 , control hardware hierarchy pane or other control hardware catalog pane in a table format.
  • the system 10 can include a field device library pane, which displays a list of field device classes, and a field device picker pane, which displays all instantiated field devices in a project, optionally filtered by whether those devices are attached to I/O terminals.
  • a workspace pane 210 is provided, which is the main editing area for templates, objects and projects.
  • the workspace pane 210 can include, upon the selection of a template “RUN” from the template libraries pane 206 , a pane 212 that displays characteristics of the template “RUN”.
  • the pane 212 includes multiple variables, properties associated with those variables, values of those variables, and customized aspects.
  • the pane 212 also includes selectable buttons 214 that allow a user to select a general display of template characteristics 214 , aspects of a particular component within the templates 216 , and properties 218 .
  • the pane 212 includes buttons 220 that allow the user to add a component, delete a component or replace a component within the template, and additional buttons 222 for applying, canceling, or accepting changes to a template 222 , so that the template stored in the repository 50 is updated.
  • FIGS. 4 - 6 show different views of the workspace pane 210 during the development of a compound template “conveyor” and then the instantiation of that compound template as a compound object “conveyor 1 ”.
  • the ladder logic corresponding to each of these simple templates appears in the workspace pane 210 .
  • the ladder logic is displayed using RS Logix 5000 software, which is invoked by a wrapper program 90 .
  • the ladder logic corresponding to the “RUN” template provides that a conveyor motor will start to run whenever a RUN pushbutton is pressed, the conveyor table is at its upper limit, and the conveyor table is not at its lower limit.
  • the output of this rung of ladder logic depends upon three variables, namely, “RUN_PB”, which represents the status of the RUN pushbutton, “UP”, which represents whether the conveyor table is at its uppermost position, and “DOWN”, which represents whether the conveyor table is at its lowermost position.
  • the ladder logic corresponding to the “motor up” template is designed so that a motor continues to receive an up signal so long as an up pushbutton is pressed (represented by a variable “UP_PB”), and the conveyor table is not yet at its upper limit (as represented by another variable “UP_LIMIT”). Additionally, the “motor down” template ladder logic provides a signal to cause downward movement based upon whether a down pushbutton is pressed (as represented by a variable “DOWN_PB”) and further dependent upon whether the conveyor table has reached its lowest position (as indicated by a variable “DOWN_LIMIT”).
  • the desired compound template to be created (“conveyor”) is for a conveyor that is able to be lowered or raised within upper and lower limits and, only when at its upper limit, is able to be run.
  • the conveyor template can be formed from the “RUN”, “motor up”, and “motor down” simple templates.
  • certain of the control variables of the simple templates must be modified.
  • the “UP_LIMIT” variable of the “motor up” simple template should be the same as the “UP” variable of the “RUN” simple template
  • the “DOWN_LIMIT” control variable of the “motor down” simple template should be the same as the “DOWN” variable of the “RUN” simple template.
  • one or more of the wrappers 90 are capable of analyzing the simple templates “RUN”, “motor up”, and “motor down” to identify control variables that are potentially replaceable.
  • the workspace 210 Upon receiving a command from the operator to form the compound template “conveyor” (e.g., by choosing a corresponding selection listed under the “template” button 202 ), the workspace 210 displays a pane 213 to which the user can add the simple templates that are to be included within the compound template. Specifically, the pane 213 lists each of the selected simple templates in a “name” column and then in adjacent columns provides template type information and version information. The user is then prompted to enter interface tags that correspond to the identified control variables.
  • a first interface tag “RAISED” corresponds to both the “UP_LIMIT” control variable of the “motor up” simple template and the “UP” control variable of the “RUN” simple template
  • a second interface tag “LOWERED” corresponds to the “DOWN_LIMIT” control variable of the “motor down” simple template and the “DOWN” variable of the “RUN” simple template.
  • the pane 224 is modified to include the interface tags “RAISED” and “LOWERED” in place of the “UP_LIMIT”, “DOWN_LIMIT”, “UP” and “DOWN” control variables of the simple templates.
  • the compound template “conveyor” can be instantiated in the same manner as a simple template.
  • the system 10 upon receiving a command to instantiate the compound object “conveyor 1 ”, the system 10 inserts appropriate prefixes (or suffixes) into the control variable names.
  • the control variable that was originally the “UP” variable of the simple template “RUN” now is the variable “CONVEYOR 1 _RAISED.”
  • the term “RAISED” is the interface tag that was substituted for “UP”, and additionally the prefix “CONVEYOR 1 ” has been added during instantiation of the compound template “conveyor 1 .”
  • the instantiated compound object “conveyor 1 ” includes three rungs of ladder logic.
  • the first rung of ladder logic which governs the movement of the conveyor due to the second motor 17 , includes control variables “CONVEYOR 1 _RUN_PB”, “CONVEYOR 1 _RAISED”, and “CONVEYOR 1 _LOWERED”, in addition to an output variable “CONVEYOR 1 _RUN.”
  • the compound object further includes second and third ladder logic rungs that employ the variables “CONVEYOR 1 _UP_PB”, “CONVEYOR 1 _RAISED”, CONVEYOR 1 _UP”, “CONVEYOR 1 _DOWN_PB”, “CONVEYOR 1 _LOWERED” AND “CONVEYOR 1 _DOWN.”.
  • exemplary steps of operation of the system 10 are shown by a flowchart 500 . These steps are meant to be exemplary, that is, the exact steps of operation of the system 10 can vary from those shown in terms of the order of the steps, as well as in terms of the number of steps and whether any given set of steps are performed at any given time.
  • the system receives by way of the operator interface 25 identification information from a user (e.g., a program designer) who desires to login to the system at step 304 .
  • the system 10 determines whether the identification information sufficiently indicates that the user is authorized to log on to the system.
  • step 308 the system 10 awaits a request or command from the user, which often will be a request to display a particular template library. If such a request is provided, the system proceeds to step 310 , at which the system displays the requested template library (e.g., by way of the template libraries pane 206 ). If such a request is not received at step 308 , the system remains at step 308 .
  • the system 10 at step 312 may receive a command to open the template library editor, since often a user will wish to edit one or more of the templates within the library. If such a command is not received, the system returns to step 308 . However, assuming that such a command is received at step 312 , the system proceeds to step 314 , at which the template library editor is opened. Then, at step 316 , the system may receive a command to create a new template. If no such request is received, the system instead may receive a request to modify one of the existing templates shown in the library of templates currently being displayed, at step 318 .
  • step 320 the system determines whether the template is checked into the system.
  • the repository 50 makes sure that no other user is currently modifying the existing template before it allows the present user to modify that template. However, if one user is modifying a template, the repository 50 still allows other users to access the template simply to read the template information without modifying it. If the template is determined to be checked out at step 320 , the system returns to step 316 , while if the template is determined to be checked in, the system allows the requested template to be checked out and displays the template's attributes at step 322 .
  • the system may receive a command to modify certain of the template's attributes, such as its data portions 76 , its replacement mappings 78 , or other user-defined property 79 . If such changes are entered, the system proceeds to step 326 , at which it records a new version of the template in the repository, and checks in that template (as well as stores a version number associated with that template). Once the modified version of the template has been checked in, it can be modified by another user (one user at a time), and also can be simultaneously accessed by other users to the extent that those users only wish to access the template to read the template's information.
  • the modified version of the template Once the modified version of the template has been checked in, it can be modified by another user (one user at a time), and also can be simultaneously accessed by other users to the extent that those users only wish to access the template to read the template's information.
  • the system 10 may create a new folder structure or structures within the template library to account for the new template, at step 328 . Further, it is determined at step 330 whether the requested new template will be a simple template 72 or a compound template 74 . If a new simple template has been requested, the system proceeds to step 332 , at which the system may receive user-specified data, such as a name of the new simple template. Then, at step 334 , the system may receive additional information such as information concerning the main data portions 76 or the replacement mappings 78 associated with the new simple template 72 .
  • the system will automatically insert tag placeholders within the control variable names associated with the new simple template.
  • the placeholder may take the form of a word surrounded by percent signs (e.g., % object 1%).
  • the placeholder is incorporated into the control variables in order that later on, during instantiation of the template, the appropriate changes to the control variable can be automatically made by the system 10 (e.g., the appropriate addition of prefixes or suffixes to the control variable names).
  • the tag placeholders Once the tag placeholders have been inserted at step 336 , the new simple template is recorded in the repository 50 (as is its version, e.g., version 1) at step 326 .
  • the system 10 at step 338 may receive user-specified data such as names and other characteristics of the compound template 74 including, in particular, names of the simple templates or other compound templates that are intended to be incorporated within that compound template. Then, at step 340 , the system receives user-specified interface tags, which will be used to link up the component templates within the compound template. Then at step 342 , the system receives selections by the user of the actual simple templates or compound templates that are to be included in the compound template. Next, at step 344 , the system automatically identifies the replacement mappings in each of the selected templates.
  • step 346 the system receives user commands to link the various interface tags with the different replacement mappings, which completes the formation of the compound template.
  • step 326 the system again proceeds to step 326 , at which the new compound template is saved in the repository 50 .
  • additional operations can be requested by users and/or performed by the system 10 in addition to the operations shown in FIG. 7.
  • the system may receive requests from users to display projects and the objects associated with those projects (as well as equipment components associated with those projects) and the system may respond by displaying that information in a manner similar to steps 308 and 310 of FIG. 7.
  • the system can receive requests from users to modify various objects and create new objects.
  • the system can perform operations associated with the instantiation of templates into objects with respect to different control programs being developed.
  • control program for a project can be downloaded to the internal processor 26 of the programmable logic controller 22 that requires the program in order to control the industrial process 12 with which the controller associated.
  • the repository 50 limits the access of given templates, objects and projects to one user at a time
  • the system 10 is configured to allow separate copies of any given control program to be downloaded to programmable logic controllers even though the repository 50 continues to maintain a copy of that control program.
  • a programmable logic controller 22 can continue to use a given control program even though that control program may be further modified later on by other parties for other purposes.
  • another exemplary screen 600 includes, in addition to the user-selectable buttons 202 , the system equipment hierarchy pane 204 and the template libraries pane 206 , an advanced control hardware hierarchy pane 660 within the workspace pane 210 .
  • the advanced control hardware hierarchy pane 660 shows, in schematic form, the various components of the plant (in this case, Kam & Joe's plant). Each of the major system components are shown as a separate respective graphical icon 602 .
  • icons 602 are displayed for the components of “line A- 1 ”, namely, “conveyor 1 ”, “motor 1 ”, “motor 2 ”, and for the components of “line A- 2 ”, namely, “start”, “stop” and “motor 1 ”.
  • one of the icons 602 represents, in this example, the programmable logic controller used to control the plant. As shown, some of the icons 602 can be varied in appearance depending upon particular characteristics of the components being represented. For example, the icon corresponding to the programmable logic controller includes slots/ports 606 , two of which are shown to include cards that are used to control the first and second lines A- 1 and A- 2 . As shown, electrical or other connections between components can be shown schematically through the addition of connection links 604 .
  • the advanced control hardware hierarchy pane 660 allows users to navigate through around the system and easily identify and select components that are of interest. For example, a user can use a mouse (or similar I/O device) to move a cursor around the advanced control hardware hierarchy pane 660 to move to different components or groups of components. Also, where all of the components of a large system cannot be displayed on a single display screen, the system also allows for a user to shift the region of focus so that different portions of the overall schematic become viewable (or, in alternate embodiments, different pages of a schematic can be selected for viewing). The advanced control hardware hierarchy pane 660 also aids the user in creating a control program for a system, since the relative connection points between different components are easily visualized.
  • the icons 602 are tied to templates, objects or other files/programs that are to be implemented with respect to the components represented by those icons.
  • an appropriate wrapper program 90 is invoked that allows for the appropriate application to be started so that the file/program associated with the icon is activated, and so that data associated with the icon is viewable by the user.
  • the advanced control hardware hierarchy pane 660 provides a convenient mechanism by which users can find and obtain information relating to components of interest.
  • the objects associated with different system components can be instantiated merely by further selecting (e.g., “double-clicking”) on the respective icons 602 .
  • an entire control program for the system is automatically instantiated as templates are associated with the displayed icons 602 (e.g., by dragging the relevant templates on the icons).
  • the system displayed on the advanced control hardware hierarchy pane 660 can created by one or more users, and existing system schematics can be stored in, and accessed from, the repository 50 . As with other information stored in the repository 50 , only one user can be modifying the schematic information at any one time.
  • a flow chart 700 shows exemplary steps of operation in designing and modifying a schematic representation of a system by way of the advanced control hardware hierarchy pane 660 and utilizing that schematic to develop a control program.
  • a user may access an icon library 702 to obtain icons 602 associated with different system components.
  • Some of the icons 602 may relate to groups of components.
  • the icons 602 may be obtainable in one of the libraries accessible using the template libraries pane 206 and often (although not always) may have templates, files, programs or other data associated with them.
  • the system Upon receiving a selection by a user of an icon at step 704 , the system also typically will receive an indication of an appropriate position of the selected icon on the advanced control hardware hierarchy pane 660 .
  • the user may drag the icon to a particular location on the pane 660 .
  • the system may receive a command to link the dropped icon to one or more other icons. If such a command is provided, the system displays a connection link 604 (e.g., a line) on the screen connecting the appropriate icons. If no linking command was received at step 708 , it is determined whether the schematic diagram has been completed, at step 712 . If the diagram has not yet been completed, the system can receive additional selections of icons to add to the diagram, by returning to step 704 . If the diagram has been completed, it can be stored in the repository 50 at step 713 (the stored information may further include version information).
  • the user may provide to the system a navigational command. This could be, for example (in the case of a large schematic diagram that is not easily displayed on a single screen), a command to shift the portion of the schematic diagram that is being displayed. Such a command could be provided, for example, by “dragging” the entire schematic diagram.
  • a particular portion of the schematic diagram is displayed, at step 716 .
  • the system may receive a selection of one of the icons 602 . The selection may be provided by a user who desires that detailed information about the system component represented by the icon be displayed.
  • a user may provide such a selection to cause the system to display a template, object, program, or other type of data that is associated with the icon, so that the data can be modified. If such is the case, at step 720 , the system determines whether the selected information has been checked in to the repository 50 . If the data has not been checked in, the system returns to step 718 (and/or provides an indication to the user that the data cannot be modified, although the user may still be able to read the data).
  • the system at step 722 employs one (or more) of the wrapper programs 90 to identify the appropriate application program that can be used to access and modify the data. Then, at step 724 , the accessed data is displayed. Further, the accessed data can then be modified and further stored in response to a command to modify the data, at step 725 . If such a command is received, the data is modified at step 726 (and may also be stored in the repository 50 at the point). If the data associated with the icon 602 is in the form of a template, the user can at this point provide a command to instantiate an object based upon this data, at step 727 .
  • step 730 the system is finished (at step 730 ) or (depending upon the embodiment) may return to previous steps (e.g., step 718 ) to receive additional commands from the user concerning the same or other icons 602 . If an instantiation command is received, then the object is instantiated, and the system may at this point be finished (at step 730 ) or return to receive additional commands from the user.
  • the steps shown in FIG. 9 are meant to be exemplary. Consequently, different steps than those shown can be taken in conjunction with the development of control programs using the advanced control hardware hierarchy pane 660 .
  • the present system and method can be implemented to design programs that are for a variety of purposes, beyond the control of strictly industrial processes.
  • the present system and method can be implemented in designing programs that integrate information related to industrial processes with the calculation of financial results and predictions.
  • the present system and method can be implemented in designing programs that relate to higher-level business processes such as manufacturing execution systems (MES) and high-level ERP systems.
  • MES manufacturing execution systems
  • the present system and method can be implemented in designing programs for purposes unrelated to industrial control, for example, programs used by personal computers used to control functionality within a home.
  • the present invention is intended to broadly extend to the development of customized programs through the use of a variety of hardware, software applications, control and processing devices, operator interfaces and networking structures such as the internet.

Abstract

A method and system are disclosed for creating programs executable on an industrial controller to control an industrial process. The method includes providing a plurality of templates from at least one library, where each template has at least one respective control variable. The method also includes receiving selections of at least some of the plurality of templates, and identifying at least some of the control variables as replacement fields. The method further includes creating at least one interface mapping to link to the replacement fields, where the first and second templates linked by the interface mapping form at least a portion of a compound template. The method additionally includes instantiating an object using the compound template, where the object forms at least a portion of the control program.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of U.S. patent application Ser. No. 09/404,771, which was filed on Sep. 24, 1999.[0001]
  • FIELD OF THE INVENTION
  • The present invention relates to systems for developing software programs for use in a variety of a environments including, for example, programs for controlling industrial processes or manufacturing equipment. [0002]
  • BACKGROUND OF THE INVENTION
  • Computer programs are implemented in countless ways in modern life to provide control, monitoring and other capabilities to a variety of systems. Although some standardized programs are used ubiquitously, many (if not most) modem systems require at least some programming that is uniquely tailored for the particular purposes of the systems. For example, industrial controllers, which are commonly used for controlling industrial processes or manufacturing equipment, typically require control programs that are uniquely designed for the particular industrial process. Accordingly, it is important to be able to efficiently and easily develop such programs. In this regard, it is known to reuse elemental portions of other control program “fragments” or “templates” in creating the control logic of a control program for a particular job. This may be done by copying the program templates and instantiating them one or more times within the body of the control program to be developed. [0003]
  • A characteristic feature of many control programs is the use of a large number of input and output variables, each corresponding to control points on the controlled process. The input and output variables of the reused program templates, when integrated into the body of the control program being developed, must be re-named and cross referenced so as to preserve the uniqueness of the variable names for each template and so as to keep track of the variable's relationship both to the overall controlled process and to the program template of which it is a part. This renaming and cross-referencing is a laborious task. [0004]
  • In U.S. patent application Ser. No. 09/404,771, which was filed on Sep. 24, 1999, and which is hereby incorporated by reference herein, a system is described that allows templates to be associated with portions of a model of an industrial process (an “area-model”), typically in response to commands received from a program designer as provided by way of a computer terminal. Once the templates are associated with portions of the area-model, the templates are instantiated into objects that pertain to the particular portions/components. During the instantiation process, the system automatically renames those of the variables of the instantiated objects that must be renamed in order to allow the objects to operate in concert with one another as an overall control program. [0005]
  • Although the above-described system works well in many circumstances, there are occasions where the system's efficiency of operation could be improved. In particular, there are occasions where the templates that are available to a program designer pertain to relatively low-level components of a process (e.g., a motor in an industrial process), even though higher-level components of the process (e.g., a conveyor employing multiple motors) may sometimes be employed. On such occasions, the above-described system is only able to properly rename the variables of the templates at the lowest level. If, at a higher-level, one of the templates depends upon one of the lower-level templates, the program designer must manually rename the relevant variables. [0006]
  • For example, a template having two rungs of ladder logic with four control variables can be used to control the operation of a motor that raises and lowers a conveyor table. One rung of the ladder logic can (in this example) provide that the motor would raise the conveyor table so long as an up pushbutton was pressed (represented by a variable named UP_PB), and so long as an upper limit of the conveyor table's position was not reached (represented by a variable named UP_LIMIT). A second rung of the ladder logic could provide that the motor would lower the conveyor table so long as a down pushbutton was pressed (represented by a variable DOWN_PB), and so long as a lower limit of the conveyor table's position was not reached (represented by a variable named DOWN_LIMIT). Given this example, the above-described system for developing a control program could properly instantiate the template. During instantiation, the variables each could be provided with a prefix (e.g., MOTOR[0007] 1_) indicating that the variables pertained to the first motor, thus producing the desired control program (or at least the desired portion of a control program) for controlling the motor.
  • However, suppose that this control program was being designed not only to control the motor for raising and lowering the conveyor table, but also to control a second motor for the conveyor itself. In such case, the second motor for the conveyor could be controlled according to a third rung of ladder logic in which that motor would run so long as a run pushbutton was pressed (represented by a variable RUN_PB), so long as both the up limit of the conveyor table (represented by a variable UP) was attained and the down limit of the conveyor table (represented by a variable DOWN) was not attained. Further, during instantiation, each of these variables could be provided with another prefix (e.g., MOTOR [0008] 2_) indicating that these variables pertained to a second motor.
  • While instantiation of these variables relating to the second motor would produce a desired control program (or control program portion) if only the second motor's operation was of interest, in this example, the second motor's operation in fact is interrelated to the operation of the first motor-that is, the variables UP and DOWN correspond to the variables UP_LIMIT and DOWN_LIMIT associated with the first motor. Consequently, the desired control program for the overall conveyor should, upon instantiation, utilize the same variables to represent the position of the conveyor table in all three rungs of ladder logic, rather than different variables in the different rungs of ladder logic (e.g., MOTOR[0009] 1_UP_LIMIT and MOTOR1_DOWN_LIMIT versus MOTOR2_UP and MOTOR2 DOWN).
  • Of course, the different variable names can be manually changed by the program designer after the instantiation process has occurred. However, such manual changes are what the programming system is intended to minimize. Also, a higher-level, specialized template for a conveyor could be designed, without involving the specific templates for the first and second motors. Yet the creation of such a specialized template would in itself be complicated. Further, the creation of such a specialized template would eliminate the benefits associated with creating control programs by way of lower-level, simpler, more modular templates such as those representing the motors. [0010]
  • Therefore, it would be advantageous if an improved method and system for developing control programs could be designed. In particular, it would be advantageous if such a method and system allowed for developing a control program by selecting low-level, modular templates and instantiating corresponding objects based upon those templates, but also facilitated the appropriate renaming of control variables during the instantiation process even when the various modular templates referred to one another or otherwise built upon one another to create higher-level program portions representing higher-level system components. [0011]
  • BRIEF SUMMARY OF THE INVENTION
  • The present inventors have recognized that the existing method and system for developing control programs could be improved by including with that system an additional program that was able to extract relevant control variable names from templates. Once those variable names were extracted, corresponding variable names from related templates could be displayed to the program designer in a tabular format, with the program designer being presented with an opportunity to create substitute “interface” variable names or tags that would globally replace related control variable names throughout all of the related templates. By substituting such interface tags throughout the templates, truly “compound” templates could be generated with ease using the modular, lower-level “simple” templates. Upon the interface tags being specified, the normal instantiation process could continue, with variable names being automatically modified to correspond to the particular system components for which the control program was being designed. [0012]
  • In particular, the present invention relates to a method of creating a program executable on an industrial controller to control an industrial process. The method includes providing a plurality of templates from at least one library, where each template has at least one respective control variable, and receiving selections of at least some of the plurality of templates. The method further includes identifying at least some of the control variables as replacement fields, and creating at least one interface mapping to link to the replacement fields, where the first and second templates linked by the interface mapping form at least a portion of a compound template. The method additionally includes instantiating an object using the compound template, where the object forms at least a portion of the control program. [0013]
  • Additionally, the present invention relates to a system for developing a program for operating an industrial process. The system includes an operator interface, and a computer coupled to the operator interface, where the computer includes a memory. The operator interface is capable of displaying a catalog of templates within a library stored in the memory, and capable of displaying a catalog of objects within a project stored in the memory. The computer includes a program that is capable of automatically identifying, within at least some of the templates, control variables that are appropriate for replacement. The operator interface is capable of receiving commands to link interface mappings to the identified control variables, so that a compound template is formed from the templates corresponding to those variables. The computer is able to instantiate the compound template to create a compound object for inclusion in the project. [0014]
  • The present invention further relates to a system for developing a program for operating an industrial process. The system includes means for receiving user inputs, means for storing libraries having templates and projects having objects, and means for automatically identifying control variables within the templates that are capable of being replaced. The system additionally includes means for modifying the identified control variables to link a plurality of the templates together to form a compound template, and means for instantiating the compound template.[0015]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a simplified block diagram of a system for developing control programs for an industrial process, which includes server computers, operator interfaces, and a controller for controlling an industrial process based upon the control programs; [0016]
  • FIG. 2 is a detailed block diagram of the controller and one of the server computers of the system of FIG. 1; [0017]
  • FIG. 3 is a schematic diagram showing software programs and entities employed by the system of FIG. 1; [0018]
  • FIGS. [0019] 4-6 provide views of several exemplary screens that may be displayed by the operator interfaces of the system of FIG. 1, particularly during development of a control program;
  • FIG. 7 is a flow chart showing exemplary steps of operation the system of FIG. 1 during development of a control program; [0020]
  • FIG. 8 provides a view of an additional exemplary screen that may be displayed by the operator interfaces of the system of FIG. 1; and [0021]
  • FIG. 9 is a flow chart showing exemplary steps of operation of the system of FIG. 1, particular in connection with an advanced control hardware hierarchy pane as shown in FIG. 8. [0022]
  • DETAILED DESCRIPTION OF THE INVENTION
  • Referring now to FIG. 1, an [0023] industrial control system 10 is used to control a process 12 which, for example, may include components such as a tank 14, as well as a conveyor 13 operated by first and second motors 15 and 17, which respectively control movement of a conveyor table up and down and control movement of the conveyor belt. The process 12 may be controlled according to control variables communicated over lines 16. The control variables may be output signals controlling actuators (e.g., the motors 15,17) or may be inputs from sensors (e.g., on the tank 14) such as temperature sensors, motion sensors or level sensors.
  • The [0024] lines 16 are received by I/O circuits 18 providing for basic signal processing known in the art and for the conversion between analog signals and digital values for computer processing. The digital values may be communicated over a communication link 20 between the I/O circuits 18 and a programmable logic controller (or PLC) 22. The programmable logic controller 22 also communicates, either over the communication link 20 or separate communication link(s), with one or more server computers 24. The server computers 24 are further in communication, either by way of the communication link 20 or separate communication link(s), with one or more operator interfaces 25 such as conventional desktop computers or workstations. The server computers 24, operator interfaces 25, and programmable logic controller 22 (and possibly other programmable logic controllers associated with other industrial processes), can be configured in a network, such that the various devices are able to communicate with one another. For example, where as shown two server computers 24 are employed, either of the operator interfaces 25 potentially can communicate with both of the server computers 24.
  • Referring now to FIG. 2, the [0025] programmable logic controller 22 includes at least one processor 26 connected with an internal memory 28 via a bus 30 also communicating with the communication link 20 by way of an I/O module 29. The memory 28 includes an I/O table storing values of the control variables received from or transmitted to the I/O circuits 18. The memory 28 also includes a control program 34 reading those I/O values and executing a control logic prepared by a programmer specifically for the controlled process 12, and various operating system programs 36 well understood in the art.
  • The [0026] control program 34 is generated by way of one or more of the servers 24 operating in conjunction with one or more of the operator interfaces 25, which allow for programmers or other persons to input commands or other information relating to the control program. As shown in FIG. 2, each of the servers 24 includes a processor 42 (e.g., a microprocessor, microcontroller, computer or the like), a memory 44, and one or more I/O terminals 27, all of which are coupled by way of an internal bus 46. The I/O terminals 27 allow for communication between the servers 24 and the communication link(s) 20. As discussed further with reference to FIGS. 3-7, the memory 44, as controlled by the processor 42, acts as a repository that operates according to specific procedures that make it possible for the control program 34, and other information useful in creating the control program, to be input, accessed and modified in an organized manner by way of the multiple servers 24, operator interfaces 25, and programmable logic controller 22 (or possibly more than one such programmable logic controller), etc.
  • Turning to FIG. 3, aspects of the software programs that are operable on the [0027] industrial control system 10 are shown. As mentioned earlier, the memory 44 of the server computers 24 (as operated by the processor 42 of each respective computer) operates as a repository 50. Within the repository 50 are stored one or more libraries 60 of templates 70. The templates 70 constitute program fragments that have not yet been instantiated into program objects, that is, control variables and other portions of the templates have not been configured for operation in a specific control program. Also stored within the repository 50 are one or more projects 80. The projects 80 are control programs that are either completed or in a state of development, and that are intended for eventual implementation on one or more programmable logic controllers 22 associated with one or more processes such as the process 12. The projects 80 constitute maps or models of industrial processes, which can be displayed in a hierarchical list of schematic form. The projects 80, when completed, are made up of objects 91 that correspond to the different components within the projects, and which operate in conjunction with one another to form the overall control programs.
  • As shown, in the present embodiment, the [0028] templates 70 can include either or both of simple templates 72 and compound templates 74. Each simple template 72 typically includes three portions, namely, a main data portion 76, control variables that can be replaced and thereby constitute replacement mappings 78, and user defined properties 79. The main data portion 76 typically is the body or control logic code of a simple template 72. The main data portion 76 can include ladder code and graphic information that will be duplicated during instantiation. The replacement mappings 78, which are described further with reference to FIGS. 4-6, are particular input and output variables of the simple template 72. The user-defined properties 79 specify characteristics of the simple template and can be used to specify the replacement mappings as well. Exemplary simple templates 72 could include, as shown in FIG. 3, ladder logic templates 71, HMI graphic templates 73, and field device templates 75.
  • As discussed, the [0029] templates 70 further can include compound templates 74, each of which typically includes one or more simple templates 72, one or more interface mappings 68, and one or more user-defined properties 66. The interface mappings 68 constitute replacement variable names or tags that link the simple templates 72 of the compound template 74 together. The user-defined properties 66 can specify characteristics of the compound template 74 and also be used to specify replacement mappings.
  • Similarly, the [0030] objects 91 of the projects 80 can be either simple objects 82 or compound objects 84. The simple objects 82 can include data in a variety of formats. For example, as shown, the simple objects 82 can include (in one embodiment) field device objects, objects created using RSLogix 5000, RSView SE data, or MS Word, RSView SE HMI-created objects, objects created by way of MS Excel, other file-related objects and user-created objects (e.g., objects created by way of a simple editor). Further, the compound objects 84 are made up of one or more simple objects 82. As instantiated versions of the simple templates 72, the simple objects 82 are instantiated program portions that correspond to low-level components of the industrial process 12 or other process (e.g., individual motors). The compound objects 84, which are instantiated versions of the compound templates 74, constitute program portions that correspond to higher-level portions of the process 12 (or another process), e.g. portions of the process that include multiple lower-level components (e.g., a conveyor that depends for its operation upon two motors). The projects 80 can be formatted in accordance with the S95 standard, which classifies equipments into three categories, namely, discrete, batch and continuous equipments, although other standards can also be employed.
  • In accordance with one embodiment of the present invention, the [0031] memory 44 includes, in addition to the data within the repository 50, additional interface or “wrapper” programs 90 that interface between the data within the repository, such as the templates 70 and the objects 91, and application programs 95 that can be invoked at the operator interfaces 25. The wrapper programs 90 need not be employed to interface between the data within the repository 50 and certain applications, such as an applications 98, which for example may be specially designed to handle data within the repository or designed to perform a particular limited function. Nevertheless, the present system 10 is designed to enable the development of control programs by way of templates 70 and objects 91 that are formatted in accordance with a variety of software formats, including familiar third-party software programs such as MS Word and MS Excel. Thus, the wrapper programs 90 allow the system 10 to be highly flexible in terms of the types of data that can be incorporated into control programs and be accessed by users. The wrapper “programs” 90 referred to herein should be understood to encompass a broad variety of different program routine types, including not only full-fledged programs or applications, but also template modules, interface modules, plug-in modules, or dynamic link libraries (“dlls”) that contain multiple executable program routines called upon by other applications.
  • The wrapper programs [0032] 90 provide several functions. In particular, the wrapper programs 90 are able to import, export, extract and find (or call upon) specific data types. As discussed further below, the wrappers 90 are able to analyze the templates 70 and identify control variables that can be replaced during the instantiation process or that may be linked with other variables by way of interface mappings 68 in the formation of compound templates 74. Additionally, the wrapper programs 90 are able to analyze the templates 70 or objects 91 to determine the type of software program or program format that was used to create that data. For example, in certain embodiments, MS Word and MS Excel wrapper programs 90 would respectively be able to determine whether data in a template 70 is within (or not within) a MS Word format or a MS Excel format. In some of these embodiments, application programs (e.g., MS Word or MS Excel) can assist in selecting which of the wrapper programs should be invoked in a given circumstance. In other embodiments, a given wrapper program 90 would be able to determine the format of data in a template 70 from among several formats. For example, in one such embodiment, a given wrapper program 90 would be able to determine whether data in a template 70 is within a MS Word format, a MS Excel format, or another format. The wrapper programs 90 are further capable of determining which editing tools or other applications are appropriate for allowing a user to input or otherwise modify data at one of the operator interfaces 25. Thus, due to the wrapper programs 90, the system 10 enables the development of control programs by way of a variety of software programs and other tools.
  • Turning to FIGS. [0033] 4-6, exemplary screens 200, 300 and 400 capable of being displayed at one or more of the operator interfaces 25 during the development of a control program 34 are shown. The screens 200, 300 and 400 include a variety of user-selectable buttons 202, which provide various options to a user. The buttons 202, and other selectable options discussed below, can be selected through the use of a conventional input/output device at the operator interfaces 25, such as a mouse, and the buttons 202 in one embodiment are drop-down menus containing additional options.
  • During operation of the [0034] system 10, a variety of information from the repository 50 can be provided to the operator interfaces 25 and displayed on those interfaces. In particular, the screens 200, 300 and 400 can display several different windows or panes. In one embodiment, these panes can include a system equipment hierarchy pane 204, which displays the physical layout of equipment components in a project as well as the objects 91 that have been instantiated in correspondence with those components. Also, the panes can include a template libraries pane 206, which is able to display the templates within a selected template library. The template libraries pane 206 includes a drop down menu 208 by which a user is able to select a particular library of templates from a list of existing templates.
  • As shown in FIGS. [0035] 4-6, the system equipment hierarchy pane 204 in certain embodiments provides a map or chart of the various equipment components and/or corresponding objects in a given project 80. For example, a project entitled “Kam & Joe's plant” includes two assembly lines A-1 and A-2, with the first assembly line A-1 including a higher-level component conveyor 1 that includes two lower-level components motor 1 and motor 2, while the second assembly line A-2 includes three components start, stop and motor 1. Also with respect to FIGS. 4-6, an exemplary template libraries pane 206 shows an exemplary library “testlib” that includes compound templates and simple templates, with the simple templates including templates created using MS Word, RS Logix 5000, and RSView. As shown, the panes 204, 206 can display their information in the form of a set of folders, although in alternate embodiments the information can be cataloged in other formats.
  • In addition to the system [0036] equipment hierarchy pane 204 and template libraries pane 206, depending upon the embodiment, the system 10 is capable of displaying several other panes (not shown). These can include, for example, a control hardware hierarchy pane, which displays the physical layout of control hardware devices (such as programmable controllers, chassis, and I/O modules) and which contains all the device service-related objects in a tree structure. Also, a system 10 can display a control hardware catalog pane, which displays a catalog of all supported control hardware devices, a workflow pane, which displays all supported workflows, and a detail pane, which displays the properties of a selected object in the system equipment hierarchy pane 204, template libraries pane 206, control hardware hierarchy pane or other control hardware catalog pane in a table format. Further, the system 10 can include a field device library pane, which displays a list of field device classes, and a field device picker pane, which displays all instantiated field devices in a project, optionally filtered by whether those devices are attached to I/O terminals.
  • Further, as shown in FIGS. [0037] 4-6, a workspace pane 210 is provided, which is the main editing area for templates, objects and projects. As shown in FIG. 4, the workspace pane 210 can include, upon the selection of a template “RUN” from the template libraries pane 206, a pane 212 that displays characteristics of the template “RUN”. The pane 212 includes multiple variables, properties associated with those variables, values of those variables, and customized aspects. The pane 212 also includes selectable buttons 214 that allow a user to select a general display of template characteristics 214, aspects of a particular component within the templates 216, and properties 218. Also, the pane 212 includes buttons 220 that allow the user to add a component, delete a component or replace a component within the template, and additional buttons 222 for applying, canceling, or accepting changes to a template 222, so that the template stored in the repository 50 is updated.
  • FIGS. [0038] 4-6 show different views of the workspace pane 210 during the development of a compound template “conveyor” and then the instantiation of that compound template as a compound object “conveyor 1”. As shown in FIG. 4, upon selection of the simple templates “RUN”, “motor up”, and “motor down” from the template libraries pane 206, the ladder logic corresponding to each of these simple templates appears in the workspace pane 210. Specifically, the ladder logic is displayed using RS Logix 5000 software, which is invoked by a wrapper program 90. Further as shown, the ladder logic corresponding to the “RUN” template provides that a conveyor motor will start to run whenever a RUN pushbutton is pressed, the conveyor table is at its upper limit, and the conveyor table is not at its lower limit. Thus, the output of this rung of ladder logic depends upon three variables, namely, “RUN_PB”, which represents the status of the RUN pushbutton, “UP”, which represents whether the conveyor table is at its uppermost position, and “DOWN”, which represents whether the conveyor table is at its lowermost position.
  • The ladder logic corresponding to the “motor up” template is designed so that a motor continues to receive an up signal so long as an up pushbutton is pressed (represented by a variable “UP_PB”), and the conveyor table is not yet at its upper limit (as represented by another variable “UP_LIMIT”). Additionally, the “motor down” template ladder logic provides a signal to cause downward movement based upon whether a down pushbutton is pressed (as represented by a variable “DOWN_PB”) and further dependent upon whether the conveyor table has reached its lowest position (as indicated by a variable “DOWN_LIMIT”). [0039]
  • The desired compound template to be created (“conveyor”) is for a conveyor that is able to be lowered or raised within upper and lower limits and, only when at its upper limit, is able to be run. As such, the conveyor template can be formed from the “RUN”, “motor up”, and “motor down” simple templates. However, in order that the control variables of the compound template be properly modified during the instantiation process, certain of the control variables of the simple templates must be modified. In particular, the “UP_LIMIT” variable of the “motor up” simple template should be the same as the “UP” variable of the “RUN” simple template, and the “DOWN_LIMIT” control variable of the “motor down” simple template should be the same as the “DOWN” variable of the “RUN” simple template. [0040]
  • In accordance with one embodiment of the present invention, one or more of the [0041] wrappers 90 are capable of analyzing the simple templates “RUN”, “motor up”, and “motor down” to identify control variables that are potentially replaceable. Upon receiving a command from the operator to form the compound template “conveyor” (e.g., by choosing a corresponding selection listed under the “template” button 202), the workspace 210 displays a pane 213 to which the user can add the simple templates that are to be included within the compound template. Specifically, the pane 213 lists each of the selected simple templates in a “name” column and then in adjacent columns provides template type information and version information. The user is then prompted to enter interface tags that correspond to the identified control variables.
  • Upon the entry of such interface tags, another table [0042] 230 within the workspace pane 210 displays the correspondences between the interface tags and the various control variables of the simple templates. Thus, a first interface tag “RAISED” corresponds to both the “UP_LIMIT” control variable of the “motor up” simple template and the “UP” control variable of the “RUN” simple template, and a second interface tag “LOWERED” corresponds to the “DOWN_LIMIT” control variable of the “motor down” simple template and the “DOWN” variable of the “RUN” simple template. Referring again to FIG. 5, the pane 224 is modified to include the interface tags “RAISED” and “LOWERED” in place of the “UP_LIMIT”, “DOWN_LIMIT”, “UP” and “DOWN” control variables of the simple templates.
  • Once the compound template “conveyor” has been completed, it can be instantiated in the same manner as a simple template. Thus, upon receiving a command to instantiate the compound object “[0043] conveyor 1”, the system 10 inserts appropriate prefixes (or suffixes) into the control variable names. Thus, as shown in a compound object pane 232 of FIG. 6, the control variable that was originally the “UP” variable of the simple template “RUN” (see FIG. 4) now is the variable “CONVEYOR1_RAISED.” The term “RAISED” is the interface tag that was substituted for “UP”, and additionally the prefix “CONVEYOR 1” has been added during instantiation of the compound template “conveyor1.”
  • Further, as shown in [0044] pane 224 of FIG. 6, the instantiated compound object “conveyor 1” includes three rungs of ladder logic. The first rung of ladder logic, which governs the movement of the conveyor due to the second motor 17, includes control variables “CONVEYOR1_RUN_PB”, “CONVEYOR1_RAISED”, and “CONVEYOR1_LOWERED”, in addition to an output variable “CONVEYOR1_RUN.” The compound object further includes second and third ladder logic rungs that employ the variables “CONVEYOR1_UP_PB”, “CONVEYOR1_RAISED”, CONVEYOR1_UP”, “CONVEYOR1_DOWN_PB”, “CONVEYOR1_LOWERED” AND “CONVEYOR1_DOWN.”.
  • Referring to FIG. 7, exemplary steps of operation of the [0045] system 10 are shown by a flowchart 500. These steps are meant to be exemplary, that is, the exact steps of operation of the system 10 can vary from those shown in terms of the order of the steps, as well as in terms of the number of steps and whether any given set of steps are performed at any given time. Upon starting operation at step 302, the system receives by way of the operator interface 25 identification information from a user (e.g., a program designer) who desires to login to the system at step 304. At step 306, the system 10 determines whether the identification information sufficiently indicates that the user is authorized to log on to the system. If the user is not authorized, the system returns to step 304, while if the user is authorized, the step proceeds to step 308. At step 308, the system 10 awaits a request or command from the user, which often will be a request to display a particular template library. If such a request is provided, the system proceeds to step 310, at which the system displays the requested template library (e.g., by way of the template libraries pane 206). If such a request is not received at step 308, the system remains at step 308.
  • Proceeding from [0046] step 310, the system 10 at step 312 then may receive a command to open the template library editor, since often a user will wish to edit one or more of the templates within the library. If such a command is not received, the system returns to step 308. However, assuming that such a command is received at step 312, the system proceeds to step 314, at which the template library editor is opened. Then, at step 316, the system may receive a command to create a new template. If no such request is received, the system instead may receive a request to modify one of the existing templates shown in the library of templates currently being displayed, at step 318. If no such command is received, the system returns to step 316, while if such a request to modify an existing template is received at step 318, the system then proceeds to step 320, at which the system determines whether the template is checked into the system. Thus, the repository 50 makes sure that no other user is currently modifying the existing template before it allows the present user to modify that template. However, if one user is modifying a template, the repository 50 still allows other users to access the template simply to read the template information without modifying it. If the template is determined to be checked out at step 320, the system returns to step 316, while if the template is determined to be checked in, the system allows the requested template to be checked out and displays the template's attributes at step 322. Then at step 324, the system may receive a command to modify certain of the template's attributes, such as its data portions 76, its replacement mappings 78, or other user-defined property 79. If such changes are entered, the system proceeds to step 326, at which it records a new version of the template in the repository, and checks in that template (as well as stores a version number associated with that template). Once the modified version of the template has been checked in, it can be modified by another user (one user at a time), and also can be simultaneously accessed by other users to the extent that those users only wish to access the template to read the template's information.
  • If, at [0047] step 316, the system 10 has been commanded to create a new template (e.g., a create new template button has been selected by the user), the system then may create a new folder structure or structures within the template library to account for the new template, at step 328. Further, it is determined at step 330 whether the requested new template will be a simple template 72 or a compound template 74. If a new simple template has been requested, the system proceeds to step 332, at which the system may receive user-specified data, such as a name of the new simple template. Then, at step 334, the system may receive additional information such as information concerning the main data portions 76 or the replacement mappings 78 associated with the new simple template 72. Then, at step 336, the system will automatically insert tag placeholders within the control variable names associated with the new simple template. In one example, the placeholder may take the form of a word surrounded by percent signs (e.g., % object 1%). Regardless of the placeholder, the placeholder is incorporated into the control variables in order that later on, during instantiation of the template, the appropriate changes to the control variable can be automatically made by the system 10 (e.g., the appropriate addition of prefixes or suffixes to the control variable names). Once the tag placeholders have been inserted at step 336, the new simple template is recorded in the repository 50 (as is its version, e.g., version 1) at step 326.
  • If at [0048] step 330, a compound template was selected, the system 10 at step 338 may receive user-specified data such as names and other characteristics of the compound template 74 including, in particular, names of the simple templates or other compound templates that are intended to be incorporated within that compound template. Then, at step 340, the system receives user-specified interface tags, which will be used to link up the component templates within the compound template. Then at step 342, the system receives selections by the user of the actual simple templates or compound templates that are to be included in the compound template. Next, at step 344, the system automatically identifies the replacement mappings in each of the selected templates. These are the control variables (as modified by the insertion of placeholders) that can be linked up to form the compound template. This is typically performed by one of the wrapper programs 90. Then, at step 346, the system receives user commands to link the various interface tags with the different replacement mappings, which completes the formation of the compound template. Thus, after step 346 the system again proceeds to step 326, at which the new compound template is saved in the repository 50.
  • Although not shown in FIG. 7, additional operations (some of which are described above with reference to FIGS. [0049] 3-6) can be requested by users and/or performed by the system 10 in addition to the operations shown in FIG. 7. In particular, the system may receive requests from users to display projects and the objects associated with those projects (as well as equipment components associated with those projects) and the system may respond by displaying that information in a manner similar to steps 308 and 310 of FIG. 7. Likewise, the system can receive requests from users to modify various objects and create new objects. In particular, the system can perform operations associated with the instantiation of templates into objects with respect to different control programs being developed. Also, once a control program for a project has been developed, it can be downloaded to the internal processor 26 of the programmable logic controller 22 that requires the program in order to control the industrial process 12 with which the controller associated. While the repository 50 limits the access of given templates, objects and projects to one user at a time, the system 10 is configured to allow separate copies of any given control program to be downloaded to programmable logic controllers even though the repository 50 continues to maintain a copy of that control program. Thus, a programmable logic controller 22 can continue to use a given control program even though that control program may be further modified later on by other parties for other purposes.
  • Turning to FIG. 8, another [0050] exemplary screen 600 includes, in addition to the user-selectable buttons 202, the system equipment hierarchy pane 204 and the template libraries pane 206, an advanced control hardware hierarchy pane 660 within the workspace pane 210. The advanced control hardware hierarchy pane 660 shows, in schematic form, the various components of the plant (in this case, Kam & Joe's plant). Each of the major system components are shown as a separate respective graphical icon 602. Thus, in this case, icons 602 are displayed for the components of “line A-1”, namely, “conveyor 1”, “motor1”, “motor2”, and for the components of “line A-2”, namely, “start”, “stop” and “motor 1”. Also, one of the icons 602 represents, in this example, the programmable logic controller used to control the plant. As shown, some of the icons 602 can be varied in appearance depending upon particular characteristics of the components being represented. For example, the icon corresponding to the programmable logic controller includes slots/ports 606, two of which are shown to include cards that are used to control the first and second lines A-1 and A-2. As shown, electrical or other connections between components can be shown schematically through the addition of connection links 604.
  • By allowing the components of a given plant or other system to be displayed graphically on operator interfaces, the advanced control [0051] hardware hierarchy pane 660 allows users to navigate through around the system and easily identify and select components that are of interest. For example, a user can use a mouse (or similar I/O device) to move a cursor around the advanced control hardware hierarchy pane 660 to move to different components or groups of components. Also, where all of the components of a large system cannot be displayed on a single display screen, the system also allows for a user to shift the region of focus so that different portions of the overall schematic become viewable (or, in alternate embodiments, different pages of a schematic can be selected for viewing). The advanced control hardware hierarchy pane 660 also aids the user in creating a control program for a system, since the relative connection points between different components are easily visualized.
  • Further, in at least some embodiments, the [0052] icons 602 are tied to templates, objects or other files/programs that are to be implemented with respect to the components represented by those icons. By selecting (e.g., “clicking”) on a given icon 602, an appropriate wrapper program 90 is invoked that allows for the appropriate application to be started so that the file/program associated with the icon is activated, and so that data associated with the icon is viewable by the user. Thus, the advanced control hardware hierarchy pane 660 provides a convenient mechanism by which users can find and obtain information relating to components of interest. In certain embodiments, after template information has been associated with the icons 602, the objects associated with different system components can be instantiated merely by further selecting (e.g., “double-clicking”) on the respective icons 602. In other embodiments, an entire control program for the system is automatically instantiated as templates are associated with the displayed icons 602 (e.g., by dragging the relevant templates on the icons). The system displayed on the advanced control hardware hierarchy pane 660 can created by one or more users, and existing system schematics can be stored in, and accessed from, the repository 50. As with other information stored in the repository 50, only one user can be modifying the schematic information at any one time.
  • Referring further to FIG. 9, a [0053] flow chart 700 shows exemplary steps of operation in designing and modifying a schematic representation of a system by way of the advanced control hardware hierarchy pane 660 and utilizing that schematic to develop a control program. Upon starting at step 701, a user may access an icon library 702 to obtain icons 602 associated with different system components. Some of the icons 602 may relate to groups of components. The icons 602 may be obtainable in one of the libraries accessible using the template libraries pane 206 and often (although not always) may have templates, files, programs or other data associated with them. Upon receiving a selection by a user of an icon at step 704, the system also typically will receive an indication of an appropriate position of the selected icon on the advanced control hardware hierarchy pane 660. For example, the user may drag the icon to a particular location on the pane 660. Then, at step 708, the system may receive a command to link the dropped icon to one or more other icons. If such a command is provided, the system displays a connection link 604 (e.g., a line) on the screen connecting the appropriate icons. If no linking command was received at step 708, it is determined whether the schematic diagram has been completed, at step 712. If the diagram has not yet been completed, the system can receive additional selections of icons to add to the diagram, by returning to step 704. If the diagram has been completed, it can be stored in the repository 50 at step 713 (the stored information may further include version information).
  • At [0054] step 714, the user may provide to the system a navigational command. This could be, for example (in the case of a large schematic diagram that is not easily displayed on a single screen), a command to shift the portion of the schematic diagram that is being displayed. Such a command could be provided, for example, by “dragging” the entire schematic diagram. In response to such a command, a particular portion of the schematic diagram is displayed, at step 716. Next, at step 718, the system may receive a selection of one of the icons 602. The selection may be provided by a user who desires that detailed information about the system component represented by the icon be displayed. Also, a user may provide such a selection to cause the system to display a template, object, program, or other type of data that is associated with the icon, so that the data can be modified. If such is the case, at step 720, the system determines whether the selected information has been checked in to the repository 50. If the data has not been checked in, the system returns to step 718 (and/or provides an indication to the user that the data cannot be modified, although the user may still be able to read the data).
  • If the selected data has been checked in, the system at [0055] step 722 employs one (or more) of the wrapper programs 90 to identify the appropriate application program that can be used to access and modify the data. Then, at step 724, the accessed data is displayed. Further, the accessed data can then be modified and further stored in response to a command to modify the data, at step 725. If such a command is received, the data is modified at step 726 (and may also be stored in the repository 50 at the point). If the data associated with the icon 602 is in the form of a template, the user can at this point provide a command to instantiate an object based upon this data, at step 727. If no such command is received, the system is finished (at step 730) or (depending upon the embodiment) may return to previous steps (e.g., step 718) to receive additional commands from the user concerning the same or other icons 602. If an instantiation command is received, then the object is instantiated, and the system may at this point be finished (at step 730) or return to receive additional commands from the user. The steps shown in FIG. 9 are meant to be exemplary. Consequently, different steps than those shown can be taken in conjunction with the development of control programs using the advanced control hardware hierarchy pane 660.
  • It is specifically intended that the present invention not be limited to the embodiments and illustrations contained herein, but that modified forms of those embodiments including portions of the embodiments and combinations of elements of different embodiments also be included as come within the scope of the following claims. The present system and method can be implemented to design programs that are for a variety of purposes, beyond the control of strictly industrial processes. For example, the present system and method can be implemented in designing programs that integrate information related to industrial processes with the calculation of financial results and predictions. The present system and method can be implemented in designing programs that relate to higher-level business processes such as manufacturing execution systems (MES) and high-level ERP systems. Indeed, the present system and method can be implemented in designing programs for purposes unrelated to industrial control, for example, programs used by personal computers used to control functionality within a home. The present invention is intended to broadly extend to the development of customized programs through the use of a variety of hardware, software applications, control and processing devices, operator interfaces and networking structures such as the internet. [0056]

Claims (20)

We claim:
1. A method of creating a program executable on an industrial controller to control an industrial process, the method comprising:
providing a plurality of templates from at least one library, wherein each template has at least one respective control variable;
receiving selections of at least some of the plurality of templates;
identifying at least some of the control variables as replacement fields;
creating at least one interface mapping to link to the replacement fields, wherein the first and second templates linked by the interface mapping form at least a portion of a compound template; and
instantiating an object using the compound template, wherein the object forms at least a portion of the control program.
2. The method of claim 1, wherein the identifying of at least some of the control variables as the replacement fields is performed by a wrapper.
3. The method of claim 1, further comprising opening a template editor, and displaying at least one of the plurality of templates from the library by way of the template editor.
4. The method of claim 1, further comprising displaying in tabular form the replacement fields associated with the selected templates along with the at least one interface mapping.
5. The system of claim 1, further comprising
determining whether a compound template exists within the at least one library; and
receiving a command to create a compound template if the compound template does not already exist wherein, upon receiving the command, template information additionally is received.
6. The method of claim 5, wherein the template information includes a template name, a template description, and at least one template property.
7. The method of claim 1, further comprising receiving selections of at least one field device class, wherein the at least one field device class is included within the compound template.
8. The method of claim 1, wherein the control program additionally includes an instantiated simple template.
9. The method of claim 1, wherein each of the templates includes data, a control variable that constitutes a replacement mapping, and a user-defined property.
10. The method of claim 1, wherein content of the templates is selected from the group comprising ladder logic, human-machine interface graphic information, and field device information.
11. The method of claim 1, wherein each of the plurality of templates is a simple template that is in one of a field device format, a RSLogix 5000 format, a RSView SE format, a MS Word format, a MS Excel format, a file format and a user-created format.
12. The method of claim 1, wherein the at least one library is stored within a repository.
13. The method of claim 1 wherein, upon receiving selections of templates, the repository records that the templates are checked out, such that the templates cannot be secondarily checked out in response to other received selections while the templates remain checked out.
14. The method of claim 1, wherein the instantiated compound object is stored as part of a project stored within the repository, and wherein the project includes, in addition to the compound object, a plurality of additional objects, wherein the compound object and the additional objects are hierarchically arranged to form the project.
15. The method of claim 1, wherein the interfacing mapping has a different name than the replacement fields to which it is linked.
16. A system for developing a program for operating an industrial process, the system comprising:
an operator interface; and
a computer coupled to the operator interface, the computer including a memory;
wherein the operator interface is capable of displaying a catalog of templates within a library stored in the memory, and capable of displaying a catalog of objects within a project stored in the memory;
wherein the computer includes a program that is capable of automatically identifying, within at least some of the templates, control variables that are appropriate for replacement;
wherein the operator interface is capable of receiving commands to link interface mappings to the identified control variables, so that a compound template is formed from the templates corresponding to those variables; and
wherein the computer is able to instantiate the compound template to create a compound object for inclusion in the project.
17. The system of claim 16, wherein instantiating of the compound template includes creating a table containing all replacement tagnames within the compound template, replacing all of the replacement tagnames with instantiated tagnames corresponding to the particular compound object being created, and wherein instantiating of the compound template further includes creating corresponding low-level application files for the compound template.
18. The system of claim 17, wherein the replacing of the replacement tagnames includes inserting at least one of a prefix and a suffix onto the replacement tagnames.
19. The system of claim 18, further comprising a programmable logic controller, a second server computer and a second operator interface, all of which are coupled with the operator interface and the computer by way of communication links to form a network.
20. A system for developing a program for operating an industrial process, the system comprising:
means for receiving user inputs;
means for storing libraries having templates and projects having objects;
means for automatically identifying control variables within the templates that are capable of being replaced;
means for modifying the identified control variables to link a plurality of the templates together to form a compound template; and
means for instantiating the compound template.
US10/273,594 1999-09-24 2002-10-18 Method and system for developing a software program using compound templates Expired - Lifetime US6850808B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/273,594 US6850808B2 (en) 1999-09-24 2002-10-18 Method and system for developing a software program using compound templates
EP03023037A EP1422619A3 (en) 2002-10-18 2003-10-13 Method and system for developing a software program using compound templates

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/404,771 US6477435B1 (en) 1999-09-24 1999-09-24 Automated programming system for industrial control using area-model
US10/273,594 US6850808B2 (en) 1999-09-24 2002-10-18 Method and system for developing a software program using compound templates

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/404,771 Continuation-In-Part US6477435B1 (en) 1999-09-24 1999-09-24 Automated programming system for industrial control using area-model

Publications (2)

Publication Number Publication Date
US20030033037A1 true US20030033037A1 (en) 2003-02-13
US6850808B2 US6850808B2 (en) 2005-02-01

Family

ID=32228733

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/273,594 Expired - Lifetime US6850808B2 (en) 1999-09-24 2002-10-18 Method and system for developing a software program using compound templates

Country Status (2)

Country Link
US (1) US6850808B2 (en)
EP (1) EP1422619A3 (en)

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030004585A1 (en) * 2000-08-03 2003-01-02 Wolfgang Horn Industrial controller based on technology objects
US20040216084A1 (en) * 2003-01-17 2004-10-28 Brown Albert C. System and method of managing web content
US20040225730A1 (en) * 2003-01-17 2004-11-11 Brown Albert C. Content manager integration
US20040268260A1 (en) * 2000-06-21 2004-12-30 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US20050055348A1 (en) * 2003-09-05 2005-03-10 Sabine Deimel XSteps: modular interface to a manufacturing control system
US20050131971A1 (en) * 2000-06-21 2005-06-16 Microsoft Corporation Methods and systems for delivering software via a network
US20050149511A1 (en) * 2000-06-21 2005-07-07 Microsoft Corporation Methods and systems of providing information to computer users
US20060101385A1 (en) * 2004-10-22 2006-05-11 Gerken Christopher H Method and System for Enabling Roundtrip Code Protection in an Application Generator
US20060101387A1 (en) * 2004-10-22 2006-05-11 Gerken Christopher H An Open Model Driven Architecture Application Implementation Service
US20060200792A1 (en) * 2005-03-07 2006-09-07 Microsoft Corporation Process templates for software creation
US20060235829A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Query to an electronic form
EP1739512A1 (en) * 2004-04-15 2007-01-03 Mitsubishi Denki Kabushiki Kaisha Programmable logic controller peripheral device and program creation method thereof
US20070130500A1 (en) * 2005-12-05 2007-06-07 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US20070132779A1 (en) * 2004-05-04 2007-06-14 Stephen Gilbert Graphic element with multiple visualizations in a process environment
US7324856B1 (en) * 2003-09-25 2008-01-29 Rockwell Automation Technologies, Inc. Autogeneration of code via human-machine interfaces (HMI) and self-building HMI
US7415672B1 (en) * 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US20080222514A1 (en) * 2004-02-17 2008-09-11 Microsoft Corporation Systems and Methods for Editing XML Documents
US20090030534A1 (en) * 2007-07-05 2009-01-29 Sick Ag Method for the programming of a safety controller
US20090125125A1 (en) * 2000-08-03 2009-05-14 Siemens Aktiengesellschaft Industrial controller based on distributable technology objects
US20090240840A1 (en) * 2006-05-03 2009-09-24 Christopher Kevin Habben Methods and apparatus for configuring interface units
US20090300061A1 (en) * 2007-12-03 2009-12-03 Infosys Technologies Ltd. System and method for universe generation
US20090313743A1 (en) * 2008-06-20 2009-12-24 Craig Jason Hofmeyer Pants with saggy pants control system
US20100201182A1 (en) * 2005-01-14 2010-08-12 Michael John Gottschalk Continuous radius axle and fabricated spindle assembly
US7818677B2 (en) 2000-06-21 2010-10-19 Microsoft Corporation Single window navigation methods and systems
US7900134B2 (en) 2000-06-21 2011-03-01 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7925621B2 (en) 2003-03-24 2011-04-12 Microsoft Corporation Installing a solution
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US20110137447A1 (en) * 2008-09-17 2011-06-09 Khs Gmbh Method for operating an industrial system
US7971139B2 (en) 2003-08-06 2011-06-28 Microsoft Corporation Correlation, association, or correspondence of electronic forms
US7979856B2 (en) 2000-06-21 2011-07-12 Microsoft Corporation Network-based software extensions
US20110230980A1 (en) * 2010-03-22 2011-09-22 Fisher-Rosemount Systems, Inc. Methods and apparatus for a data driven interface based on relationships between process control tags
US8117552B2 (en) 2003-03-24 2012-02-14 Microsoft Corporation Incrementally designing electronic forms and hierarchical schemas
US8135481B2 (en) 2004-05-04 2012-03-13 Fisher-Rosemount Systems, Inc. Process plant monitoring based on multivariate statistical analysis and on-line process simulation
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
EP1914610A3 (en) * 2006-10-20 2013-01-23 Rockwell Automation Technologies, Inc. Design patterns employed for module programming
US8881039B2 (en) 2009-03-13 2014-11-04 Fisher-Rosemount Systems, Inc. Scaling composite shapes for a graphical human-machine interface
US8892993B2 (en) 2003-08-01 2014-11-18 Microsoft Corporation Translation file
US20150045917A1 (en) * 2008-09-30 2015-02-12 Rockwell Automation Technologies, Inc. Remote object data property replication method and system
US9229917B2 (en) 2003-03-28 2016-01-05 Microsoft Technology Licensing, Llc Electronic form user interfaces
US20160026162A1 (en) * 2014-07-23 2016-01-28 Emerson Process Management Power & Water Solutions, Inc. Process control system using typical and adapter components
US20170262436A1 (en) * 2014-12-15 2017-09-14 Mitsubishi Electric Corporation Information-system-construction support tool and information-system-construction support program
US9989950B2 (en) * 2015-07-17 2018-06-05 General Electric Company Systems and methods for generating control logic
US20180275858A1 (en) * 2015-09-25 2018-09-27 Contec Co., Ltd. Device, program, and method for creating monitoring image
US10216523B2 (en) 2015-07-17 2019-02-26 General Electric Company Systems and methods for implementing control logic
CN112654940A (en) * 2018-10-04 2021-04-13 欧姆龙株式会社 Program generation device, control method for program generation device, control program, and recording medium
CN113341864A (en) * 2021-06-07 2021-09-03 重庆高新技术产业研究院有限责任公司 PLC-based control similarity reversible logic system and analysis method thereof

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108373A (en) * 2001-09-28 2003-04-11 Toshiba Corp Versatile software development system, program therefor, and software component for use in the system
KR100484181B1 (en) * 2002-12-02 2005-04-20 삼성전자주식회사 Apparatus and method for authoring multimedia document
US20050091224A1 (en) * 2003-10-22 2005-04-28 Fisher James A. Collaborative web based development interface
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8302020B2 (en) * 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7814426B2 (en) * 2004-06-30 2010-10-12 Sap Aktiengesellschaft Reusable component in a collaboration workspace
US7996780B1 (en) * 2005-05-27 2011-08-09 Adobe Systems Incorporated Block visualization
US8560952B2 (en) * 2005-06-13 2013-10-15 Microsoft Corporation Adding an arbitrary number of placeholders to a custom layout
US7881812B2 (en) * 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US20070093917A1 (en) * 2005-10-20 2007-04-26 Honeywell International Inc. Storing and accessing relay ladder logic modules in a relational database
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
CN101617504B (en) 2005-11-15 2012-10-10 洛克威尔自动控制技术股份有限公司 Integrated programmer reference for industrial control device data
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US8732658B2 (en) 2006-09-29 2014-05-20 Rockwell Automation Technologies, Inc. Layered interface in an industrial environment
US8776092B2 (en) 2006-09-29 2014-07-08 Rockwell Automation Technologies, Inc. Multiple interface support
US9217998B2 (en) 2006-09-29 2015-12-22 Rockwell Automation Technologies, Inc. Management and development of an industrial environment
US9261877B2 (en) 2006-09-29 2016-02-16 Rockwell Automation Technologies, Inc. Multiple machine interface
US8265775B2 (en) 2008-09-30 2012-09-11 Rockwell Automation Technologies, Inc. Modular object publication and discovery
US8041435B2 (en) 2008-09-30 2011-10-18 Rockwell Automation Technologies, Inc. Modular object dynamic hosting
US8818757B2 (en) 2008-09-30 2014-08-26 Rockwell Automation Technologies, Inc. Modular object and host matching
US8078296B2 (en) 2006-09-29 2011-12-13 Rockwell Automation Technologies, Inc. Dynamic procedure selection
US9058032B2 (en) 2006-09-29 2015-06-16 Rockwell Automation Technologies, Inc. Hosting requirements for services
WO2008099307A1 (en) * 2007-02-12 2008-08-21 Philips Intellectual Property & Standards Gmbh Device for a networked control system
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
EP2037342B1 (en) * 2007-09-12 2010-12-15 Siemens Aktiengesellschaft Method of implementing production execution system
US8806357B2 (en) * 2008-08-29 2014-08-12 Sap Ag Plug-ins for editing templates in a business management system
US9122669B2 (en) 2008-08-29 2015-09-01 Sap Se Flat schema integrated document oriented templates
EP2407842B1 (en) * 2010-07-16 2021-03-17 Siemens Aktiengesellschaft Method for operating machines or machines in a machine series and design system
DE102010053668A1 (en) * 2010-12-07 2012-06-14 Klaus-Dieter Becker Apparatus and method for creating a program for computer-controlled machines
EP2474874A1 (en) * 2011-01-11 2012-07-11 Siemens Aktiengesellschaft Engineering system for creating a control program with a Kalman Filter
KR101375994B1 (en) * 2012-05-14 2014-04-01 엘에스산전 주식회사 Apparatus and method for Tabular displaying
US10208947B2 (en) 2014-03-26 2019-02-19 Rockwell Automation Technologies, Inc. Cloud-level analytics for boiler networks
US9886012B2 (en) 2014-03-26 2018-02-06 Rockwell Automation Technologies, Inc. Component factory for human-machine interface migration to a cloud platform
US9843617B2 (en) 2014-03-26 2017-12-12 Rockwell Automation Technologies, Inc. Cloud manifest configuration management system
US9825949B2 (en) 2014-03-26 2017-11-21 Rockwell Automation Technologies, Inc. Device authentication to facilitate secure cloud management of industrial data
US10095202B2 (en) 2014-03-26 2018-10-09 Rockwell Automation Technologies, Inc. Multiple controllers configuration management interface for system connectivity
US9614963B2 (en) 2014-03-26 2017-04-04 Rockwell Automation Technologies, Inc. Cloud-based global alarm annunciation system for industrial systems
US9971317B2 (en) 2014-03-26 2018-05-15 Rockwell Automation Technologies, Inc. Cloud-level industrial controller loop gain tuning based on industrial application type
US9838476B2 (en) 2014-03-26 2017-12-05 Rockwell Automation Technologies, Inc. On-premise data collection and ingestion using industrial cloud agents
US9866635B2 (en) 2014-03-26 2018-01-09 Rockwell Automation Technologies, Inc. Unified data ingestion adapter for migration of industrial data to a cloud platform
KR102544578B1 (en) 2016-03-07 2023-06-15 엘에스일렉트릭(주) Controlling method of data display apparatus
US10764255B2 (en) 2016-09-21 2020-09-01 Rockwell Automation Technologies, Inc. Secure command execution from a cloud monitoring system to a remote cloud agent
US11327473B2 (en) 2017-07-11 2022-05-10 Rockwell Automation Technologies, Inc. Dynamically reconfigurable data collection agent for fracking pump asset
US10482063B2 (en) 2017-08-14 2019-11-19 Rockwell Automation Technologies, Inc. Modular control manifest generator for cloud automation
US10416660B2 (en) 2017-08-31 2019-09-17 Rockwell Automation Technologies, Inc. Discrete manufacturing hybrid cloud solution architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812394A (en) * 1995-07-21 1998-09-22 Control Systems International Object-oriented computer program, system, and method for developing control schemes for facilities
US5822206A (en) * 1993-11-24 1998-10-13 The Trustees Of The Stevens Institute Of Technology Concurrent engineering design tool and method
US5950006A (en) * 1997-11-05 1999-09-07 Control Technology Corporation Object-oriented programmable controller
US6154684A (en) * 1997-06-14 2000-11-28 Rockwell Technologies, Llc Template language for industrial controller programming
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
CA2191640A1 (en) * 1996-11-29 1998-05-29 Kenn S. Jennyc User-interactive system and method for integrating applications
GB2345360A (en) * 1998-10-02 2000-07-05 Fisher & Paykel Programming programmable controllers
US20020089541A1 (en) * 2000-02-14 2002-07-11 Julian Orbanes System for graphically interconnecting operators

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822206A (en) * 1993-11-24 1998-10-13 The Trustees Of The Stevens Institute Of Technology Concurrent engineering design tool and method
US5812394A (en) * 1995-07-21 1998-09-22 Control Systems International Object-oriented computer program, system, and method for developing control schemes for facilities
US6154684A (en) * 1997-06-14 2000-11-28 Rockwell Technologies, Llc Template language for industrial controller programming
US5950006A (en) * 1997-11-05 1999-09-07 Control Technology Corporation Object-oriented programmable controller
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control

Cited By (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074217B2 (en) 2000-06-21 2011-12-06 Microsoft Corporation Methods and systems for delivering software
US20100229110A1 (en) * 2000-06-21 2010-09-09 Microsoft Corporation Task Sensitive Methods and Systems for Displaying Command Sets
US7743063B2 (en) 2000-06-21 2010-06-22 Microsoft Corporation Methods and systems for delivering software via a network
US20040268260A1 (en) * 2000-06-21 2004-12-30 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US20040268259A1 (en) * 2000-06-21 2004-12-30 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US7712048B2 (en) 2000-06-21 2010-05-04 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US7689929B2 (en) 2000-06-21 2010-03-30 Microsoft Corporation Methods and systems of providing information to computer users
US7818677B2 (en) 2000-06-21 2010-10-19 Microsoft Corporation Single window navigation methods and systems
US20050131971A1 (en) * 2000-06-21 2005-06-16 Microsoft Corporation Methods and systems for delivering software via a network
US20050149511A1 (en) * 2000-06-21 2005-07-07 Microsoft Corporation Methods and systems of providing information to computer users
US20050149512A1 (en) * 2000-06-21 2005-07-07 Microsoft Corporation Methods and systems of providing information to computer users
US7900134B2 (en) 2000-06-21 2011-03-01 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7779027B2 (en) 2000-06-21 2010-08-17 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US9507610B2 (en) 2000-06-21 2016-11-29 Microsoft Technology Licensing, Llc Task-sensitive methods and systems for displaying command sets
US7979856B2 (en) 2000-06-21 2011-07-12 Microsoft Corporation Network-based software extensions
US7561929B2 (en) 2000-08-03 2009-07-14 Siemens Aktienegesellschaft Industrial controller based on distributed technology objects
US20050171622A1 (en) * 2000-08-03 2005-08-04 Wolfgang Horn Industrial controller based on technology objects
US7734360B2 (en) 2000-08-03 2010-06-08 Siemens Aktiengesellschaft Industrial controller based on distributable technology objects
US6882890B2 (en) * 2000-08-03 2005-04-19 Siemens Aktiengesellschaft Industrial controller based on distributable technology objects
US20090125125A1 (en) * 2000-08-03 2009-05-14 Siemens Aktiengesellschaft Industrial controller based on distributable technology objects
US20030004585A1 (en) * 2000-08-03 2003-01-02 Wolfgang Horn Industrial controller based on technology objects
US20040225730A1 (en) * 2003-01-17 2004-11-11 Brown Albert C. Content manager integration
US20040216084A1 (en) * 2003-01-17 2004-10-28 Brown Albert C. System and method of managing web content
US8117552B2 (en) 2003-03-24 2012-02-14 Microsoft Corporation Incrementally designing electronic forms and hierarchical schemas
US7415672B1 (en) * 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US8918729B2 (en) 2003-03-24 2014-12-23 Microsoft Corporation Designing electronic forms
US20090177961A1 (en) * 2003-03-24 2009-07-09 Microsoft Corporation Designing Electronic Forms
US7925621B2 (en) 2003-03-24 2011-04-12 Microsoft Corporation Installing a solution
US9229917B2 (en) 2003-03-28 2016-01-05 Microsoft Technology Licensing, Llc Electronic form user interfaces
US9239821B2 (en) 2003-08-01 2016-01-19 Microsoft Technology Licensing, Llc Translation file
US8892993B2 (en) 2003-08-01 2014-11-18 Microsoft Corporation Translation file
US9268760B2 (en) 2003-08-06 2016-02-23 Microsoft Technology Licensing, Llc Correlation, association, or correspondence of electronic forms
US8429522B2 (en) 2003-08-06 2013-04-23 Microsoft Corporation Correlation, association, or correspondence of electronic forms
US7971139B2 (en) 2003-08-06 2011-06-28 Microsoft Corporation Correlation, association, or correspondence of electronic forms
WO2005029219A2 (en) * 2003-09-05 2005-03-31 Sap Aktiengesellschaft Xsteps: modular interface to a manufacturing control system background
WO2005029219A3 (en) * 2003-09-05 2006-04-06 Sap Ag Xsteps: modular interface to a manufacturing control system background
US20050055348A1 (en) * 2003-09-05 2005-03-10 Sabine Deimel XSteps: modular interface to a manufacturing control system
US7590970B2 (en) 2003-09-25 2009-09-15 Rockwell Automation Technologies, Inc. Autogeneration of code via human-machine interfaces (HMI) and self-building HMI
US7324856B1 (en) * 2003-09-25 2008-01-29 Rockwell Automation Technologies, Inc. Autogeneration of code via human-machine interfaces (HMI) and self-building HMI
US20080140230A1 (en) * 2003-09-25 2008-06-12 Rockwell Automation Technologies, Inc. Autogeneration of code via human-machine interfaces (hmi) and self-building hmi
US20080222514A1 (en) * 2004-02-17 2008-09-11 Microsoft Corporation Systems and Methods for Editing XML Documents
EP1739512A4 (en) * 2004-04-15 2008-07-30 Mitsubishi Electric Corp Programmable logic controller peripheral device and program creation method thereof
US7757025B2 (en) 2004-04-15 2010-07-13 Mitsubishi Denki Kabushiki Kaisha Programmable logic controller peripheral device and program creation method thereof
EP1739512A1 (en) * 2004-04-15 2007-01-03 Mitsubishi Denki Kabushiki Kaisha Programmable logic controller peripheral device and program creation method thereof
US20100188410A1 (en) * 2004-05-04 2010-07-29 Fisher-Rosemount Systems, Inc. Graphic element with multiple visualizations in a process environment
US20100168874A1 (en) * 2004-05-04 2010-07-01 Fisher-Rosemount Systems, Inc. Graphics integration into a process configuration and control environment
US7680546B2 (en) * 2004-05-04 2010-03-16 Fisher-Rosemount Systems, Inc. Graphic element with multiple visualizations in a process environment
US8060834B2 (en) 2004-05-04 2011-11-15 Fisher-Rosemount Systems, Inc. Graphics integration into a process configuration and control environment
US20070132779A1 (en) * 2004-05-04 2007-06-14 Stephen Gilbert Graphic element with multiple visualizations in a process environment
US8185219B2 (en) 2004-05-04 2012-05-22 Fisher-Rosemount Systems, Inc. Graphic element with multiple visualizations in a process environment
US8135481B2 (en) 2004-05-04 2012-03-13 Fisher-Rosemount Systems, Inc. Process plant monitoring based on multivariate statistical analysis and on-line process simulation
US8127241B2 (en) 2004-05-04 2012-02-28 Fisher-Rosemount Systems, Inc. Process plant user interface system having customized process graphic display layers in an integrated environment
US20080066004A1 (en) * 2004-05-04 2008-03-13 Fisher-Rosemount Systems, Inc. Process Plant User Interface System Having Customized Process Graphic Display Layers in an Integrated Environment
US8000814B2 (en) 2004-05-04 2011-08-16 Fisher-Rosemount Systems, Inc. User configurable alarms and alarm trending for process control system
US20080300698A1 (en) * 2004-05-04 2008-12-04 Fisher-Rosemount Systems, Inc. User Configurable Alarms and Alarm Trending For Process Control System
US20060101387A1 (en) * 2004-10-22 2006-05-11 Gerken Christopher H An Open Model Driven Architecture Application Implementation Service
US20060101385A1 (en) * 2004-10-22 2006-05-11 Gerken Christopher H Method and System for Enabling Roundtrip Code Protection in an Application Generator
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US20100201182A1 (en) * 2005-01-14 2010-08-12 Michael John Gottschalk Continuous radius axle and fabricated spindle assembly
US20060200792A1 (en) * 2005-03-07 2006-09-07 Microsoft Corporation Process templates for software creation
US20060235829A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Query to an electronic form
US8010515B2 (en) 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US8200975B2 (en) 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US9210234B2 (en) 2005-12-05 2015-12-08 Microsoft Technology Licensing, Llc Enabling electronic documents for limited-capability computing devices
US20070130500A1 (en) * 2005-12-05 2007-06-07 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US20090240840A1 (en) * 2006-05-03 2009-09-24 Christopher Kevin Habben Methods and apparatus for configuring interface units
EP1914610A3 (en) * 2006-10-20 2013-01-23 Rockwell Automation Technologies, Inc. Design patterns employed for module programming
US9581990B2 (en) * 2007-07-05 2017-02-28 Sick Ag Method for the programming of a safety controller
US20090030534A1 (en) * 2007-07-05 2009-01-29 Sick Ag Method for the programming of a safety controller
US20090300061A1 (en) * 2007-12-03 2009-12-03 Infosys Technologies Ltd. System and method for universe generation
US20090313743A1 (en) * 2008-06-20 2009-12-24 Craig Jason Hofmeyer Pants with saggy pants control system
US8768498B2 (en) * 2008-09-17 2014-07-01 Khs Gmbh Method for operating an industrial system
US20110137447A1 (en) * 2008-09-17 2011-06-09 Khs Gmbh Method for operating an industrial system
US20150045917A1 (en) * 2008-09-30 2015-02-12 Rockwell Automation Technologies, Inc. Remote object data property replication method and system
US9442473B2 (en) * 2008-09-30 2016-09-13 Rockwell Automation Technologies, Inc. Remote object data property replication method and system
US8881039B2 (en) 2009-03-13 2014-11-04 Fisher-Rosemount Systems, Inc. Scaling composite shapes for a graphical human-machine interface
US20110230980A1 (en) * 2010-03-22 2011-09-22 Fisher-Rosemount Systems, Inc. Methods and apparatus for a data driven interface based on relationships between process control tags
US8825183B2 (en) 2010-03-22 2014-09-02 Fisher-Rosemount Systems, Inc. Methods for a data driven interface based on relationships between process control tags
US10162315B2 (en) * 2014-07-23 2018-12-25 Emerson Process Management Power & Water Solutions, Inc. Process control system using typical and adapter components
CN105302015A (en) * 2014-07-23 2016-02-03 爱默生过程管理电力和水解决方案公司 Process control system using typical and adapter components
US20160026162A1 (en) * 2014-07-23 2016-01-28 Emerson Process Management Power & Water Solutions, Inc. Process control system using typical and adapter components
US20170262436A1 (en) * 2014-12-15 2017-09-14 Mitsubishi Electric Corporation Information-system-construction support tool and information-system-construction support program
US9922030B2 (en) * 2014-12-15 2018-03-20 Mitsubishi Electric Corporation Information-system-construction support tool and information-system-construction support program
US9989950B2 (en) * 2015-07-17 2018-06-05 General Electric Company Systems and methods for generating control logic
US10216523B2 (en) 2015-07-17 2019-02-26 General Electric Company Systems and methods for implementing control logic
US20180275858A1 (en) * 2015-09-25 2018-09-27 Contec Co., Ltd. Device, program, and method for creating monitoring image
US11137888B2 (en) * 2015-09-25 2021-10-05 Contec Co., Ltd. Device, program, and method for creating monitoring image
CN112654940A (en) * 2018-10-04 2021-04-13 欧姆龙株式会社 Program generation device, control method for program generation device, control program, and recording medium
US20220035331A1 (en) * 2018-10-04 2022-02-03 Omron Corporation Program generation device, program generation device control method, and recording medium
CN113341864A (en) * 2021-06-07 2021-09-03 重庆高新技术产业研究院有限责任公司 PLC-based control similarity reversible logic system and analysis method thereof

Also Published As

Publication number Publication date
US6850808B2 (en) 2005-02-01
EP1422619A2 (en) 2004-05-26
EP1422619A3 (en) 2007-06-06

Similar Documents

Publication Publication Date Title
US6850808B2 (en) Method and system for developing a software program using compound templates
US6947798B2 (en) System and method for developing software programs by way of multiple applications and users
US9158508B2 (en) Strategy editor for process control supporting drag and drop connections to declarations
US7468731B2 (en) Automatic resizing of moved attribute elements on a graphical representation of a control object
US6477435B1 (en) Automated programming system for industrial control using area-model
US5812394A (en) Object-oriented computer program, system, and method for developing control schemes for facilities
JP4906829B2 (en) System and method for managing a transaction database of records of changes to field device configurations
US20140196006A1 (en) Appearance objects for configuring and graphically displaying programmed/configured process control
US8850335B2 (en) Strategy editor supporting automatic designation of displayed line style based upon a connection data type
US8516383B2 (en) System and method for developing animated visualization interfaces
US6233719B1 (en) System and method for analyzing semiconductor production data
JP4722885B2 (en) System and method for managing a transaction database of records of changes to field device configurations
CN100511221C (en) Methods and apparatus for importing device data into a database system used in a process plant
US20070240070A1 (en) Strategy editor supporting designating execution order via control object graphical representations
US20140222181A1 (en) Automatically updating graphical symbols in a control loop strategy diagram
US6834388B1 (en) Process control
DE69921305T2 (en) PROCESS CONTROL WITH ACTIVEX
EP2397940A1 (en) Strategy editor human-machine interface

Legal Events

Date Code Title Description
AS Assignment

Owner name: ROCKWELL SOFTWARE INC., WISCONSIN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YUEN, KAM-POR;BRONIKOWSKI, JOSEPH T.;ROBAK, PAUL T.;AND OTHERS;REEL/FRAME:013415/0542

Effective date: 20021017

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12