US5949674A - Reconstruction tool for editing distributed industrial controller programs - Google Patents

Reconstruction tool for editing distributed industrial controller programs Download PDF

Info

Publication number
US5949674A
US5949674A US08/963,782 US96378297A US5949674A US 5949674 A US5949674 A US 5949674A US 96378297 A US96378297 A US 96378297A US 5949674 A US5949674 A US 5949674A
Authority
US
United States
Prior art keywords
instructions
portions
control program
program
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/963,782
Inventor
Yiping Song
Robert J. Coppenhaver
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allen Bradley Co LLC
Original Assignee
Allen Bradley Co LLC
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 Allen Bradley Co LLC filed Critical Allen Bradley Co LLC
Priority to US08/963,782 priority Critical patent/US5949674A/en
Assigned to ALLEN-BRADLEY COMPANY, INC. reassignment ALLEN-BRADLEY COMPANY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SONG, YIPING, COPPENHAVER, ROBERT J.
Application granted granted Critical
Publication of US5949674A publication Critical patent/US5949674A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/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/4183Total 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 data acquisition, e.g. workpiece identification
    • 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/41835Total 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 programme execution
    • 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/31From computer integrated manufacturing till monitoring
    • G05B2219/31418NC program management, support, storage, distribution, version, update
    • 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/32133Commands from program of other controller cause recompilation of local program
    • 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

  • This invention relates to industrial control systems including programmable controllers and more particularly to a highly distributed industrial control system and a method for programming the same.
  • Industrial controllers such as those described in U.S. Pat. Nos.: 3,810,118; 3,942,158; 4,165,534; and 4,442,504 are specialized high speed computers that may be connected to industrial equipment, such as automated assembly lines or machine tools, to operate such equipment in accordance with a stored control program.
  • the stored program includes instructions, which when executed, examine the conditions of selected inputs to the controller from sensing devices on the controlled equipment, or which energize or de-energize selected outputs connected to actuators on the controlled equipment.
  • the inputs and outputs to the industrial controller may be binary signals such as those from or to switches or solenoids, or may be analog signals describing process data values such as motion, temperature, time or other quantities. Analog signals are typically converted to digital form for processing by the industrial controller.
  • Industrial controllers may be programmed by means of special control oriented languages.
  • a common language is "ladder logic" language in which the control program is represented graphically as ladders whose vertical rails are a virtual power source and power return and whose rungs are series and parallel connected virtual contacts and virtual relay coils.
  • the contacts represent data values for example from inputs to the controller from the controlled machinery.
  • the coils represent outputs to the controlled machinery.
  • Advanced ladder logic languages also include arithmetic and other advanced commands represented graphically within the ladder logic program. Such controllers and languages are understood in the art.
  • a single controller may communicate with one or more remotely located "I/O racks" communicating with the controller by means of a digital communication link.
  • the I/O racks collect inputs and outputs from and to the controlled equipment and provide interface circuitry to handle different signal types.
  • the single controller of the centralized control architecture may be augmented or supplemented by many separate processor modules each executing a portion of the control program in a distributed control architecture.
  • Distributed processing can improve the response time of the industrial controller by providing effective parallel process and by reducing the time it takes for remote I/O racks to communicate with a central controller. Distributed processing may also reduce installation costs.
  • parts of the control program may be duplicated and sent to more than one processor module and logically connected sections of the control program may be broken apart and sent to different control modules based on considerations of processing capability, network traffic concerns, and efficiency in execution. Accordingly, the partitioned program may bear little resemblance to the originally written control program
  • the present invention provides a method of reconstructing a single, editable control program from the program portions allocated to processor modules in a distributed control system.
  • the reconstructed program may then be reviewed and edited for reallocation to the processor modules.
  • Reconstruction of the control program is made possible by tagging the allocated program portions with a source identifier and including special junction instructions.
  • the source identifier and the junction instructions guide the reconstruction process.
  • the present invention provides a method of operating a distributed industrial controller.
  • the control program is divided into portions and each portion assigned a source identifier reflecting the origin of the portion within the control program.
  • the portions are collected at one site and reconstructed in accordance with the source identifiers to produce a single, editable control program.
  • the source identifier may be a rung number and the program broken into portions according to rungs.
  • the dividing of the control program may produce a first and second portion having redundant instructions and assigned to different processor modules. This first and second portion are given the same source identifier and when the control program is reproduced, they are merged together at the redundant instructions.
  • the dividing of the control program may occur at a division point by inserting a first junction instruction prior to the division point.
  • the first junction instruction causes the transmission on the communication link of a result value from the instructions of the first portion prior to the division point.
  • a second junction instruction is inserted following the division point to operate on the result value and provide the result value to the other instructions of the second portion.
  • the method of the invention may include the additional step of assigning a sequence identifier to each portion related to the order of a branch of the control program comprising its source. Reconstructing the control program then reorders the branches according to the sequence identifiers.
  • FIG. 1 is a perspective view of a simplified distributed control system having three processor modules communicating on a common communication link connected to an editing terminal;
  • FIG. 2 is a block diagram of the processor modules of FIG. 1 showing an internal memory holding a portion of a control program for execution;
  • FIG. 3a is a graphic representation of a control program such as might be generated on the editing terminal of FIG. 1;
  • FIG. 3b is a figure similar to that of FIG. 3a showing the division of the control program of FIG. 3a into portions for allocation to the various processor modules of FIG. 1;
  • FIGS. 4a-4c are figures similar to FIG. 3b showing portions of a more complex control program allocated to processor modules of FIG. 1;
  • FIG. 5 is a figure similar to that of FIG. 3a showing a restored control program from the portions of FIGS. 4a-4c depicting the merger of identical preamble sections of the portions;
  • FIG. 6a is a figure similar to FIG. 3a showing a portion of a control program as would typically be allocable to a processor module;
  • FIG. 6b shows a subdivision of the portion of FIG. 6a to permit the portion of 6a to be allocated among different processor modules
  • FIG. 7 is a flowchart of a program operating on the editing terminal shown in FIG. 1 such as may permit restoration of the control program from the portions allocated to the processor modules of FIG. 1;
  • FIG. 8 is a graph showing flow of a generalized computer program showing natural lines of division of the control program into portions and various ways of allocating those portions.
  • a highly distributed control system 10 employs a number of processor modules 12, 14, and 16 having I/O lines 20 to a controlled process 22 and communicating on a shared communications link 18.
  • the I/O lines 20 may be either inputs or outputs, but as depicted are output lines communicating with control points on the control process 22 labeled A through F. Specifically, output I/O lines 20 from processor module 12 communicate with control points A and C, output I/O lines 20 for processor module 14 communicating with control points B and E, and output I/O lines 20 for processor module 16 communicating with control points D and F.
  • each of the processor modules 12, 14, and 16 include a link interface circuit 26 handling low level communication protocols with the link 18 such as will allow for the transmission of data between the processor modules 12, 14, and 16, during operation of the highly distributed control system 10 to control the process 22, and for the communication of the control program portions between the processor modules 12, 14, and 16 and the editing terminal 24.
  • the link interface circuit 26 may be a controller area network (CAN) controller well known in the art or other similar type communication links may be used.
  • CAN controller area network
  • a microprocessor 28 within the processor modules 12, 14, and 16 connects to the link interface circuit 26 by an internal bus 30 which also connects to memory 32 and I/O circuitry 34, the latter which connects to I/O lines 20.
  • the memory 32 will contain an operating system program 36, a portion 38 of a control program to be executed by the particular processor module 12, 14, or 16 and a data table 40 holding data used by the portion 38.
  • the microprocessor executes the portion 38 reading and writing data of the data table 40.
  • Generally data of the data table 40 is from data received over link 18 from other processor modules 12, 14, and 16 or received via the I/O circuitry 34 from I/O lines 20 directly from the controlled process 22.
  • the microprocessor 28 may develop additional values which are communicated via data table 40 to the link 18 to other processor modules 12, 14, or 16 or which are communicated to the controlled process 22 directly by the I/O circuitry 34 and I/O lines 20.
  • the construction and operation of the processor modules 12, 14, and 16 in this regard reflects that of conventional controllers as will be understood to those of ordinary skill in the art.
  • the program portion 38 is originally downloaded from the editing terminal 24 as will be described. If it is desired to edit the control program, the microprocessor 28 may upload the program portion 38 back to the editing terminal 24.
  • the operating system 36 permits the uploading, downloading, and execution of the program portion 38 over the link 18 according to techniques well understood in the art.
  • processor modules 12, 14, and 16 do not have sufficient memory 32 or operating systems 36 to allow loading and editing of the entire control program represented by the portions 38 in each of the processor modules 12, 14, and 16.
  • a control program 42 is shown such as might be displayed on the editing terminal 24 prior to its division into portions to be downloaded to the processor modules 12, 14, and 16.
  • the control program 42 is written in ladder logic and include three rungs 44 each given a sequential and unique rung number 52. Each rung includes a series connected "contact" instructions 46 and "coil” instructions 48.
  • Such instructions are well-known in the art and instruct the microprocessor 28 to test data values (in data table 40) represented by the contact instructions 46 and to write new data values (to data table 40) represented by the coil instructions 48 depending on the outcome of the test.
  • the logic of the instructions is represented by branches in the interconnection between contact instructions 46 and coil instructions 48 and the entire control program 42 is executed one rung at a time in series.
  • each rung 44 has a normally open contact instruction followed by a branch leading to two parallel connected coil instructions 48.
  • the relevant data of the data table 40 on which the instruction operates is indicated by a letter above the symbol for the instruction. Accordingly, each of rungs 1, 2 and 3 test data values X, Y, and Z, respectively with their contact instructions 46. Rung 1 sets data values corresponding to control points A and B with its coil instructions 48, rung 2 sets data values corresponding to control points C and D, and rung 3 sets data values corresponding to control points E and F.
  • the rungs 44 may be collected together by uploading them to the editing terminal 24 from the processor modules 12, 14, and 16. For this simple example, they may be reassembled, in order, by the order indicated by the source identifiers of the rung numbers 52 into control program 42 shown in FIG. 3a. This reconstructed control program 42 may be displayed on editing terminal 24, edited and downloaded again to the processor modules 12, 14, and 16 for execution. As will be described below, however, even in programs where the order of the rungs is not critical, a source identifier serves to collect rung portions 38 together (when individual rungs are divided) for the merger into the original rungs.
  • a more sophisticated allocation routine will be used for dividing control program 42 into program portions 38 for processor modules 12, 14, and 16.
  • One such allocation routine described in U.S. Pat. No. 5,796,603, and hereby incorporated by reference, divides control program 42 so that coil instructions 48 are in the processor modules 12, 14, and 16 that have I/O lines 20 connected to the particular control point defined by the coil instruction 48.
  • coil instruction 48 for control point A of process 22 would be assigned to processor module 12 which has I/O lines 20 connected to control point A.
  • control program 42 may be partitioned by allocating coil instructions 48 for control points A and C to processor module 12, allocating coil instructions 48 for control points B and E to processor module 14, and allocating coil instructions 48 for control points E and F to processor module 16.
  • the contact instructions 46 needed to determine the values for coil instructions 48 thus allocated follow the allocation of the coil instructions 48. Accordingly, all instructions "upstream" from the particular coil instructions 48 are collected and allocated to the processor module 12, 14, or 16 receiving the particular coil instructions 48.
  • processor module 14 receives two rungs 44' as the program portion 38, the first tagged R1 and being the series connection of contact instruction 46 for data value X and coil instruction 48 for control point B, and the second tagged R3 being the series connection of contact instruction 46 for data value Z in series with coil instruction 48 for control point E.
  • the program portion 38 includes a rung tagged R2 with contact instruction 46 for data value Y in series with coil instruction 48 for control point D, and a rung tagged R3 with instruction contact for data value Z in series with coil instruction 48 for control point F.
  • this allocation duplicates instructions in different processor modules 12, 14, and 16. For example, contact instructions 46 for data values X, Y, and Z are found in each of two processor modules 12, 14, and 16. Such an allocation can increase the speed of execution of the program on the highly distributed control system 10 by ensuring that all output instructions have the necessary input instructions on which they depend locally within the particular processor module 12, 14, and 16.
  • Reconstructing the control program 42 from the portions 38 shown in FIG. 3b involves the steps of loading those portions 38 into a central location such as the editing terminal 24 shown in FIG. 1, sorting the rungs 44' according to their tagged rung numbers, R1 through R3, and then merging the rungs for a given rung number together.
  • the rungs tagged R1 shown in processor modules 12 and 14 would be merged at the common contact instruction 46 for data value X with a branch to the uncommon coil instructions 48 for control points A and B.
  • FIGS. 4a through 4c this process of collecting program portions 38, sorting them by their source identifiers 39, and merging them is shown for three rungs 44" having coil instructions 48 for control points A, B, and C, respectively.
  • Each of these rungs 44" has a common rung prefix 50 represented by series and parallel combinations of various contact instructions 46, and a unique rung suffix 47 represented by the coil instruction 48 and for the rungs of FIGS. 4a and 4c by one or more contact instructions 46.
  • the source identifiers 39 in this case include the rung number 52, but also a branch sequence identifier 53 indicated as the number following the decimal point in the source identifier 39.
  • the branch sequence identifier 53 identifies the order within the original rung 44 of the branch of the rung 44" of the unique rung suffix 47.
  • the reconstructed rung 44 of FIG. 5 shows as the uppermost limb after branch point 54, the unique rung suffix 47 of the rung 44" of FIG. 4a per the branch sequence identifier 53 of 1.
  • the next limb of the rung 44 in FIG. 5 derives from the unique rung suffix 47 of rung 44" of FIG. 4b as indicated by the branch sequence identifier 53 of 2.
  • the last limb of the rung 44 in FIG. 5 derives from the unique rung suffix 47 of rung 44" of FIG. 4c as indicated by the branch sequence identifier 53 of 3.
  • the order of the limbs after branch point 54 does not affect the logic of the control program 42, but by correctly ordering the limbs of the branch, the reconstructed rung 44 looks like the original rung 44 improving the readability of the reconstructed control program 42 to the programmer who must perform maintenance or editing.
  • a rung need not be broken at a branch point 54, but may be broken at an arbitrary division point 56.
  • division point 56 divides a rung with five series contact instructions 46 testing data values V through Z, respectively, and connected to a coil instruction 48 for control point A.
  • the division point 56 is placed between contact instructions 46 for data values Y and Z but may, in general, be placed between any two groups of instructions.
  • Such a division point 56 may be used where some of the instructions, for example instruction W, cannot be executed on the processor module 12, 14, or 16, to which coil instruction 48 would logically be assigned according to the partitioning method described above. Alternatively, there may exist a situation where the processor module 12, 14, or 16 to which coil instruction 48 will be assigned has insufficient memory to hold a rung having five contact instructions 46.
  • part of the rung may be sent to one processor module 12, 14, or 16 and part of the rung may be sent to another processor module 12, 14, or 16.
  • the breaking of the rung at division point 56 is performed by adding a special junction coil instruction 48' labeled J1 and not indicating a control point on the control process, but simply a data value J1 within the data table 40 of memory 32 shown in FIG. 2.
  • a second partitionable rung 44" is then created having corresponding junction contact instruction 46' labeled J1 as well.
  • Contact instructions 46 for data values V, W, X, and Y are connected in series to the junction coil instruction 48'.
  • Junction contact instruction 46' and contact instruction 46 for data value Z are connected in series to the coil instruction 48 for control point A.
  • the present method begins with the partition of the control program 42 into separate portions 38 to be allocated to ones of the processor modules 12, 14, and 16, as indicated by process block 55.
  • This process may be performed by the editing terminal 24 executing a program operating on a complete copy of a control program 42.
  • each portion is tagged with a source identifier 39 optionally including a branch sequence identifier 53.
  • the portions are then distributed to the processor modules 12, 14, and 16, by downloading over the link 18, as has been described, indicated by process block 59.
  • the editing terminal 24 In reconstructing the control program 42, the editing terminal 24 executing the stored program, collects the program portions 38 as indicated by process block 60.
  • the portions 38 are then sorted by their source identifiers 39, and, if present, by the branch sequence identifier 53 within the broader ordering of the source identifiers 39 as shown by process block 62.
  • the portions 38 for each source identifier 39 are examined for junction instructions which are specifically identified as such by a data value name (e.g., J1) or memory location of the data value name in the data table 40. If there are no junction instructions, the program proceeds to process block 66; however, if there are junction instructions, the program proceeds to process block 68 and the preamble instructions 49 referred to in the discussion of FIG. 6b are substituted for the junction contact instruction 46' to merge the rungs 44" having the corresponding junction instructions.
  • a data value name e.g., J1
  • the program proceeds to process block 68 and the preamble instructions 49 referred to in the discussion of FIG. 6b are substituted for the junction contact instruction 46' to merge the rungs 44" having the corresponding junction instructions.
  • the program executed by the editing terminal 24 then proceeds to process block 66 and the contact instructions 46 of all rungs 44" having a common source identifier 39 are examined, starting at the left-most instruction, that is the earliest one evaluated in time during actual operation of the program. If at decision block 66, a given corresponding pair of instructions are the same, then at process block 74 one such instruction is placed in a merged rung 44 to be formed and the program loops back to process block 66.
  • the addition of a relatively compact source identifier allows reconstruction of the control program 42 from its constituent portions 38 as allocated among separate processor modules 12, 14, and 16.
  • the source identifier 39 need only be equal in range to the number of rungs in the program.
  • each rung 44 will be executed in strict sequence regardless of the execution of the prior rungs 44. Because inter-rung jumps are not allowed in basic ladder logic programming, all branches are resolved at the conclusion of each rung, at points 51. Accordingly, points 51 are natural points where the control program 42 may be divide into portions 38. Nevertheless, the graph of FIG. 8 and the present invention applies generally to any computer program having periodic points 51 of branch resolution.
  • a count of points 51 provides a source identifier 39.
  • a count of branches between points 51 (if any) provides a branch sequence identifier 53.
  • any program may be further divided as described above by inserting junction contact instructions 46' and coil instructions 48' into a portion of the graph between points 51.

