WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method of programming industrial controllers with highly distributed processing    
United States Patent5530643   
Link to this pagehttp://www.wikipatents.com/5530643.html
Inventor(s)Hodorowski; John (Hales Corners, WI)
AbstractA highly distributed industrial control system employs a number of separate control modules communicating together on a shared communications medium. Each module emulates one or more basic electrical parts having electrical terminals, such as switches and relays, and transmits production messages indicating the state of the parts, such as conducting current or not. A connection list for each part in each control module defines message identifiers of other parts whose production messages are received by the control module and interpreted as current flow to one or more of its parts. The control system is programmed by generating a schematic on a programming terminal showing connections of terminals on symbols of the parts such as would represent actual wiring of the emulated parts. A parts layout diagram is used in conjunction with the schematic to identify each part to a physical module. In this way the program is divided to run concurrently on the various modules without explicit instructions by the programmer.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5530643
Method of programming industrial controllers with highly distributed

     processing - US Patent 5530643 Drawing
Method of programming industrial controllers with highly distributed processing
Inventor     Hodorowski; John (Hales Corners, WI)
Owner/Assignee     Allen-Bradley Company, Inc. (Milwaukee, WI)
Patent assignment
All assignments
Publication Date     June 25, 1996
Application Number     08/360,862
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 21, 1994
US Classification     700/86 700/83
Int'l Classification     G06F 019/00
Examiner     Envall Jr.; Roy N.
Assistant Examiner     Garland; Steven R.
Attorney/Law Firm     Baxter; Keith M. Miller; John M. , Horn; John J. ,
Address
Parent Case     This application is a continuation-in-part of application 08/111,237 filed Aug. 24, 1993, now U.S. Pat. No. 5,452,201.
Priority Data    
USPTO Field of Search     364/131 364/132 364/133 364/134 364/135 364/136 364/146 364/147 364/185 364/131 364/132 364/133 364/134 364/135 364/136 364/488 364/491 364/578 395/155 395/159 395/161 395/500 395/700
Patent Tags     programming industrial controllers highly distributed processing
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5142469
Weisenborn
700/17
Aug,1992

[0 after 0 votes]
5103421
Ward
707/3
Apr,1992

[0 after 0 votes]
5051938
Hyduke
703/15
Sep,1991

[0 after 0 votes]
4831525
Saito
717/107
May,1989

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A method of programming a highly distributed industrial controller comprised of a plurality of physically distinct modules communicating along a shared communications link, the modules transmitting and receiving messages on the communications link, the method of programming comprising the steps of:

(a) generating a logical diagram depicting the industrial controller in the form of an electrical schematic of electrical symbols on an electronic display screen,

the electrical symbols representing elemental electrical functions and having at least one input terminal and at least one output terminal,

the terminals representing points between which current flows according to the elemental function, each terminal having a state indicating current flow,

the terminals connected by lines representing wires to terminals of other electrical symbols and

wherein

one such electrical symbol is connected to a power source symbol;

(b) generating a physical diagram, on the electronic display screen, showing outlines representing the modules surrounding physical symbols representing the elemental functions to be performed by the modules;

(c) programming the modules to emulate the elemental function of the physical symbols associated with the module by the physical diagram; and

(d) compiling the physical and logical diagrams to generate a communications table establishing communications between the modules on the communications link so that the elemental functions executed by a given module may communicate the state of their terminals with other elemental functions in other modules as if the electrical symbols of those elemental functions were wired together according to the logical diagram.

2. The method of claim 1 wherein each module has a unique address on the shared communications link and wherein the compilation of step (d) produces an address list indicating for each given elemental function performed by a given module, the address of other modules having other elemental functions whose electrical symbols are connected to the electrical symbol of the given elemental function by the logical diagram.

3. The method of claim 1 wherein the physical symbols depict the appearance of a physical equivalent to the elemental function.

4. The method of claim 1 wherein the physical diagram indicates the interconnection of the modules by the shared link by means of a line connecting the outlines.

5. The method of claim 1 wherein step (d) comprises:

