# Patent

## Title
Methods, apparatus and articles of manufacture to test batch configurations

## Abstract

Example methods, apparatus and articles to test batch configurations are disclosed. A disclosed example method includes identifying, using a processor, an execution path through a batch configuration of a process control system, generating a test plan for the execution path, stimulating the process control system to execute the test plan, and recording a result of the test plan.

## Background
FIELD OF THE DISCLOSURE
This disclosure relates generally to batch configurations and, more particularly, to methods, apparatus and articles of manufacture to test batch configurations.
BACKGROUND
Batches are a type of process control system configuration that may be used to run repetitive and/or sequential operations to manufacture a product. During the life cycle of a process plant, a process control system may need to be replaced, fixed, patched, upgraded, etc. However, any change of a process control system has the potential to disrupt operation of the process plant and/or batch configurations.
SUMMARY
Example methods, apparatus and articles to test batch configurations are disclosed. A disclosed example method includes identifying, using a processor, an execution path through a batch configuration of a process control system, generating a test plan for the execution path, stimulating the process control system to execute the test plan, and recording a result of the test plan.
A disclosed example apparatus includes a path discoverer to identify an execution path through a batch configuration of a process control system, a test plan creator to generate a test plan for the execution path, and a test plan executor to stimulate the process control system to execute the test plan, and record a result of the test plan.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic illustration of an example system to test batch configurations for process control systems.
FIG. 2 illustrates an example manner of implementing the example batch tester of FIG. 1.
FIG. 3 illustrates an example batch hierarchy.
FIG. 4 illustrates an example sequential function chart (SFC) representing a portion of a batch.
FIG. 5 is an interaction table corresponding to the example path highlighted in FIG. 4.
FIG. 6 is an example test plan for the example path highlighted in FIG. 4.
FIG. 7 is an example interaction mapping table.
FIG. 8 is an example result of the example test plan of FIG. 6.
FIG. 9 is a flowchart representative of an example process that may be carried out to test batch configurations using the example batch tester of FIGS. 1 and 2.
FIGS. 10 and 11 are flowcharts representative of example processes that may be carried out to implement the example batch testers of FIGS. 1 and 2, and/or to test batch configurations for process control systems.
FIG. 12 is example pseudo-code that may be implemented to identify paths through a batch configuration.
FIGS. 13A-E is example pseudo-code that may be implemented to merge diverging and converging paths through a batch configuration.
FIG. 14 is example pseudo-code that may be implemented to generate a human-readable and/or a machine-readable batch interaction table.
FIGS. 15A-J is example pseudo-code that may be implemented to generate a batch test plan.
FIG. 16 is an example set of rules that can be used to define and/or navigate an SFC.
FIG. 17 is a schematic illustration of an example processor platform that may be used and/or programmed to carry out the example processes of FIGS. 10 and/or 11, the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J, and/or to perform testing of batch configurations.