Abstract

A method of reconstructing a control program from portions of that program contained in distributed processor modules of a distributed control system links each portion of the program with a source identifier. When the portions are collected, they are sorted by source identifier and merged to reveal the original control program as may be required for editing or the like.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT BACKGROUND OF THE INVENTION
This invention relates to industrial control systems including programmable controllers and more particularly to a highly distributed industrial control system and a method for programming the same.
Industrial controllers such as those described in U.S. Pat. Nos.: 3,810,118; 3,942,158; 4,165,534; and 4,442,504 are specialized high speed computers that may be connected to industrial equipment, such as automated assembly lines or machine tools, to operate such equipment in accordance with a stored control program. The stored program includes instructions, which when executed, examine the conditions of selected inputs to the controller from sensing devices on the controlled equipment, or which energize or de-energize selected outputs connected to actuators on the controlled equipment.
The inputs and outputs to the industrial controller may be binary signals such as those from or to switches or solenoids, or may be analog signals describing process data values such as motion, temperature, time or other quantities. Analog signals are typically converted to digital form for processing by the industrial controller.
Industrial controllers may be programmed by means of special control oriented languages. A common language is "ladder logic" language in which the control program is represented graphically as ladders whose vertical rails are a virtual power source and power return and whose rungs are series and parallel connected virtual contacts and virtual relay coils. The contacts represent data values for example from inputs to the controller from the controlled machinery. The coils represent outputs to the controlled machinery. Advanced ladder logic languages also include arithmetic and other advanced commands represented graphically within the ladder logic program. Such controllers and languages are understood in the art.
In a centralized controller architecture, a single controller may communicate with one or more remotely located "I/O racks" communicating with the controller by means of a digital communication link. The I/O racks collect inputs and outputs from and to the controlled equipment and provide interface circuitry to handle different signal types.
For certain control applications, the single controller of the centralized control architecture may be augmented or supplemented by many separate processor modules each executing a portion of the control program in a distributed control architecture. Distributed processing can improve the response time of the industrial controller by providing effective parallel process and by reducing the time it takes for remote I/O racks to communicate with a central controller. Distributed processing may also reduce installation costs. U.S. Pat. Nos. 5,452,201 and 5,530,643, assigned to the assignee of the present invention and hereby incorporated by reference, describe a highly distributed industrial control system and a method of programming the distributed control system by dividing a control program among the various processor modules for independent execution.
In the process of distributing the control program among the processor modules, parts of the control program may be duplicated and sent to more than one processor module and logically connected sections of the control program may be broken apart and sent to different control modules based on considerations of processing capability, network traffic concerns, and efficiency in execution. Accordingly, the partitioned program may bear little resemblance to the originally written control program
Unlike with a centralized control architecture where the control program is centrally located and may be easily displayed and edited with a distributed control system, there is no centralized repository of the unpartitioned control program. Although a copy of the pre-partitioned control program will normally be retained on the programming terminal used to partition the original control program among the various processor modules, that programming terminal may not be readily available. Further, in systems that allow editing of the program portions at the particular processor modules, the original control program may no longer be valid.
BRIEF SUMMARY OF THE INVENTION
The present invention provides a method of reconstructing a single, editable control program from the program portions allocated to processor modules in a distributed control system. The reconstructed program may then be reviewed and edited for reallocation to the processor modules.
Reconstruction of the control program is made possible by tagging the allocated program portions with a source identifier and including special junction instructions. The source identifier and the junction instructions guide the reconstruction process.
Specifically, the present invention provides a method of operating a distributed industrial controller. In the method, the control program is divided into portions and each portion assigned a source identifier reflecting the origin of the portion within the control program. When editing of the control program is required, the portions are collected at one site and reconstructed in accordance with the source identifiers to produce a single, editable control program. For ladder logic programs, the source identifier may be a rung number and the program broken into portions according to rungs.
Thus, it is one object of the invention to allow a control program to be divided among distributed processors in a distributed industrial controller and later reconstructed from the portions.
The dividing of the control program may produce a first and second portion having redundant instructions and assigned to different processor modules. This first and second portion are given the same source identifier and when the control program is reproduced, they are merged together at the redundant instructions.
Thus, it is another object of the invention to permit the reconstruction of a control program when portions of the control program are distributed redundantly among processor modules. Redundant allocation of program portions may improve the speed of execution of the industrial controller by allowing program portions changing an output on the controlled process to be grouped in one processor module with all program portions on which it depends.
The dividing of the control program may occur at a division point by inserting a first junction instruction prior to the division point. The first junction instruction causes the transmission on the communication link of a result value from the instructions of the first portion prior to the division point. A second junction instruction is inserted following the division point to operate on the result value and provide the result value to the other instructions of the second portion. After the first and second portions are sent to different processor modules, they may be collected again and the control program restored by merging the first and second portions at the division point identified by the first and second junction instructions.
Thus, it is another object of the invention to allow the restoration of the original control program when portions of the control program have been subdivided, for example, when a given processor module is not sufficiently powerful to execute all or particular instructions of the portion.
The method of the invention may include the additional step of assigning a sequence identifier to each portion related to the order of a branch of the control program comprising its source. Reconstructing the control program then reorders the branches according to the sequence identifiers.
Thus, it is another object of the invention to provide not simply a logical equivalent to the original control program but to provide a representation of the control program that looks like the original control program used to program the industrial control system. Generally the order of branches does not logically affect the control program but does change the way the control program is depicted.
The foregoing and other objects and advantages of the invention will appear from the following description. In this description reference is made to the accompanying drawings which form a part hereof and in which there is shown by way of illustration, a preferred embodiment of the invention. Such embodiment does not necessarily represent the full scope of the invention, however, and reference must be made therefore to the claims for interpreting the scope of the invention.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
FIG. 1 is a perspective view of a simplified distributed control system having three processor modules communicating on a common communication link connected to an editing terminal;
FIG. 2 is a block diagram of the processor modules of FIG. 1 showing an internal memory holding a portion of a control program for execution;
FIG. 3a is a graphic representation of a control program such as might be generated on the editing terminal of FIG. 1;
FIG. 3b is a figure similar to that of FIG. 3a showing the division of the control program of FIG. 3a into portions for allocation to the various processor modules of FIG. 1;
FIGS. 4a-4c are figures similar to FIG. 3b showing portions of a more complex control program allocated to processor modules of FIG. 1;
FIG. 5 is a figure similar to that of FIG. 3a showing a restored control program from the portions of FIGS. 4a-4c depicting the merger of identical preamble sections of the portions;
FIG. 6a is a figure similar to FIG. 3a showing a portion of a control program as would typically be allocable to a processor module;
FIG. 6b shows a subdivision of the portion of FIG. 6a to permit the portion of 6a to be allocated among different processor modules;
FIG. 7 is a flowchart of a program operating on the editing terminal shown in FIG. 1 such as may permit restoration of the control program from the portions allocated to the processor modules of FIG. 1; and
FIG. 8 is a graph showing flow of a generalized computer program showing natural lines of division of the control program into portions and various ways of allocating those portions.
DETAILED DESCRIPTION OF THE INVENTION
Referring now to FIG. 1, a highly distributed control system 10 employs a number of processor modules 12, 14, and 16 having I/O lines 20 to a controlled process 22 and communicating on a shared communications link 18.
The I/O lines 20 may be either inputs or outputs, but as depicted are output lines communicating with control points on the control process 22 labeled A through F. Specifically, output I/O lines 20 from processor module 12 communicate with control points A and C, output I/O lines 20 for processor module 14 communicating with control points B and E, and output I/O lines 20 for processor module 16 communicating with control points D and F.
Also attached to the common communication link 18 is an editing terminal 24 such as a PC-style computer well known in the art. The editing terminal may be used to generate, display and edit a control program executed by the distributed control system in controlling the control process 22. Prior to execution, the control program is divided into control portions downloaded to each of the processor modules 12, 14, and 16.
Referring now to FIG. 2, each of the processor modules 12, 14, and 16 include a link interface circuit 26 handling low level communication protocols with the link 18 such as will allow for the transmission of data between the processor modules 12, 14, and 16, during operation of the highly distributed control system 10 to control the process 22, and for the communication of the control program portions between the processor modules 12, 14, and 16 and the editing terminal 24. The link interface circuit 26 may be a controller area network (CAN) controller well known in the art or other similar type communication links may be used.
A microprocessor 28 within the processor modules 12, 14, and 16 connects to the link interface circuit 26 by an internal bus 30 which also connects to memory 32 and I/O circuitry 34, the latter which connects to I/O lines 20.
During operation, the memory 32 will contain an operating system program 36, a portion 38 of a control program to be executed by the particular processor module 12, 14, or 16 and a data table 40 holding data used by the portion 38. Under the guidance of operating system 36, the microprocessor executes the portion 38 reading and writing data of the data table 40.
Generally data of the data table 40 is from data received over link 18 from other processor modules 12, 14, and 16 or received via the I/O circuitry 34 from I/O lines 20 directly from the controlled process 22. During execution, the microprocessor 28 may develop additional values which are communicated via data table 40 to the link 18 to other processor modules 12, 14, or 16 or which are communicated to the controlled process 22 directly by the I/O circuitry 34 and I/O lines 20. The construction and operation of the processor modules 12, 14, and 16 in this regard reflects that of conventional controllers as will be understood to those of ordinary skill in the art.
The program portion 38 is originally downloaded from the editing terminal 24 as will be described. If it is desired to edit the control program, the microprocessor 28 may upload the program portion 38 back to the editing terminal 24. The operating system 36 permits the uploading, downloading, and execution of the program portion 38 over the link 18 according to techniques well understood in the art.
Generally, the processor modules 12, 14, and 16 do not have sufficient memory 32 or operating systems 36 to allow loading and editing of the entire control program represented by the portions 38 in each of the processor modules 12, 14, and 16.
Referring now to FIGS. 1 and 3a, a control program 42 is shown such as might be displayed on the editing terminal 24 prior to its division into portions to be downloaded to the processor modules 12, 14, and 16. The control program 42 is written in ladder logic and include three rungs 44 each given a sequential and unique rung number 52. Each rung includes a series connected "contact" instructions 46 and "coil" instructions 48. Such instructions are well-known in the art and instruct the microprocessor 28 to test data values (in data table 40) represented by the contact instructions 46 and to write new data values (to data table 40) represented by the coil instructions 48 depending on the outcome of the test. The logic of the instructions is represented by branches in the interconnection between contact instructions 46 and coil instructions 48 and the entire control program 42 is executed one rung at a time in series.
As depicted, each rung 44 has a normally open contact instruction followed by a branch leading to two parallel connected coil instructions 48. The relevant data of the data table 40 on which the instruction operates is indicated by a letter above the symbol for the instruction. Accordingly, each of rungs 1, 2 and 3 test data values X, Y, and Z, respectively with their contact instructions 46. Rung 1 sets data values corresponding to control points A and B with its coil instructions 48, rung 2 sets data values corresponding to control points C and D, and rung 3 sets data values corresponding to control points E and F.
In the simplest case, individual rungs 44 may be allocated to particular ones of the processor modules 12, 14, and 16. At the time of this allocation, the rung number 52 for each allocated rung 44 is attached, as a source identifier, to the rung 44 and downloaded to one of the processor modules 12, 14, and 16 to become the program portions 38 for those processor modules.
At a latter time, if it is desired to edit the control program 42, the rungs 44 may be collected together by uploading them to the editing terminal 24 from the processor modules 12, 14, and 16. For this simple example, they may be reassembled, in order, by the order indicated by the source identifiers of the rung numbers 52 into control program 42 shown in FIG. 3a. This reconstructed control program 42 may be displayed on editing terminal 24, edited and downloaded again to the processor modules 12, 14, and 16 for execution. As will be described below, however, even in programs where the order of the rungs is not critical, a source identifier serves to collect rung portions 38 together (when individual rungs are divided) for the merger into the original rungs.
Referring now to FIG. 3b, typically, a more sophisticated allocation routine will be used for dividing control program 42 into program portions 38 for processor modules 12, 14, and 16. One such allocation routine, described in U.S. Pat. No. 5,796,603, and hereby incorporated by reference, divides control program 42 so that coil instructions 48 are in the processor modules 12, 14, and 16 that have I/O lines 20 connected to the particular control point defined by the coil instruction 48. Thus, coil instruction 48 for control point A of process 22 would be assigned to processor module 12 which has I/O lines 20 connected to control point A.
As shown in FIG. 3b, following this technique, control program 42 may be partitioned by allocating coil instructions 48 for control points A and C to processor module 12, allocating coil instructions 48 for control points B and E to processor module 14, and allocating coil instructions 48 for control points E and F to processor module 16.
The contact instructions 46 needed to determine the values for coil instructions 48 thus allocated follow the allocation of the coil instructions 48. Accordingly, all instructions "upstream" from the particular coil instructions 48 are collected and allocated to the processor module 12, 14, or 16 receiving the particular coil instructions 48.
In this way, processor module 12 receives as a program portion 38, contact instruction 46 for data value X, forming a rung 44' in series with coil instructions 48, and contact instruction 46 for data value Y forms a rung 44' in series with coil instruction 48 for data value corresponding to control point C. Each of the rungs 44' for this program portion 38 are tagged with a source identifier 39 based on the rung number 52 of the original control program 42 from which the program portion 38 is derived. Thus, the rung 44' with coil instruction 48 for control point A is tagged with R1 indicating that it is from the rung 44 of control program 42 having a rung number 52 of 1. The rung 44' with coil instruction 48 for control point C is tagged with R2 indicating that it is from rung 44 having a rung number 52 of 2.
Likewise, processor module 14 receives two rungs 44' as the program portion 38, the first tagged R1 and being the series connection of contact instruction 46 for data value X and coil instruction 48 for control point B, and the second tagged R3 being the series connection of contact instruction 46 for data value Z in series with coil instruction 48 for control point E. For processor module 16, the program portion 38 includes a rung tagged R2 with contact instruction 46 for data value Y in series with coil instruction 48 for control point D, and a rung tagged R3 with instruction contact for data value Z in series with coil instruction 48 for control point F.
Note that this allocation duplicates instructions in different processor modules 12, 14, and 16. For example, contact instructions 46 for data values X, Y, and Z are found in each of two processor modules 12, 14, and 16. Such an allocation can increase the speed of execution of the program on the highly distributed control system 10 by ensuring that all output instructions have the necessary input instructions on which they depend locally within the particular processor module 12, 14, and 16.
Reconstructing the control program 42 from the portions 38 shown in FIG. 3b involves the steps of loading those portions 38 into a central location such as the editing terminal 24 shown in FIG. 1, sorting the rungs 44' according to their tagged rung numbers, R1 through R3, and then merging the rungs for a given rung number together. In this case, the rungs tagged R1 shown in processor modules 12 and 14 would be merged at the common contact instruction 46 for data value X with a branch to the uncommon coil instructions 48 for control points A and B.
Referring now to FIGS. 4a through 4c, this process of collecting program portions 38, sorting them by their source identifiers 39, and merging them is shown for three rungs 44" having coil instructions 48 for control points A, B, and C, respectively. Each of these rungs 44" has a common rung prefix 50 represented by series and parallel combinations of various contact instructions 46, and a unique rung suffix 47 represented by the coil instruction 48 and for the rungs of FIGS. 4a and 4c by one or more contact instructions 46.
Referring to FIG. 5, merging of these rungs 44" creates a new rung having the common rung prefix 50 followed by a branch point 54 producing separate limbs for each of the unique rung suffix 47 of the rungs 44". The source identifiers 39 in this case include the rung number 52, but also a branch sequence identifier 53 indicated as the number following the decimal point in the source identifier 39. The branch sequence identifier 53 identifies the order within the original rung 44 of the branch of the rung 44" of the unique rung suffix 47.
Thus, the reconstructed rung 44 of FIG. 5 shows as the uppermost limb after branch point 54, the unique rung suffix 47 of the rung 44" of FIG. 4a per the branch sequence identifier 53 of 1. The next limb of the rung 44 in FIG. 5 derives from the unique rung suffix 47 of rung 44" of FIG. 4b as indicated by the branch sequence identifier 53 of 2. Finally, the last limb of the rung 44 in FIG. 5 derives from the unique rung suffix 47 of rung 44" of FIG. 4c as indicated by the branch sequence identifier 53 of 3.
The order of the limbs after branch point 54 does not affect the logic of the control program 42, but by correctly ordering the limbs of the branch, the reconstructed rung 44 looks like the original rung 44 improving the readability of the reconstructed control program 42 to the programmer who must perform maintenance or editing.
Referring now to FIG. 6a, a rung need not be broken at a branch point 54, but may be broken at an arbitrary division point 56. In the example of FIG. 6a, division point 56 divides a rung with five series contact instructions 46 testing data values V through Z, respectively, and connected to a coil instruction 48 for control point A. The division point 56 is placed between contact instructions 46 for data values Y and Z but may, in general, be placed between any two groups of instructions. Such a division point 56 may be used where some of the instructions, for example instruction W, cannot be executed on the processor module 12, 14, or 16, to which coil instruction 48 would logically be assigned according to the partitioning method described above. Alternatively, there may exist a situation where the processor module 12, 14, or 16 to which coil instruction 48 will be assigned has insufficient memory to hold a rung having five contact instructions 46.
By breaking the rung at division point 56, part of the rung may be sent to one processor module 12, 14, or 16 and part of the rung may be sent to another processor module 12, 14, or 16.
As depicted in FIG. 6b, the breaking of the rung at division point 56 is performed by adding a special junction coil instruction 48' labeled J1 and not indicating a control point on the control process, but simply a data value J1 within the data table 40 of memory 32 shown in FIG. 2. A second partitionable rung 44" is then created having corresponding junction contact instruction 46' labeled J1 as well. Contact instructions 46 for data values V, W, X, and Y are connected in series to the junction coil instruction 48'. Junction contact instruction 46' and contact instruction 46 for data value Z are connected in series to the coil instruction 48 for control point A.
In this way two independently partitionable rungs 44" are created that are logically equivalent to the rung 44 of FIG. 6, but may be separately allocated to different processor modules 12, 14, or 16.
Referring now to FIG. 7, the present method begins with the partition of the control program 42 into separate portions 38 to be allocated to ones of the processor modules 12, 14, and 16, as indicated by process block 55. This process may be performed by the editing terminal 24 executing a program operating on a complete copy of a control program 42. At succeeding process block 57, each portion is tagged with a source identifier 39 optionally including a branch sequence identifier 53. The portions are then distributed to the processor modules 12, 14, and 16, by downloading over the link 18, as has been described, indicated by process block 59.
In reconstructing the control program 42, the editing terminal 24 executing the stored program, collects the program portions 38 as indicated by process block 60.
The portions 38 are then sorted by their source identifiers 39, and, if present, by the branch sequence identifier 53 within the broader ordering of the source identifiers 39 as shown by process block 62.
At decision block 64, the portions 38 for each source identifier 39 are examined for junction instructions which are specifically identified as such by a data value name (e.g., J1) or memory location of the data value name in the data table 40. If there are no junction instructions, the program proceeds to process block 66; however, if there are junction instructions, the program proceeds to process block 68 and the preamble instructions 49 referred to in the discussion of FIG. 6b are substituted for the junction contact instruction 46' to merge the rungs 44" having the corresponding junction instructions.
The program executed by the editing terminal 24 then proceeds to process block 66 and the contact instructions 46 of all rungs 44" having a common source identifier 39 are examined, starting at the left-most instruction, that is the earliest one evaluated in time during actual operation of the program. If at decision block 66, a given corresponding pair of instructions are the same, then at process block 74 one such instruction is placed in a merged rung 44 to be formed and the program loops back to process block 66.
This cycle of process blocks 66 and 74 continues until a corresponding pair of instructions of the rungs 44" no longer match, this occurring at branch point 54 of FIG. 5, for example. At this time, at process block 74 a branch is inserted in the merged rung 44 and the three unique rung suffixes 47 of the portions 38, not matching per decision block 66 are placed in each of the branch positions according to a branch sequence identifier 53, if any.
If less than all of the portions 38 have the same contact instructions 46 at decision block 66, then those potions 38 having the same instructions are placed in a single branch formed by a process block 74 and the process of comparing instructions of block 66 and 74 is continued with respect to the matching portions 38 for as long as the instructions of those portions 38 continue to match. When instructions of additional portions 38 no longer match, process block 74 is again encountered and an additional branch is inserted for the unmatched portion, and so forth until at process block 74 all instructions have been evaluated in which case the program proceeds to exit block 80, the merging being complete.
Thus, the addition of a relatively compact source identifier allows reconstruction of the control program 42 from its constituent portions 38 as allocated among separate processor modules 12, 14, and 16. For ladder logic programming, the source identifier 39 need only be equal in range to the number of rungs in the program.
The above description has been that of a preferred embodiment of the present invention. It will occur to those that practice the art that many modifications may be made without departing from the spirit and scope of the invention. For example, referring now to FIG. 8, the same technique can be used not simply for ladder logic programs, but for any program having points 51 at which all branches resolve themselves to a single node lending the program to allocation to different processors. In the graph of FIG. 8, circles represent operations performed by the program and lines represent branches in the flow of the program, normally depending on the outcome of test instructions, such as contact instructions 46.
During execution of a basic ladder logic control program 42, each rung 44 will be executed in strict sequence regardless of the execution of the prior rungs 44. Because inter-rung jumps are not allowed in basic ladder logic programming, all branches are resolved at the conclusion of each rung, at points 51. Accordingly, points 51 are natural points where the control program 42 may be divide into portions 38. Nevertheless, the graph of FIG. 8 and the present invention applies generally to any computer program having periodic points 51 of branch resolution. A count of points 51 provides a source identifier 39. A count of branches between points 51 (if any) provides a branch sequence identifier 53.
Generally a separate portion 38 will encompass each branch to a coil instruction 48 (that is one which writes to a variable). Between points 51, any program may be further divided as described above by inserting junction contact instructions 46' and coil instructions 48' into a portion of the graph between points 51.
In order to appraise the public of the various embodiments that may fall within the scope of the invention, the following claims are made.