(i) reviewing the physical diagram to assign each terminal of the electrical symbols with an address formed of an address of the module to which its elemental function is allocated and a unique sub-address within that module;

(ii) reviewing the logical diagram to determine the interconnections between each electrical symbol; and

(iii) relating the interconnection to the assigned addresses to produce the communications table.

6. The method of claim 1 wherein each module has a capability index indicating those elemental functions that can be performed by that module and wherein the compiling of step (d) reviews the physical diagram and the capability index of the modules to verify that the elemental functions assigned to each module can be performed by the module and if not provides an indication to an operator.

7. The method of claim 1 wherein each module has a capability index indicating those elemental functions that can be efficiently performed by that module and wherein the compiling of step (d) also reviews the physical diagram and alters the assignment of elemental functions to the physical modules if the allocation of elemental functions indicated by the physical diagram allocates elemental functions to modules that cannot efficiently perform those elemental functions.

8. The method of claim 7 including the step of:

(e) identifying each elemental function as either module dependent and thus not freely movable to another module or module independent, and reallocating the module independent elemental functions to modules other than those indicated by the physical diagram to ensure the module independent functions are allocated to modules that can efficiently perform the elemental functions.

9. The method of claim 7 wherein the capability index is a function of the module hardware and of the number of elemental functions assigned to the module.

10. The method of claim 1 including the step of:

(e) identifying each elemental function as either module dependent and thus not freely movable to another module or module independent, and reallocating the module independent elemental functions to modules other than those indicated by the physical diagram to reduce the need for communications between modules on the shared communications link.

11. The method of claim 1 including the additional step of:

(e) loading at least a portion of the communication table into each module so that it may initiate messages to other modules to communicate the state of the terminals of the electrical symbols of its elemental functions to the elemental functions of the other modules.

12. The method of claim 1 wherein the physical diagram of step (b) is generated by selecting among a menu of module types having predefined construction electrical symbols.

13. A method of programming a highly distributed industrial controller comprised of a plurality of physically distinct modules communicating along a shared communications link, the modules transmitting and receiving messages on the communications link, the method of programming comprising the steps of:

(a) writing a logical program indicating a logical operation of the industrial controller, the logical operation comprised of a purality of elemental functions;

(b) writing a physical program indicating an allocation of the elemental functions to modules;

(c) programming the modules to emulate the elemental functions indicated by the physical program;

(d) compiling the physical and logical programs to generate a communications table establishing the communications between the modules on the communications link so that the elemental functions executed by a given module may communicate with other elemental functions in other modules to execute the logical program; wherein each module has a capability index indicating those elemental functions that can be efficiently performed by that module and wherein the compiling of step (d) reviews the physical program and the capability index of the modules to verify that the elemental functions assigned to each module can be efficiently performed by the module and if not provides an indication to an operator.

14. The method of claim 13 wherein the compiling of step (d) also reviews the physical program and alters the assignment of elemental functions to the physical modules if the allocation of elemental functions indicated by the physical diagram allocates elemental functions to modules that cannot efficiently perform those elemental functions.

15. The method of claim 13 including the step of:

(e) identifying each elemental function as either module dependant and thus not freely movable to another module or module independent, and reallocating the module independent elemental functions to modules other than those indicated by the physical program to reduce the need for communications between modules on the shared communications link.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field 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.

2. Background Art

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 typically centralized, 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 program. The stored program includes instructions, which when executed, examine the condition of selected inputs to the controller from sensing devices on the controlled equipment, and energize or de-energize selected outputs or actuators from the controller to operate devices on the controlled equipment.

Inputs to the industrial controller may be discrete binary signals, such as those from switches, which may detect limits of process variables such as motion, temperature, time, or other quantities, or the inputs may be analog measures of process variables which are generally then converted to digital words for processing, or the inputs may be multi-variable information.

Similarly, the outputs of the industrial controller may be either discrete binary signals as produced, typically, by mechanical or solid state relays; analog outputs produced by means of a digital to analog converter; or multi-variable commands. Some of the inputs and outputs to the centralized controller may be remotely located and connected to the controller by means of a digital communications link. Typically, the network connects the controller with a remote I/O rack at which a number of inputs and outputs are clustered.