DETAILED DESCRIPTION
Because of the complexity of modern process control systems and the limitless number of process plant configurations and/or batch configurations, it can be difficult to detect any defects that may be present before a process control system and/or batch configuration fix, patch, upgrade, etc. is released. For example, such undetected defects may only become apparent after and/or when the process control system and/or batch configuration is operated in connection with an actual process plant. To alleviate the need to replace, modify, patch, update and/or upgrade their process control system(s) and/or batch configurations, some customers have instead elected to isolate their process control system(s) from other device(s) and/or network(s). While such actions may reduce the potential for disruptions, it also prevents process engineers from taking advantage of the features and/or capabilities available in newer versions of a process control system and/or batch configuration.
In general, the example apparatus, methods, and articles of manufacture disclosed herein may be used to test batch configurations. In particular, the example apparatus, methods, and articles of manufacture disclosed herein may be used to automatically identify all possible execution paths through a batch configuration, automatically generate test plans for any or all of those possible execution paths, and/or to automatically test any or all of those possible execution paths. A batch configuration may be tested with a new and/or updated process control system before the new and/or updated process control system is used to control the customer's process plant. A batch configuration may, additionally or alternatively, be tested against a project design objective and/or functional test case objective.
By automatically and/or systematically testing batch configurations, a number of advantages may be realized. Automatic batch configuration testing can reduce the number of disruptive events in process plants by facilitating the identification of software defects that may only be detected with realistic test scenarios. Automatic batch configuration testing can also reduce the time and/or effort required to thoroughly test a batch configuration, as the behavior of the batch configuration can be automatically determined and/or verified. Automatic batch configuration testing can further enable substantially more test scenarios to be executed and/or verified. Automatic batch configuration testing can also enable testing without the need for process models, which can be expensive and/or time consuming to create for highly regulated industries. Additionally, automatic batch testing can increase customer confidence in deploying process control system upgrades, and can reduce the cost of supporting process control systems.
FIG. 1 illustrates an example system 100 to test batch configurations for a process control system 105 such as the DeltaVTM process control system sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company. The example process control system 105 of FIG. 1 includes one or more process controllers 110, one or more operator stations 115, and one or more application and/or work stations 120. An example process controller 110 is the DeltaV controller sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company. The example process controller(s) 110, the example operator station 115 and the example work station 120 of FIG. 1 are communicatively coupled via a bus and/or local area network (not shown), which is commonly referred to as an application control network. The local area network may be implemented using any desired communication medium(s) and/or protocol(s). For example, the local area network may be based on a wired and/or a wireless Ethernet communication scheme. However, any other suitable communication medium(s) and/or protocol(s) could be used.
The example operator station 115 of FIG. 1 allows a process plant operator to review and/or operate one or more operator display screens, graphical user interfaces and/or applications that enable the process plant operator to view process plant variables, view process plant states, view process plant conditions, view process plant alarms, and/or to provide user inputs such as those used to change process plant settings (e.g., set points and/or operating states, clear alarms, silence alarms, etc.). Such screens and/or applications are typically designed and/or implemented by process configuration engineers. As discussed in more detail below, an example batch tester 125 may simulate user and/or operator inputs 117 to the operator station 115 to stimulate, direct, force and/or otherwise cause the process control system 105 to execute a particular, selected and/or chosen path through a batch configuration.
The example work station 120 of FIG. 1 may be configured to implement any number and/or type(s) of process control application(s) and/or function(s). In the illustrated example of FIG. 1, the work station 120 is configured to implement, among possibly other applications and/or functions, the DeltaV Batch Executive 130 sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company. The example Batch Executive 130 of FIG. 1 carries out batch procedures, which are defined by one or more sequential function charts (SFCs) 135 by controlling, sequencing and/or coordinating the inputs, outputs and/or operations of one or more phase classes implemented by the example controller(s) 110. The example SFC(s) 135 of FIG. 1 are graphical representations of the actions and/or processes, and are defined and/or structured in accordance with any past, present and/or future standard(s) and/or recommendation(s) such as the International Society of Measurement and Control (ISA) S88 standard.
The example stations 115 and 120 of FIG. 1 may be implemented using any suitable computing systems and/or processing systems such as the example processor platform P100 of FIG. 17. The example stations 115 and 120 could, for example, be implemented using single-processor and/or multi-processor computers and/or computer workstations.
To enable the example batch tester 125 of FIG. 1 to interact with the example Batch Executive 130 and/or the example controller(s) 110, the example process control system 105 of FIG. 1 includes any number and/or type(s) of object linking and embedding (OLE) for process control (OPC) controllers 140. An example OPC controller 140 is the DeltaV OPC Server sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company
In the illustrated example of FIG. 1, lower layer(s) 145 of the control system hierarchy (e.g., equipment modules, control modules, input/output devices, field devices, etc.) are simulated and/or modeled rather than being executed on an actual process control field devices. In some examples, the simulated control layer(s) 145 also simulate and/or model the process plant controlled by the example process control system 105. Any number and/or type(s) of method(s), logic, tool(s), application(s) and/or device(s) such as the DeltaV SimulatePro application sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company may be used to implement the example simulated control layer(s) 145 of FIG. 1.
To configure control components (e.g., the example controller(s) 110, the example operator station 115 and/or the example work station 120), the example process control system 105 of FIG. 1 includes a process control system configuration subsystem 150. The example configuration subsystem 150 of FIG. 1 loads, configures, commissions and/or programs the actual (i.e., physical) process control components of the process control system 105 based on the contents of an operation database 155. The example configuration subsystem 150 and the example operation database 155 of FIG. 1 are a part of the DeltaV process control system sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company. The example operation database 155 of FIG. 1 may be generated, defined, specified and/or populated using other tools and/or interfaces (not shown) of the DeltaV process control system such as the DeltaV Configuration Software Suite sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company. In some examples, the example SFC(s) 135 are stored in the example operation database 155.
While FIG. 1 illustrates an example process control system 105 on which the example apparatus, methods, and articles of manufacture to test batch configurations may be advantageously employed, persons of ordinary skill in the art will readily appreciate that the apparatus, methods, and articles of manufacture disclosed herein may, if desired, be advantageously employed in other process control systems of greater or less complexity (e.g., having more than one controller, across more than one geographic location, etc.) than the illustrated example of FIG. 1. Moreover, while not shown in FIG. 1 for clarity of illustration, there may be any number and/or type(s) of additional and/or alternative devices, components and/or systems included in a process plant and/or a process control system. For example, a process plant and/or a process control system may include and/or implement a firewall, a switch, a router, a hub, a power supply, and/or any other devices managed and/or controllable by a process control system, such as the DeltaV process control system sold by Fisher-Rosemount Systems, Inc., an Emerson Process Management company.
To test batch configurations, the example system 100 of FIG. 1 includes the example batch tester 125. The example batch tester 125 of FIG. 1 tests a batch configuration, program and/or script to verify that the process control system 105 executes the batch as intended. To verify the execution of a batch, the example batch tester 125 compares one or more results of the batch to execute one or more benchmarks. Example benchmarks include, but are not limited to, one or more results collected from a prior execution of the batch on a different version of the process control system 105 and/or a different version of process control system software, and/or objective, expected and/or anticipated behavior(s) and/or result(s) defined and/or specified in a project configuration document and/or a functional test document. The example batch tester 125 tests all layers of the batch configuration, program and/or script (e.g., procedures, unit procedures, operations and/or phase classes) and controller interface logic. Additionally or alternatively, the batch tester 125 verifies that the execution time for a batch is not improperly delayed, that a batch does not go to a “complete” state prematurely, that the batch acquires and/or releases equipment as intended, that commands do not return errors, that the batch correctly recovers from errors, and/or that operator interactions are implemented as intended. The batch tester 125 ensures that commands of the SFC(s) 135 execute correctly and/or non-passively on the controller(s) 110 by, for example forcing a change of state in the controller(s) 110 prior to the controller(s) 110 setting the same state. An example manner of implementing the example batch tester 125 of FIG. 1 is disclosed below in connection with FIG. 2.
The example batch tester 125 of FIG. 1 analyzes a batch configuration, scripts and/or programs to identify all possible execution paths through the batch. The example batch tester 125 uses knowledge of batch script hierarchies and SFC constructs as defined by the S88 standard to determine all possible execution paths through a batch. The example batch tester 125 displays the identified list of execution paths to a user. For each of the execution path(s) selected by the user, the batch tester 125 generates a test plan that forces, stimulates and/or otherwise causes the process control system 105 and/or the simulated control layer(s) 145 to follow the execution path being tested. The example batch tester 125 generates a test plan by compiling a list of all the interactions needed to stimulate, force and/or otherwise cause the process control system 105 and/or the simulated control layer(s) 145 to follow a particular execution path through the batch. An example test plan that may be generated by the example batch tester 125 is human-readable (e.g., constructed in accordance with an eXtensible Markup Language (XML)) and executable programmatically. Results of the execution of each execution path are presented to the user and/or saved in a log file for subsequent comparison with appropriate benchmarks and/or objectives.
The example batch tester 125 of FIG. 1 executes all levels of a batch configuration, script and/or program as defined by the S88 standard and, thus, navigates through the batch hierarchy to identify all possible execution paths through the batch. FIG. 16 illustrates an example list of rules and/or constructs that define SFCs and can be used by the example batch tester 125 to identify execution paths through a batch. FIG. 3 illustrates an example batch hierarchy 300 for a phase class 305 having a single step 310 within a single operation 315 within a single unit procedure 320 with a single procedure 325. In the illustrated example of FIG. 3, the test shown around each box (e.g., text 330 around box 310) indicates the commands used to interact with each layer of the batch.
FIG. 4 illustrates an example SFC 400 representing a portion of a batch. The example batch tester 125 of FIG. 1 navigates the example SFC 400 to identify each execution path through the SFC. An example execution path is designated at reference numeral 405 in FIG. 4. As shown in FIG. 4, the execution path 405 starts at an initial set 410 and continues to a termination 415. The example execution path 405 in FIG. 4 can be represented by