Claims (8)

We claim:
1. A method of operating a distributed industrial controller executing a control program of instructions to control an industrial process, the distributed industrial controller having a plurality of processor modules intercommunicating on a shared communications link to store and execute portions of the control program, the method comprising the steps of:
(i) dividing the control program into portions;
(ii) assigning each portion a source identifier reflecting the origin of the portion within the control program;
(iii) distributing the portions and source identifiers to the processor modules;
(iv) executing the portions at the processor modules to control the industrial process;
(v) collecting the portions at a singe site; and
(vi) reconstructing the control program from the portions according to the source identifiers;
wherein:
step (i) divides the control program to produce at least one first and second portion having redundant instructions;
step (ii) assigns the first and second portion the same source identifier;
step (iii) distributes the first and second portions to different processor modules; and
step (iv) merges the first and second portions according to their common source identifier.
2. The method of claim 1 wherein the control program is a ladder logic program having a series of rungs with contact instructions and coil instructions and wherein the portions are rungs of the ladder logic program and wherein the source identifier is a sequence number of the rung in the ladder logic program.
3. The method of claim 2 wherein the control program is a ladder logic program having a series of rungs with contact instructions and coil instructions and wherein the portions are rungs of the ladder logic program and wherein the first and second portions have some identical sequences of contact instructions and different coil instructions.
4. The method of claim 1 wherein the first and second portions are merged by:
(i) identifying identical sequences of instructions starting at the beginning of the portions according to execution order of the instructions; and
(ii) creating a merged portion incorporating one copy of the identical sequence followed by branches to remaining instructions of the first and second portions following the identical sequences.
5. The method of claim 4 wherein:
step (ii) includes the additional step of assigning a sub-source identifier to each branch of a portion indicating its order in the control program; and
step (iv) reorders the branches within a portion according to the sub-source identifier.
6. The method of claim 1 wherein:
step (i) divides the control program at a division point into a first and second portion by inserting a first junction instruction prior to the division point causing a transmission of a result value from instructions of the first portion prior to the division point on the communications link and a second junction instruction following the division point providing the result value to the other instructions of the second portion;
step (ii) assigns the first and second portion the same source identifier;
step (iii) distributes the first and second portions to different processor modules; and
step (iv) merges the first and second portions by removing the first and second junction instructions and joining the first and second portions at the division point.
7. The method of claim 6 wherein the control program is a ladder logic program having a series of rungs with contact instructions and coil instructions and wherein the portions are rungs of the ladder logic program and wherein the first junction instruction is a coil instruction and the second junction instruction is a contact instruction testing the value of the coil instruction.
8. The method of claim 6 wherein the junction instructions are assigned instruction identifiers unique to junction instructions and wherein the first and second junction instruction are given a common instruction identifier.
US08/963,782 1997-11-04 1997-11-04 Reconstruction tool for editing distributed industrial controller programs Expired - Lifetime US5949674A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/963,782 US5949674A (en) 1997-11-04 1997-11-04 Reconstruction tool for editing distributed industrial controller programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/963,782 US5949674A (en) 1997-11-04 1997-11-04 Reconstruction tool for editing distributed industrial controller programs