The centralized architecture of current industrial control systems reflects both the historically high cost of computer hardware (as may be reduced by the use of a single centralized controller) and the desire for centralized reporting and coordination of the operation of an entire industrial process. Nevertheless, a centralized controller architecture is not ideal for all control tasks.

For some simple control tasks, with few inputs and outputs, the centralized controller may be unnecessarily complex and expensive, providing unneeded features and capacity. Conversely, for some complex control tasks, with many inputs and outputs, the speed limitations of the centralized controller, or its link to remote inputs and outputs, may significantly degrade the performance of the control system. The centralized controller processes each input and output of the control system, sequentially. For large programs, a significant delay may occur between the changing of an input and the control of a corresponding output. If the delay is large enough, the control system may become sluggish or unpredictable. With a centralized controller, the state of each input and output must be repeatedly transmitted to the centralized controller at a rate sufficient for the target application. When there are many remote inputs and outputs to the control system, the capacity of the link between the I/O and the centralized controller may become a significant limitation.

In a centralized architecture, a failure of the single controller typically disables the entire control system. Troubleshooting the cause of the controller failure is hampered if the failure is such that the failed controller cannot report information about its internal operation or execute troubleshooting programs.

Present industrial controllers are ordinarily programmed by means of a "ladder logic" language in which the control program is represented as ladders whose vertical rails represent a power source or power return and whose rungs are series and parallel connected contacts and relay coils. The contacts may be either normally-open or normally-closed as controlled either by external inputs or by relay coils. The limited set of commands in a ladder diagram (contacts and coils) may be efficiently processed by a reduced instruction set computer ("RISC").

Although this language is simple in concept, for extremely long programs, a ladder diagram may be difficult for a human programmer to interpret. Troubleshooting large programs written in ladder logic can be difficult because the flow of control in the ladder program is not readily visualized. Further, for most control systems, additional functional elements will be required beyond contacts and relay coils, such as counters, comparators, timers and the like, whose implementation as relay logic is extremely cumbersome.

SUMMARY OF THE INVENTION

The present invention is an architecture and programming method for a highly distributed industrial control system where each of the control modules, for example, each input, sensor, output, or actuator carries with it a small portion of the total control program. The distributed nature of this architecture allows for extremely fast processing times because the actual program may be simultaneously executed on the various control modules. The distributed nature of the architecture also improves the chance that a failure of a single component will not disable the entire control system, and improves the ability to troubleshoot any failure by interrogating the remaining, undamaged control modules.

Importantly, the present invention provides a highly distributed control architecture where each control module emulates a standard elemental electrical component, such as a switch or light. This approach provides not only an architecture, but a programming "language" in the form of an electrical schematic, that is particularly well suited to simple industrial controls.

For reasons of efficiency, more than one elemental function may be performed by a given electronic module. For example, multiple pushbutton switches, each being an elemental function, may be incorporated into a single enclosure having a single microprocessor communicating with the common link. In addition, some elemental functions, for example, a timer, may have no connection with the outside world and hence may be efficiently emulated by an electronic module having another primary task, such as that of controlling a light.

A panel layout drawing provides a simple method of allocating pieces of the overall control program among the various control modules--a problem that often plagues attempts at "parallel processing". The panel layout drawing flexibly and intuitively defines what physical hardware emulates what elemental functions.

More particularly, then, the present invention provides a graphical language for programming a highly distributed industrial controller comprised of a large number of physically distinct modules, each emulating elemental electrical functions, where the modules communicate along a shared communications medium by transmitting messages on that medium, and where one module may emulate several elemental functions.

The programming involves first generating a logical diagram depicting the industrial controller in the form of an electrical schematic of electrical symbols on an electronic display screen. The symbols each represent an elemental electronic function and have at least one input terminal and one output terminal between which current flows according to the elemental function. The terminals of one symbol are connected on a schematic to the terminals of other symbols and at least one electrical symbol is connected to a power source symbol.