S1→T1→S2→T2B→S3→T3B

where the “→” symbol represents “go to.” Typically, a batch will include multiple SFC layers and, thus, path discovery through the batch will be more complicated, but path navigation uses the same methodology and/or logic as for a single SFC. An example process that can be carried out by the example batch tester 125 to discover and/or identify the execution paths in a batch and/or SFC is disclosed below in connection with FIG. 11. Example pseudo-code that may be implemented by the example batch tester 125 to discover and/or identify execution paths through a batch and/or SFC is shown in FIGS. 12, 13A-E and 14.

For each execution path (e.g., the example execution path 405 of FIG. 4) to be tested, the example batch tester 125 of FIG. 1 generates a list of the commands needed to manipulate, stimulate, force and/or otherwise cause execution along a presently considered path. The list of commands includes the inputs required to follow an execution path and the outputs manipulated by the batch along that path.
An example interaction table 500 representing a list of commands that manipulate, stimulate, force and/or otherwise cause execution along the example execution path 405 of FIG. 4 is shown in FIG. 5. The example inputs of FIG. 5 come from three different sources: human interactions, signals received from the simulated control layer(s) 145 (e.g., “valve XV-101 is open”) and/or signals received from an external program control (e.g., “start SFC”). The example outputs of FIG. 5 are signals to the simulated control layer(s) 145 (e.g., “open valve XV-101”), signals to an external program, and/or information about the current state of the batch (e.g., “Step S1 is Active”). In the example interaction table 500 of FIG. 5, the # column 505 represents the sequence number of the command, the input/output column 510 represents whether the command is received (input) or given (output), the agent column 515 represents who executes the command, and the type column 520 represents the type of the agent 515.
To execute a batch path, the example batch tester 125 sends commands to change the state of the batch and/or to receive feedback about what operation(s) occurred. Accordingly, the example batch tester 125 of FIG. 1 augments the example interaction table 500 of FIG. 5 with additional commands, which are shown with shading in the example test plan 600 of FIG. 6 (two of which are designated at reference numerals 605 and 610). The additional commands added by the batch tester 125 allow the example batch tester 125 to synchronize itself with the batch. As shown in FIG. 6, the example batch tester 125 verifies each operation, behavior and/or transition of the batch, including the action(s) at each step. As such, each step and/or transition has pre-conditions and/or post-conditions that are setup and/or recorded by the batch tester 125, as shown in FIG. 6. Example pseudo-code that may be implemented by the example batch tester 125 of FIG. 1 to create a test plan is shown in FIGS. 15A-J.
As shown conceptually in FIG. 1, the example batch tester 125 envelopes the environment in which the batch executes and provides all the necessary feedback for the batch. For example, an operator no longer provides inputs and/or responses to the batch. Instead, the batch tester 125 provides the simulated inputs 117. However, as shown in FIG. 1, because the lower control layer(s) are simulated by the simulated control layer(s) 145, the example batch tester 125 need not provide and/or record the signals between the controller(s) 110 and the simulated control layer(s) 145.
To allow the example batch tester 125 of FIG. 1 to determine the commands used to exchange data with the process control system 105, the example batch tester 125 uses an interaction mapping table 160 provided by, for example, an engineer of the process control system 105. The example interaction mapping table 160 of FIG. 1 defines and/or specifies how data and/or commands are written to and/or received from the process control system 105. An example interaction mapping table 160 is shown in FIG. 7. The example batch tester 125 of FIG. 1 uses the interaction mapping table 160 to identify, for each step in a test plan (e.g., the example test plan 600 of FIG. 6), a particular command to execute that step.
FIG. 8 illustrates example test result log 800 generated by the example batch tester 125 of FIG. 1 for the example test path 405 of FIG. 4. As each test path is executed, the batch tester 125 updates and/or augments the log file. As shown, the log 800 can be used to determine test coverage and can be easily navigated. Whether a batch path executed correctly can be determined by, for example, comparing an associated portion of the log 800 with the contents of another log. As described above, another log may, for example, be generated by test a batch using another version of process control system software. Moreover, the log 800 and/or portion thereof may be compared with a project design document and/or functional test objectives. In such examples, the project design document and/or the functional test objectives (and/or portions thereof) are stored using a format and/or data structures that are accessible and/or readable by the batch tester 125 to enable comparison(s) with the log 800 and/or portions thereof.
FIG. 2 illustrates an example manner of implementing the example batch tester 125 of FIG. 1. To interface with the example operation database 155 of FIG. 1, the example batch tester 125 of FIG. 1 includes a database interface 205. Using any number and/or type(s) of message(s), protocol(s), logic, method(s) and/or application programming interface(s), the example database interface 205 of FIG. 2 enables other portions of the batch tester 125 to query for and/or obtain information (e.g., a batch configuration, program and/or script) from the operation database 155, and/or to store results (e.g., a log file) in the operation database 155.
To identify the paths through a batch, the example batch tester 125 of FIG. 2 includes a path discoverer 210. The example path discoverer 210 of FIG. 2 traces and/or executes all levels of a batch configuration, script and/or program as, for example, defined by the S88 standard and, thus, navigates through the batch hierarchy to identify all possible execution paths through the batch, as disclosed above in connection with FIGS. 1, 3, 4 and 16.
To create test plans such as the example test plan 600 of FIG. 6, the example batch tester 125 of FIG. 2 includes a test plan creator 215. For each batch execution path to be tested, the example test plan creator 215 of FIG. 2 generates a list of the commands needed to manipulate, stimulate, force and/or otherwise cause execution of a presently considered path. The list of commands includes the inputs required to follow an execution path and the outputs manipulated by the batch along that path. The example test plan creator 215 also inserts additional commands to allow a test plan executor 220 to change the state of the batch and/or to receive feedback about what operation(s) occurred.
To execute test plans, the example batch tester 125 of FIG. 2 includes the example test plan executor 220. Using an interaction mapping table such as the example table 160 of FIG. 7, the example test plan executor 220 of FIG. 2 executes each command of a test plan. As the test plan is executed, the example test plan executor 220 stores results of and/or state information obtained during execution of the test plan into a log file such as the example log file 800 of FIG. 8.
To allow the example test plan executor 220 to interact with the example process control system 105 of FIG. 1, the example batch tester 125 of FIG. 2 includes a control system interface 225.
To verify test results, the example batch tester 125 of FIG. 2 includes a comparer 230. Using any number and/or type(s) of method(s), logic(s) and/or criterion, the example comparer 230 of FIG. 2 compares a log file generated by the example test plan executor 220 to other log files previously generated by the test plan executor 220. For example, the comparer 230 may verify that the batch reaches the intended state(s) and that the intended outputs of the process control system 105 occurred. Additionally or alternatively, the comparer 230 can compare the log file and/or portions thereof compared with a project design document and/or functional test objectives. In such examples, the project design document and/or the functional test objectives (and/or portions thereof) are stored using a format and/or data structures that are accessible and/or readable by the comparer 230 to enable comparison(s) with the log file and/or portions thereof.
While an example manner of implementing the example batch tester 125 of FIG. 1 is shown in FIG. 2, one or more of the interfaces, data structures, elements, processes and/or devices illustrated in FIG. 2 may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example database interface 205, the example path discoverer 210, the example test plan creator 215, the example test plan executor 220, the example control system interface 225 and/or, more generally, the example batch tester 125 of FIGS. 1 and 2 may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example database interface 205, the example path discoverer 210, the example test plan creator 215, the example test plan executor 220, the example control system interface 225 and/or, more generally, the example batch tester 125 may be implemented by the example processor platform P100 of FIG. 17 and/or one or more circuit(s), programmable processor(s), application-specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)), field-programmable logic device(s) (FPLD(s)), field-programmable gate array(s) (FPGA(s)), fuses, etc. When any apparatus claim of this patent incorporating one or more of these elements is read to cover a purely software and/or firmware implementation, at least one of the example database interface 205, the example path discoverer 210, the example test plan creator 215, the example test plan executor 220, the example control system interface 225 and/or, more generally, the example batch tester 125 is hereby expressly defined to include a tangible article of manufacture such as a tangible computer-readable medium storing the firmware and/or software. Further still, the example batch tester 125 may include interfaces, data structures, elements, processes and/or devices instead of, or in addition to, those illustrated in FIG. 2, and/or may include more than one of any or all of the illustrated interfaces, data structures, elements, processes and/or devices.
As used herein, the term tangible computer-readable medium is expressly defined to include any type of computer-readable medium and to expressly exclude propagating signals. As used herein, the term non-transitory computer-readable medium is expressly defined to include any type of computer-readable medium and to exclude propagating signals. Example tangible and/or non-transitory computer-readable media include a volatile and/or non-volatile memory, a volatile and/or non-volatile memory device, a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a read-only memory (ROM), a random-access memory (RAM), a programmable ROM (PROM), an electronically-programmable ROM (EPROM), an electronically-erasable PROM (EEPROM), an optical storage disk, an optical storage device, magnetic storage disk, a magnetic storage device, a cache, and/or any other storage media in which information is stored for any duration (e.g., for extended time periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information) and which can be accessed by a processor, a computer and/or other machine having a processor, such as the example processor platform P100 discussed below in connection with FIG. 17.
FIG. 9 is a flowchart representing an example process that may be carried out by, for example, an engineer and/or process plant operator to test a batch configuration for a process control system. The example process of FIG. 9 begins with a user configuring an interaction mapping table such as the example table 160 of FIG. 7 for a process control system such as the example process control system 105 of FIG. 1 (block 905). The user imports a configuration file such as a DeltaV .FHX file containing one or more batch configurations (block 910). The user enables the simulated control layer(s) 145 (block 915) and selects a batch to test (block 920). The user reviews the list of execution paths through the batch that were automatically identified by the batch tester 125 (block 925) and selects one or more of the identified execution paths for testing (block 930). The user starts execution of the batch test(s) (block 935) and reviews the results of the batch test(s) (block 940). The user validates batch test results by, for example, comparing a log file to another log file, and/or comparing results in the log file to a project design document and/or to a functional test document (block 945).
FIGS. 10 and 11 are flowcharts representative of example processes that may be carried out to implement the example batch tester 125 of FIGS. 1 and 2. A processor, a controller and/or any other suitable processing device may be used, configured and/or programmed to carry out the example processes of FIGS. 10 and/or 11. For example, the example processes of FIGS. 10 and/or 11 may be embodied in coded or machine-readable instructions stored on a tangible computer-readable medium. Machine-readable instructions comprise, for example, instructions that cause a processor, a computer and/or a machine having a processor to perform one or more particular processes. Alternatively, some or all of the example processes of FIGS. 10 and/or 11 may be implemented using any combination(s) of ASIC(s), PLD(s), FPLD(s), FPGA(s), discrete logic, hardware, firmware, etc. Also, some or all of the example processes of FIGS. 10 and/or 11 may be implemented manually or as any combination of any of the foregoing techniques, for example, any combination of firmware, software, discrete logic and/or hardware. Further, many other methods of implementing the example operations of FIGS. 9, 10 and/or 11 may be employed. For example, the order of execution of the blocks may be changed, and/or one or more of the disclosed blocks may be changed, eliminated, sub-divided, or combined. Additionally, the blocks of any or all of the example processes of FIGS. 9, 10 and/or 11 may be carried out sequentially and/or carried out in parallel by, for example, different users, separate processing threads, processors, devices, discrete logic, circuits, etc.
The example process of FIG. 10 begins with the example path discoverer 210 identifying the execution paths through a batch (block 1005). The path discoverer 210 may identify the execution paths by, for example, carrying out the example process of FIG. 11 and/or by implementing the example pseudo-code of FIGS. 12, 13A-E and 14. The path discoverer 210 displays the list of identified execution paths for review by a user (block 1010). The example test plan creator 215 receives from the user a selection of one or more of the displayed execution paths (block 1015) and, for each selected execution path, generates a test plan such as the example test plan 600 of FIG. 6 (block 1020). The example test plan creator 215 creates the test plan(s) by, for example, implementing the example pseudo-code of FIGS. 15A-J.
The example test plan executor 220 executes each of the test plans created by the test plan creator 215 (block 1025) and stores the results in a log file (block 1030). As directed by a user, the example comparer 230 compares all or any part of the log file to one or more other log files to verify and/or validate the results of the executed batch paths (block 1035). Control then exits from the example process of FIG. 10.
The example process of FIG. 11 may be carried out to identify the paths through a batch. The example process of FIG. 11 begins with the path discoverer 210 identifying all paths through the batch that start with an initial node and end on any termination or hanging transition by, for example, implementing the example pseudo-code of FIG. 12 (block 1105). The path discoverer 210 identifies and merges paths that diverge and converge by, for example, implementing the example pseudo-code of FIGS. 13A-E (block 1110). The path discoverer 210 creates path descriptions for the merged paths by, for example, implementing the example pseudo-code of FIG. 14 (block 1115). Control then exits from the example process of FIG. 11.
FIGS. 12, 13A-E, 14 and 15A-J are pseudo-code representative of example processes that may be carried out to implement the example batch tester 125 of FIGS. 1 and 2 and, in particular, the example path discoverer 210 and the example test plan creator 215 of FIG. 2. A processor, a controller and/or any other suitable processing device may be used, configured and/or programmed to carry out the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J. For example, the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J may be embodied in coded or machine-readable instructions stored on a tangible computer-readable medium. Machine-readable instructions comprise, for example, instructions that cause a processor, a computer and/or a machine having a processor to perform one or more particular processes. Alternatively, some or all of the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J may be implemented using any combination(s) of ASIC(s), PLD(s), FPLD(s), FPGA(s), discrete logic, hardware, firmware, etc. Also, some or all of the example pseudo-code of FIGS. 12, 13A-E, 14 and 15A-J may be implemented manually or as any combination of any of the foregoing techniques, for example, any combination of firmware, software, discrete logic and/or hardware. Further, many other methods of implementing the example operations of FIGS. 12, 13A-E, 14 and/or 15A-J may be employed. For example, the order of execution of blocks, portions, statements, and/or expressions of the pseudo-code may be changed, and/or one or more of the disclosed blocks, portions, statements and/or expressions may be changed, eliminated, sub-divided, or combined. Additionally, the blocks, portions, statements and/or expressions of any or all of the example pseudo-code of FIGS. 12, 13A-E, 14 and 15A-J may be carried out sequentially and/or carried out in parallel by, for example, different users, separate processing threads, processors, devices, discrete logic, circuits, etc.
FIG. 17 is a block diagram of an example processor platform P100 that may be used and/or programmed to implement the disclosed example batch testers 125 and/or to execute any or all of the example machine-accessible instructions and/or processes disclosed herein. One or more general-purpose processors, processor cores, microcontrollers, etc may be used to implement the processor platform P100. The processor platform P100 can be, for example, a server, a personal computer, an embedded controller, and/or any other type of computing device.
The processor platform P100 of the instant example includes at least one programmable processor P105. The processor P105 executes coded instructions P110 and/or P112 present in main memory of the processor P105 (e.g., within a RAM P115 and/or a ROM P120). The processor P105 may be any type of processing unit, such as a processor core, a processor and/or a microcontroller. The processor P105 may be programmed to carry out the example processes of FIGS. 10 and 11, and/or the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J. Thus, the coded instructions P110, P112 may represent the example processes of FIGS. 10 and 11, and/or the example pseudo-code of FIGS. 12, 13A-E, 14 and/or 15A-J.
The processor P105 is in communication with the main memory including a ROM P110 and the RAM P115 via a bus P125. The RAM P115 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of RAM device. The ROM P110 may be implemented by flash memory and/or any other desired type of memory device. Access to the memory P115 and the memory P120 may be controlled by a memory controller. The example memory P115 may be used to, for example, store the example operation database 155.
The processor platform P100 includes an interface circuit P130. Any type of interface standard, such as an external memory interface, serial port, general-purpose input/output, as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface, etc, may implement the interface circuit P130.
One or more input devices P135 may be connected to the interface circuit P130. The input device(s) P135 can be implemented by, for example, a keyboard, a mouse, a touch screen, a track-pad, a trackball, isopoint and/or a voice recognition system. One or more output devices P140 are also connected to the interface circuit 1020. The output devices P140 can be implemented, for example, by display devices (e.g., a liquid crystal display, a cathode ray tube display (CRT), a printer and/or speakers). The interface circuit P130 may, thus, include a graphics driver card. The input device(s) P135 and the output device(s) P140 may, additionally or alternatively, be used to provide information such as a list of identified execution paths and/or test results, and/or to receive selections of execution paths to be tested.
The interface circuit P130 may also includes a communication device such as a modem, transceiver or network interface card to facilitate exchange of data with external computers via a network.
In some examples, the processor platform P100 also includes one or more mass storage devices P145 to storing software and data. Examples of such mass storage devices P145 include a floppy disk drive, a hard disk drive, a solid-state hard disk drive, a CD drive, a DVD drive and/or any other solid-state, magnetic and/or optical storage device. The mass storage device P145 may implement the example operation database 155.
The coded instructions disclosed herein may be stored in the mass storage device P145, in the RAM P115, in the ROM P120, and/or on a removable storage medium such as a CD or a DVD.
From the foregoing, it will appreciate that the above disclosed methods, apparatus and articles of manufacture to test process control systems. Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.

