WO1995023374A1 - Integrated control system for industrial automation applications - Google Patents

Integrated control system for industrial automation applications Download PDF

Info

Publication number
WO1995023374A1
WO1995023374A1 PCT/US1994/014314 US9414314W WO9523374A1 WO 1995023374 A1 WO1995023374 A1 WO 1995023374A1 US 9414314 W US9414314 W US 9414314W WO 9523374 A1 WO9523374 A1 WO 9523374A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
sequential
application program
continuous
status information
Prior art date
Application number
PCT/US1994/014314
Other languages
French (fr)
Inventor
Ahmad Sadre
Donald Francis Baechtel
Mark Stephen Graber
Original Assignee
Automation Systems And Products, 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
Application filed by Automation Systems And Products, Inc. filed Critical Automation Systems And Products, Inc.
Priority to EP95905363A priority Critical patent/EP0749598A4/en
Priority to JP7522326A priority patent/JPH09511594A/en
Publication of WO1995023374A1 publication Critical patent/WO1995023374A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/41865Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by job scheduling, process planning, material flow
    • 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/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32124Program hybrid system, part sequence, part continous
    • 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/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32128Gui graphical user interface
    • 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/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32163Indicate synchronisation tags on icons of tasks
    • 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/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36025Link, connect icons together to form program
    • 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/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36031Programming in assembler, machine or high level language
    • 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/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36036Motion, graphical motion control language gmcl
    • 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/30Nc systems
    • G05B2219/36Nc in input of data, input key till input tape
    • G05B2219/36135Link between sequence, motion or process and diagnostic control
    • 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/30Nc systems
    • G05B2219/43Speed, acceleration, deceleration control ADC
    • G05B2219/43162Motion control, movement speed combined with position
    • 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/30Nc systems
    • G05B2219/45Nc applications
    • G05B2219/45051Transfer line
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the present invention relates generally to a system for generating, editing, executing, monitoring and debugging an application program which provides integrated control of sequential and continuous machine processes.
  • the present invention relates to a system for generating, editing, executing, monitoring and debugging an application program which provides simultaneous control of all the logic, motion and process control components of an industrial automation application.
  • the present invention finds advantageous application to an automated transfer line and will be described with particular reference thereto, it being appreciated that the present invention has broader applications and may be used with other industrial automation applications, including material handling, metal forming, and robotics.
  • a typical automated transfer line as shown in FIG. 1, consists of a number of work stations where the work piece undergoes various operations, for example metal cutting and forming, in a specific, predetermined order.
  • the flow of the work piece, such as an automotive engine block, from the point of entry into the line, its guidance and navigation through the work stations, and its final exit from the line after successful completion of all automated operations, must be controlled with high order of accuracy to result in the proper synchronization and coordination of the automated transfer line.
  • each controller usually has its own chassis, computer, I/O and power supply.
  • control units 2, 4, 6, 8 and 10 require logic, motion, and/or process control. Accordingly, each of these control units requires multiple industrial controllers.
  • Process plan 20 is developed by a process engineer and the implementation of that plan requires the following tasks to be completed: A. Separating process plan 20 into individual logic control program steps 22, motion control program steps 24 and process control program steps 26.
  • logic control program steps 22 are typically programmed in graphical ladder language (e.g., Relay Ladder Logic Network); the motion control program steps 24 are typically programmed in RS-274D or a proprietary motion language; and the process control program steps 26 are typically specified in Function Block Networks.
  • graphical ladder language e.g., Relay Ladder Logic Network
  • motion control program steps 24 are typically programmed in RS-274D or a proprietary motion language
  • process control program steps 26 are typically specified in Function Block Networks.
  • Sequential programs are used to control the major sequencing of an application program. Accordingly, sequential program steps are executed only once, one step after the other, like a procedure, waiting for the previous step to complete before the next step is executed.
  • Continuous programs are used to monitor and control environmental conditions either during the entire application program or during specific portions of the application program. Accordingly, continuous programs are scanned repeatedly and executed whenever the qualifying conditions are appropriate.
  • sequential functions are actions which are sequential in nature, and accordingly are most easily and intuitively programmed using sequential programs.
  • continuous functions are actions which are continuous in nature, and accordingly are most easily and intuitively programmed using continuous programs.
  • machine operation or sequencing for example: (a) turn the machine on and wait for all functions to report ready, (b) position the workpiece to be processed, (c) begin processing and wait for the process to complete, (d) shutdown the process, and (e) remove the processed workpiece. This procedure is illustrated by the flow chart shown in FIG. 3.
  • motion control for example: (a) move from the start position to the first position, (b) move to the second position, (c) go around the corner to the third position, and (d) return to the start position. This procedure is illustrated by FIG. 4.
  • process control for example: (a) initialize the process output, (b) ramp the process output to level one, (c) wait for some event or signal and then change the process output to level two, and (d) wait for another event and then return the process output to an idle state.
  • process control for example: (a) initialize the process output, (b) ramp the process output to level one, (c) wait for some event or signal and then change the process output to level two, and (d) wait for another event and then return the process output to an idle state.
  • process control for example: (a) initialize the process output, (b) ramp the process output to level one, (c) wait for some event or signal and then change the process output to level two, and (d) wait for another event and then return the process output to an idle state.
  • continuous functions include:
  • PID closed feedback loop control
  • analog signal processing Although it is possible to emulate a sequential function using a continuous program, it is frequently difficult to do so and is more difficult to understand and interpret because the natural "step after step" representation is lost. It is also less efficient because all steps, not just the current one, are being repeatedly scanned or checked for possible execution. It is usually not possible to emulate continuous functions using sequential programs, because only one or a limited number of parallel functions are executed and then further processing is suspended until the conditions required to transition to the next step are met.
  • a method is needed to program in a natural and integrated fashion a system performing both sequential and continuous functions.
  • SFC Sequential Function Charts
  • RLL Relay Ladder Logic Networks
  • Function Block Diagrams as shown in FIG. 21, is a good approach for programming continuous functions.
  • the IEC-1131 international programming language standard for programmable controllers provides specifications for Sequential Function Charts, Relay Ladder Logic Networks, Function Block Diagrams, Structured Text (ST) and Instruction List (IL).
  • the standard Sequential Function Chart (SFC) shown in FIG. 6. as specified in the IEC-1131, is intended to provide a graphical means for presentation of an application program for controlling both sequential and continuous functions.
  • Step boxes 40 are used to sequence between program steps. As each step box is activated in turn, the action associated with the step box is scanned and executed.
  • the sequencing between step boxes 40 works well when the actions associated with each step are continuous functions.
  • applications such as motion and process control, where the functions to be performed require a significant finite amount of time to complete and must be performed in a sequential manner, the standard SFC becomes difficult to use. Examples of these sequential functions include moving a motor through a series of positions (See FIG. 4) and issuing a series of process control commands based on time or other event inputs (see FIG. 5).
  • FIG. 6 To use a standard SFC diagram, as shown in FIG. 6, in these applications:
  • each sequential program statement must be associated with a separate SFC step box 40;
  • each SFC step must set a boolean output variable when it is "done";
  • FIG. 6 shows a typical standard Sequential Function Chart, which consists of step boxes 40, transition logic 42, and action statement box 44.
  • Action statement box 44 is comprised of action statement identifiers 46 and action qualifiers 48.
  • Transition logic 42 is evaluated to form a single boolean result that controls the transitions between steps.
  • Action statements associated with an action statement identifier are executed continuously and in parallel at a regular time interval as long as the step to which the action statement identifier is associated is active. Accordingly, when transition logic 42 for a step becomes true, the action statements associated with the step cease execution and the step is deactivated. This process repeats for each step in the SFC.
  • step labels e.g., "State 1"
  • sequential programs are needed (e.g. for programming sequential functions, such as motion and process control), they are encapsulated inside Function Blocks, contained within actions, along with any other continuous program steps that must be performed in that step.
  • Action qualifiers 48 are used to specify when associated action statements are to be executed. For example, action qualifier "N” indicates that the action statement associated with action statement identifier "Action 1" is to be executed repeatedly, action qualifier "P” indicates that the action statement associated with action statement identifier "Action 2" is to be executed only once, and action qualifier “D” indicates that the action statement associated with action statement identifier "Action 3" is to be delayed.
  • Action qualifier "N" indicates that the action statement associated with action statement identifier "Action 1" is to be executed repeatedly
  • action qualifier "P” indicates that the action statement associated with action statement identifier "Action 2" is to be executed only once
  • action qualifier “D” indicates that the action statement associated with action statement identifier "Action 3" is to be delayed.
  • step labels of step boxes 40 do nothing to specify what action is being performed in a given application program step. Also, it has been observed that standard Sequential Function Charts are often too large and too detailed to show enough of the application program on one operator screen so that a good grasp of the operational context can be readily visualized. If a standard Sequential Function Chart is used to display the current status of the application program, it often is scrolled or updated too rapidly on the operator's screen to be of much use.
  • computerized numerical controls do not allow the sequential and continuous programs to be programmed, edited, executed, monitored and debugged in a single programming environment.
  • the constructs used by computerized numerical controls to synchronize sequential and continuous programs are embedded in the continuous program and are not easy to visualize.
  • additional program logic must be added by the user to both the sequential and continuous programs in order to properly synchronize them.
  • Flow chart programming provides technology which allows the user to write sequential programs using a graphical flow chart language.
  • flow chart programming is deficient in integrating sequential and continuous programs.
  • any continuous program must be simulated by use of many flow charts.
  • This does not allow continuous programming paradigms which are standard in the industry, such as Relay Ladder Logic Networks and Function Block Networks.
  • no constructs are provided to synchronize sequential programs with continuous programs.
  • Standard Sequential Function Chart programming allows the user to write continuous programs using industry standard Relay Ladder Logic networks and Function Block Networks. These continuous programs are sequenced using Sequential Function Chart step boxes and transition logic. However, sequential programs are subordinate to the continuous programs.
  • a sequential program (e.g., a RS-274D program) may be called from a continuous program (e.g., Relay Ladder Logic network), but not vice versa.
  • a continuous program e.g., Relay Ladder Logic network
  • the sequential program cannot be used to provide overall sequencing of the application program. Accordingly, the sequential program cannot assume a dominant position in the programming paradigm. Therefore, although standard Sequential Function Chart programming allows continuous programs to be sequenced, this function does not meet the needs of sequential functions performed in most industrial automation applications. Any programming language used in the industry to perform sequential functions (e.g., Structured Text, Fortran, BASIC and RS-274D), must execute subordinate to a continuous program.
  • any sequential program used in this way cannot be used to provide sequencing for the application program.
  • a computerized numerical control application which uses RS-274D motion commands to execute a motion profile cannot be implemented using a standard Sequential Function Chart.
  • no constructs are provided by a standard SFC to synchronize the sequential programs with the continuous programs.
  • great care must be taken that every foreseeable circumstance, especially those caused by faults or failures in the system be accounted for and handled appropriately by the application program.
  • the machinery might fail, motors may be late getting into position or stop altogether, functions being performed may take longer than expected or may not be able to be accomplished at all, the items being processed may contain some disastrous defect.
  • the programming languages used for these applications must be able to accommodate the addition of routines to handle these exceptions to normal operations.
  • the present invention also addresses several other disadvantages of prior art programming systems.
  • the present invention addresses deficiencies of prior art Relay Ladder Logic program editors and of the standard implementation of the RS-274D programming language.
  • the present invention also addresses the deficiencies of prior art approaches to debugging programs and prior art manual application sequencers.
  • Prior art implementations of Relay Ladder Logic program editors lack several features which make Relay Ladder Logic Networks easier to edit. Once a program is constructed, prior art editors make it difficult to make certain changes to the program that may be necessitated by: (1) errors or omissions in the original application program or (2) changes or additions to the machine's functionality.
  • Relay Ladder Logic program editors logical outputs are limited to the right hand end of the logic rung. Some editors only allow one output per rung. Others that allow multiple outputs, require that they be entered on separate output branches. These restrictions: (a) cause the logic programs to be less efficient, (b) force replication or addition of logic rungs in order to achieve multiple outputs, (c) limit the use of Function Blocks within the Relay Ladder Logic Network, (d) do not allow logical outputs on "OR" branches or other locations on the logic rung that can be used for diagnostic purposes or to reduce the size and complexity of the Relay Ladder Logic Network.
  • FIG. 26a shows a Relay Ladder Logic Network with three output coils, namely output coils X52, Y54, and Z56.
  • FIG. 26b shows the corresponding IEC-1131 Instruction List (IL) program that is generated following the rules in the IEC-1131 standard specification.
  • the IEC-1131 standard specification provides rules for embedding an Instruction List (IL) program within a Structured Text (ST) program.
  • FIG.26b also shows a listing of computer pseudo-code instructions that demonstrate the actions performed by the controller to evaluate the IL program of FIG. 26a.
  • the deferred operator indicates the operation to be performed to combine the new result with the old one once logical branch 58 is completed, as signaled by the right parenthesis ")" [line 21].
  • the new result is initialized to a logical 1 [line 16].
  • the new result is used to evaluate the ladder logic rung fragment that lies between the branch points 58 and 60 (i.e. between the parenthesis "(...)" in IL).
  • the deferred operation is popped off the stack [line 21] along with the old result [line 22].
  • the deferred operator is used to combine the new result with the old result [line 23].
  • the old result holds the results of the combined operation [line 23] and the new result is discarded [line 24].
  • RS-274D is a popular motion control programming language on the factory floor, it is limited in that the standard commands can only assume numerical values. This prevents RS-274D programs from using computed values as parameters, controlling the flow of application programs, and synchronizing with other system input-output (I/O) activities. Accordingly, enhancements to the standard RS-274D programming language are needed to improve the utility of the programming language.
  • PLC programmable logic controller
  • Prior art systems provide a software interface which ties a simple sequence of operator buttons to the steps of an application program to allow the operator to manually sequence the steps.
  • the application engineer must individually create each button and link the button control and status to the individual steps of the application program.
  • a new method is needed which will create this sequenced set of operator buttons and automatically link the operator buttons to the application steps, providing standard functionality for button control and status.
  • an apparatus for generating, editing, executing, monitoring and debugging an application program for controlling one or more machines comprising means for generating a diagram representing an application program for controlling at least one sequential function and at least one continuous function, said diagram including at least one sequential program having one or more sequential program statements and at least one continuous program, wherein said at least one sequential program sequence sequences said application program, and means for executing said application program to control said one or more machines.
  • an apparatus for manually sequencing an application program for controlling one or more machines comprising means for generating a top level program representing said application program, said top level program comprising application program steps, means for associating an operator button with each said application program step, said operator button activated by an operator, and means for executing said top level program, wherein said operator button associated with each application program step must be activated before said associated application program step is executed.
  • an apparatus for generating, editing, executing, monitoring and debugging an application program for controlling one or more machines comprising means for executing the application program, means for storing status information of said apparatus while said application program is executing, said status information including at least one of the following: status of application program executing on said apparatus, status of physical inputs to the apparatus, status of physical outputs from the apparatus, status of internal condition of the apparatus, and a time-stamp indicating the time at which said status information was stored; and control means for terminating execution of the application program and for retrieving the status information stored by said means for storing; and means for displaying said status information retrieved by said control means.
  • Ladder Logic Network and allows for multiple outputs per ladder rung.
  • FIG. 1 is on overhead view of a typical Automated Transfer Line Application.
  • FIG. 2 is a diagram illustrating the procedure followed by an application engineer using prior art systems to implement a typical Automated Transfer Line application involving elements of logic, motion and process control.
  • FIG. 3 is a flow chart of a representative sequential machine process.
  • FIG. 4 is a position diagram of a representative motion control application.
  • FIG. 5 is an output level graph of a representative process control application.
  • FIG. 6 is an example of a standard Sequential Function Chart conforming to the IEC-1131 standard.
  • FIG. 7 is an example of an enhanced Sequential Function Chart in a top level format, and including a macro step name.
  • FIG. 8 is an example of an enhanced Sequential Function Chart having embedded RS-274D commands and IEC-1131 Structured Text (ST) commands.
  • FIG. 9a is an example of an enhanced Sequential Function Chart having action qualifiers for motion in an action statement box.
  • FIG. 9b shows the enhanced Sequential Function Chart of FIG. 9a with an open program window.
  • FIG. 9c shows a second enhanced Sequential Function Chart.
  • FIG. 10 shows an IEC-1131 Structured Text translation of the enhanced SFC shown in FIG. 9a.
  • FIG. 11 shows the order of synchronization qualifiers on a velocity/time graph for a typical motion control application.
  • FIG. 12 shows an enhanced Sequential Function Chart having icons in place of step boxes and action statement boxes.
  • FIG. 13 shows an icon selection bar.
  • FIG. 14 shows a menu bar, a mode selection menu, and an icon group menu.
  • FIG. 15 shows a Relay Ladder Logic (RLL) Network in the Logic Editor.
  • RLL Relay Ladder Logic
  • FIG. 16 shows the RLL Network of FIG. 15 with a revised branch connection point.
  • FIG. 17 is a IEC-1131 Structured Text (ST) program including an Instruction List (IL) program for the RLL Network of FIG. 16.
  • ST Structured Text
  • IL Instruction List
  • FIG. 18 is an enhanced Relay Ladder Logic Network having multiple logical outputs.
  • FIG. 19 shows a function block selection bar.
  • FIG. 20 shows the function block selection bar of FIG. 19 with an activated function block group menu.
  • FIG. 21 shows a Relay Ladder Logic (RLL) Network including a Function Block element.
  • FIG. 22 is a data flow diagram showing the major subsystems that comprise a preferred embodiment of the present invention.
  • FIG. 23 is a flow chart showing the process used by the present invention to decode RS-274D commands embedded within Structured Text programs, and Structured Text expressions and Structured Text assignment statements embedded within RS-274D commands.
  • FIG. 24 shows the hardware components comprising a preferred embodiment of the present invention.
  • FIG. 25 shows an enhanced Sequential Function Chart having exception handling.
  • FIG. 26a shows a sample Relay Ladder Logic (RLL) Network having multiple logical outputs.
  • FIG. 26b shows the Structured Text (ST) program generated by the Logic
  • FIG. 27 shows several examples of application specific icons.
  • FIG. 28 shows an enhanced Sequential Function Chart having a pop-up Relay Ladder Logic window.
  • FIG. 29 shows a data flow diagram of the process used by the present invention to provide enhanced debugging features.
  • FIG. 30 shows a Sequential Function Chart having a breakpoint.
  • FIG. 31 shows a Relay Ladder Logic Network having a breakpoint.
  • FIG. 32 shows a representative manual application sequencer display.
  • FIG. 33 shows a representative application program for use with the manual application sequencer display of the present invention.
  • FIG. 1 shows an overhead view of a typical Automated Transfer Line system. It consists of a part conveyance mechanism 12 that moves parts 14 through one or more work stations 16a, 16b where automated processing operations are performed.
  • the operations performed at the work stations consist of any type of automated operation or sequence of operations that include, but are not limited to: part manipulation, cutting, drilling, grinding, boring, mechanical assembly, applying paint or adhesives, testing, gauging, or packaging.
  • Transfer Line generally includes an automated or manual part loading mechanism 17 and unloading mechanism 18 where parts are placed upon or removed from part conveyance mechanism 12.
  • Each work station 16a, 16b, load mechanism 17 and unload mechanism 18 is usually controlled by a separate control unit 4, 6, 8, 10 which is responsible for the operations performed in one individual work area.
  • the Transfer Line system usually includes a separate control unit 2 that is responsible for the operation of parts conveyance mechanism 12, the synchronization of the operations of work stations 16a, 16b with the movement of parts into and out of the work areas, as well as providing any operator controls and human interface necessary for the operation and monitoring of the overall Transfer Line system.
  • the synchronization of work stations 16a, 16b to the Transfer Line control unit is usually accomplished by interconnecting each individual work station control unit to Transfer Line control unit 2.
  • a preferred embodiment of the present invention is comprised of the following components, which substitutes for one or more of the prior art control units 2, 4, 6, 8, 10 shown in FIG. 1:
  • I/O Interface card 84 Servo Motion card (optional) 86 Distributed I/O Interface card(s) (optional) 88 Distributed I/O modules (optional) 90 Ethernet LAN Interface card(optional) 92
  • EISA backplane 72, I/O Interface card 84, Servo Motion card 86, Distributed I/O interface card 88 and LAN interface card 92 are internal components of computer 70, which comprises an "integrated controller.” They are shown external to computer 70 solely for the purpose of illustration.
  • Keyboard 78, mouse 80 or monitor touch screen 82 is used by the operator as a pointing device for menu selection, program development, program editing, program debugging, command button activation, and selection of icons or function blocks.
  • I/O interface card(s) 84 connect local I/O devices directly to computer 70.
  • Servo Motion card 86 is used to interface one or more servo motors and/or stepper motors to computer 70.
  • Distributed I/O interface card 88 is used to connect one or more Distributed I/O Modules 90 to computer 70.
  • the graphical environment of the present invention uses a point and click type of user interface technology, which preferably provides on-line help to make the programming and debugging constructs simple and intuitive.
  • a solution to the above deficiencies of the prior art is to allow a series of sequential program statements 128 (e.g., RS-274D motion commands) to be placed inside the step boxes 122 (see FIGS. 9a, 9b and 9c).
  • the sequential program statements appear prominently in the step boxes, and are not "buried” with the continuous programs.
  • SFC also referred to as "SFC+”
  • the sequential program statements 128 begin executing one at a time when step box 122 is first activated.
  • the sequencing of the sequential program statements within a step box is performed as an integral part of the execution of the step box and does not require the use of "done" boolean variables for each sequential program statement.
  • Each sequential program statement is invoked only once and does not require the use of a "P" (execute once) type qualifier, as with the prior art standard SFC.
  • a series of sequential program statements within a single step box are associated with the same set of continuous programs and exception handling actions.
  • the continuous programs associated with a step box can either operate over the entire series of sequential program statements in a step box 122, or they can be started and/or stopped based on an association with a single sequential program statement through the use of program statement labels 118a, 118b that refer to labels on individual sequential program statements 128.
  • the continuous programs are specified by continuous program names 132. Because of the above features the SFC+ is more compact and readable, than the standard Sequential Function Chart.
  • the SFC+ is used to integrate sequential programs and continuous programs to form an application program.
  • application program refers to the program combining both the sequential program(s) and continuous program(s). It may take the form of a diagram (e.g., SFC+) or pure text (e.g., Structured Text).
  • the SFC+ of the present invention follows the rules specified in IEC-1131 standard for implementing sequenced continuous programs. However, the standard Sequential Function Chart is enhanced in several respects to create the SFC+ of the present invention. In this respect, sequential programs are embedded in step boxes to control application program sequencing. The sequential programs can be written in any programming language familiar to the industry segment of the application.
  • Sequential programs are executed in order, one statement at a time, while continuous programs are executed repeatedly on a regular time interval (scanned). Furthermore, constructs for synchronizing sequential programs with continuous programs (including motion and process control synchronization) are provided. In addition, application exception processing functions are added to the continuous programs.
  • a Program Execution subsystem When a step box is initially activated (i.e., ready for execution) in the SFC+, a Program Execution subsystem will first scan all of the continuous programs associated (i.e., linked) with that step. The Program Execution subsystem will be described in greater detail below. After the first scan of the continuous programs, the continuous programs will be scanned on a regular specified time interval. After the continuous programs have been scanned once, the first program statement of the sequential program contained in the active step box will begin execution. When the first statement of the sequential program is complete, the second statement will begin executing and so on, until the last sequential program statement of the currently active step has been completed. When the last statement of the currently active step has been completed, the transition logic following that step will be activated.
  • the present invention also provides a mechanism for synchronizing sequential program statements inside of the step box with continuous programs inside of an associated action box.
  • synchronization qualifiers have been introduced, as shown in FIGS. 9a and 9c.
  • the synchronization qualifiers 116a, 116b, 117a, 117b, and 117c relate to motion control, while synchronization qualifier 117d relates to process control.
  • synchronization qualifiers beyond these illustrated may relate to other sequential functions.
  • Synchronization qualifiers relating to motion control include motion started (MS), acceleration complete (AC), at speed (AS), deceleration started (DS), motion complete (MC), motion in position (IN) and end of block (EB). See FIG. 11.
  • a program statement label is used to associate a continuous program with the sequential program statements.
  • the N sequence number is used as a program statement label (label 124).
  • These synchronization qualifiers can be combined with standard action qualifiers, such as action qualifiers 114 and 117. The continuous program specified by a continuous program name will begin scanning, as specified by the associated action qualifier, after the sequential program statement specified by the program statement label has met the condition of the associated synchronization qualifier.
  • the Program Execution subsystem checks for synchronization with the sequential program. If qualifiers are attached to the continuous program, the Program Execution subsystem will check the status of the sequential program within the step (including any motion and/or process control status) to see if the continuous program will be scanned. Referring now to FIG. 9c, the "continuous" MonitorTorch program will begin scanning, as specified by the action qualifier (S) 115a (STORED), after the sequential program statement which follows the program label N003 has reached its acceleration complete (AC) point as indicated by synchronization qualifier 117a.
  • S action qualifier
  • AC acceleration complete
  • the MonitorTorch program will stop being scanned, as specified by the action qualifier (R) 115b (RESET), after the sequential program statement which follows the program label N010 has reached its deceleration started (DS) point as indicated by synchronization qualifier 117b.
  • the IgniteTorch program will scan once, as specified by the action qualifier (P) 115c (PULSE), after the program statement which follows the program label N001 has reached its at speed (AS) point indicated by synchronization qualifier 117c.
  • the "continuous" TurnOnPaintGun program will scan once, as specified by the action qualifier (P) 114a, after the action statement which follows the program label N003 has reached its acceleration complete (AC) point as indicated by synchronization qualifier 116a.
  • the "continuous" TurnOffPaintGun program will scan once as specified by the action qualifier (P) 114b (PULSE) after the program statement which follows the program label N009 has reached its deceleration started (DS) as indicated by synchronization qualifier 116b.
  • the "continuous" CheckPaintFlow program will scan continuously while the step box 122 is activated, as specified by the absence of any action or synchronization qualifiers.
  • FIGS. 9a and 9b provide an example of the present invention as used in an application to paint a car body. This example illustrates the importance of controlling an application program with a sequential program and illustrates why it is necessary to synchronize continuous programs with the sequential programs.
  • a series of sequential program statements 128 in step box 122 provide the instructions to control the movement of a painting mechanism through a process for painting a car body.
  • Program statements 128 are written in RS-274-D, which is an industry standard language for programming motion. It will be appreciated that program statements 128 could be written in other programming languages such as BASIC, Fortran and C.
  • Program statements 128 are located in a step box 122, occupying a dominant position in the SFC+ and controlling the sequence of the "PaintPart" application program.
  • Continuous programs which turn the paint gun on, turn the paint gun off, and check the paint flow are linked to step box 122 using continuous program names 132a, 132b, 132c, respectively, which are displayed in action statements box 126.
  • Synchronization qualifiers 116a, 116b; program statement labels 118a, 118b; and action qualifiers 114a, 114b are also associated with the program names 132 in action box 126.
  • the continuous program named "TurnOnPaintGun” will be scanned once to turn the paint gun on when the program statement following the N003 program label reaches its acceleration complete point (the beginning of the painting motion).
  • the continuous program named "TurnOffPaintGun” will be scanned once to turn the paint gun off when the program statement following the N009 program label reaches its deceleration started point (the end of the painting motion). Turning the paint gun on when the motion acceleration is complete at the beginning of the painting motion and turning the paint gun off when the motion deceleration begins at the end of the painting motion allows paint to be smoothly laid on the car body surface without leaving any paint blotches.
  • the continuous program named "CheckPaintFlow” will be scanned continuously while step box 122 is active to ensure that the paint is flowing smoothly during the entire paint cycle. If a problem is detected in the paint flow, the CheckPaintFlow program will execute the "transition" function to force the SFC+ into a new step which handles paint gun cleaning and refill.
  • the contents of the continuous program can be viewed along with the sequential program by activating the continuous program name 132 in the associated action box 126.
  • the continuous program is displayed in a program window 134 to the right of step box 122, as shown in FIG. 9b. With program window 134 open, the user can edit and debug the continuous program and the sequential program at the same time.
  • the status of both programs is displayed by highlighting the active sequential program statement and highlighting the active elements of the continuous program (e.g., the active rung elements of the Relay Ladder Logic Network).
  • Sequential programs may be written using any sequential programming language (e.g., Structured Text, Basic, and RS-274-D).
  • application icons can be created to represent sequential program statements which perform some common application function in the industry. Continuous programs can be programmed using any traditional programming language, such as Relay Ladder Logic or Function Block Networks.
  • each SFC+ step box may be given a name.
  • This name may be user defined, or be a default label name generated by the Logic Editor.
  • the SFC+ shown in FIG. 7 is described as being in a "top-level" format.
  • Step name boxes 103a, 103b, 103c refer to regular steps in a SFC+ diagram.
  • Macro step name box 105 refers to a macro step in a SFC+ diagram.
  • a macro step is represented by nested boxes in a top-level format SFC+ .
  • a macro step is an SFC+ step which invokes at lease one child SFC+ .
  • the child SFC+ is executed when the macro step is executed. Like any other step, a macro step can have actions associated with it which are scanned while the child SFC+ program is executed.
  • the Program Execution subsystem spawns off a new instance of the SFC+ execution mechanism to execute a child SFC+ .
  • the SFC+ execution mechanism consists of a traditional state machine implementation well known to those skilled in the art.
  • the child SFC+ is executed in place of the macro step in the parent SFC+ .
  • the Program Execution subsystem While the Program Execution subsystem is executing the child SFC+ , the Program Execution subsystem will also scan any actions in the parent SFC+ which are attached to the macro step name box 105 and the Program Execution subsystem will also continue executing any SFC+ steps in the parent SFC+ which are activated in parallel with the macro step.
  • the Program Execution subsystem destroys the instance of the SFC+ execution mechanism associated with Macro Step Box 105 and activates the next step in the parent SFC+ (step name box 103c).
  • step name box 103c enhancements have been made to the IEC-1131 standard for an exception handling mechanism to allow continuous programs to force an immediate state transition in the SFC+ based on a detected condition.
  • transition output coil 232 includes a label identifier 234 referring to a destination location 236a in the SFC+ to transition to when coil 232 is "energized.”
  • the transition output coil "trans” 232 is represented in the list of elements available to a continuous program like any other output logic coil conforming to the IEC-1131 standard. It contains the term “trans” (representing an SFC+ transition) between two parenthesis.
  • a transition output coil is inserted into a Relay Ladder Logic Network, the user must specify a destination location 236a as the transition destination.
  • a label identifier 234 is placed above the transition output coil representation in the Relay Ladder Logic Network.
  • transition output coil 232 When transition output coil 232 is energized during program execution, any step box that refers to the action statement box that contains activated transition coil 232 is immediately deactivated, and any active sequential program statements in these deactivated step boxes are immediately aborted.
  • the step boxes immediately following transition destination location 236a referred to by transition output coil 232 are activated. If a transition statement follows transition destination location 236a, then the transition statement (i.e., transition statement 246c) is enabled to be scanned as if step box 248 preceding the transition statement has just been completed.
  • suspend output coil 238 and resume output coil 242 are added to the list of logic elements available in the Relay Ladder Logic Network. This functionality is useful in applications where normal operations may need to be suspended and corrective action taken when certain conditions occur. Furthermore, normal operations can be continued after the corrective action sequence is completed.
  • One example use of this feature is the changing of a metal cutting tool if it becomes dull or broken using a sequence of actions that will move the machine automatically away from the part being machined to a position where the tool can be exchanged, change the tool, and then return back to machining the part.
  • the suspend ("suspnd") and resume ("resume") output coils are represented in the list of elements available to a continuous program like other output coils.
  • the "suspnd" output coil 238 contains a reference to an SFC+ label identifier 240 above it.
  • the "resume” output coil 242 does not contain a label identifier since the SFC+ will transition back to the most recent suspension point in step box 230.
  • step box 230 When "suspnd" output coil 238 is activated, the active program statements in step box 230 associated with the action containing the energized "suspnd” output coil 238 will be placed into a paused state. Furthermore, any active sequential program statements in the paused step boxes receive a pause command which will cause them to perform a predefined action that will stop the executing function, such as decelerating all motors to a stop. The suspended sequential program statements are stored and are placed in a list of suspended steps. Execution continues from destination location 236b specified by the "suspnd" coil 283.
  • RS-274-D is often the preferred sequential programming language because it is used on almost all CNCs and has been a standard on the factory floor for many years.
  • Another object of the invention is to use Structured Text (ST) expressions and Structured Text assignment statements in combination with RS-274-D motion commands to allow the RS-274- D motion commands to be parameterized as shown in FIG. 8.
  • Structured Text assignment statements can be interspersed with RS-274-D motion commands by enclosing the statement in parenthesis and including it as part of an RS-274-D motion command, or they can stand alone as separate statements. It will be appreciated that other programming languages such as BASIC, Fortran and C can also be used in conjunction with RS-274D commands.
  • a Structured Text expression is embedded in an RS-274-D command by replacing the numeric element of the standard RS-274-D motion command with a Structured Text expression in parenthesis.
  • Structured Text expression 106 replaces a numeric element in an RS-274-D motion command.
  • Structured Text assignment statement 108 is included as part of an RS-274-D motion command while Structured Text assignment statement 110 stands alone as a separate statement. Accordingly, Structured Text assignment statements can be used to synchronize I/O (as indicated at 112a) and process control set points (as indicated at 112b) with RS-274-D motion commands.
  • a preferred embodiment of the present invention allows the development of application specific sequential program statements using a Logic Editor (which will be described in detail below). This is accomplished by combining one or more sequential program statements (e.g., program statements for motion and/or process control) and associating a unique name to that set of sequential program statements (e.g. see FIG. 12, "Hard Stop"). Furthermore, a graphic icon can be attached to that set of sequential program statements to provide a visual indicator. The graphic icon can be used in any step box to represent a defined set of sequential program statements.
  • sequential program statements e.g., program statements for motion and/or process control
  • a graphic icon can be attached to that set of sequential program statements to provide a visual indicator.
  • the graphic icon can be used in any step box to represent a defined set of sequential program statements.
  • graphic icons can also be attached to continuous program statements to represent action statements (see FIG. 12, "Advnc Ctrl") and attached to transition logic statements associated with a step box.
  • an icon selection bar 140 provides the user with simple means to select the icons which can be accessed in the Logic Editor.
  • the icons available for an application program are loaded into the Logic Editor by selecting the desired icon group from an icon group menu 150, shown in FIG. 14.
  • icons may represent sequential program statements, continuous program statements or transition logic statements.
  • Icon selection bar 140 contains an icon group label 142 and an icon set 144.
  • the icons visible in icon set 144 are selected from the entire set of available icons either on the basis of the most recently used icons, the most frequently used icons, or the function of the icons. With respect to the latter, icons are arranged into functional groups and made visible on the icon selection bar 140 on the basis of the most recently used functional group.
  • the icon set displayed in icon selection bar 140 is determined by the selection from icon group menu 150.
  • the icons visible in icon selection bar 140 can be directly added to the SFC+ by dragging the selected icon to the SFC+ using a pointing type user interface device. If the desired icon is not visible on the icon selection bar 140, the user activates icon group label 142 to browse through the entire list of available icons and to select a desired icon.
  • the Logic Editor is designed to make the switch between alternately editing the sequential program and editing the associated continuous program (e.g., an RLL Network) seem effortless, since these programs are closely related and may require simultaneous editing.
  • a continuous program associated with a step can be viewed and edited by simply activating the desired action statements using a pointer type user interface.
  • an edit window 100 is laid on top of the SFC+ for viewing or editing.
  • a preferred embodiment of the present invention also provides an improved ladder logic editor to simplify the programming of continuous programs.
  • visual connection symbols, i.e., "hot spots”
  • a hot spot can be selected and moved to another location using a pointing type user interface device.
  • Hot spots are used to specify a particular location in a Relay Ladder Logic Network. Accordingly, a hot spot is used to specify a poirt in the network where a connection is desired, or a point in the network where a disconnection is desired. Hot spot 156 is moved from a first position shown in FIG. 15 to a second position shown in FIG. 16. Accordingly, the connection of "OTMinus" is modified.
  • a further feature of the present invention allows output elements and Function Blocks to be placed anywhere in a Relay Ladder Logic Network as shown in FIG. 18. Accordingly, a preferred embodiment of the present invention uses a unique algorithm to evaluate the Relay Ladder Logic Network. The algorithm will be discussed in detail below in connection with the Program Execution Subsystem.
  • a preferred embodiment of the present invention includes a function block selection bar 160.
  • Function block selection bar 160 simplifies the selection of a function block from a large list of available function blocks.
  • Function block selection bar 160 includes a function block group list button 162 and a function block button set 164. The function blocks which can be accessed through function block selection bar 160 are organized into functional groups.
  • function block button set 164 When a functional group is active (e.g., Counter/Timer Function Blocks), function block button set 164 displays the function blocks which are contained in that group.
  • Function block group menu 166 allows the user to select a new function block button set from the list of available functional groups.
  • the function blocks displayed in function block button set 164 can be directly added to a Relay Ladder Logic Network by dragging a function block corresponding to a selected function block button onto a Relay Ladder Logic Network diagram using a pointing type user interface device.
  • function block 168 is placed into the Relay Ladder Logic Network diagram of FIG. 21.
  • a preferred embodiment of the present invention comprises four major subsystems, as shown in FIG. 22. It will be appreciated that while the preferred embodiment shown in FIG.
  • FIG. 22 shows an entity relationship diagram showing the data architecture model used by Configuration Utility 180 of FIG. 22.
  • Program Execution 186 interprets Structured Text (ST) programs 188, originating from Logic Editor 184 and control commands 183 (e.g., RUN, STOP and HOME), originating from operator control 182.
  • ST Structured Text
  • Program Execution 186 reads status from, and writes outputs and commands, to I/O card 192 and motion control card 194.
  • Configuration Utility 180 is used by an application engineer to define the hardware configuration (e.g., the type of input and output interface cards), the logical assignment of the I/O linking physical I/O to symbolic names used in application programs, and motion application parameters (e.g., servo control loop gains, velocity limits, acceleration limits and position travel limits).
  • Logic Editor 184 provides a combination of graphical and textual programming paradigms to define the application program for the target application.
  • Operator Control 182 provides a real-time control status display 185 to the operator and routes operator control commands 183 to Program Execution 186. CONFIGURATION UTILITY SUBSYSTEM
  • Configuration Utility 180 is used by the application engineer to: (1) identify which system hardware components are present, (2) identify how these hardware components are configured, and (3) assign application specific symbolic names to the hardware components and physical I/O addresses. These application specific symbolic names can be used in the application program in place of the physical I/O addresses or location of the hardware components and interfaces.
  • Configuration data is converted into a binary format and stored to a data file on hard disk 74. The binary data file is used by the other subsystems to convert application specific symbolic names to physical I/O addresses. This configuration data also contains information necessary to configure and operate cards 84, 86, 88 and 92.
  • Operator Control 182 provides a display for: (a) controlling the operation of the industrial automation machinery and (b) providing diagnostic and status information to the user for troubleshooting problems that might occur.
  • Logic Editor 184 provides an integrated graphical programming environment 181 for the user to develop the SFC+ .
  • the entire graphical program representation is maintained in an internal format.
  • the internal format contains information such as type, size, and location of graphical elements. This internal format is generated using methods well known to those experienced in the art of designing graphical editors.
  • the step boxes are represented in one of the following ways:
  • the labels or icons can either be used as a label with no associated sequential program or as a short hand for a sequential program, written in RS-274D, IEC-1131 Structured Text or similar languages, which is represented by the label or the icon.
  • application specific programs When application specific programs are created they are stored in a file which is identified with the application and can be reused later by name or icon in any SFC+ .
  • the Logic Editor displays icon selection bar 140, shown in FIG. 13.
  • an application icon file is opened and all of the application icons are read in from the file and stored in a list.
  • the application icons which are displayed on icon selection bar 140 are managed using one of three different mechanisms.
  • the user chooses the mecha ' sm to be used through icon group menu 150.
  • the three mechanisms are: (1) selection based on functional icon groups, (2) selection based on most recently used icons, or (3) selection based on most frequently used icons. If the mechanism chosen is the selection based on functional icon groups, a scrollable icon display 152 is displayed with each functional group placed in a row (see FIG. 27). When a new icon is selected from the scrollable icon display 152, all of the icons in the functional group associated with that icon are displayed on the icon selection bar 140.
  • a list of the most recently used icons is maintained by Logic Editor 180 and those icons are displayed on icon selection bar 140. If the mechanism chosen is selection based on the most frequently used icons, a list maintained by Logic Editor 184 containing the number of times each icon was used is accessed. The list is sorted in descending order of usage and the icons at the top of the list are displayed on icon selection bar 140. If the desired icon is visible on icon selection bar 140, the user can either select the icon or drag the icon to the desired location on the SFC+ .
  • Logic Editor 184 keeps track of where each SFC step is located on the user display and the visual size of the step.
  • Logic Editor 184 searches through the list of SFC steps to find the insert target step (the step which the dragged icon will be inserted relative to). Once the drag target point is determined to be contained in a step area, the dragged icon is inserted relative to that step (i.e., the target step). If the drag target point is above the center of the target step, the dragged icon is inserted above the insert target step. If the drag target point is below the center of the target step, the dragged icon is inserted below the insert target step.
  • Logic Editor 184 displays scrollable icon display 152 as shown in FIG. 27, which contains all of the application icons associated with the active application program. The user selects a desired icon from this display and the icon is inserted after the active edit step on the SFC+.
  • FIGS. 15 and 16 in a Relay Ladder Logic Network, Logic Editor 184 visually identifies the point at which each parallel logic branch departs from the parent rung branch using a visual connection symbol (i.e., "hot spot").
  • a pointing type input device is used to drag the visual connection symbol from the current location to a desired location.
  • the parallel logic branch is then reconnected to the parent rung at the drag completion point.
  • Logic Editor 184 keeps track of the position and size of all of the graphical elements in the Relay Ladder Logic Network. When a drag operation is initiated, Logic Editor 184 searches through the list of ladder logic elements to find the connection element to be rewired. Once the drag target point is determined to be contained in a connection element that connection element, is selected to be rewired. The connection element is then removed from its current position and inserted in the parent rung at the new position.
  • Logic Editor 184 displays function block selection bar 160 to facilitate the selection of function blocks to be included in a Relay Ladder Logic Network. If the desired function block is visible on function block selection bar 160, the user can either select the function block or drag the function block to the desired location in the Relay Ladder Logic Network.
  • Logic Editor 184 keeps track of the active edit element and displays that element as highlighted. A new active element can be selected by using a pointing type input device. If the user drags a function block to the desired location, the function block is inserted where the user completes the drag operation, as shown in FIG. 21. If the desired function block is not contained in the active function block button set 164 of function block selection bar 160, the user activates function block group list 162. In response, Logic Editor 184 displays function block group menu 166 containing all of the function block groups (see FIG. 20).
  • FIG. 17 illustrates the Structured Text program representation of the Relay Ladder Logic Network shown in FIG. 16.
  • Structured Text program 188 is interpreted by program execution 186 to generate I/O commands to I/O card 192 and motion card 194. The operations performed by program execution 186 will be described in detail below.
  • FIG. 10 shows a Structured Text program which represents the SFC+ of
  • FIG. 9A When an SFC+ is converted to the ASCII Structured Text program 188, it is represented by a series of steps and transitions. Steps include any sequential program statements, continuous program names, action qualifiers, synchronization qualifiers and program statement labels. Transitions include any transition statements in the SFC + .
  • a module of Program Execution 186 is the program language interpreter.
  • the interpreter interprets the ASCII Structured Text (ST) program 188, which can include sequential program statements (e.g., RS-274D motion commands).
  • ST Structured Text
  • the interpreter uses methods well known to those experienced in the art of designing program language interpreters.
  • the interpreter parses the program and invokes internal procedures that execute the functions of the program.
  • FIG. 23 shows a flowchart of the process used to decode RS-274D motion commands embedded within ST programs, and ST expressions and ST assignment statements embedded within RS-274D motion commands.
  • the RS-274D commands are enclosed within the keywords "BEGIN_RS274" and "END_RS274.” Accordingly, when the interpreter recognizes the BEGIN_RS274 keyword (Step 202), it will begin interpreting the text as RS-274D commands at step 212. When the interpreter recognizes the "END_RS274" keyword (Step 208), it will resume interpreting the text as Structured Text commands at step 204.
  • Step 208 In order to embed ST expressions and ST assignment statements within
  • RS-274D motion commands the expressions and assignment statements are enclosed with the characters "(" and ")". While interpreting the RS-274D motion commands, the interpreter recognizes the "(" character (step 210) and will begin interpreting the text as either a Structured Text expression (step 222) or Structured Text assignment statement (step 224). If the interpreter is in the process of decoding an RS-274D letter parameter (step 214), for example, the Y axis position in FIG. 8, the Structured Text will be interpreted as a Structured Text expression (step 222) and the result will be used as the value of the letter parameter. Otherwise, the Structured Text will be interpreted as a Structured Text assignment statement (step 224).
  • Program Execution 186 When the interpreter is interpreting the Structured Text subset (step 216) and recognizes the character ")" (step 218), it will resume interpreting the text as standard RS-274D motion commands at step 206.
  • Program Execution 186 activates a step box in an enhanced SFC, it scans the associated actions statement box on a regular timed interval. If an action qualifier is satisfied, the continuous program associated with the action qualifier is executed. When a synchronization qualifier is associated with the action qualifier, the synchronization qualifier must also be satisfied for the continuous program associated with the action qualifier to be executed. Program Execution 186 will read status information from external controller cards (i.e., I/O card 192 and motion control card 194) in order to determine if a synchronization qualifier is satisfied.
  • external controller cards i.e., I/O card 192 and motion control card 194
  • an enhanced standard algorithm for evaluating ladder logic is used.
  • An enhancement of the standard algorithm allows for arbitrary positioning of logical outputs.
  • the partial result of the ladder logic rung at the point where branching begins has been termed the "root.”
  • the root at position 58 is "A and NOT B.”
  • the enhanced algorithm must also handle "roots" in a recursive manner on the stack since nested clusters of logical branching may occur at any point within a series of logical branches.
  • the enhanced standard algorithm works as follows: When the Instruction List (IL) program (which is generated by Logic Editor 184 from the Relay Ladder Logic Network shown in FIG. 26a) begins, the root exists but its value is not relevant (NULL) [line 2]. The evaluation of the IL program proceeds as expected until a "AND(" [line 6] or "ANDN(" is encountered.
  • IL Instruction List
  • the deferred operator is an "OR" [line 21]
  • the new result (R3) is "ored” with the old result (R2) and stored in the old result (R2) [line 23]; the new result (R3) is discarded [line 24] and the old result (R2) becomes the new result [line 23].
  • the deferred operation is an "AND" [line 25]
  • the old result is set equal to the new result [line 27]
  • the new result (R2) is discarded [line 28]
  • the old result (Rl) becomes the new result [line 27]
  • the old root is popped off the stack [line 29] and becomes the current root.
  • Enhanced Debugging A preferred embodiment of the present invention also provides enhanced debugging features.
  • the debugger of the present invention allows the user to playback system conditions occurring just prior to the detection of a programming problem. Accordingly, the user can view the conditions that caused the problem.
  • An event handler 250 time tags events, sorts these events in time, and maintains a FIFO (first-in, first-out) of events in RAM and on event log 254. Thus, event handler 250 keeps the newest events and discards the older events. Event handler 250 is also used to store the I/O status (originating from I/O scanner 251) and program status information (originating from program execution task 253) occurring at a given moment. I/O status is the status of physical inputs and physical outputs of the controller, while program status is the status of the program being executed by the controller.
  • Diagnostic utility 252 configures the I/O scanner and program execution task 253 to send I/O status and program status information to event handler 250 every I/O scan until a "breakpoint" is encountered.
  • Breakpoints are commands which can be placed in sequential or continuous programs to signal I/O scanner 251 and program execution task 253 to respectively stop logging I/O status and program status information to event handler 250. This allows the user to review the contents of event log 254.
  • a breakpoint is set in a sequential program steps as an action item (FIG. 30) or in a continuous program as a set of conditions (FIG. 31).
  • breakpoint 260 occurs.
  • breakpoint 262 occurs.
  • a breakpoint may be placed in step boxes, action logic, on transitions, or Relay Ladder Logic rungs, in order to provide additional information to the user.
  • the logging function of a breakpoint is a property of the breakpoint and is set by diagnostic utility 252.
  • Logic Editor 184 generates ST program 188 (from the enhanced SFC) for Program Execution Task 253.
  • Program Execution Task 253 in turn generates status data 258 that Logic Editor 184 uses for displaying real-time program status. If a fault or failure is detected by any task including Program Execution Task 253, the task can log an event by sending the appropriate message to the Event Handler 250.
  • Diagnostic Utility 252 enables breakpoints in Structured Text Program 188 by sending internal messages to Program Execution Task 253 and I/O Scanner 251.
  • Program Execution Task 253 is configured by Diagnostic Utility 252 to send program status information.
  • I/O scanner 251 is configured by Diagnostic Utility 252 to send I/O status information to Event Handler 250.
  • Event Handler 250 uses event log 254 to provide status data 258 to Logic Editor 184.
  • Logic Editor 184 will display past I/O status or past program status information to the user.
  • Event handler 250 logs a series of I/O status and program status information representing a snapshot of the state of the controller at a particular instance in time. Each snapshot will be referred to as a "frame.” Once the frames are captured and the fault condition has been detected, the log of the frames may be replayed to the user to observe the conditions that existed prior to the detection of fault. Accordingly, the frames may be replayed either in the forward or reverse timing direction as required. When replayed, the I/O status and program status information may be reviewed by the user in detail in order to determine the cause of the fault.
  • the enhanced SFC program can be used to observe event log 254 in a graphical form.
  • the program status information can be used to highlight step boxes and action step boxes, and the I/O status information can be used to highlight the I/O input and outputs in a Relay Ladder Logic Network. Accordingly, both can be displayed on the same screen. In this way, the user can view the controller status conditions one step at a time, in real time to see what I/O conditions or program conditions may have caused the programming problem or fault.
  • a time tag (i.e., time stamp) is recorded with each frame and is played back along with the I/O status and program status information.
  • the time tag can be used to determine the exact time between recorded events. Accordingly, events can be logged every scan, on a periodic basis, or when problems or events occur. Accordingly, event log 254 can be used to generate status information displays such as an I/O timing diagram, an I/O contact history, an I/O trend diagram, or an SFC+ execution trace.
  • a manual application sequencer program ties a simple sequence of operator buttons to steps of an application program. It will also be appreciated that operator buttons can be tied to the application program itself, rather than individual steps of the application program.
  • display 280 shown in FIG. 32 consists of a series of buttons arranged in rows from left to right, top to bottom, with arrows indicating the button sequencing. These buttons are highlighted in colors to indicate which steps of an application program , are being executed. Each button corresponds to a step in the application program. When an application manual mode is active, these buttons are used by the operator to manually sequence through the steps of the application program. , Each button of the manual application sequencer display 280 is displayed with an inactive color (e.g., gray) to indicate that the associated step is not active.
  • an inactive color e.g., gray
  • the associated button When an application program step is ready to be activated, the associated button is displayed with a ready color (e.g., yellow). When the operator pushes the ready button, the associated step is executed, and the button is displayed with an activel color (e.g., green). The button is displayed with the active color until the associated application program step is completed. When the application program step is completed, the button is displayed with an inactive color, and the next button in sequence is displayed with a ready color. If an error occurs, the active button is displayed with an error color (e.g., red).
  • a ready color e.g., yellow
  • an activel color e.g., green
  • the manual application sequencer program generates a top-level format SFC+ 270, as shown in FIG. 33.
  • Each button in the manual application sequencer display 280 is tied to a macro step 272 in the application program.
  • Preceding each macro step is a transition statement 276 which causes the application program to wait for the associated button to be pressed before continuing (when the application program is in manual mode). For example, if the Advance Slide button in FIG. 32 is pressed it would set the Advance Slide Btn boolean variable (see transition statement 276a), which in turn would cause application program 270 to transition from step 271 (start) to macro step 272a (Advance Slide). Accordingly, when a button is pressed, the application program step associated with that button is executed. When that step is completed, the application program waits for the next button to be pressed.
  • Action logic 274 is attached to each application program step. This logic , turns on boolean memory variables which indicate that the step is ready, the step is active, or an error has occurred in the step. These boolean memory variables are used by the manual application sequencer program to set the color of the buttons.
  • Each macro step in the application program contains a subordinate SFC+ which the application engineer creates to perform the functions required in that macro step.
  • macro step 272a Advanced Slide
  • FIG. 33 contains a subordinate SFC+ which specifies the details of the advance slide function.
  • the subordinate SFC+ begins executing when the macro step is activated.
  • the macro step complete indicator is turned on.
  • a special operation program can be created to perform a special operation, which must be periodically performed during the application
  • the graphic sequencer buttons and the program editing and execution are implemented in a manner well known to those skilled in the art.
  • the manual application sequencer buttons are attached to the application program by either using the same file name with different file extensions or by including both the application program and the manual application sequencer program in a common file.