In the second step of the programming, a physical diagram is generated showing outlines representing actual modules linked to symbols representing the elemental functions to be performed by the modules. The modules are programmed to emulate the elemental functions linked to them by the physical diagram and the elemental functions are virtually connected by according to the logical diagram of the schematic.

This latter step is accomplished by compiling the physical and logical diagrams to generate a communication table. The communication table in turn establishes the protocol of communications between the modules on the communication medium so that the elemental functions executed by each module may communicate with selected other elemental functions as if those elemental functions were wired together according to the schematic.

Thus, it is one object of the invention to provide a method of programming highly distributed industrial controllers that offers an intuitive way not only to describe the logic of the control but to allocate the processing functions to various spatially distributed modules.

Industrial process designers currently produce both logical schematics and physical "panel layout" views. These drawings are used to describe the construction and operation of discrete industrial control systems to electricians and others who must assemble and wire together the various components. The schematics and panel layout drawings are typically prepared on computer assisted design ("CAD") systems. The present invention uses data files developed by the CAD system as an input to a compiler which allocates the functions among the modules and virtually wires them together through messages on the link.

Thus, it is another object of the invention to provide a programming language which minimizes effort by the industrial control designer. Using CAD produced panel layout drawings to allocate processing functions among distributed components adds no additional steps to the design process.

Each module may have a predetermined capability index assigned to it indicating those elemental functions that can be performed by that module or how many of a particular kind of elemental functions can be performed by that module. Assignments of the elemental functions of the logical diagram to a particular module may be checked against the capability index to provide a warning to the programmer or alternatively to re-allocate the elemental function to another module. The allocation of elemental functions to modules can be constrained so that elemental functions that need to be associated with a particular module, for example because of connections to the outside world, will not be moved.

Thus, it is another object of the invention to permit automatic allocation of elemental functions to spatially separate modules according to the physical diagram produced by the designer but in a manner consistent with the physical limitations of the electronic modules. Use of a capability index permits proper allocation to be verified without operator intervention and without affecting the schematic diagram.

The foregoing and other objects and advantages of the invention will appear from the following description. In the 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. For clarity, two simple examples of a control system are provided. Such embodiments do not necessarily represent the full scope of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial representation of a simple, highly distributed control system according to the present invention having a number of interconnected control modules for being programmed by a programming terminal to control a motor for a conveyor system;

FIG. 2 is a simplified representation of a conveyor system controlled by the control system of FIG. 1;

FIG. 3 is a schematic representation of the control system of FIG. 1 as implemented with standard electrical components showing the division of the functionality of those components into the control modules of FIG. 1;

FIG. 4 is a schematic diagram of a control module suitable for use with the present invention;

FIGS. 5(a)-(d) are an example set of electrical graphic symbols having terminals, such as may define the elemental functions of the parts of the control modules of the present invention and which, together with wire lines, form the programming language of the highly distributed control system of the present invention;

FIG. 6 is a simplified representation of the control modules of FIG. 1 showing their addresses and the contents of their connection lists which provide virtual connection between the control modules;

FIG. 7 is a more complete representation of the memory in each control module showing both the connection lists of FIG. 6 together with other data which defines the programming and logic attributes of the control modules;

FIG. 8 is a flow chart of the operation of the programming terminal of FIG. 1 such as is used to program the control system of the present invention and to allocate and download that program among the various modules;

FIG. 9 is a flow chart of the operation of a control module of FIG. 1 showing its response to various messages on the network including those from other modules and from the programming terminal;

FIG. 10 is a screen display such as may be seen on the programming terminal of FIG. 1 showing a parts bin of control modules and parts of control modules as found in FIG. 5 and various programming tools as may be used to generate a schematic;

FIG. 11 is the completed schematic of the control logic for the highly distributed industrial control of FIGS. 1 and 3 as displayed on the screen of FIG. 10 and as is used to generate the necessary connection lists and wire lists for the control system;

FIG. 12 is a perspective view of a simple process for staging and releasing balls such as may use the highly distributed control system of the present invention;

FIG. 13 is a completed schematic of an alternative industrial control system formed of elemental functions such as switches and solenoids connected together with wires, such schematic as may be developed on a CAD system and which represents a logical description of the industrial controller;