## Claims

1. A method, comprising:
identifying, using a processor, an execution path through a batch configuration of a first version of a process control system;
generating a test plan for the execution path, wherein generating the test plan includes augmenting the batch configuration with an operational command based on the identified execution path;
simulating the first version of the process control system and a second version of the process control system to execute the test plan; and
determining a difference between the first version of the process control system and the second version of the process control system by comparing a first result from the execution path of the test plan through the first version of the process control system and a second result from the execution path of the test plan through the second version of the process control system.

2. A method as defined in claim 1, further comprising:
identifying a second execution path through the batch configuration of the first version of the process control system;
presenting the execution path and the second execution path to a user; and
receiving an input selecting the execution path for testing.

3. A method as defined in claim 1, wherein identifying the execution path through the batch configuration of the first version of the process control system comprises:
identifying additional execution paths through the batch configuration of the first version of the process control system between an initial node and a corresponding termination node;
merging portions of execution paths that diverge and converge; and
creating a path description for each of the execution paths.

4. A method as defined in claim 1, wherein generating the test plan comprises:
identifying a sequence of interactions representing the execution path; and
inserting the operational command into the sequence to cause the first version of the process control system and the second version of the process control system to execute the test plan.

5. A method as defined in claim 1, further comprising comparing the first result to at least one of a third result of the test plan executed on a project design objective or a functional test objective.