Publications (1)

Publication Number Publication Date
US5949674A true US5949674A (en) 1999-09-07

Family

ID=25507703

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/963,782 Expired - Lifetime US5949674A (en) 1997-11-04 1997-11-04 Reconstruction tool for editing distributed industrial controller programs

Country Status (1)

Country Link
US (1) US5949674A (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687257B1 (en) * 1999-08-12 2004-02-03 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing dynamic guaranteed mixed priority scheduling for communications and processing
US20040100982A1 (en) * 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
WO2005022280A1 (en) * 2003-09-03 2005-03-10 Unitronics (1989) (R'g) Ltd. System and method for implementing logic control in programmable controllers in distributed control systems
WO2007075097A1 (en) * 2005-12-26 2007-07-05 Siemens Aktiengesellschaft Processing unit and method for configuring a networked automation system
US20080071821A1 (en) * 2001-08-28 2008-03-20 Zondervan Quinton Y Method for sending an electronic message utilizing connection information and recipient
US20080208364A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Language-based organization of controller engine instances
US20080208361A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Dynamic load balancing using virtual controller instances
US20080208365A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Dynamic versioning utilizing multiple controller engine instances to limit complications
US20080209211A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Security, safety, and redundancy employing controller engine instances
US20080208374A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Testing utilizing controller engine instances
US20080208369A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US20080208375A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. On-line editing associated with controller engine instances
US20080208362A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Scalability related to controller engine instances
US20080208363A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Prioritization associated with controller engine instances
US20080208368A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Construction of an industrial control system using multiple instances of industrial control engines
US20110225216A1 (en) * 2001-07-30 2011-09-15 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US10719643B2 (en) * 2016-09-14 2020-07-21 Mitsubishi Electric Corporation Ladder program editing support apparatus and ladder program editing method
US20220253041A1 (en) * 2018-09-27 2022-08-11 Rockwell Automation Technologies, Inc. Intelligent binding and selection of hardware via automation control objects

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810118A (en) * 1971-04-27 1974-05-07 Allen Bradley Co Programmable matrix controller
US3942158A (en) * 1974-05-24 1976-03-02 Allen-Bradley Company Programmable logic controller
US4165534A (en) * 1977-04-25 1979-08-21 Allen-Bradley Company Digital control system with Boolean processor
US4442504A (en) * 1981-03-09 1984-04-10 Allen-Bradley Company Modular programmable controller
US5452201A (en) * 1993-08-24 1995-09-19 Allen-Bradley Company, Inc. Industrial controller with highly distributed processing
US5504902A (en) * 1993-12-01 1996-04-02 Patriot Sensors And Controls Corporation Multi-language generation of control program for an industrial controller
US5530643A (en) * 1993-08-24 1996-06-25 Allen-Bradley Company, Inc. Method of programming industrial controllers with highly distributed processing
US5796603A (en) * 1996-10-17 1998-08-18 Allen Bradley Company, Inc. Partitioning program for highly distributed control system to reduce network traffic

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810118A (en) * 1971-04-27 1974-05-07 Allen Bradley Co Programmable matrix controller
US3942158A (en) * 1974-05-24 1976-03-02 Allen-Bradley Company Programmable logic controller
US4165534A (en) * 1977-04-25 1979-08-21 Allen-Bradley Company Digital control system with Boolean processor
US4442504A (en) * 1981-03-09 1984-04-10 Allen-Bradley Company Modular programmable controller
US5452201A (en) * 1993-08-24 1995-09-19 Allen-Bradley Company, Inc. Industrial controller with highly distributed processing
US5530643A (en) * 1993-08-24 1996-06-25 Allen-Bradley Company, Inc. Method of programming industrial controllers with highly distributed processing
US5504902A (en) * 1993-12-01 1996-04-02 Patriot Sensors And Controls Corporation Multi-language generation of control program for an industrial controller
US5796603A (en) * 1996-10-17 1998-08-18 Allen Bradley Company, Inc. Partitioning program for highly distributed control system to reduce network traffic

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687257B1 (en) * 1999-08-12 2004-02-03 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing dynamic guaranteed mixed priority scheduling for communications and processing
US20040100982A1 (en) * 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
US20110225216A1 (en) * 2001-07-30 2011-09-15 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US9183207B2 (en) 2001-07-30 2015-11-10 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US9495368B2 (en) * 2001-07-30 2016-11-15 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US9852152B2 (en) 2001-07-30 2017-12-26 Rockwell Automation Technologies, Inc. Method for consistent storage of data in an industrial controller
US20080071821A1 (en) * 2001-08-28 2008-03-20 Zondervan Quinton Y Method for sending an electronic message utilizing connection information and recipient
US20080140703A1 (en) * 2001-08-28 2008-06-12 Zondervan Quinton Y Method for sending an electronic message utilizing connection information and recipient information
US8375306B2 (en) * 2001-08-28 2013-02-12 Nvidia International, Inc. Method for sending an electronic message utilizing connection information and recipient information
US8306998B2 (en) 2001-08-28 2012-11-06 Nvidia International, Inc. Method for sending an electronic message utilizing connection information and recipient information
US7225037B2 (en) 2003-09-03 2007-05-29 Unitronics (1989) (R″G) Ltd. System and method for implementing logic control in programmable controllers in distributed control systems
US20050085928A1 (en) * 2003-09-03 2005-04-21 Haim Shani System and method for implementing logic control in programmable controllers in distributed control systems
WO2005022280A1 (en) * 2003-09-03 2005-03-10 Unitronics (1989) (R'g) Ltd. System and method for implementing logic control in programmable controllers in distributed control systems
WO2007075097A1 (en) * 2005-12-26 2007-07-05 Siemens Aktiengesellschaft Processing unit and method for configuring a networked automation system
US20080208361A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Dynamic load balancing using virtual controller instances
US7987004B2 (en) * 2007-02-27 2011-07-26 Rockwell Automation Technologies, Inc. Scalability related to controller engine instances
US20080208363A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Prioritization associated with controller engine instances
US20080208368A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Construction of an industrial control system using multiple instances of industrial control engines
US7684876B2 (en) 2007-02-27 2010-03-23 Rockwell Automation Technologies, Inc. Dynamic load balancing using virtual controller instances
US7778714B2 (en) 2007-02-27 2010-08-17 Rockwell Automation Technologies, Inc. On-line editing associated with controller engine instances
US7778713B2 (en) 2007-02-27 2010-08-17 Rockwell Automation Technologies, Inc. Construction of an industrial control system using multiple instances of industrial control engines
US7797060B2 (en) 2007-02-27 2010-09-14 Rockwell Automation Technologies, Inc. Prioritization associated with controller engine instances
US7853336B2 (en) 2007-02-27 2010-12-14 Rockwell Automation Technologies, Inc. Dynamic versioning utilizing multiple controller engine instances to limit complications
US7870223B2 (en) 2007-02-27 2011-01-11 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US7899559B2 (en) 2007-02-27 2011-03-01 Rockwell Automation Technologies, Inc. Language-based organization of controller engine instances
US20080208362A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Scalability related to controller engine instances
US20080208375A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. On-line editing associated with controller engine instances
US20080208369A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US20080208374A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Testing utilizing controller engine instances
US8856522B2 (en) 2007-02-27 2014-10-07 Rockwell Automation Technologies Security, safety, and redundancy employing controller engine instances
US20080209211A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Security, safety, and redundancy employing controller engine instances
US20080208365A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Dynamic versioning utilizing multiple controller engine instances to limit complications
US9841736B2 (en) 2007-02-27 2017-12-12 Rockwell Automation Technologies, Inc. Security, safety, and redundancy employing controller engine instances
US20080208364A1 (en) * 2007-02-27 2008-08-28 Rockwell Automation Technologies, Inc. Language-based organization of controller engine instances
US10719643B2 (en) * 2016-09-14 2020-07-21 Mitsubishi Electric Corporation Ladder program editing support apparatus and ladder program editing method
US20220253041A1 (en) * 2018-09-27 2022-08-11 Rockwell Automation Technologies, Inc. Intelligent binding and selection of hardware via automation control objects
US11726457B2 (en) * 2018-09-27 2023-08-15 Rockwell Automation Technologies, Inc. Intelligent binding and selection of hardware via automation control objects
US20230341839A1 (en) * 2018-09-27 2023-10-26 Rockwell Automation Technologies, Inc. Intelligent binding and selection of hardware via automation control objects

Similar Documents

Publication Publication Date Title
US5949674A (en) Reconstruction tool for editing distributed industrial controller programs
EP0331060B1 (en) Programmable controller with stored tokenized source code
US6080204A (en) Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing
US4758953A (en) Method for generating logic circuit data
US6173208B1 (en) Method for generating control codes for use in a process control system
CA2107833C (en) Regeneration of process control flow diagrams for programmable logic controllers
US5896289A (en) Output weighted partitioning method for a control program in a highly distributed control system
US5005152A (en) Industrial controller with decompilable user program
US20060036798A1 (en) Static memory allocation in a graphical programming system
US4309756A (en) Method of automatically evaluating source language logic condition sets and of compiling machine executable instructions directly therefrom
US5473546A (en) Method for flattening hierarchical design descriptions
US5291427A (en) Method for assisting the development of a set of communicating automata
US4244034A (en) Programmable dual stack relay ladder line solver and programming panel therefor
ATE251319T1 (en) PROGRAMMABLE SYSTEM AND METHOD FOR BRANCH PREDICTION FOR COMPUTER SYSTEMS
US6173245B1 (en) Programmable logic array device design using parameterized logic modules
US5911061A (en) Program data creating method and apparatus for use with programmable devices in a logic emulation system
US4217658A (en) Process control system that controls its outputs according to the results of successive analysis of the vertical input columns of a hypothetical ladder diagram
CN109934507A (en) A kind of method and device of operation flow scheduling
US5796603A (en) Partitioning program for highly distributed control system to reduce network traffic
JPH0816429A (en) Parallel program generation supporting device, parallel program generating method, and parallel program executing device
EP0427391B1 (en) Operation assignment method and apparatus therefor
US5671383A (en) Register renaming in a superscalar microprocessor utilizing local and global renamer devices
Valavanis et al. Hardware and software for intelligent robotic systems
US20110010689A1 (en) System for Writing a Simulation Program
US10241764B2 (en) Automatically transform pass-by-value semantics into pass-by-reference implementation

Legal Events

Date Code Title Description
AS Assignment

Owner name: ALLEN-BRADLEY COMPANY, INC., WISCONSIN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SONG, YIPING;COPPENHAVER, ROBERT J.;REEL/FRAME:008804/0077;SIGNING DATES FROM 19971103 TO 19971104

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12