FIG. 14 is a physical view or "panel layout" of the industrial controller of FIG. 13 showing representations of the actual control modules used to implement the industrial controller and incorporating physical symbols of the various elemental functions shown in FIG. 13;

FIG. 15 is a flow chart of the compilation process of the present invention in which the logical and physical views of FIGS. 12 and 13, as displayed on an electronic display terminal and represented by graphic coordinates, are compiled to lists which may be combined to produce a connection table used for the communication of the physical modules of FIG. 14 with one another;

FIG. 16 is a chart depicting an elemental function data base of supplemental information about the elemental functions that may be interconnected in the logical diagram of FIG. 13;

FIG. 17 is a chart representation of an electronic module data base of information about the physical modules that may be interconnected in the logical diagram of FIG. 13; and

FIG. 18 is a flow chart of the steps of the compilation of FIG. 15.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring to FIG. 1, a highly distributed industrial control system ("HDIC") 10 includes a number of control modules 12 connected on a shared communications medium 14. The communications medium 14 employs a cable 16 of copper conductors along which digital messages may be transmitted, and optionally two power conductors 18 which provide 24 volts DC to the control modules 12. As will be described in more detail below, each control module 12 is connected in parallel across the twisted pair 16 so that communication may occur between any module and all of the other control modules 12.

Also connected to the twisted pair 16 of the communications medium 14 is a programming terminal 20 having a display screen 22, a processor 24 and a keyboard 26. The programming terminal may be a general purpose personal computer, such as are well known in the art, with the display screen 22 providing for the output of text and graphics from the processor 24, and the keyboard 26 allowing for the entry of alphanumeric characters to the processor 24. The programming terminal 20 also includes disk drive 30 which allows programs to be loaded to the programming terminal 20 from removable magnetic recording disks (not shown) inserted in the disk drive 30, and which allow data to be saved to the magnetic recording disks. A cursor control device such as a mouse 28 may be connected to the programming terminal 20 to aid in the manipulation of graphic icons as will be described below.

The programming terminal 20 includes an interface to the twisted pair 16 such as will be described in detail with regard to the control modules 12 below and which allows communication to the control modules 12 in a manner similar to that provided among the control modules 12.

HDIC Applied to a Conveyor Line

Referring now to FIGS. 1 and 2, an example of a highly distributed industrial control ("HDIC") system 10 incorporates five control modules 12 to control a simple conveyor line 13. The conveyor line 13 includes a conveyor belt 32 that may move products 34 along its upper surface in response to the rotation of the conveyor belt by motor 36. Motion of the conveyor belt is initiated by pressing a lighted pushbutton 38 on a pushbutton module 40. Motion of the conveyor belt 32 is stopped when the product 34 strikes the actuator arm 43 of a limit switch module 42 or when the stop pushbutton 44 is pressed. The stop pushbutton is also incorporated within the pushbutton module 40.

Referring also to FIG. 3, the first control module 12 employed in this HDIC system 10 is a disconnect module 46 which includes fusing for the three-phase power to the motor 36 and a disconnect switch 64 actuated by handle 48. The disconnect module 46 receives the communications medium 14 and also three-phase power which it connects or disconnects from a disconnectable three-phase bus 50. Generally, the status of the output of the disconnect as either connecting to or disconnecting the three-phase power from the bus 50 is communicated on the communications medium 14 whereas the actual actuation of the disconnect is performed manually By means of the handle 48.

A physical transformer 53, providing the 24 volts of the power conductors 18 is typically connected upstream of the disconnect module 46 to preserve network communications even when the disconnect module 46 disconnects three-phase power from the control system. In this example, the transformer 53 is not a control module 12. Nevertheless, a virtual transformer 53' is contained within the disconnect module having a primary winding connected across two of the phases of the three-phase power switched by the disconnect switch. The leads of the secondary winding of this virtual transformer pass through virtual circuit breakers 55 to power source rail 74 and circuit breaker 57 to power return rail 80 for the control logic. The virtual transformer provides a number of system features, including: (1) opening the disconnect 64 disables all associated control logic, (2) the virtual circuit breakers 55 and 57 provide an intuitive method of disabling selected logic for editing purposes.