6. A method as defined in claim 5, further comprising verifying execution of the batch configuration of the first version of the process control system based on the difference between the first version of the process control system and the second version of the process control system.

7. The method of claim 6, wherein verifying execution of the batch configuration of the first version of the process control system comprises verifying at least one of an execution time, a correction of an error, or a response to a user input by the first version of the process control system.

8. The method of claim 1, wherein the first result is representative of an expected result and the second result is representative of a result after a modification to the process control system.

9. An apparatus comprising:
a path discoverer to identify an execution path through a batch configuration of a first version of a process control system;
a test plan creator to generate a test plan for the execution path, wherein the test plan creator is to augment the batch configuration with an operational command based on the identified execution path; and
a test plan executor to simulate the first version of the process control system and a second version of the process control system to execute the test plan, and to determine a difference between the first version of the process control system and the second version of the process control system by comparing a first result from the execution path of the test plan through the first version of the process control system and a second result from the execution path of the test plan through the second version of the process control system.

10. An apparatus as defined in claim 9, wherein:
the path discoverer is to identify a second execution path through the batch configuration of the first version of the process control system; and
the test plan creator is to present the execution path and the second execution path to a user, and is to receive an input selecting the execution path for testing.

11. An apparatus as defined in claim 9, wherein the path discoverer is to:
identify additional execution paths through the batch configuration of the first version of the process control system between an initial node and a corresponding termination node;
merge portions of execution paths that diverge and converge; and
create a path description for each of the execution paths.