Abstract

A system for generating, editing, executing, monitoring and debugging an application program (14) for controlling an industrial automation mechanism (2) comprising components of logic, motion and process control. The programming and operating environments contain a single Man Machine Interface (18) with close and intuitive linkages between sequential programs (3) and continuous programs (26A) that aid in the programming, operation and troubleshooting of application programs.

Description

INTEGRATED CONTROL SYSTEM FOR INDUSTRIAL AUTOMATION APPLICATIONS
Field of the Invention The present invention relates generally to a system for generating, editing, executing, monitoring and debugging an application program which provides integrated control of sequential and continuous machine processes.
More particularly, the present invention relates to a system for generating, editing, executing, monitoring and debugging an application program which provides simultaneous control of all the logic, motion and process control components of an industrial automation application.
The present invention finds advantageous application to an automated transfer line and will be described with particular reference thereto, it being appreciated that the present invention has broader applications and may be used with other industrial automation applications, including material handling, metal forming, and robotics.
Background of the Invention
A typical automated transfer line, as shown in FIG. 1, consists of a number of work stations where the work piece undergoes various operations, for example metal cutting and forming, in a specific, predetermined order. The flow of the work piece, such as an automotive engine block, from the point of entry into the line, its guidance and navigation through the work stations, and its final exit from the line after successful completion of all automated operations, must be controlled with high order of accuracy to result in the proper synchronization and coordination of the automated transfer line.
It is critical that the operation of the automated transfer line be error free and reliable as the smallest inaccuracy in any part of the control system, such as the communication link between various controls at each work station, can have disastrous results. It is also extremely important that the application program for the automated transfer line be relatively straightforward and reliable for both setup and integration, as well as continuous operation and troubleshooting by the factory floor personnel. Today, automated transfer line applications generally require logic control (e.g., control of IF...THEN conditional actions) and motion control (e.g., control of a servo) and at times process control (e.g., control of the electrical current flow to a welder). It should be noted that motion control can be regarded as a specialized type of process control. Application engineers choose several industrial controllers, each specializing in one of the control technologies (i.e., logic, motion and process control), and each with its own specialized hardware and software implementations. The application engineers then program each of these individual devices, typically using different programming languages and development environments, to control a specific subset of the total industrial automation application. Additional hardware and software interconnections and communications must be added to get the individual devices to work together in a coordinated and synchronized manner. The difficulty and cost of programming, integrating, operating and supporting such a complex system is substantial. Key disadvantages of existing automated transfer line control arrangements include the following:
1. Hardware duplication; each controller usually has its own chassis, computer, I/O and power supply.
2. Multiple operator interfaces and program development support systems; this makes the system more difficult to program, debug and operate resulting in increased system support cost. ?. Error prone inter-connecting logic; the control device interconnections require extra integration time and often represent a major source of the system problems thereby reducing the overall reliability of the total system. 4. Sub-optimized usage of controller performance; generally, one or more of the controllers has much more performance than is required for its assigned portion of the application, and since there is no ability to share workload among different controllers, this excess performance is wasted while the total system cost is increased. In the typical automated transfer line application shown in FIG. 1, control units 2, 4, 6, 8 and 10 require logic, motion, and/or process control. Accordingly, each of these control units requires multiple industrial controllers. In general, one controller for each control technology will be required at each control unit. The typical implementation process for one of these control units is shown in FIG. 2. The system Integrator or the original equipment manufacturer (OEM) carries the overall responsibility for implementing process plan 20 for an individual control unit. Process plan 20 is developed by a process engineer and the implementation of that plan requires the following tasks to be completed: A. Separating process plan 20 into individual logic control program steps 22, motion control program steps 24 and process control program steps 26.
B. Selecting, purchasing and integrating individual logic controller(s) 28, motion controller(s) 30 and process controller(s) 32, each having its own hardware, operating system and program development environment.
C. Generating separate programs for each individual controller. In this respect, logic control program steps 22 are typically programmed in graphical ladder language (e.g., Relay Ladder Logic Network); the motion control program steps 24 are typically programmed in RS-274D or a proprietary motion language; and the process control program steps 26 are typically specified in Function Block Networks.
D. Adding inter-controller synchronization interconnections and program logic.
E. Debugging this complex architecture. It is nnted that the integrated view of the entire system control, specified via these separate programs, is extremely difficult to observe as the interdependence, coordination and synchronization between the various control components is buried deep within the inter-control communication links and the program for each of the controls. Also, the man-machine interfaces 34a, 34b, and 34c are of a general purpose nature which makes the operation of the entire system very difficult for the factory floor personnel.
F. Documenting, maintaining and supporting the integrated system. While logic, motion and process control have both sequential and continuous functions, a programmer is concerned primarily with sequential functions with respect to motion control, continuous functions with respect to logic control, and both sequential and continuous functions with respect to process control. Sequential functions are actions which are sequential in nature, while continuous functions are actions which are continuous in nature. Both types of functions will be described in greater detail below.
It has been standard practice to program "sequential" motion control functions using RS-274D or a proprietary motion control language on a computerized numerical control (CNC) or some other type of motion controller, to program "continuous" logic control functions using ladder logic and function blocks on a programmable logic controller (PLC), to program "sequential" process control functions using standard Sequential Function Charts, flow charts, or batch recipes, and to program "continuous" process control functions using Function Block Networks.
Each of these controllers and programs serve a specific need in a portion of the application program and present their own specialized programming environment and unique window into the application domain. Unfortunately, none of these programming techniques can adequately address the entire application requirements alone. When used together, these diverse programming techniques implemented on separate controllers are inefficient, do not integrate or interconnect well, are difficult to operate and troubleshoot, and can be prohibitively expensive. A new, simpler, more integrated solution is needed that does not deviate too far from the methods already used to program and troubleshoot on the factory floor to minimize training time.
Many industrial automation applications require the integration of sequential and continuous programs into a single application program, which controls the sequential and continuous machine processes of an industrial automation application. Sequential programs are used to control the major sequencing of an application program. Accordingly, sequential program steps are executed only once, one step after the other, like a procedure, waiting for the previous step to complete before the next step is executed. Continuous programs are used to monitor and control environmental conditions either during the entire application program or during specific portions of the application program. Accordingly, continuous programs are scanned repeatedly and executed whenever the qualifying conditions are appropriate.
As noted above, sequential functions are actions which are sequential in nature, and accordingly are most easily and intuitively programmed using sequential programs. Likewise, continuous functions are actions which are continuous in nature, and accordingly are most easily and intuitively programmed using continuous programs.
Examples of sequential functions include:
1. machine operation or sequencing, for example: (a) turn the machine on and wait for all functions to report ready, (b) position the workpiece to be processed, (c) begin processing and wait for the process to complete, (d) shutdown the process, and (e) remove the processed workpiece. This procedure is illustrated by the flow chart shown in FIG. 3.
2. motion control, for example: (a) move from the start position to the first position, (b) move to the second position, (c) go around the corner to the third position, and (d) return to the start position. This procedure is illustrated by FIG. 4.
3. process control, for example: (a) initialize the process output, (b) ramp the process output to level one, (c) wait for some event or signal and then change the process output to level two, and (d) wait for another event and then return the process output to an idle state. This procedure is illustrated by FIG. 5. Examples of continuous functions include:
1. logic control for scanning operator control input and safety interlocks, programmable interface devices
(PID) and other closed feedback loop control, and
2. analog signal processing. Although it is possible to emulate a sequential function using a continuous program, it is frequently difficult to do so and is more difficult to understand and interpret because the natural "step after step" representation is lost. It is also less efficient because all steps, not just the current one, are being repeatedly scanned or checked for possible execution. It is usually not possible to emulate continuous functions using sequential programs, because only one or a limited number of parallel functions are executed and then further processing is suspended until the conditions required to transition to the next step are met.
A method is needed to program in a natural and integrated fashion a system performing both sequential and continuous functions. It is noted that the IEC-1131's Sequential Function Charts (SFC), as shown in FIG. 6 are a good method of programming and visualizing a sequence of continuous programs, and that Relay Ladder Logic Networks (RLL) supplemented with Function Block Diagrams, as shown in FIG. 21, is a good approach for programming continuous functions. The IEC-1131 international programming language standard for programmable controllers provides specifications for Sequential Function Charts, Relay Ladder Logic Networks, Function Block Diagrams, Structured Text (ST) and Instruction List (IL).
The standard Sequential Function Chart (SFC) shown in FIG. 6. as specified in the IEC-1131, is intended to provide a graphical means for presentation of an application program for controlling both sequential and continuous functions. Step boxes 40 are used to sequence between program steps. As each step box is activated in turn, the action associated with the step box is scanned and executed. The sequencing between step boxes 40 works well when the actions associated with each step are continuous functions. In applications, such as motion and process control, where the functions to be performed require a significant finite amount of time to complete and must be performed in a sequential manner, the standard SFC becomes difficult to use. Examples of these sequential functions include moving a motor through a series of positions (See FIG. 4) and issuing a series of process control commands based on time or other event inputs (see FIG. 5). To use a standard SFC diagram, as shown in FIG. 6, in these applications:
1. each sequential program statement must be associated with a separate SFC step box 40;
2. a "pulsed (P)" type action qualifier 48 must precede each sequential program statement that the action invoked only once;
3. each SFC step must set a boolean output variable when it is "done";
4. the "done" output variable must be added to SFC transition logic 42 to sequence to the next SFC step;
5. any continuous program statements that are common to several sequential program statements must be repeated for each SFC step having the sequential program statement; 6. and any exception handling actions that are common to several sequential program statements must be repeated for each. Additional disadvantages to standard SFC programming include:
1. because of the techniques used above, the SFC diagram tends to get very large and complicated even for simple application programs;
2. the sequential program statements that should be the major focus of the application program become "buried" in a sea of action statement boxes, the main application program functions become obscured, and the overall application program control flow through the sequential program statements is not easily visualized;
3. since a series of sequential program statements must be separated into individual step boxes, it is not possible to insert a group of sequential program statements, such as RS-274D motion commands, that may have been generated by some external (e.g. CAD) program generating package, as a unit into the application program; 4. there are no action qualifiers that will activate action statements after certain motion and process control events, such as "acceleration complete" or "ramp done." FIG. 6 shows a typical standard Sequential Function Chart, which consists of step boxes 40, transition logic 42, and action statement box 44. Action statement box 44 is comprised of action statement identifiers 46 and action qualifiers 48. Transition logic 42 is evaluated to form a single boolean result that controls the transitions between steps. Action statements associated with an action statement identifier are executed continuously and in parallel at a regular time interval as long as the step to which the action statement identifier is associated is active. Accordingly, when transition logic 42 for a step becomes true, the action statements associated with the step cease execution and the step is deactivated. This process repeats for each step in the SFC.
All of the productive functions performed by the standard Sequential Function Chart are performed by the action statements associated with action statement identifiers 46. The step labels (e.g., "State 1") associated with each step box 40 serve no useful purpose except to uniquely identify each step. If sequential programs are needed (e.g. for programming sequential functions, such as motion and process control), they are encapsulated inside Function Blocks, contained within actions, along with any other continuous program steps that must be performed in that step.
Action qualifiers 48 are used to specify when associated action statements are to be executed. For example, action qualifier "N" indicates that the action statement associated with action statement identifier "Action 1" is to be executed repeatedly, action qualifier "P" indicates that the action statement associated with action statement identifier "Action 2" is to be executed only once, and action qualifier "D" indicates that the action statement associated with action statement identifier "Action 3" is to be delayed. Implementing motion and process control commands (i.e., sequential programs) using the foregoing constructs makes standard Sequential Function Charts inefficient and difficult to read. The sequential program statements that can be the dominant action of the application program and source of the processing delay in a given step, are "buried" in a sea of action statements. At the same time the step labels of step boxes 40 do nothing to specify what action is being performed in a given application program step. Also, it has been observed that standard Sequential Function Charts are often too large and too detailed to show enough of the application program on one operator screen so that a good grasp of the operational context can be readily visualized. If a standard Sequential Function Chart is used to display the current status of the application program, it often is scrolled or updated too rapidly on the operator's screen to be of much use.
While attempts have been made in the prior art to provide a system for integrating sequential and continuous programs, none of these approaches have solved the basic difficulties encountered. In this respect, the prior art systems have failed to provide integration of the following capabilities:
1. The capability to program, edit, execute, monitor and debug both sequential programs and continuous programs simultaneously in a single integrated environment.
2. The capability to program in programming languages familiar to the industry segment (e.g. logic, motion, and process control industry) of the application. 3. The capability to put the sequential program in a dominant position in the programming paradigm to control the overall sequence of the application program.
4. The capability to add constructs to the application program to allow the sequential and continuous programs to be synchronized (including specific synchronization constructs needed for motion and process control), wherein the constructs are intuitive and outwardly visible in the integrated environment. 5. The capability to provide a graphical programming environment which presents integrated programming paradigms and a simple and intuitive format which is easy for a new user to learn. Prior art approaches to integrating sequential and continuous programs includes: computerized numerical control (CNC), flow chart programming, and standard Sequential Function Chart programming. Computerized numerical controls provide technology which allows the user to write sequential programs using the RS-274D programming language (which is the industry standard for specification of motion control programs) and to write continuous programs using Relay Ladder Logic Networks. Both programs can be programmed and executed on a single hardware platform. However, computerized numerical controls do not allow the sequential and continuous programs to be programmed, edited, executed, monitored and debugged in a single programming environment. In addition, the constructs used by computerized numerical controls to synchronize sequential and continuous programs are embedded in the continuous program and are not easy to visualize. Furthermore, additional program logic must be added by the user to both the sequential and continuous programs in order to properly synchronize them.
Flow chart programming provides technology which allows the user to write sequential programs using a graphical flow chart language. However, flow chart programming is deficient in integrating sequential and continuous programs. In this respect, any continuous program must be simulated by use of many flow charts. This does not allow continuous programming paradigms which are standard in the industry, such as Relay Ladder Logic Networks and Function Block Networks. Furthermore, no constructs are provided to synchronize sequential programs with continuous programs. Standard Sequential Function Chart programming allows the user to write continuous programs using industry standard Relay Ladder Logic networks and Function Block Networks. These continuous programs are sequenced using Sequential Function Chart step boxes and transition logic. However, sequential programs are subordinate to the continuous programs. In this respect, a sequential program (e.g., a RS-274D program) may be called from a continuous program (e.g., Relay Ladder Logic network), but not vice versa. Importantly, since a sequential program specified in this way is subordinate to the continuous program, the sequential program cannot be used to provide overall sequencing of the application program. Accordingly, the sequential program cannot assume a dominant position in the programming paradigm. Therefore, although standard Sequential Function Chart programming allows continuous programs to be sequenced, this function does not meet the needs of sequential functions performed in most industrial automation applications. Any programming language used in the industry to perform sequential functions (e.g., Structured Text, Fortran, BASIC and RS-274D), must execute subordinate to a continuous program. Consequently, any sequential program used in this way cannot be used to provide sequencing for the application program. For example, a computerized numerical control application which uses RS-274D motion commands to execute a motion profile cannot be implemented using a standard Sequential Function Chart. In addition, no constructs are provided by a standard SFC to synchronize the sequential programs with the continuous programs. In industrial automation applications, great care must be taken that every foreseeable circumstance, especially those caused by faults or failures in the system be accounted for and handled appropriately by the application program. The machinery might fail, motors may be late getting into position or stop altogether, functions being performed may take longer than expected or may not be able to be accomplished at all, the items being processed may contain some disastrous defect. The programming languages used for these applications must be able to accommodate the addition of routines to handle these exceptions to normal operations.
In the IEC-1131 standard there is no special mechanism in place for exception handling. Actions must be added to the continuous programs to detect the exceptions, but once the exceptions are detected there is no special mechanism in the IEC-1131 standard for the continuous program to force a transition in the Sequential Function Chart to a new step. This can be accomplished in the IEC- 1131 standard by setting a boolean variable in the continuous program and adding transition logic to the Sequential Function Chart to go to a new step. But since each step in the Sequential Function Chart should include checks for several possible exception conditions that may be handled in many different ways, the addition of these exception branches to the Sequential Function Chart make standard SFC diagrams very complicated and make it difficult to discern the normal operation sequence of the application program.
The present invention also addresses several other disadvantages of prior art programming systems. In this respect, the present invention addresses deficiencies of prior art Relay Ladder Logic program editors and of the standard implementation of the RS-274D programming language. The present invention also addresses the deficiencies of prior art approaches to debugging programs and prior art manual application sequencers. Prior art implementations of Relay Ladder Logic program editors lack several features which make Relay Ladder Logic Networks easier to edit. Once a program is constructed, prior art editors make it difficult to make certain changes to the program that may be necessitated by: (1) errors or omissions in the original application program or (2) changes or additions to the machine's functionality. In some cases, especially when logic branching is involved, in order to add or move relay logic elements and branches to logic rungs, a portion of the ladder rung must be deleted, along with the ladder elements and information entered on the rung, in order to modify the logic rung appropriately. It is not possible on the prior art to move ladder elements, portions of a ladder rung and logic branches around freely in the Relay Ladder Logic Network.
On prior implementations of Relay Ladder Logic program editors, logical outputs are limited to the right hand end of the logic rung. Some editors only allow one output per rung. Others that allow multiple outputs, require that they be entered on separate output branches. These restrictions: (a) cause the logic programs to be less efficient, (b) force replication or addition of logic rungs in order to achieve multiple outputs, (c) limit the use of Function Blocks within the Relay Ladder Logic Network, (d) do not allow logical outputs on "OR" branches or other locations on the logic rung that can be used for diagnostic purposes or to reduce the size and complexity of the Relay Ladder Logic Network.
FIG. 26a shows a Relay Ladder Logic Network with three output coils, namely output coils X52, Y54, and Z56. FIG. 26b shows the corresponding IEC-1131 Instruction List (IL) program that is generated following the rules in the IEC-1131 standard specification. The IEC-1131 standard specification provides rules for embedding an Instruction List (IL) program within a Structured Text (ST) program. FIG.26b also shows a listing of computer pseudo-code instructions that demonstrate the actions performed by the controller to evaluate the IL program of FIG. 26a.
Prior implementation of algorithms to evaluate boolean logic programs resemble those commonly used for solving algebraic expressions. These algorithms use a single data stack to recursively store partial results and other information required to evaluate the program. Referring to FIGS. 26a and 26b, whenever a logical branch in the ladder logic occurs (e.g., logical branch point 58), as signaled by a left parenthesis "(" in line 14 of FIG. 26b, the logical result calculated thus far is pushed onto the stack, and a new result variable is created [line 16]. At the same time, a deferred operator function "AND" [line 9] or "OR" [line 15] is also pushed onto the stack. The deferred operator indicates the operation to be performed to combine the new result with the old one once logical branch 58 is completed, as signaled by the right parenthesis ")" [line 21]. The new result is initialized to a logical 1 [line 16]. The new result is used to evaluate the ladder logic rung fragment that lies between the branch points 58 and 60 (i.e. between the parenthesis "(...)" in IL). When the right parenthesis is encountered [line 21], the deferred operation is popped off the stack [line 21] along with the old result [line 22]. The deferred operator is used to combine the new result with the old result [line 23]. The old result holds the results of the combined operation [line 23] and the new result is discarded [line 24].
The foregoing standard algorithm works well for evaluating Relay Ladder Logic Networks that only have logical output coils at the end of a ladder logic rung, but it does not work for Relay Ladder Logic Networks that can have logical output coils in any location on the rung. This is demonstrated by output coil Y 54 in FIG. 26a that is equal to "A and NOT B and NOT E and F". It is not equal to "NOT E and F" as would be computed by the foregoing standard algorithm. The shortcoming of the standard algorithm is that the new result used to evaluate the "OR" branches is initialized to 1 [line 16]. For arbitrary logical outputs, the "OR" branches of the ladder logic rung must be "AND'd" with the partial results of the ladder logic rung that was computed up to the point where the logical branching occurred [line 17]. A new algorithm for evaluating boolean logic expressions is needed that allows the placement of logical outputs anywhere within the Relay Ladder Logic Network. Although RS-274D is a popular motion control programming language on the factory floor, it is limited in that the standard commands can only assume numerical values. This prevents RS-274D programs from using computed values as parameters, controlling the flow of application programs, and synchronizing with other system input-output (I/O) activities. Accordingly, enhancements to the standard RS-274D programming language are needed to improve the utility of the programming language.
Another problem encountered with prior art programming systems is that it has been difficult to debug application programs having intermittently occurring problems. In this respect, the conditions that cause the problem are often difficult to locate and repeat, are complex, and may appear and disappear rapidly. Furthermore, an engineer may not be present to observe the system when the problem occurs, or the problem may be difficult to identify because it can reside with either the hardware or the software. Prior art debugging programs have failed to provide a system which addresses the foregoing problems. With respect to prior art approaches to debugging, some programmable logic controllers (PLC) provide I/O contact histograms and/or I/O timing diagrams. Some prior art controllers provide trend diagrams, while circuit emulators provide a program execution trace. However, none of the prior art controllers use this information to replay the events using the application program to graphically replay program execution and system-wide status information simultaneously on the same display. Accordingly, a new system for debugging is needed to overcome the limitations of prior art systems. Many industrial .applications today are operated by personnel which have had little exposure to computer technology. This requires that the operator interface for the application be very simple and intuitive to use with a minimal amount of training. Many application programs follow a simple sequence of steps which must be followed in a specific order. Also, in many applications, specific steps must be periodically performed. The operator in such applications are frequently required to manually sequence the application program through these steps in order to observe the results, sometimes taking measurements, sometimes making adjustments, and sometimes executing a special operation. Prior art systems provide a software interface which ties a simple sequence of operator buttons to the steps of an application program to allow the operator to manually sequence the steps. In the prior art, the application engineer must individually create each button and link the button control and status to the individual steps of the application program. A new method is needed which will create this sequenced set of operator buttons and automatically link the operator buttons to the application steps, providing standard functionality for button control and status.
Summary of the Invention According to the present invention there is provided an apparatus for generating, editing, executing, monitoring and debugging an application program for controlling one or more machines comprising means for generating a diagram representing an application program for controlling at least one sequential function and at least one continuous function, said diagram including at least one sequential program having one or more sequential program statements and at least one continuous program, wherein said at least one sequential program sequence sequences said application program, and means for executing said application program to control said one or more machines.
According to the present invention there is also provided an apparatus for manually sequencing an application program for controlling one or more machines comprising means for generating a top level program representing said application program, said top level program comprising application program steps, means for associating an operator button with each said application program step, said operator button activated by an operator, and means for executing said top level program, wherein said operator button associated with each application program step must be activated before said associated application program step is executed.
According to the present invention there is further provided an apparatus for generating, editing, executing, monitoring and debugging an application program for controlling one or more machines comprising means for executing the application program, means for storing status information of said apparatus while said application program is executing, said status information including at least one of the following: status of application program executing on said apparatus, status of physical inputs to the apparatus, status of physical outputs from the apparatus, status of internal condition of the apparatus, and a time-stamp indicating the time at which said status information was stored; and control means for terminating execution of the application program and for retrieving the status information stored by said means for storing; and means for displaying said status information retrieved by said control means.
It is an object of the present invention to provide an integrated control for an industrial automation application.
It is a further object of the present invention to provide improvements to the programming and operational characteristics of an integrated control for an industrial automation application.
It is an object of the present invention to provide a single man-machine interface for generating, editing, executing, monitoring, and debugging an application program for an industrial automation application.
It is another object of the present invention to provide a single integrated environment for programming, editing, executing, monitoring and debugging both sequential and continuous programs simultaneously.
It is still another object of the present invention to provide a system for generating, editing, executing, monitoring and debugging an application program, wherein a sequential program assumes an easy to visualize position relative to a continuous program in the programming paradigm to control the sequencing of the application program. It is still another object of the present invention to provide an apparatus for handling a hierarchy of application programs.
It is another object of the present invention to provide an enhanced Relay Ladder Logic editor which allows for placement of logical outputs anywhere in a Relay. Ladder Logic Network and allows for multiple outputs per ladder rung.
It is still another object of the present invention to provide a system which allows for parameterized RS-274D commands with other standardized programming languages.
It is yet another object of the present invention to provide a system for debugging an application program which plays back the application program and system-wide status to the operator.
It is another object of the present invention to provide a manual application sequencer which ties a sequence of operator buttons to an application program. Description of the Drawings
FIG. 1 is on overhead view of a typical Automated Transfer Line Application.
FIG. 2 is a diagram illustrating the procedure followed by an application engineer using prior art systems to implement a typical Automated Transfer Line application involving elements of logic, motion and process control.
FIG. 3 is a flow chart of a representative sequential machine process.
FIG. 4 is a position diagram of a representative motion control application.
FIG. 5 is an output level graph of a representative process control application. FIG. 6 is an example of a standard Sequential Function Chart conforming to the IEC-1131 standard.
FIG. 7 is an example of an enhanced Sequential Function Chart in a top level format, and including a macro step name.
FIG. 8 is an example of an enhanced Sequential Function Chart having embedded RS-274D commands and IEC-1131 Structured Text (ST) commands.
FIG. 9a is an example of an enhanced Sequential Function Chart having action qualifiers for motion in an action statement box. FIG. 9b shows the enhanced Sequential Function Chart of FIG. 9a with an open program window.
FIG. 9c shows a second enhanced Sequential Function Chart.
FIG. 10 shows an IEC-1131 Structured Text translation of the enhanced SFC shown in FIG. 9a.
FIG. 11 shows the order of synchronization qualifiers on a velocity/time graph for a typical motion control application.
FIG. 12 shows an enhanced Sequential Function Chart having icons in place of step boxes and action statement boxes. FIG. 13 shows an icon selection bar.
FIG. 14 shows a menu bar, a mode selection menu, and an icon group menu.
FIG. 15 shows a Relay Ladder Logic (RLL) Network in the Logic Editor.
FIG. 16 shows the RLL Network of FIG. 15 with a revised branch connection point.
FIG. 17 is a IEC-1131 Structured Text (ST) program including an Instruction List (IL) program for the RLL Network of FIG. 16.
FIG. 18 is an enhanced Relay Ladder Logic Network having multiple logical outputs. FIG. 19 shows a function block selection bar.
FIG. 20 shows the function block selection bar of FIG. 19 with an activated function block group menu.
FIG. 21 shows a Relay Ladder Logic (RLL) Network including a Function Block element. FIG. 22 is a data flow diagram showing the major subsystems that comprise a preferred embodiment of the present invention.
FIG. 23 is a flow chart showing the process used by the present invention to decode RS-274D commands embedded within Structured Text programs, and Structured Text expressions and Structured Text assignment statements embedded within RS-274D commands.
FIG. 24 shows the hardware components comprising a preferred embodiment of the present invention. FIG. 25 shows an enhanced Sequential Function Chart having exception handling.
FIG. 26a shows a sample Relay Ladder Logic (RLL) Network having multiple logical outputs. FIG. 26b shows the Structured Text (ST) program generated by the Logic
Editor for the RLL Network of FIG. 26a. Also shown is pseudo-code corresponding to the ST program of FIG. 26a.
FIG. 27 shows several examples of application specific icons. FIG. 28 shows an enhanced Sequential Function Chart having a pop-up Relay Ladder Logic window.
FIG. 29 shows a data flow diagram of the process used by the present invention to provide enhanced debugging features.
FIG. 30 shows a Sequential Function Chart having a breakpoint. FIG. 31 shows a Relay Ladder Logic Network having a breakpoint. FIG. 32 shows a representative manual application sequencer display.
FIG. 33 shows a representative application program for use with the manual application sequencer display of the present invention.
Detailed Description of the Preferred Embodiment
Broadly stated, the present invention is directed to a hardware and software arrangement and programming environment for controlling an industrial automation application, such as an automated transfer line. A preferred embodiment of the present invention comprises a graphical user interface for generating, editing, executing, monitoring and debugging an application program for controlling an industrial automation application. FIG. 1 shows an overhead view of a typical Automated Transfer Line system. It consists of a part conveyance mechanism 12 that moves parts 14 through one or more work stations 16a, 16b where automated processing operations are performed. The operations performed at the work stations consist of any type of automated operation or sequence of operations that include, but are not limited to: part manipulation, cutting, drilling, grinding, boring, mechanical assembly, applying paint or adhesives, testing, gauging, or packaging. The
Transfer Line generally includes an automated or manual part loading mechanism 17 and unloading mechanism 18 where parts are placed upon or removed from part conveyance mechanism 12.
Each work station 16a, 16b, load mechanism 17 and unload mechanism 18 is usually controlled by a separate control unit 4, 6, 8, 10 which is responsible for the operations performed in one individual work area. The Transfer Line system usually includes a separate control unit 2 that is responsible for the operation of parts conveyance mechanism 12, the synchronization of the operations of work stations 16a, 16b with the movement of parts into and out of the work areas, as well as providing any operator controls and human interface necessary for the operation and monitoring of the overall Transfer Line system. The synchronization of work stations 16a, 16b to the Transfer Line control unit is usually accomplished by interconnecting each individual work station control unit to Transfer Line control unit 2.
Referring to FIG. 24, a preferred embodiment of the present invention is comprised of the following components, which substitutes for one or more of the prior art control units 2, 4, 6, 8, 10 shown in FIG. 1:
486 DX2 66 MHz PC/AT compatible computer 70 having at least 16 Megabytes of Random Access Memory (RAM), a Realtime Windowing Operating System, and ASIC-100 firmware for Transfer Line Applications EISA standard 32 bit passive backplane 72
170 Megabyte or larger Hard Disk mass storage 74 1.44 Megabyte Floppy disk 76 101 key keyboard (optional) 78 serial interface Mouse (optional) 80 14" computer monitor with touch screen overlay 82
I/O Interface card 84 Servo Motion card (optional) 86 Distributed I/O Interface card(s) (optional) 88 Distributed I/O modules (optional) 90 Ethernet LAN Interface card(optional) 92
It should be noted that EISA backplane 72, I/O Interface card 84, Servo Motion card 86, Distributed I/O interface card 88 and LAN interface card 92 are internal components of computer 70, which comprises an "integrated controller." They are shown external to computer 70 solely for the purpose of illustration.
Keyboard 78, mouse 80 or monitor touch screen 82 is used by the operator as a pointing device for menu selection, program development, program editing, program debugging, command button activation, and selection of icons or function blocks.
I/O interface card(s) 84 connect local I/O devices directly to computer 70. Servo Motion card 86 is used to interface one or more servo motors and/or stepper motors to computer 70. Distributed I/O interface card 88 is used to connect one or more Distributed I/O Modules 90 to computer 70.
The graphical environment of the present invention uses a point and click type of user interface technology, which preferably provides on-line help to make the programming and debugging constructs simple and intuitive.
A solution to the above deficiencies of the prior art is to allow a series of sequential program statements 128 (e.g., RS-274D motion commands) to be placed inside the step boxes 122 (see FIGS. 9a, 9b and 9c). The sequential program statements appear prominently in the step boxes, and are not "buried" with the continuous programs. With such an enhanced SFC (also referred to as "SFC+") the sequential flow of execution inside of each step is easily visualized together with the sequencing between steps. The sequential program statements 128 begin executing one at a time when step box 122 is first activated. The sequencing of the sequential program statements within a step box is performed as an integral part of the execution of the step box and does not require the use of "done" boolean variables for each sequential program statement. Each sequential program statement is invoked only once and does not require the use of a "P" (execute once) type qualifier, as with the prior art standard SFC. A series of sequential program statements within a single step box are associated with the same set of continuous programs and exception handling actions. The continuous programs associated with a step box can either operate over the entire series of sequential program statements in a step box 122, or they can be started and/or stopped based on an association with a single sequential program statement through the use of program statement labels 118a, 118b that refer to labels on individual sequential program statements 128. The continuous programs are specified by continuous program names 132. Because of the above features the SFC+ is more compact and readable, than the standard Sequential Function Chart. In a preferred embodiment of the present invention, the SFC+ is used to integrate sequential programs and continuous programs to form an application program. It should be noted that the term "application program" refers to the program combining both the sequential program(s) and continuous program(s). It may take the form of a diagram (e.g., SFC+) or pure text (e.g., Structured Text). The SFC+ of the present invention follows the rules specified in IEC-1131 standard for implementing sequenced continuous programs. However, the standard Sequential Function Chart is enhanced in several respects to create the SFC+ of the present invention. In this respect, sequential programs are embedded in step boxes to control application program sequencing. The sequential programs can be written in any programming language familiar to the industry segment of the application. Sequential programs are executed in order, one statement at a time, while continuous programs are executed repeatedly on a regular time interval (scanned). Furthermore, constructs for synchronizing sequential programs with continuous programs (including motion and process control synchronization) are provided. In addition, application exception processing functions are added to the continuous programs.
When a step box is initially activated (i.e., ready for execution) in the SFC+, a Program Execution subsystem will first scan all of the continuous programs associated (i.e., linked) with that step. The Program Execution subsystem will be described in greater detail below. After the first scan of the continuous programs, the continuous programs will be scanned on a regular specified time interval. After the continuous programs have been scanned once, the first program statement of the sequential program contained in the active step box will begin execution. When the first statement of the sequential program is complete, the second statement will begin executing and so on, until the last sequential program statement of the currently active step has been completed. When the last statement of the currently active step has been completed, the transition logic following that step will be activated. Any continuous program(s) associated with the currently active step will continue to be scanned until the transition logic becomes TRUE. When the transition logic becomes TRUE, the step is deactivated and the next step in the SFC+ is activated. The present invention also provides a mechanism for synchronizing sequential program statements inside of the step box with continuous programs inside of an associated action box. To this end, synchronization qualifiers have been introduced, as shown in FIGS. 9a and 9c. The synchronization qualifiers 116a, 116b, 117a, 117b, and 117c relate to motion control, while synchronization qualifier 117d relates to process control. However, it is appreciated that other synchronization qualifiers beyond these illustrated may relate to other sequential functions.
Synchronization qualifiers relating to motion control include motion started (MS), acceleration complete (AC), at speed (AS), deceleration started (DS), motion complete (MC), motion in position (IN) and end of block (EB). See FIG. 11. In step boxes which have multiple sequential program statements, a program statement label is used to associate a continuous program with the sequential program statements. For example, in the RS-274-D motion control language the N sequence number is used as a program statement label (label 124). These synchronization qualifiers can be combined with standard action qualifiers, such as action qualifiers 114 and 117. The continuous program specified by a continuous program name will begin scanning, as specified by the associated action qualifier, after the sequential program statement specified by the program statement label has met the condition of the associated synchronization qualifier. Each time a continuous program is scanned, the Program Execution subsystem checks for synchronization with the sequential program. If qualifiers are attached to the continuous program, the Program Execution subsystem will check the status of the sequential program within the step (including any motion and/or process control status) to see if the continuous program will be scanned. Referring now to FIG. 9c, the "continuous" MonitorTorch program will begin scanning, as specified by the action qualifier (S) 115a (STORED), after the sequential program statement which follows the program label N003 has reached its acceleration complete (AC) point as indicated by synchronization qualifier 117a. The MonitorTorch program will stop being scanned, as specified by the action qualifier (R) 115b (RESET), after the sequential program statement which follows the program label N010 has reached its deceleration started (DS) point as indicated by synchronization qualifier 117b. The IgniteTorch program will scan once, as specified by the action qualifier (P) 115c (PULSE), after the program statement which follows the program label N001 has reached its at speed (AS) point indicated by synchronization qualifier 117c. The CheckMetalTemp program will begin scanning, as specified by the action qualifier (D = T#5s) 115d (DELAY), 5 seconds after the process control ramp function which follows the label N007 has reached its ramp complete (RC) point, as indicated by synchronization qualifier 117d.
Referring now to FIG. 9a, the "continuous" TurnOnPaintGun program will scan once, as specified by the action qualifier (P) 114a, after the action statement which follows the program label N003 has reached its acceleration complete (AC) point as indicated by synchronization qualifier 116a. The "continuous" TurnOffPaintGun program will scan once as specified by the action qualifier (P) 114b (PULSE) after the program statement which follows the program label N009 has reached its deceleration started (DS) as indicated by synchronization qualifier 116b. The "continuous" CheckPaintFlow program will scan continuously while the step box 122 is activated, as specified by the absence of any action or synchronization qualifiers.
FIGS. 9a and 9b provide an example of the present invention as used in an application to paint a car body. This example illustrates the importance of controlling an application program with a sequential program and illustrates why it is necessary to synchronize continuous programs with the sequential programs.
Referring now to FIG. 9a, a series of sequential program statements 128 in step box 122 provide the instructions to control the movement of a painting mechanism through a process for painting a car body. Program statements 128 are written in RS-274-D, which is an industry standard language for programming motion. It will be appreciated that program statements 128 could be written in other programming languages such as BASIC, Fortran and C. Program statements 128 are located in a step box 122, occupying a dominant position in the SFC+ and controlling the sequence of the "PaintPart" application program.
Continuous programs which turn the paint gun on, turn the paint gun off, and check the paint flow are linked to step box 122 using continuous program names 132a, 132b, 132c, respectively, which are displayed in action statements box 126. Synchronization qualifiers 116a, 116b; program statement labels 118a, 118b; and action qualifiers 114a, 114b are also associated with the program names 132 in action box 126.
The continuous program named "TurnOnPaintGun" will be scanned once to turn the paint gun on when the program statement following the N003 program label reaches its acceleration complete point (the beginning of the painting motion). The continuous program named "TurnOffPaintGun" will be scanned once to turn the paint gun off when the program statement following the N009 program label reaches its deceleration started point (the end of the painting motion). Turning the paint gun on when the motion acceleration is complete at the beginning of the painting motion and turning the paint gun off when the motion deceleration begins at the end of the painting motion allows paint to be smoothly laid on the car body surface without leaving any paint blotches. The continuous program named "CheckPaintFlow" will be scanned continuously while step box 122 is active to ensure that the paint is flowing smoothly during the entire paint cycle. If a problem is detected in the paint flow, the CheckPaintFlow program will execute the "transition" function to force the SFC+ into a new step which handles paint gun cleaning and refill.
The contents of the continuous program can be viewed along with the sequential program by activating the continuous program name 132 in the associated action box 126. The continuous program is displayed in a program window 134 to the right of step box 122, as shown in FIG. 9b. With program window 134 open, the user can edit and debug the continuous program and the sequential program at the same time. The status of both programs is displayed by highlighting the active sequential program statement and highlighting the active elements of the continuous program (e.g., the active rung elements of the Relay Ladder Logic Network). Sequential programs may be written using any sequential programming language (e.g., Structured Text, Basic, and RS-274-D). Also, application icons can be created to represent sequential program statements which perform some common application function in the industry. Continuous programs can be programmed using any traditional programming language, such as Relay Ladder Logic or Function Block Networks.
Referring not to FIG. 7, a preferred embodiment of the present invention provides means for displaying a simplified, concise, and compact view of an SFC+ diagram. In this respect, each SFC+ step box may be given a name. This name may be user defined, or be a default label name generated by the Logic Editor. The SFC+ shown in FIG. 7 is described as being in a "top-level" format. Step name boxes 103a, 103b, 103c refer to regular steps in a SFC+ diagram. Macro step name box 105 refers to a macro step in a SFC+ diagram. A macro step is represented by nested boxes in a top-level format SFC+ . A macro step is an SFC+ step which invokes at lease one child SFC+ .
The child SFC+ is executed when the macro step is executed. Like any other step, a macro step can have actions associated with it which are scanned while the child SFC+ program is executed.
When the macro step of macro step name box 105 is activated, the Program Execution subsystem spawns off a new instance of the SFC+ execution mechanism to execute a child SFC+ . The SFC+ execution mechanism consists of a traditional state machine implementation well known to those skilled in the art. The child SFC+ is executed in place of the macro step in the parent SFC+ . While the Program Execution subsystem is executing the child SFC+ , the Program Execution subsystem will also scan any actions in the parent SFC+ which are attached to the macro step name box 105 and the Program Execution subsystem will also continue executing any SFC+ steps in the parent SFC+ which are activated in parallel with the macro step. When the child SFC+ completes execution, the Program Execution subsystem destroys the instance of the SFC+ execution mechanism associated with Macro Step Box 105 and activates the next step in the parent SFC+ (step name box 103c). Referring now to FIG. 25, enhancements have been made to the IEC-1131 standard for an exception handling mechanism to allow continuous programs to force an immediate state transition in the SFC+ based on a detected condition. By adding a new SFC+ transition output coil ("trans") 232 to the repertoire of the continuous program, the continuous program can force a transition to another step by activating this coil. Transition output coil 232 includes a label identifier 234 referring to a destination location 236a in the SFC+ to transition to when coil 232 is "energized."
The transition output coil "trans" 232 is represented in the list of elements available to a continuous program like any other output logic coil conforming to the IEC-1131 standard. It contains the term "trans" (representing an SFC+ transition) between two parenthesis. When a transition output coil is inserted into a Relay Ladder Logic Network, the user must specify a destination location 236a as the transition destination. A label identifier 234 is placed above the transition output coil representation in the Relay Ladder Logic Network.
When transition output coil 232 is energized during program execution, any step box that refers to the action statement box that contains activated transition coil 232 is immediately deactivated, and any active sequential program statements in these deactivated step boxes are immediately aborted. The step boxes immediately following transition destination location 236a referred to by transition output coil 232 are activated. If a transition statement follows transition destination location 236a, then the transition statement (i.e., transition statement 246c) is enabled to be scanned as if step box 248 preceding the transition statement has just been completed. Additionally, other coil elements are added to the repertoire of the continuous program which allow continuous programs to suspend the operation of active steps in a SFC+, force a temporary transition to a new step in the SFC+, and later transition back to the original active steps, resuming their operation where the functions had been suspended. In a preferred embodiment of the present invention, two additional output coils (i.e., suspend output coil 238 and resume output coil 242) are added to the list of logic elements available in the Relay Ladder Logic Network. This functionality is useful in applications where normal operations may need to be suspended and corrective action taken when certain conditions occur. Furthermore, normal operations can be continued after the corrective action sequence is completed. One example use of this feature is the changing of a metal cutting tool if it becomes dull or broken using a sequence of actions that will move the machine automatically away from the part being machined to a position where the tool can be exchanged, change the tool, and then return back to machining the part.
The suspend ("suspnd") and resume ("resume") output coils are represented in the list of elements available to a continuous program like other output coils.
The "suspnd" output coil 238 contains a reference to an SFC+ label identifier 240 above it. The "resume" output coil 242 does not contain a label identifier since the SFC+ will transition back to the most recent suspension point in step box 230.
When "suspnd" output coil 238 is activated, the active program statements in step box 230 associated with the action containing the energized "suspnd" output coil 238 will be placed into a paused state. Furthermore, any active sequential program statements in the paused step boxes receive a pause command which will cause them to perform a predefined action that will stop the executing function, such as decelerating all motors to a stop. The suspended sequential program statements are stored and are placed in a list of suspended steps. Execution continues from destination location 236b specified by the "suspnd" coil 283. When the "resume" coil 242 is activated, the program statements that are associated with the energized "resume" output coil 242 will be deactivated, and the step box on the suspended steps list will be reactivated at the point where the sequential program statements were suspended and continue operation from that point.
In motion control applications RS-274-D is often the preferred sequential programming language because it is used on almost all CNCs and has been a standard on the factory floor for many years. Another object of the invention is to use Structured Text (ST) expressions and Structured Text assignment statements in combination with RS-274-D motion commands to allow the RS-274- D motion commands to be parameterized as shown in FIG. 8. Structured Text assignment statements can be interspersed with RS-274-D motion commands by enclosing the statement in parenthesis and including it as part of an RS-274-D motion command, or they can stand alone as separate statements. It will be appreciated that other programming languages such as BASIC, Fortran and C can also be used in conjunction with RS-274D commands. A Structured Text expression is embedded in an RS-274-D command by replacing the numeric element of the standard RS-274-D motion command with a Structured Text expression in parenthesis. For example, Structured Text expression 106 replaces a numeric element in an RS-274-D motion command. Structured Text assignment statement 108 is included as part of an RS-274-D motion command while Structured Text assignment statement 110 stands alone as a separate statement. Accordingly, Structured Text assignment statements can be used to synchronize I/O (as indicated at 112a) and process control set points (as indicated at 112b) with RS-274-D motion commands.
A preferred embodiment of the present invention allows the development of application specific sequential program statements using a Logic Editor (which will be described in detail below). This is accomplished by combining one or more sequential program statements (e.g., program statements for motion and/or process control) and associating a unique name to that set of sequential program statements (e.g. see FIG. 12, "Hard Stop"). Furthermore, a graphic icon can be attached to that set of sequential program statements to provide a visual indicator. The graphic icon can be used in any step box to represent a defined set of sequential program statements.
Likewise, graphic icons can also be attached to continuous program statements to represent action statements (see FIG. 12, "Advnc Ctrl") and attached to transition logic statements associated with a step box.
Referring now to FIG. 13, an icon selection bar 140 provides the user with simple means to select the icons which can be accessed in the Logic Editor. In this respect, the icons available for an application program are loaded into the Logic Editor by selecting the desired icon group from an icon group menu 150, shown in FIG. 14. As noted above, icons may represent sequential program statements, continuous program statements or transition logic statements. Icon selection bar 140 contains an icon group label 142 and an icon set 144. The icons visible in icon set 144 are selected from the entire set of available icons either on the basis of the most recently used icons, the most frequently used icons, or the function of the icons. With respect to the latter, icons are arranged into functional groups and made visible on the icon selection bar 140 on the basis of the most recently used functional group. The icon set displayed in icon selection bar 140 is determined by the selection from icon group menu 150.
The icons visible in icon selection bar 140 can be directly added to the SFC+ by dragging the selected icon to the SFC+ using a pointing type user interface device. If the desired icon is not visible on the icon selection bar 140, the user activates icon group label 142 to browse through the entire list of available icons and to select a desired icon.
The Logic Editor is designed to make the switch between alternately editing the sequential program and editing the associated continuous program (e.g., an RLL Network) seem effortless, since these programs are closely related and may require simultaneous editing. A continuous program associated with a step can be viewed and edited by simply activating the desired action statements using a pointer type user interface. Referring to FIG. 28, an edit window 100 is laid on top of the SFC+ for viewing or editing. A preferred embodiment of the present invention also provides an improved ladder logic editor to simplify the programming of continuous programs. Referring to FIG. 15, visual connection symbols, (i.e., "hot spots") are added to branch connection points to simplify modification or rewiring of Relay Ladder Logic Networks. A hot spot can be selected and moved to another location using a pointing type user interface device. "Hot spots" are used to specify a particular location in a Relay Ladder Logic Network. Accordingly, a hot spot is used to specify a poirt in the network where a connection is desired, or a point in the network where a disconnection is desired. Hot spot 156 is moved from a first position shown in FIG. 15 to a second position shown in FIG. 16. Accordingly, the connection of "OTMinus" is modified.
A further feature of the present invention allows output elements and Function Blocks to be placed anywhere in a Relay Ladder Logic Network as shown in FIG. 18. Accordingly, a preferred embodiment of the present invention uses a unique algorithm to evaluate the Relay Ladder Logic Network. The algorithm will be discussed in detail below in connection with the Program Execution Subsystem. Referring to FIGS. 19 and 20, a preferred embodiment of the present invention includes a function block selection bar 160. Function block selection bar 160 simplifies the selection of a function block from a large list of available function blocks. Function block selection bar 160 includes a function block group list button 162 and a function block button set 164. The function blocks which can be accessed through function block selection bar 160 are organized into functional groups. When a functional group is active (e.g., Counter/Timer Function Blocks), function block button set 164 displays the function blocks which are contained in that group. Function block group menu 166 allows the user to select a new function block button set from the list of available functional groups. The function blocks displayed in function block button set 164 can be directly added to a Relay Ladder Logic Network by dragging a function block corresponding to a selected function block button onto a Relay Ladder Logic Network diagram using a pointing type user interface device. For example, function block 168 is placed into the Relay Ladder Logic Network diagram of FIG. 21. A preferred embodiment of the present invention comprises four major subsystems, as shown in FIG. 22. It will be appreciated that while the preferred embodiment shown in FIG. 22 is described in connection with motion control, the subsystems of the present invention may be used in connection with other types of industrial automation controls well known to those skilled in the field of industrial automation. These subsystems include Configuration Utility 180, Operator Control 182, Logic Editor 184, and Program Execution 186. FIG. 25 shows an entity relationship diagram showing the data architecture model used by Configuration Utility 180 of FIG. 22. Program Execution 186 interprets Structured Text (ST) programs 188, originating from Logic Editor 184 and control commands 183 (e.g., RUN, STOP and HOME), originating from operator control 182. On a periodic time interval, Program Execution 186 reads status from, and writes outputs and commands, to I/O card 192 and motion control card 194. Configuration Utility 180 is used by an application engineer to define the hardware configuration (e.g., the type of input and output interface cards), the logical assignment of the I/O linking physical I/O to symbolic names used in application programs, and motion application parameters (e.g., servo control loop gains, velocity limits, acceleration limits and position travel limits). Logic Editor 184 provides a combination of graphical and textual programming paradigms to define the application program for the target application. Operator Control 182 provides a real-time control status display 185 to the operator and routes operator control commands 183 to Program Execution 186. CONFIGURATION UTILITY SUBSYSTEM
Configuration Utility 180 is used by the application engineer to: (1) identify which system hardware components are present, (2) identify how these hardware components are configured, and (3) assign application specific symbolic names to the hardware components and physical I/O addresses. These application specific symbolic names can be used in the application program in place of the physical I/O addresses or location of the hardware components and interfaces. Configuration data is converted into a binary format and stored to a data file on hard disk 74. The binary data file is used by the other subsystems to convert application specific symbolic names to physical I/O addresses. This configuration data also contains information necessary to configure and operate cards 84, 86, 88 and 92. OPERATOR CONTROL SUBSYSTEM
Operator Control 182 provides a display for: (a) controlling the operation of the industrial automation machinery and (b) providing diagnostic and status information to the user for troubleshooting problems that might occur. LOGIC EDITOR SUBSYSTEM
Logic Editor 184 provides an integrated graphical programming environment 181 for the user to develop the SFC+ . In a preferred embodiment of the invention, the entire graphical program representation is maintained in an internal format. The internal format contains information such as type, size, and location of graphical elements. This internal format is generated using methods well known to those experienced in the art of designing graphical editors. In the preferred embodiment of the SFC+ , the step boxes are represented in one of the following ways:
(a) default labels consisting of the word "step" followed by an ascending number such as stepl, step2, step3 and so on, assigned to the SFC+ step by Logic Editor 184.
(b) user defined labels such as "Transfer Part," "Advance Slide," or "Paint Part" as specified to Logic Editor 184 by the user.
(c) user-specified graphical icons such as the ones depicted in FIG. 12. (d) The sequential program statement(s), such as RS-274-
D program statements as shown in FIG. 9, associated with the step as pre-packaged or user defined programs.
For (a), (b) and (c), the labels or icons can either be used as a label with no associated sequential program or as a short hand for a sequential program, written in RS-274D, IEC-1131 Structured Text or similar languages, which is represented by the label or the icon.
It should be appreciated that utilizing application specific terminology for user defined labels and user specified icons can make the programming and operation of the control significantly easier for the user. In particular, a set of graphical icons representing application specific sequential or continuous programs, such as the ones most commonly used in transfer line applications (see FIG. 12) make the programming and monitoring of an application program much simpler.
When application specific programs are created they are stored in a file which is identified with the application and can be reused later by name or icon in any SFC+ . To facilitate the selection of icons representing application specific programs (i.e. "application icons") for an SFC+ , the Logic Editor displays icon selection bar 140, shown in FIG. 13. When the application icons are loaded into the Logic Editor, an application icon file is opened and all of the application icons are read in from the file and stored in a list.
The application icons which are displayed on icon selection bar 140 are managed using one of three different mechanisms. The user chooses the mecha 'sm to be used through icon group menu 150. The three mechanisms are: (1) selection based on functional icon groups, (2) selection based on most recently used icons, or (3) selection based on most frequently used icons. If the mechanism chosen is the selection based on functional icon groups, a scrollable icon display 152 is displayed with each functional group placed in a row (see FIG. 27). When a new icon is selected from the scrollable icon display 152, all of the icons in the functional group associated with that icon are displayed on the icon selection bar 140. If the mechanism chosen is selected based on most recently used icons, a list of the most recently used icons is maintained by Logic Editor 180 and those icons are displayed on icon selection bar 140. If the mechanism chosen is selection based on the most frequently used icons, a list maintained by Logic Editor 184 containing the number of times each icon was used is accessed. The list is sorted in descending order of usage and the icons at the top of the list are displayed on icon selection bar 140. If the desired icon is visible on icon selection bar 140, the user can either select the icon or drag the icon to the desired location on the SFC+ .
When the user drags an icon to a desired location, the icon is inserted where the user completes the drag operation. Logic Editor 184 keeps track of where each SFC step is located on the user display and the visual size of the step. When the drag operation is completed Logic Editor 184 searches through the list of SFC steps to find the insert target step (the step which the dragged icon will be inserted relative to). Once the drag target point is determined to be contained in a step area, the dragged icon is inserted relative to that step (i.e., the target step). If the drag target point is above the center of the target step, the dragged icon is inserted above the insert target step. If the drag target point is below the center of the target step, the dragged icon is inserted below the insert target step.
If the desired icon is not visible on icon selection bar 140, the user may activate icon group label 142. In response, Logic Editor 184 displays scrollable icon display 152 as shown in FIG. 27, which contains all of the application icons associated with the active application program. The user selects a desired icon from this display and the icon is inserted after the active edit step on the SFC+. Referring now to FIGS. 15 and 16, in a Relay Ladder Logic Network, Logic Editor 184 visually identifies the point at which each parallel logic branch departs from the parent rung branch using a visual connection symbol (i.e., "hot spot"). To rewire the connection of a parallel logic branch from the current location to another position on the parent branch, a pointing type input device is used to drag the visual connection symbol from the current location to a desired location. The parallel logic branch is then reconnected to the parent rung at the drag completion point.
Logic Editor 184 keeps track of the position and size of all of the graphical elements in the Relay Ladder Logic Network. When a drag operation is initiated, Logic Editor 184 searches through the list of ladder logic elements to find the connection element to be rewired. Once the drag target point is determined to be contained in a connection element that connection element, is selected to be rewired. The connection element is then removed from its current position and inserted in the parent rung at the new position.
Referring to FIGS. 19 and 20, Logic Editor 184 displays function block selection bar 160 to facilitate the selection of function blocks to be included in a Relay Ladder Logic Network. If the desired function block is visible on function block selection bar 160, the user can either select the function block or drag the function block to the desired location in the Relay Ladder Logic Network.
If the user selects a function block, the function block is inserted after the active edit element in the Relay Ladder Logic Network. Logic Editor 184 keeps track of the active edit element and displays that element as highlighted. A new active element can be selected by using a pointing type input device. If the user drags a function block to the desired location, the function block is inserted where the user completes the drag operation, as shown in FIG. 21. If the desired function block is not contained in the active function block button set 164 of function block selection bar 160, the user activates function block group list 162. In response, Logic Editor 184 displays function block group menu 166 containing all of the function block groups (see FIG. 20). When the user selects a function block group from function block group menu 166, function block button set 164 is updated to display a new set of function blocks. The user can continue selecting function block groups until the desired function block group is displayed. Logic editor 184 also performs the important function of converting the SFC+ into an ASCII Structured Text program 188. FIG. 17 illustrates the Structured Text program representation of the Relay Ladder Logic Network shown in FIG. 16. Structured Text program 188 is interpreted by program execution 186 to generate I/O commands to I/O card 192 and motion card 194. The operations performed by program execution 186 will be described in detail below. FIG. 10 shows a Structured Text program which represents the SFC+ of
FIG. 9A. When an SFC+ is converted to the ASCII Structured Text program 188, it is represented by a series of steps and transitions. Steps include any sequential program statements, continuous program names, action qualifiers, synchronization qualifiers and program statement labels. Transitions include any transition statements in the SFC + .
PROGRAM EXECUTION SUBSYSTEM
A module of Program Execution 186 is the program language interpreter. The interpreter interprets the ASCII Structured Text (ST) program 188, which can include sequential program statements (e.g., RS-274D motion commands). The interpreter uses methods well known to those experienced in the art of designing program language interpreters. The interpreter parses the program and invokes internal procedures that execute the functions of the program.
FIG. 23 shows a flowchart of the process used to decode RS-274D motion commands embedded within ST programs, and ST expressions and ST assignment statements embedded within RS-274D motion commands. In order to differentiate Structured Text commands from RS-274D motion commands, the RS-274D commands are enclosed within the keywords "BEGIN_RS274" and "END_RS274." Accordingly, when the interpreter recognizes the BEGIN_RS274 keyword (Step 202), it will begin interpreting the text as RS-274D commands at step 212. When the interpreter recognizes the "END_RS274" keyword (Step 208), it will resume interpreting the text as Structured Text commands at step 204. In order to embed ST expressions and ST assignment statements within
RS-274D motion commands, the expressions and assignment statements are enclosed with the characters "(" and ")". While interpreting the RS-274D motion commands, the interpreter recognizes the "(" character (step 210) and will begin interpreting the text as either a Structured Text expression (step 222) or Structured Text assignment statement (step 224). If the interpreter is in the process of decoding an RS-274D letter parameter (step 214), for example, the Y axis position in FIG. 8, the Structured Text will be interpreted as a Structured Text expression (step 222) and the result will be used as the value of the letter parameter. Otherwise, the Structured Text will be interpreted as a Structured Text assignment statement (step 224). When the interpreter is interpreting the Structured Text subset (step 216) and recognizes the character ")" (step 218), it will resume interpreting the text as standard RS-274D motion commands at step 206. When Program Execution 186 activates a step box in an enhanced SFC, it scans the associated actions statement box on a regular timed interval. If an action qualifier is satisfied, the continuous program associated with the action qualifier is executed. When a synchronization qualifier is associated with the action qualifier, the synchronization qualifier must also be satisfied for the continuous program associated with the action qualifier to be executed. Program Execution 186 will read status information from external controller cards (i.e., I/O card 192 and motion control card 194) in order to determine if a synchronization qualifier is satisfied.
In order for Program Execution 186 to properly interpret Relay Ladder Logic Networks that contain logical outputs anywhere within a ladder logic rung, as in FIG. 26a, an enhanced standard algorithm for evaluating ladder logic is used. An enhancement of the standard algorithm allows for arbitrary positioning of logical outputs. In a preferred embodiment of the present invention, the partial result of the ladder logic rung at the point where branching begins has been termed the "root." In FIG. 26a the root at position 58 is "A and NOT B." The enhanced algorithm must also handle "roots" in a recursive manner on the stack since nested clusters of logical branching may occur at any point within a series of logical branches.
Referring to FIG. 26b, the enhanced standard algorithm works as follows: When the Instruction List (IL) program (which is generated by Logic Editor 184 from the Relay Ladder Logic Network shown in FIG. 26a) begins, the root exists but its value is not relevant (NULL) [line 2]. The evaluation of the IL program proceeds as expected until a "AND(" [line 6] or "ANDN(" is encountered. At which point the old root is pushed onto the stack [line 6], the root is set equal to the current result (Rl) [line 7], the old result (Rl) is pushed on the stack [line 8], the deferred operator "AND" is pushed on the stack [line 9], a new result R2 is created and initialized to 1 [line 10] and "anded" with the operand (C) [line 11] or the inverted value of the operand (not C) depending on whether the operation was an "AND(" [line 6] or "ANDN(" respectively.
If an "OR( " or "ORN(" [line 14] is encountered, the old result (R2) is pushed on the stack [line 14], the deferred operator "OR" is pushed on the stack [line 15], and new result (R3) is created [line 16], initialized to 1, and "anded" with the value of the Root [line 17]. The new result (R3) is then "anded" with the operand (E) or the inverted value of the operand (not E) [line 18] depending on whether the operation was "OR(" or "ORN(" [line 14] respectively. If a ")" [line 21,25] is encountered, the deferred operator [line 21,25] and the old result [line 22,26] are popped off the stack. If the deferred operator is an "OR" [line 21], then the new result (R3) is "ored" with the old result (R2) and stored in the old result (R2) [line 23]; the new result (R3) is discarded [line 24] and the old result (R2) becomes the new result [line 23]. If the deferred operation is an "AND" [line 25], the old result is set equal to the new result [line 27], the new result (R2) is discarded [line 28], the old result (Rl) becomes the new result [line 27], and the old root is popped off the stack [line 29] and becomes the current root. Enhanced Debugging A preferred embodiment of the present invention also provides enhanced debugging features. In this respect, the debugger of the present invention allows the user to playback system conditions occurring just prior to the detection of a programming problem. Accordingly, the user can view the conditions that caused the problem.
Referring now to FIG. 29, there is shown a data flow diagram of the process used to provide the enhanced debugging features of the present invention. An event handler 250 time tags events, sorts these events in time, and maintains a FIFO (first-in, first-out) of events in RAM and on event log 254. Thus, event handler 250 keeps the newest events and discards the older events. Event handler 250 is also used to store the I/O status (originating from I/O scanner 251) and program status information (originating from program execution task 253) occurring at a given moment. I/O status is the status of physical inputs and physical outputs of the controller, while program status is the status of the program being executed by the controller. Diagnostic utility 252 configures the I/O scanner and program execution task 253 to send I/O status and program status information to event handler 250 every I/O scan until a "breakpoint" is encountered. Breakpoints are commands which can be placed in sequential or continuous programs to signal I/O scanner 251 and program execution task 253 to respectively stop logging I/O status and program status information to event handler 250. This allows the user to review the contents of event log 254. A breakpoint is set in a sequential program steps as an action item (FIG. 30) or in a continuous program as a set of conditions (FIG. 31).
With respect to FIG. 30, when step 4 becomes active, breakpoint 260 occurs. Likewise, in FIG. 31 if A and NOT B and C>3, are TRUE, breakpoint 262 occurs.
Furthermore, in a preferred embodiment of the present invention, a breakpoint may be placed in step boxes, action logic, on transitions, or Relay Ladder Logic rungs, in order to provide additional information to the user. The logging function of a breakpoint is a property of the breakpoint and is set by diagnostic utility 252. As noted above, Logic Editor 184 generates ST program 188 (from the enhanced SFC) for Program Execution Task 253. Program Execution Task 253 in turn generates status data 258 that Logic Editor 184 uses for displaying real-time program status. If a fault or failure is detected by any task including Program Execution Task 253, the task can log an event by sending the appropriate message to the Event Handler 250.
Diagnostic Utility 252 enables breakpoints in Structured Text Program 188 by sending internal messages to Program Execution Task 253 and I/O Scanner 251. Program Execution Task 253 is configured by Diagnostic Utility 252 to send program status information. Likewise, I/O scanner 251 is configured by Diagnostic Utility 252 to send I/O status information to Event Handler 250. Accordingly, for playback, Event Handler 250 uses event log 254 to provide status data 258 to Logic Editor 184. Logic Editor 184 will display past I/O status or past program status information to the user.
Event handler 250 logs a series of I/O status and program status information representing a snapshot of the state of the controller at a particular instance in time. Each snapshot will be referred to as a "frame." Once the frames are captured and the fault condition has been detected, the log of the frames may be replayed to the user to observe the conditions that existed prior to the detection of fault. Accordingly, the frames may be replayed either in the forward or reverse timing direction as required. When replayed, the I/O status and program status information may be reviewed by the user in detail in order to determine the cause of the fault. The enhanced SFC program can be used to observe event log 254 in a graphical form. In this respect, as event log 254 is replayed, the program status information can be used to highlight step boxes and action step boxes, and the I/O status information can be used to highlight the I/O input and outputs in a Relay Ladder Logic Network. Accordingly, both can be displayed on the same screen. In this way, the user can view the controller status conditions one step at a time, in real time to see what I/O conditions or program conditions may have caused the programming problem or fault.
In addition, a time tag (i.e., time stamp) is recorded with each frame and is played back along with the I/O status and program status information. The time tag can be used to determine the exact time between recorded events. Accordingly, events can be logged every scan, on a periodic basis, or when problems or events occur. Accordingly, event log 254 can be used to generate status information displays such as an I/O timing diagram, an I/O contact history, an I/O trend diagram, or an SFC+ execution trace.
Manual Application Sequencer I
A manual application sequencer program ties a simple sequence of operator buttons to steps of an application program. It will also be appreciated that operator buttons can be tied to the application program itself, rather than individual steps of the application program. The manual application sequencer | display 280 shown in FIG. 32 consists of a series of buttons arranged in rows from left to right, top to bottom, with arrows indicating the button sequencing. These buttons are highlighted in colors to indicate which steps of an application program , are being executed. Each button corresponds to a step in the application program. When an application manual mode is active, these buttons are used by the operator to manually sequence through the steps of the application program. , Each button of the manual application sequencer display 280 is displayed with an inactive color (e.g., gray) to indicate that the associated step is not active. When an application program step is ready to be activated, the associated button is displayed with a ready color (e.g., yellow). When the operator pushes the ready button, the associated step is executed, and the button is displayed with an activel color (e.g., green). The button is displayed with the active color until the associated application program step is completed. When the application program step is completed, the button is displayed with an inactive color, and the next button in sequence is displayed with a ready color. If an error occurs, the active button is displayed with an error color (e.g., red).
The manual application sequencer program generates a top-level format SFC+ 270, as shown in FIG. 33. Each button in the manual application sequencer display 280 is tied to a macro step 272 in the application program. Preceding each macro step is a transition statement 276 which causes the application program to wait for the associated button to be pressed before continuing (when the application program is in manual mode). For example, if the Advance Slide button in FIG. 32 is pressed it would set the Advance Slide Btn boolean variable (see transition statement 276a), which in turn would cause application program 270 to transition from step 271 (start) to macro step 272a (Advance Slide). Accordingly, when a button is pressed, the application program step associated with that button is executed. When that step is completed, the application program waits for the next button to be pressed.
Action logic 274 is attached to each application program step. This logic , turns on boolean memory variables which indicate that the step is ready, the step is active, or an error has occurred in the step. These boolean memory variables are used by the manual application sequencer program to set the color of the buttons.
Each macro step in the application program contains a subordinate SFC+ which the application engineer creates to perform the functions required in that macro step. For example, macro step 272a (Advance Slide) in FIG. 33 contains a subordinate SFC+ which specifies the details of the advance slide function. The subordinate SFC+ begins executing when the macro step is activated. When the subordinate SFC+ completes, the macro step complete indicator is turned on. In addition, a special operation program can be created to perform a special operation, which must be periodically performed during the application | program. Buttons can be tied to the special operation program, allowing the operator to manually activate the special operation program. When the special I operation program is complete, the buttons attached to the application program will once again be activated with the context restored previous to the execution of the special operation program.
The graphic sequencer buttons and the program editing and execution are implemented in a manner well known to those skilled in the art. The manual application sequencer buttons are attached to the application program by either using the same file name with different file extensions or by including both the application program and the manual application sequencer program in a common file.
The present invention has been described with reference to a preferred embodiment. Other modifications and alterations will occur to those skilled in the art upon a reading and understanding of the present specification. It is intended that all such modifications and alterations be included insofar as they come within the scope of the appended claims or equivalents thereof.

Claims

Ciaims :Having thus described the invention, the following is claimed:
1. An apparatus for generating, editing, executing, monitoring and debugging an application program for controlling one or more machines comprising: means for generating a diagram representing an application program for controlling at least one sequential function and at least one continuous function, said diagram including at least one sequential program having one or more sequential program statements and at least one continuous program, wherein said at least one sequential program sequences said application program; means for executing said application program to control said one or more machines.
2. The apparatus of claim 1, wherein each sequential program is inside a step box and each continuous program is inside an action box.
3. The apparatus of claim 2, wherein each action box is associated with a step box.
4. The apparatus of claim 3, wherein said means for executing activates a step box until all of the sequential program statements in the step box have been executed.
5. The apparatus of claim 1, wherein said at least one sequential function is motion control.
6. The apparatus of claim 1, wherein said at least one sequential function is process control.
7. The apparatus of claim 1, wherein said sequential program statements are in at least one of the following formats: RS-274D syntax, application icon, BASIC, Fortran, and C.
8. The apparatus of claim 1, wherein said continuous program is in at least one of the following formats: Relay Ladder Logic Networks and Function Blocks.
9. The apparatus of claim 7, wherein said RS-274D syntax includes at least one of the following: embedded Structured Text, embedded BASIC, embedded Fortran, and embedded C.
10. The apparatus of claim 1, wherein said apparatus further comprises: means for synchronizing execution of said continuous programs with execution said sequential program statements, wherein said means for synchronizing comprises at least one of the following: action qualifier, synchronization qualifier, program statement label, and program name.
11. The apparatus of claim 10, wherein said action qualifier and synchronization qualifier specify when a continuous program is to be executed.
12. The apparatus of claim 1, wherein said means for executing said application program comprises means for evaluating Relay Ladder Logic Networks having output elements and function blocks anywhere in the Relay Ladder Logic Networks.
13. The apparatus of claim 1, wherein said means for generating a diagram further comprises means for selecting a function block for placement in a continuous program.
14. The apparatus of claim 1, wherein said sequential programs and continuous programs include program statements which cause the means for executing to temporarily suspend execution of the currently executing application program and begin execution of a second application program.
15. An apparatus for manually sequencing an application program for controlling one or more machines comprising: means for generating a top level program representing said application program, said top level program comprising application program steps; means for associating an operator button with each said application program step, said operator button activated by an operator; and means for executing said top level program, wherein said operator button associated with each application program step must be activated before said associated application program step is executed.
16. The apparatus of claim 15, wherein said top level program further comprises transition statements, each transition statement associated with an application program step, said transition statements preventing execution of subsequent application program steps until an operator button associated with the subsequent application program is activated by an operator.
17. An apparatus for generating, editing, executing, monitoring and debugging a graphical application program for controlling one or more machines comprising: means for executing the graphical application program; means for storing status information of said apparatus, while said graphical application program is executing, said status information including at least one of the following: status of the graphical application program executing on said apparatus, status of physical inputs to the apparatus, status of physical outputs from the apparatus, status of internal condition of the apparatus, and a time stamp indicating the time at which said status information was stored; control means for retrieving the status information; and means for displaying said status information retrieved by said control means.
18. The apparatus of claim 17, wherein said control means retrieves the status information at a rate equal to the rate at which said status information is stored.
19. The apparatus of claim 17, wherein said control means retrieves the status information at a rate different from the rate at which the status information is stored.
20. The apparatus of claim 17, wherein said control means retrieves the status information in the same time order in which the status information had been stored.
21. The apparatus of claim 17, wherein said control means retrieves the status information in the reverse time order in which the status information had been stored.
22. The apparatus of claim 17, wherein said control means stops retrieval of the status information in response to an operator invoked stop command.
23. The apparatus of claim 17, wherein said control means uses said time stamp to measure the time interval between the occurrence of any two or more status conditions.
PCT/US1994/014314 1994-02-25 1994-12-14 Integrated control system for industrial automation applications WO1995023374A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP95905363A EP0749598A4 (en) 1994-02-25 1994-12-14 Integrated control system for industrial automation applications
JP7522326A JPH09511594A (en) 1994-02-25 1994-12-14 Integrated control system for industrial automation applications

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/201,751 1994-02-25
US08/201,751 US5485620A (en) 1994-02-25 1994-02-25 Integrated control system for industrial automation applications

Publications (1)

Publication Number Publication Date
WO1995023374A1 true WO1995023374A1 (en) 1995-08-31

Family

ID=22747133

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1994/014314 WO1995023374A1 (en) 1994-02-25 1994-12-14 Integrated control system for industrial automation applications

Country Status (4)

Country Link
US (1) US5485620A (en)
EP (1) EP0749598A4 (en)
JP (1) JPH09511594A (en)
WO (1) WO1995023374A1 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2304935A (en) * 1995-09-07 1997-03-26 Toshiba Kk Programming system for producing sequence control program
EP0852346A1 (en) * 1995-09-19 1998-07-08 Kabushiki Kaisha Yaskawa Denki Robot language processor
EP0892348A1 (en) * 1997-07-14 1999-01-20 Horiba, Ltd. Debugging method and monitoring method for analysis instruments
FR2821192A1 (en) * 2001-02-19 2002-08-23 Schneider Automation PROGRAMMING STATION COMPRISING A COMPACT PROGRAM AND AUTOMATION EQUIPMENT USING SUCH A PROGRAM
FR2821191A1 (en) * 2001-02-19 2002-08-23 Schneider Automation PROGRAMMING STATION PROVIDING A SINGLE LANGUAGE PROGRAM AND AUTOMATION EQUIPMENT USING SUCH A PROGRAM
FR2823578A1 (en) * 2001-04-17 2002-10-18 Schneider Automation Method for visualizing or printing a graphical automation application program on a terminal or PC without the source application so that a technician can quickly locate a fault in an automation plant
EP1998238A2 (en) 2007-05-25 2008-12-03 Rockwell Automation Technologies, Inc. Diagnostic tool for retroactive assessment of industrial process performance
CN103168277A (en) * 2010-08-31 2013-06-19 Abb技术有限公司 Method for debugging of process or manufacturing plant solutions comprising multiple sub-systems
EP2541351A3 (en) * 2011-06-29 2016-03-09 Jtekt Corporation Block execution sequence display system
EP3401746A1 (en) * 2017-05-12 2018-11-14 Omron Corporation Support device, control method of support device, and non-transitory computer-readable recording medium
CN110989508A (en) * 2019-11-04 2020-04-10 林高峰 Process decoupling and process combination control system of multi-level standard module

Families Citing this family (207)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3100817B2 (en) * 1993-12-10 2000-10-23 三菱電機株式会社 Control program design support device
DE4427183A1 (en) * 1994-08-01 1996-02-08 Siemens Ag Programming device
JPH0863346A (en) * 1994-08-25 1996-03-08 Canon Inc Program editing method and device therefor
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
JPH08123515A (en) * 1994-10-25 1996-05-17 Fanuc Ltd Display system for sequence program
US20060206219A1 (en) * 1995-05-30 2006-09-14 Brown David W Motion control systems and methods
US5691897A (en) * 1995-05-30 1997-11-25 Roy-G-Biv Corporation Motion control systems
US20100131081A1 (en) * 1995-05-30 2010-05-27 Brown David W Systems and methods for motion control
US5812394A (en) * 1995-07-21 1998-09-22 Control Systems International Object-oriented computer program, system, and method for developing control schemes for facilities
DE19538264C2 (en) * 1995-10-13 1999-02-18 Pietzsch Automatisierungstech Process and interactive control console for preparing and setting up a mobile work device
US5841654A (en) * 1995-10-16 1998-11-24 Smar Research Corporation Windows based network configuration and control method for a digital control system
US5844795A (en) * 1995-11-01 1998-12-01 Allen Bradley Company, Llc Diagnostic aid for industrial controller using multi-tasking architecture
US5812133A (en) * 1995-11-01 1998-09-22 Allen Bradley Company, Llc Industrial controller with display of rung execution
EP0875023B1 (en) 1996-01-17 1999-09-08 Siemens Aktiengesellschaft Automation device
DE19614202C2 (en) * 1996-04-10 1999-08-12 Agie Ag Ind Elektronik Method and device for controlling a machine tool, in particular a spark erosion machine
US6098116A (en) * 1996-04-12 2000-08-01 Fisher-Rosemont Systems, Inc. Process control system including a method and apparatus for automatically sensing the connection of devices to a network
US5995916A (en) * 1996-04-12 1999-11-30 Fisher-Rosemount Systems, Inc. Process control system for monitoring and displaying diagnostic information of multiple distributed devices
US5838563A (en) * 1996-04-12 1998-11-17 Fisher-Rosemont Systems, Inc. System for configuring a process control environment
US5940294A (en) * 1996-04-12 1999-08-17 Fisher-Rosemont Systems, Inc. System for assisting configuring a process control environment
US6868538B1 (en) * 1996-04-12 2005-03-15 Fisher-Rosemount Systems, Inc. Object-oriented programmable controller
US5909368A (en) * 1996-04-12 1999-06-01 Fisher-Rosemount Systems, Inc. Process control system using a process control strategy distributed among multiple control elements
US5768119A (en) * 1996-04-12 1998-06-16 Fisher-Rosemount Systems, Inc. Process control system including alarm priority adjustment
US5828851A (en) * 1996-04-12 1998-10-27 Fisher-Rosemount Systems, Inc. Process control system using standard protocol control of standard devices and nonstandard devices
US5801942A (en) * 1996-04-12 1998-09-01 Fisher-Rosemount Systems, Inc. Process control system user interface including selection of multiple control languages
US5862052A (en) * 1996-04-12 1999-01-19 Fisher-Rosemount Systems, Inc. Process control system using a control strategy implemented in a layered hierarchy of control modules
US5659467A (en) * 1996-06-26 1997-08-19 Texas Instruments Incorporated Multiple model supervisor control system and method of operation
US5961610A (en) * 1996-08-13 1999-10-05 General Electric Company Systems, methods and apparatus for generating and controlling display of medical images
EP0825506B1 (en) * 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US5757648A (en) * 1996-09-12 1998-05-26 Nakamura; Kaoru Machine tool control system
US5818711A (en) * 1996-09-30 1998-10-06 Allen Bradley Company, Llc Method for visually determining the status of program edits in an on-line programming environment
US5898860A (en) * 1996-10-01 1999-04-27 Leibold; William Steven System and method for automatically generating a control drawing for a real-time process control system
US6041178A (en) * 1996-10-04 2000-03-21 Honeywell Inc. Graphical tool for creating discrete phase sequences and device control
US5893105A (en) * 1996-11-12 1999-04-06 Micrografx, Inc. Executable flowchart
US5953226A (en) * 1996-12-05 1999-09-14 Square D Company Control system having an application function with integrated self diagnostics
US5980078A (en) * 1997-02-14 1999-11-09 Fisher-Rosemount Systems, Inc. Process control system including automatic sensing and automatic configuration of devices
US6112126A (en) * 1997-02-21 2000-08-29 Baker Hughes Incorporated Adaptive object-oriented optimization software system
US6434435B1 (en) * 1997-02-21 2002-08-13 Baker Hughes Incorporated Application of adaptive object-oriented optimization software to an automatic optimization oilfield hydrocarbon production management system
US6894621B2 (en) * 1997-02-27 2005-05-17 Jack B. Shaw Crane safety devices and methods
US6549139B2 (en) 1997-02-27 2003-04-15 Jack B. Shaw, Jr. Crane safety device and methods
US6744372B1 (en) * 1997-02-27 2004-06-01 Jack B. Shaw Crane safety devices and methods
CN1219252A (en) * 1997-03-11 1999-06-09 三菱电机株式会社 Visual programming method and its system
US6226555B1 (en) * 1997-05-14 2001-05-01 Steeplechase Software, Inc. Flowchart exception handling element
US6275955B1 (en) * 1997-05-14 2001-08-14 Steeplechase Software, Inc. Diagnostic software for facilitating flowchart programming
US20010032278A1 (en) * 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
US5940293A (en) * 1997-10-22 1999-08-17 Allen-Bradley Company, Llc Bar chart editor for industrial controller
US6076020A (en) * 1997-10-23 2000-06-13 Rockwell Technologies, Llc Axis editor for industrial controller programming
EP0919896A1 (en) * 1997-12-01 1999-06-02 Siemens Aktiengesellschaft Method for window-assisted definition and setting of parameters of interfaces
US6470377B1 (en) * 1997-12-19 2002-10-22 Rockwell Automation Technologies, Inc. Networked file operations for computer numerical controls
US6233703B1 (en) * 1997-12-31 2001-05-15 Triconex Corporation Automatic generation of evaluation order for a function block diagram and detection of any associated errors
US6157864A (en) * 1998-05-08 2000-12-05 Rockwell Technologies, Llc System, method and article of manufacture for displaying an animated, realtime updated control sequence chart
US6691183B1 (en) 1998-05-20 2004-02-10 Invensys Systems, Inc. Second transfer logic causing a first transfer logic to check a data ready bit prior to each of multibit transfer of a continous transfer operation
US6061602A (en) * 1998-06-23 2000-05-09 Creative Lifestyles, Inc. Method and apparatus for developing application software for home automation system
IT1303240B1 (en) * 1998-08-07 2000-11-02 Ansaldo Segnalamento Ferroviario Spa REMOTE CONTROL DEVICE AND METHOD.
US6272388B1 (en) * 1998-09-29 2001-08-07 Rockwell Technologies, Llc Program structure and method for industrial control
US6198480B1 (en) 1998-10-07 2001-03-06 Wonderware Corporation Object-oriented tag browser
US6323882B1 (en) 1998-10-26 2001-11-27 Simulation Sciences, Inc. Method and systems for a graphical real time flow task scheduler
US6442512B1 (en) 1998-10-26 2002-08-27 Invensys Systems, Inc. Interactive process modeling system
US6490493B1 (en) 1999-01-21 2002-12-03 Rosemount Inc. Industrial process device management software
US6434738B1 (en) * 1999-04-22 2002-08-13 David Arnow System and method for testing computer software
US7089530B1 (en) * 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
WO2000070531A2 (en) * 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US6788980B1 (en) * 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6501995B1 (en) 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US6834370B1 (en) 1999-07-08 2004-12-21 Osi Software, Inc. Method for creating master recipes
JP3737650B2 (en) * 1999-07-09 2006-01-18 株式会社東芝 Integrated controller and control system
US6510352B1 (en) 1999-07-29 2003-01-21 The Foxboro Company Methods and apparatus for object-based process control
CN100368987C (en) * 1999-08-31 2008-02-13 迪吉多电子股份有限公司 Editing device and storage medium for storage editor program
US6854111B1 (en) * 1999-09-24 2005-02-08 Rockwell Software Inc. Library manager for automated programming of industrial controls
JP2001100817A (en) * 1999-09-30 2001-04-13 Toyoda Mach Works Ltd Monitoring device for sequential function chart type programmable controller
US6711629B1 (en) 1999-10-18 2004-03-23 Fisher-Rosemount Systems, Inc. Transparent support of remote I/O in a process control system
US20100131078A1 (en) * 1999-10-27 2010-05-27 Brown David W Event driven motion systems
US8032605B2 (en) * 1999-10-27 2011-10-04 Roy-G-Biv Corporation Generation and distribution of motion commands over a distributed network
US6473660B1 (en) 1999-12-03 2002-10-29 The Foxboro Company Process control system and method with automatic fault avoidance
ATE257253T1 (en) 2000-01-10 2004-01-15 Siemens Ag UNIVERSAL MOTION CONTROL
US6594541B1 (en) 2000-01-10 2003-07-15 Siemens Aktiengesellschaft Universal motion control
US6779128B1 (en) 2000-02-18 2004-08-17 Invensys Systems, Inc. Fault-tolerant data transfer
EP1290509A2 (en) * 2000-03-06 2003-03-12 Siemens Technology-to-Business Center, LLC Programming automation by demonstration
ATE355549T1 (en) * 2000-05-16 2006-03-15 Univ Brigham Young METHOD AND DEVICE FOR CONTROLLING A MACHINE TOOL WITH DIRECT TRANSMISSION OF MACHINING DATA
DE10055169A1 (en) * 2000-08-03 2002-02-21 Siemens Ag Industrial control for technical process e.g. for production machine, has technology neutral base system combined with technological object types
US7117049B2 (en) * 2000-08-03 2006-10-03 Siemens Aktlencesellschaft Industrial controller based on distributable technology objects
DE10038439B4 (en) * 2000-08-07 2008-04-24 Siemens Ag An apparatus, at least comprising a computer system and an industrial controller, for debugging industrial control programs
US7302676B2 (en) * 2000-08-07 2007-11-27 Siemens Aktiengesselschaft Method for debugging flowchart programs for industrial controllers
DE10038441B4 (en) * 2000-08-07 2005-10-27 Siemens Ag "Flow chart programming for industrial controls, especially motion control"
US7313609B1 (en) * 2000-08-09 2007-12-25 Schneider Automation Inc. Method and apparatus for programming an automation device
DE10042639A1 (en) * 2000-08-30 2002-03-28 Siemens Ag Process control method where control is executed using graphical programming languages and the invention relates to definition of macros with the program code to improve memory and run- time statistics
DE10065419B4 (en) * 2000-12-27 2011-01-20 Siemens Ag Industrial control with isochronous run-level model
DE10065417B4 (en) * 2000-12-27 2011-07-21 Siemens AG, 80333 Programming of cyclic machines
DE10065401A1 (en) * 2000-12-27 2003-03-06 Siemens Ag automation system
US7904194B2 (en) 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
JP2002236506A (en) * 2001-02-09 2002-08-23 Toyoda Mach Works Ltd Control system for machine tool
US20020173860A1 (en) * 2001-05-15 2002-11-21 Bruce Charles W. Integrated control system
US6694435B2 (en) * 2001-07-25 2004-02-17 Apple Computer, Inc. Method of obfuscating computer instruction streams
US20060190106A1 (en) * 2001-07-30 2006-08-24 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US7065415B2 (en) * 2001-07-30 2006-06-20 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US20030037023A1 (en) * 2001-08-07 2003-02-20 Intelliclaim Emulation process for making changes and revisions to computer data files
US20030061349A1 (en) * 2001-09-24 2003-03-27 George Lo Method and system for collaboratively developing programming code for programmable controllers
US20050188351A1 (en) * 2002-04-02 2005-08-25 Siemens Aktiengesellschaft Device and method for automatically generating automation software
DE10214553A1 (en) * 2002-04-02 2003-10-16 Siemens Ag Device and method for the automatic generation of automation software
WO2003089995A2 (en) * 2002-04-15 2003-10-30 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
EP1388769A1 (en) * 2002-08-05 2004-02-11 Peter Renner System for automation, surveillance, control, detection of measured values for technical processes
DE10348563B4 (en) 2002-10-22 2014-01-09 Fisher-Rosemount Systems, Inc. Integration of graphic display elements, process modules and control modules in process plants
US9983559B2 (en) 2002-10-22 2018-05-29 Fisher-Rosemount Systems, Inc. Updating and utilizing dynamic process simulation in an operating process environment
US7146231B2 (en) 2002-10-22 2006-12-05 Fisher-Rosemount Systems, Inc.. Smart process modules and objects in process plants
US7865251B2 (en) * 2003-01-28 2011-01-04 Fisher-Rosemount Systems, Inc. Method for intercontroller communications in a safety instrumented system or a process control system
US7117052B2 (en) * 2003-02-18 2006-10-03 Fisher-Rosemount Systems, Inc. Version control for objects in a process plant configuration system
US7043311B2 (en) * 2003-02-18 2006-05-09 Fisher-Rosemount Systems, Inc. Module class objects in a process plant configuration system
US7526347B2 (en) * 2003-02-18 2009-04-28 Fisher-Rosemount Systems, Inc. Security for objects in a process plant configuration system
US20060064503A1 (en) * 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
US8027349B2 (en) * 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
US20050172275A1 (en) * 2004-01-29 2005-08-04 Thilo Opatemy Execution of instructions in an automation system
US20100131077A1 (en) * 2004-02-25 2010-05-27 Brown David W Data Collection Systems and Methods for Motion Control
WO2005083533A1 (en) * 2004-02-25 2005-09-09 Beptech, Inc. Method of programming a processing system
US7761923B2 (en) * 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US6968292B2 (en) * 2004-03-02 2005-11-22 Paragon Technical Services, Inc. Industrial controller event logging
US7729789B2 (en) 2004-05-04 2010-06-01 Fisher-Rosemount Systems, Inc. Process plant monitoring based on multivariate statistical analysis and on-line process simulation
JP2007536634A (en) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド Service-oriented architecture for process control systems
US20050267765A1 (en) * 2004-05-26 2005-12-01 Jun-Jang Jeng Apparatus and method for policy-driven business process exception handling
DE102004030032B4 (en) * 2004-06-22 2020-06-18 Siemens Aktiengesellschaft System and method for configuring and parameterizing an automatable machine
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US20060041860A1 (en) * 2004-08-17 2006-02-23 National Instruments Corporation Interrupts in a graphical programming system
US8756521B1 (en) 2004-09-30 2014-06-17 Rockwell Automation Technologies, Inc. Systems and methods for automatic visualization configuration
US20060074499A1 (en) * 2004-10-01 2006-04-06 Rafie Hamidpour System and method for industrial process control
US7809683B2 (en) * 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US7650405B2 (en) * 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US8799800B2 (en) * 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US7447555B2 (en) * 2005-07-06 2008-11-04 Skorepa Bradley J Method for engineering a control system
US20070067458A1 (en) * 2005-09-20 2007-03-22 Rockwell Software, Inc. Proxy server for integration of industrial automation data over multiple networks
US7881812B2 (en) * 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US7548789B2 (en) 2005-09-29 2009-06-16 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US8484250B2 (en) * 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US7660638B2 (en) * 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US8275680B2 (en) * 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US7526794B2 (en) * 2005-09-30 2009-04-28 Rockwell Automation Technologies, Inc. Data perspectives in controller system and production management systems
US7801628B2 (en) * 2005-09-30 2010-09-21 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US8055358B2 (en) 2005-12-05 2011-11-08 Fisher-Rosemount Systems, Inc. Multi-objective predictive process optimization with concurrent process simulation
US8050798B2 (en) * 2006-03-20 2011-11-01 Paccar Inc Dynamic program module generation for manipulating vehicle frame
US7860857B2 (en) * 2006-03-30 2010-12-28 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US20070239505A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Abstract execution model for a continuation-based meta-runtime
EP1890209A1 (en) * 2006-08-16 2008-02-20 Siemens Aktiengesellschaft System and method for visualizing jumps in a sequential flow chart editor
RU2417391C2 (en) * 2006-08-24 2011-04-27 Сименс Энерджи Энд Отомейшн, Инк. Devices, systems and methods of configuring programmable logic controller
US8789013B1 (en) * 2006-08-28 2014-07-22 Rockwell Automation Technologies, Inc. Ordered execution of events in a data-driven architecture
US7668608B2 (en) * 2006-09-01 2010-02-23 Fisher-Rosemount Systems, Inc. Graphical programming language object editing and reporting tool
US20080082577A1 (en) * 2006-09-29 2008-04-03 Rockwell Automation Technologies, Inc. Module classification and searching for industrial control systems
US8776092B2 (en) 2006-09-29 2014-07-08 Rockwell Automation Technologies, Inc. Multiple interface support
US9261877B2 (en) * 2006-09-29 2016-02-16 Rockwell Automation Technologies, Inc. Multiple machine interface
US8041435B2 (en) * 2008-09-30 2011-10-18 Rockwell Automation Technologies, Inc. Modular object dynamic hosting
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
US7912560B2 (en) * 2006-09-29 2011-03-22 Rockwell Automation Technologies, Inc. Module and controller operation for industrial control systems
US8732658B2 (en) * 2006-09-29 2014-05-20 Rockwell Automation Technologies, Inc. Layered interface in an industrial environment
US7856279B2 (en) * 2006-09-29 2010-12-21 Rockwell Automation Technologies, Inc. Module structure and use for industrial control systems
US7835805B2 (en) * 2006-09-29 2010-11-16 Rockwell Automation Technologies, Inc. HMI views of modules for industrial control systems
US8265775B2 (en) * 2008-09-30 2012-09-11 Rockwell Automation Technologies, Inc. Modular object publication and discovery
US7676279B2 (en) * 2006-09-29 2010-03-09 Rockwell Automation Technologies, Inc. Services for industrial control systems
US9217998B2 (en) * 2006-09-29 2015-12-22 Rockwell Automation Technologies, Inc. Management and development of an industrial environment
US8818757B2 (en) * 2008-09-30 2014-08-26 Rockwell Automation Technologies, Inc. Modular object and host matching
EP1916583A1 (en) * 2006-10-26 2008-04-30 Siemens Aktiengesellschaft Method for carrying out online program changes on an automation system
US8751173B1 (en) 2007-03-28 2014-06-10 LDARtools, Inc. Management of response to triggering events in connection with monitoring fugitive emissions
JP2008287710A (en) * 2007-04-16 2008-11-27 Nst:Kk Development control device
JP4582167B2 (en) * 2007-04-27 2010-11-17 ダイキン工業株式会社 Group management device and group management program
US7949422B1 (en) * 2007-06-22 2011-05-24 Vermont Machine Tool Corporation Machine tool control system
US20090094555A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Adaptive user interface elements on display devices
JP2009122862A (en) * 2007-11-13 2009-06-04 Sharp Corp Operation panel and electric device including the same
US8274402B1 (en) 2008-01-24 2012-09-25 LDARtools, Inc. Data collection process for optical leak detection
JP2009259082A (en) * 2008-04-18 2009-11-05 Koyo Electronics Ind Co Ltd Ladder diagram editing system
US8255065B2 (en) * 2008-05-05 2012-08-28 Siemens Aktiengesellschaft Mobile function block for a PLC based distributed control system
CN102124432B (en) 2008-06-20 2014-11-26 因文西斯系统公司 Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
EP2144159A1 (en) * 2008-07-10 2010-01-13 Siemens Aktiengesellschaft Method and program network for handling exceptions
US8606379B2 (en) * 2008-09-29 2013-12-10 Fisher-Rosemount Systems, Inc. Method of generating a product recipe for execution in batch processing
US8881039B2 (en) 2009-03-13 2014-11-04 Fisher-Rosemount Systems, Inc. Scaling composite shapes for a graphical human-machine interface
US8127060B2 (en) * 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8463964B2 (en) * 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US20110022197A1 (en) * 2009-07-27 2011-01-27 Rec Advanced Silicon Materials Llc Process control application development environment and features
JP5246186B2 (en) * 2010-03-15 2013-07-24 オムロン株式会社 Controller support device, control program simulation method, controller support program, and computer-readable storage medium storing controller support program
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
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8706263B2 (en) * 2010-06-08 2014-04-22 Rockwell Automation Technologies, Inc. Synchronization of execution of sequential function charts using transition groups
US8587319B1 (en) * 2010-10-08 2013-11-19 LDARtools, Inc. Battery operated flame ionization detector
EP2469364A1 (en) * 2010-12-23 2012-06-27 Siemens Aktiengesellschaft Method for detecting a program sequence
JP6243095B2 (en) * 2011-03-24 2017-12-06 ソニー株式会社 Display device, energy control method, and computer program
US8762588B2 (en) * 2011-04-11 2014-06-24 Rockwell Automation Technologies, Inc. Output module for an industrial controller
US20140040772A1 (en) * 2011-12-12 2014-02-06 Adobe Systems Incorporated Highlighting graphical user interface components based on usage by other users
DE102012004983B4 (en) * 2012-03-14 2016-10-27 Hermann Müller Method for graphic-based robot programming of a multi-axis robot
DE102012016824A1 (en) * 2012-06-19 2013-12-19 Robert Bosch Gmbh Method for generating control commands for automation device, involves converting transferred control command datums and transmission datums derived from control command datums in device into interpretable code of control commands
US9268881B2 (en) 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9117170B2 (en) 2012-11-19 2015-08-25 Intel Corporation Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel
US9665664B2 (en) 2012-11-26 2017-05-30 Intel Corporation DFA-NFA hybrid
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
US20140215090A1 (en) * 2013-01-31 2014-07-31 Lsi Corporation Dfa sub-scans
US10755003B2 (en) * 2013-11-08 2020-08-25 Rockwell Automation Technologies, Inc. Time synchronization of signal transmission intervals for simulating a machine in industrial automation
JP6323841B2 (en) * 2014-03-13 2018-05-16 株式会社Fuji Display device for work equipment
EP2960731A1 (en) * 2014-06-26 2015-12-30 dSPACE digital signal processing and control engineering GmbH Method for interrupting the execution of a total program of an electronic control unit
DE102015105436A1 (en) 2015-04-09 2016-10-13 Beckhoff Automation Gmbh Translation module, processing module and control system
DE112016006057T5 (en) * 2016-01-27 2018-08-30 Mitsubishi Electric Corporation Control device and processing device
US10878140B2 (en) 2016-07-27 2020-12-29 Emerson Process Management Power & Water Solutions, Inc. Plant builder system with integrated simulation and control system configuration
JP7052250B2 (en) * 2017-08-10 2022-04-12 オムロン株式会社 Information processing equipment, information processing methods, and information processing programs
US10754320B2 (en) * 2017-11-14 2020-08-25 Rockwell Automation Technologies, Inc. Method and apparatus for integrating an external motion planner with an industrial controller
US11574219B2 (en) * 2019-09-27 2023-02-07 Rockwell Automation Technologies, Inc. System and method for industrial automation rules engine
US11424865B2 (en) 2020-12-10 2022-08-23 Fisher-Rosemount Systems, Inc. Variable-level integrity checks for communications in process control environments
US11418969B2 (en) 2021-01-15 2022-08-16 Fisher-Rosemount Systems, Inc. Suggestive device connectivity planning

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4663704A (en) * 1984-12-03 1987-05-05 Westinghouse Electric Corp. Universal process control device and method for developing a process control loop program
US5267145A (en) * 1989-06-30 1993-11-30 Icom, Inc. Method and apparatus for program navigation and editing for ladder logic programs by determining which instructions reference a selected data element address

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3974484A (en) * 1975-03-31 1976-08-10 Allen-Bradley Company Programmable sequence controller
US4122519A (en) * 1976-12-14 1978-10-24 Allen-Bradley Company Data handling module for programmable controller
NL7703078A (en) * 1977-03-22 1978-09-26 Philips Nv DEVICE FOR GENERATING AND CORRECTING A USER PROGRAM.
US4215398A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Dual microprocessor intelligent programmable process control system with communication link
US4215396A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Intelligent programmable process control system
US4500950A (en) * 1982-04-12 1985-02-19 Westinghouse Electric Corp. Industrial process control apparatus and method
US4636938A (en) * 1984-08-31 1987-01-13 Cincinnati Milacron Inc. Method and apparatus for producing numerical control programs
US4742443A (en) * 1985-03-28 1988-05-03 Allen-Bradley Company Programmable controller with function chart interpreter
EP0220325B1 (en) * 1985-04-30 1993-09-15 Fanuc Ltd. Method of preparing program for drilling holes
JPS6262762A (en) * 1985-09-12 1987-03-19 Tokyo Kikai Seisakusho:Kk Production step managing system for newspaper printing
US4736320A (en) * 1985-10-08 1988-04-05 Foxboro Company Computer language structure for process control applications, and translator therefor
US5247693A (en) * 1985-10-08 1993-09-21 The Foxboro Company Computer language structure for process control applications and method of translating same into program code to operate the computer
US4852047A (en) * 1987-04-14 1989-07-25 Universal Automation Inc. Continuous flow chart, improved data format and debugging system for programming and operation of machines
US4910691A (en) * 1987-09-30 1990-03-20 E.I. Du Pont De Nemours & Co. Process control system with multiple module sequence options
US5072356A (en) * 1988-04-11 1991-12-10 Square D Company Ladder drum sequence controller
JPH083731B2 (en) * 1988-10-18 1996-01-17 株式会社日立製作所 Programmable controller
GB2233128B (en) * 1989-05-01 1993-12-01 Honda Motor Co Ltd Method of and apparatus for generating control program
US5168441A (en) * 1990-05-30 1992-12-01 Allen-Bradley Company, Inc. Methods for set up and programming of machine and process controllers
US5265005A (en) * 1990-08-31 1993-11-23 Allen-Bradley Company, Inc. Processor for a programmable controller
US5212631A (en) * 1990-08-31 1993-05-18 Allen-Bradley Company, Inc. Programmable controller processor module having multiple program instruction execution sections
US5225974A (en) * 1990-10-30 1993-07-06 Allen-Bradley Company, Inc. Programmable controller processor with an intelligent functional module interface
US5253186A (en) * 1991-10-07 1993-10-12 Westinghouse Electric Corp. Process facility monitoring method including transformation of sequential conditions into constraining conditions
US5265004A (en) * 1991-10-15 1993-11-23 Allen-Bradley Company, Inc. Sequence controller with combinatorial Boolean logic
US5392207A (en) * 1993-08-20 1995-02-21 Allen-Bradley Company, Inc. Programmable motion controller with graphical programming aid

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4663704A (en) * 1984-12-03 1987-05-05 Westinghouse Electric Corp. Universal process control device and method for developing a process control loop program
US5267145A (en) * 1989-06-30 1993-11-30 Icom, Inc. Method and apparatus for program navigation and editing for ladder logic programs by determining which instructions reference a selected data element address

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
IEEE CACSD WORKSHOP, 1989, BARKER et al., "User Interface Standards for Control System Design Applications", pages 88-92. *
IEEE RAPCON CONFERENCE, 1991, DAVID E. HALPERT, "Object Oriented Programming for Motion Control", pages 61-67. *
IEEE SOFTWARE, Volume 9, issued 6 Nov. 1992, RUDOLF et al., "Completing the Job of Interface Design", pages 11-22. *
IEEE WINTER SIMULATION CONFERENCE, 1990, BASNET et al., "Experiences in Developing an Object-Oriented Modeling Environment for Manufacturing Systems", page 480. *
See also references of EP0749598A4 *

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2304935A (en) * 1995-09-07 1997-03-26 Toshiba Kk Programming system for producing sequence control program
GB2304935B (en) * 1995-09-07 1997-09-03 Toshiba Kk Sequence controller
US5841656A (en) * 1995-09-07 1998-11-24 Kabushiki Kaisha Toshiba Programming system for sequence control and control unit for executing program for sequence control
EP0852346A1 (en) * 1995-09-19 1998-07-08 Kabushiki Kaisha Yaskawa Denki Robot language processor
EP0852346A4 (en) * 1995-09-19 1998-12-23 Yaskawa Denki Seisakusho Kk Robot language processor
EP0892348A1 (en) * 1997-07-14 1999-01-20 Horiba, Ltd. Debugging method and monitoring method for analysis instruments
US6189084B1 (en) 1997-07-14 2001-02-13 Horiba, Ltd. Debugging method and monitoring method for analysis instruments
EP1293892A1 (en) * 2001-02-19 2003-03-19 Schneider Automation Programming device for specifying a compressed programme and automization equipment using such a programme
FR2821191A1 (en) * 2001-02-19 2002-08-23 Schneider Automation PROGRAMMING STATION PROVIDING A SINGLE LANGUAGE PROGRAM AND AUTOMATION EQUIPMENT USING SUCH A PROGRAM
EP1237077A1 (en) * 2001-02-19 2002-09-04 Schneider Automation Programming device using a unique programming language and automatic system using such a program
FR2821192A1 (en) * 2001-02-19 2002-08-23 Schneider Automation PROGRAMMING STATION COMPRISING A COMPACT PROGRAM AND AUTOMATION EQUIPMENT USING SUCH A PROGRAM
US7013188B2 (en) 2001-02-19 2006-03-14 Schneider Automation Programming station generating a program in single language and automation equipment using such a program
FR2823578A1 (en) * 2001-04-17 2002-10-18 Schneider Automation Method for visualizing or printing a graphical automation application program on a terminal or PC without the source application so that a technician can quickly locate a fault in an automation plant
WO2002084480A2 (en) * 2001-04-17 2002-10-24 Schneider Automation Method for graphically visualizing an automatism application and computer terminal for carrying out said method
WO2002084480A3 (en) * 2001-04-17 2003-12-24 Schneider Automation Method for graphically visualizing an automatism application and computer terminal for carrying out said method
US7325229B2 (en) 2001-04-17 2008-01-29 Schneider Automation Method for graphically visualizing an automatism application and computer terminal for carrying out said method
EP1998238A2 (en) 2007-05-25 2008-12-03 Rockwell Automation Technologies, Inc. Diagnostic tool for retroactive assessment of industrial process performance
EP1998238A3 (en) * 2007-05-25 2011-01-12 Rockwell Automation Technologies, Inc. Diagnostic tool for retroactive assessment of industrial process performance
CN103168277A (en) * 2010-08-31 2013-06-19 Abb技术有限公司 Method for debugging of process or manufacturing plant solutions comprising multiple sub-systems
CN103168277B (en) * 2010-08-31 2016-06-08 Abb技术有限公司 For debugging the process including multiple subsystem or the method for maker solution
EP2541351A3 (en) * 2011-06-29 2016-03-09 Jtekt Corporation Block execution sequence display system
US9483041B2 (en) 2011-06-29 2016-11-01 Jtekt Corporation Block execution sequence display system
EP3401746A1 (en) * 2017-05-12 2018-11-14 Omron Corporation Support device, control method of support device, and non-transitory computer-readable recording medium
CN110989508A (en) * 2019-11-04 2020-04-10 林高峰 Process decoupling and process combination control system of multi-level standard module

Also Published As

Publication number Publication date
US5485620A (en) 1996-01-16
EP0749598A1 (en) 1996-12-27
EP0749598A4 (en) 1997-07-30
JPH09511594A (en) 1997-11-18

Similar Documents

Publication Publication Date Title
US5485620A (en) Integrated control system for industrial automation applications
US6618856B2 (en) Simulation method and apparatus for use in enterprise controls
US7266476B2 (en) Simulation method and apparatus for use in enterprise controls
US6268853B1 (en) Data structure for use in enterprise controls
US7546232B2 (en) Mechanical-electrical template based method and apparatus
US7302676B2 (en) Method for debugging flowchart programs for industrial controllers
US6167406A (en) System, method and article of manufacture for building an enterprise-wide data model
US6157864A (en) System, method and article of manufacture for displaying an animated, realtime updated control sequence chart
EP0643848B1 (en) Control of paint spraying machines and the like
US6108662A (en) System method and article of manufacture for integrated enterprise-wide control
US7272451B2 (en) Programmable logic controller programming system
EP1364259B1 (en) A method and apparatus for generating an application for an automation control system
US4991076A (en) Method and apparatus for creating custom displays for monitoring ladder logic programs
US7849416B2 (en) System and method for graphically creating a sequence of motion control, machine vision, and data acquisition (DAQ) operations
EP1624352B1 (en) Manual restart learning process and manual restart process for an automated system
US20120117548A1 (en) System and method for free form comments for a programmable logic controller
US5940617A (en) Debugger for controlling execution of software installed in object to be controlled on the basis of state transition model, debugging method thereof, record medium thereof, and method for correlating function specifications and code addresses
CN111310313B (en) IAP-based simulation method and device and wafer cleaning equipment
Bourne CML: a meta-interpreter for manufacturing
JP2002507303A (en) Programming device
US20020173860A1 (en) Integrated control system
JP2001005517A (en) Monitor method for control program and its device
Werner et al. Supporting troubleshooting in machine and plant manufacturing by backstepping of PLC-control software
JP2023547855A (en) Systems and equipment for authoring and developing automation interfaces and processes without writing code
KR20210049302A (en) Error tracking method for motion controller

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 1995905363

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1995905363

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1995905363

Country of ref document: EP