As will be described, generally, the parts of the modules 12 are virtually connected via the communications medium 14 identically to the connections of their physical counterparts. One exception is the physical transformer 53. Unlike the virtual transformer 53', the physical transformer 53 is connected before the disconnect module 46 so that the control modules 12 do not lose actual power when three phase power is disconnected by the disconnect module 46.

The second control module 12 is the pushbutton module 40 which as briefly described includes three parts: a start pushbutton 38, lamp 39 for lighting pushbutton 38, and an unlighted stop pushbutton 44. The pushbutton module 40 provides a control module 12 that allows user input to the HDIC system 10.

The third control module 12 is a limit switch module 42 which is an example of the simplest possible control module 12 having only a single part (a switch) providing only a single switching function in response to movement of its actuator arm 43.

The fourth control module 12 is an motor starter module 52 which receives the three-phase power from the bus 50, after the disconnect module 46, and transmits it to the motor 36. The motor starter module 52 includes four different parts: 1) "thermal" overload elements 70 for each phase, which detect current flow through the windings of the motor 36 to actuate 2) normally-closed overload contacts 78, and 3) a relay coil 72 for controlling 4) normally-open contacts 68 on each phase of the three-phase power to connect and disconnect the motor 36 absent an overload condition and 5) latching auxiliary contact 76. The overload trip point for the overload elements 70 is set by the programming terminal 20 over the communications medium 14 as will be described. It should be noted that although for this example the series connected contacts 78 are treated as one part, each of the contacts 78 could be independently connectable to other parts and thus treated as a separate part. For the purpose of clarity, the following discussion will deal principally with the external wiring between the modules rather than the internal wiring within the modules

Modules, Parts and Virtual Connections

Generally each control module 12 may have any of a variety of different functions and preferably emulate basic electronic components such as are used in industrial control. The elemental electrical components, which alone or in combination define the function of the control modules 12, are termed "parts" and are generally characterized by their having two or more terminals between which current may flow depending on the state of the part. Thus, as mentioned above, disconnect module 46 contains a number of parts (fuses and contacts). In contrast, limit switch module 42 contains a single part being a single pole double throw switch. Representative symbols for some parts are collected in FIG. 5 which shows standard JIC graphic symbols from a JIC manual.

More generally, the terminals of the parts may represent paths of information flow such as might be obtained in a comparator, a one shot, an adder or a counter employed in digital electronics. Ideally, each part embodies an elemental function needed in the HDIC system. This permits maximum flexibility connecting the components of the HDIC system 10 and, as will be discussed below, provides an intuitive method of allocating the entire control program among the control modules 12, and offers maximum resolution for the purposes of troubleshooting the HDIC system 10.

Referring again to FIG. 1, generally each of the control modules 12 are interconnected by the communications medium 14. This form of connection will be termed "network" connection. However, in the implementation of the control program, certain parts of each control module 12 only respond to selected other parts of that or other control modules 12 on the communications medium 14. Hence, the parts of the control modules may be considered to be "virtually" connected only to some of the other parts. The paths of virtual connections are determined by the process of comparing message identifiers of messages on the communications medium 14 to a connection list of message identifiers and will be described in detail below.

In contrast to the network connection of the communications medium 14, and the virtual connections between parts, certain control modules 12 also have "physical" connections to power and the controlled process. For example, the disconnect module is physically connected to the three-phase power and the power bus 50 for actually providing voltage to the motor via motor starter module 52. This physical connection, in which current actually flows, is distinct from the virtual connection.

Referring to FIG. 3, the desired paths of virtual connections between parts may be represented in a schematic showing each part as a standard electrical symbol. The virtual connections between parts are shown by solid lines 62, connecting the terminals on the symbols associated with each part, which represent virtual connections between clusters of parts within the modules 12. The module terminals 60, shown as rectangles, are dependant on the arbitrary aggregation of parts within modules 12 and appear on the schematic to be generated on the programming terminal 20, in a specific mode, only when actual module hardware is selected, and the aggregation is known, as will be described below.