12. An apparatus as defined in claim 9, wherein the test plan creator is to:
identify a sequence of interactions representing the execution path; and
insert the operational command into the sequence to cause the test plan executor to simulate the first version of the process control system and the second version of the process control system to execute the test plan.

13. An apparatus as defined in claim 9, further comprising a comparer to compare the first result to at least one of a third result of the test plan executed on a project design objective or a functional test objective.

14. An apparatus as defined in claim 9, further comprising verifying execution of the batch configuration of the first version of the process control system based on the difference between the first version of the process control system and the second version of the process control system.

15. A machine readable storage device or storage disc having instructions stored thereon that, when executed, cause a processor to at least:
identify an execution path through a batch configuration of a first version of a process control system;
generate a test plan for the execution path, wherein the instructions are to cause the processor to augment the batch configuration with an operational command based on the identified execution path;
simulate the first version of the process control system and a second version of the process control system to execute the test plan; and
determine a difference between the first version of the process control system and the second version of the process control system by comparing a first result from the execution path of the test plan through the first version of the process control system and a second result from the execution path of the test plan through the second version of the process control system.

16. A machine readable storage device or storage disc as defined in claim 15, wherein the instructions, when executed, cause a processor to:
identify a second execution path through the batch configuration of the first version of the process control system;
present the execution path and the second execution path to a user; and
receive an input selecting the execution path for testing.

17. A machine readable storage device or storage disc as defined in claim 15, wherein the instructions, when executed, cause a processor to identify the execution path by at least:
identifying additional execution paths through the batch configuration of the first version of the process control system between an initial node and a corresponding termination node;
merging portions of execution paths that diverge and converge; and
creating a path description for each of the execution paths.

18. A machine readable storage device or storage disc as defined in claim 15, wherein the instructions, when executed, cause a processor to generate the test plan by at least:
identifying a sequence of interactions representing the execution path; and
inserting the operational command into the sequence to cause the first version of the process control system and the second version of the process control system to execute the test plan.

19. A machine readable storage device or storage disc as defined in claim 15, wherein the instructions, when executed, cause a processor to compare the first result to at least one of a third result of the test plan executed on a second process control system, a project design objective or a functional test objective.

20. A machine readable storage device or storage disc as defined in claim 15, wherein the instructions, when executed, cause a processor to verify execution of the first version of the process control system based on the difference between the first version of the process control system and the second version of the process control system.