Thus, for example, disconnect module 46 contains seven parts: three contacts 64 of a parallel-actuated disconnect switch, controlled by handle 48, three fuse 66 in series with the contacts 64, and virtual transformer 53'. The parts are internally connected within the module 46 so that there are only four module terminals 60 for virtual connections with other modules: one for the downstream side of each series connected contacts 64 and fuse 66 and one for the lead of the virtual transformer providing power to the power source rail 74. Module terminals 60 are not shown for the upstream side of each series connected contacts 64 and fuse 66 because no module 12 will be connected upstream of the disconnect module 46. Further, module terminals 60 are not provided between the fuses 66 and the contacts 64 because no module 12 will be connected there.

Each module terminal 60 is either an upstream terminal that may receive current flowing directly or through other modules 12 from the power source rail 74 or a downstream terminal providing current directly or through other modules 12 to the power return rail 80. With one exception, the leftmost terminal is the upstream terminal 60 and the rightmost terminal is the downstream terminal 60, observing the convention of left to right power flow. The exception is the virtual transformer 53 where the downstream terminal 60 is to the left to conserve schematic space.

The grouping of the parts in FIG. 3 within dotted lines indicates the physical grouping within control modules 12 of FIG. 1. This physical grouping is permissibly ignored for the purpose of constructing the schematic where, ideally, the virtual connections of the parts dictates their respective placement on the schematic. The graphic symbol for any part of a modules 12 may be located anywhere on the schematic diagram.

In the actual electrical devices emulated by the parts of the control modules 12, the current may flow without restriction in either direction between terminals, as is the case in a switch. As mentioned above, however, the virtual connections between the parts of the control modules 12, by default, observe the more limiting convention that current flows only in one direction between terminals of the parts. Hence, there is a definite upstream or input terminal and a downstream or output terminal as defined by the direction of current flow. This convention is reflected in the symbols that will be used to represent the parts where current may flow only from the left most terminal of the symbol to the right most terminal. As will be understood from the following description, however, the convention of bi-directional current flow may be easily implemented through the present invention's system of virtual connections.

Referring to FIGS. 1 and 3, the parts of the control modules 12 are virtually and physically connected as follows: The disconnect module 46 receives three-phases of power through a physical connection to three-phase power--the virtual connection is implicit. On the downstream side, the disconnect module 46 is physically connected to the three-phase bus 50 to provide power to the motor starter 52 and ultimately to the motor 36. Correspondingly, downstream terminals 60 of disconnect module 46 are virtually connected by lines 62 to upstream terminal 60 of motor starter module 52, mirroring this physical connection. There is an internal virtual connection between the switched three phase power and the primary winding of the virtual transformer 53'. A downstream terminal 60 of the secondary winding of the virtual transformer 53' is connected to other upstream terminals via the power source rail 74.

The upstream terminal 60 of pushbutton 38 in module 40 is also virtually connected to the virtual transformer 53' via the power source rail 74, however there is no physical connection. The downstream terminal 60 of the pushbutton 38 is in turn virtually connected to the input terminal of pushbutton 44. This input terminal of pushbutton 44 is also virtually connected to an output terminal 60 of a latching auxiliary contact 76 which is also virtually connected to power source rail 74 so as to shunt the terminals of pushbutton 38 to provide a latching action as is generally understood in the art. Latching auxiliary contact 76 is a normally-open auxiliary contact also controlled by coil 72. Again, none of these virtual connections have corresponding physical connections.

The output of pushbutton 44 is virtually connected to an upstream terminal 60 of the pole of limit switch module 42 whose normally-closed contact is virtually connected through an output terminal 60 to the input terminal 60 of module 52 to be received by a series connected set of three normally-closed contacts controlled by the thermal overload element 70 to open if there is a thermal overload. These normally-closed contacts 78 provide a virtual path to one terminal of coil 72, through coil 72 and another terminal 60 to a power return rail 80. A lamp 39, used to light pushbutton 38, is virtually connected between the power return rail 80 and the input terminal of the coil 72 to provide an indication that coil 72 has been energized.

The description above is essentially identical to the physical wire connections of actual parts such as coils, pushbuttons and limit switches such as would be used to implement the conveyor system described above. Nevertheless, the connections are not actual wires but simply paths of communication affected by messages on communications medium 14 as will be described in detail below.

Module Hardware

Referring now to FIG. 4, each control module 12 shares a number of characteristics. Each control module 12 may receive the power conductors 18 via power conditioning circuitry 105 which provides protections against reverse polarity and high voltage spikes on the power conductors 18 such as is well known in the industrial electronics field.

Also as described above, the control modules 12 each receive the twisted pair 16 of conductors of communications medium 14. Specifically, the twisted pair 16 is received by two terminals of a removable terminal strip 84 and connected by jumpers in a "daisy chain" fashion. The signal on twisted pair 16 is tapped off of the terminal strip 84 at the first two terminals to be received by a transceiver 85 and then by CAN link controller 86 that provides the necessary timing and bit sequences for the transmission and receipt of messages along the communications medium 14.

The CAN link controller 86 provides a memory mapped interface for the receipt and transmission of formatted messages along the communications medium 14. One example of a CAN link controller 86 is a 80C592 microcontroller preprogrammed for executing the CAN protocols such as is commercially available from Signetics Corporation having offices in Sunnyvale, Calif. The CAN specification defines the requirements which comprise the Media Access Control (MAC) and physical signaling layers of the ISO/OSI for Data Communication Networks. The CAN protocols are specified in ISO document ISO/TC22/SC3/WG1 as authored by Robert Bosch GmbH, hereby incorporated by reference. Generally the CAN standard allows for the communication of asynchronous digital messages along a twisted pair of conductors such as may comprise communications medium 14 at speeds of up to 1 Mbit/sec. The CAN protocol specifies a zero to eight byte data message including an eleven bit arbitration field which determines priority when two nodes need to transmit messages at the same time.

The CAN link controller 86 includes an internal buffer memory (not shown) that may be directly addressed. Each location of the buffer may be loaded with an arbitration field for use in sending and receiving messages. In the case of messages to be sent, the message buffer is also loaded with message data. The CAN link controller 86 automatically transmits the message when the communications medium 14 is free according to the priority of its arbitration field and then provides a signal that the message has been transmitted.

For messages being received, when a message arrives, it is compared against the arbitration fields of each buffer location and the first location with the same arbitration field receives the message. At the time of receipt a signal is generated indicating the receipt.

The CAN link controller 86 communicates by bus 92 with a read only memory 94, a volatile RAM 96, a nonvolatile RAM 98, microprocessor 100 and digital I/O circuitry 102 as are generally understood in the art and as may be implemented within a single dedicated microprocessor 90.

The digital I/O circuitry 102 will communicate with different module specific inputs and outputs depending on the characteristics of control module 12. For example, for pushbutton module 40 shown in FIG. 4, the digital I/O circuitry 102 provides a signal for illuminating pushbutton lamp 39 and receives a signal indicating whether the pushbutton 38 has been pressed. Pushbutton module 40 includes a physical operator, being the stem 108 of the pushbutton, which protrudes out of the housing of the control module 12 and may be pushed inward against the force of a spring 110. The internal end of the stem 108 incorporates a magnet 112 which, when the stem 108 is moved against a Hall effect detector 114 an electrical signal is generated. This signal is received by the I/O circuitry 102.

The various physical components incorporated into the control module 12 will change depending on the control module's characteristics. For example, for limit switch module 42, the lamp 39 will not be present and the push stem 108 may employ a radial motion as befits the actuator arm 43 on the limit switch. Likewise, the motor starter 52 will include circuitry for indicating the current flowing to the motor 36 and for providing a signal that the contact 78 should be opened if that current exceeds a predetermined amount. These physical signals indicative of the external aspects of the HDIC system 10 are received by the bus 92 via digital or analog I/O circuitry 102.

Each control module 12 may also include one or more status indicator LEDs 106, the latter generally indicating that the control module 12 is receiving power and that a program contained in ROM 94 has begun successful execution b