Programmable logic controller and method of operation thereof

Abstract: A method is provided for configuring a smart module (75A) which is coupled to a programmable logic controller (15). The controller (15) includes an initial configuration file which specifies an initial configuration for the smart module. After power up and initialization of the controller, the initial configuration file is transmitted from the controller (15) to the smart module (75A). The initial configuration file is now designated a current configuration specified by the current configuration file. Module specific information which is stored in the module is then displayed (70) to aid a user in configuring the module using a programmer 60. The user can then modify the current configuration file in response to the module specific information which was displayed. This significantly simplifies the process of configuring smart modules for the user.

Description: This invention relates to a method of configuring a programmable logic controller system. Programmable logic controllers (PLC's) are a relatively recent development in process control technology. As a part of process control, a programmable logic controller is used to monitor input signals from a variety of input modules (input sensors) which report events and conditions occurring in a controlled process. For example, a PLC can monitor such input conditions as temperature, pressure, volumetric flow and the like. A control program is stored in a memory within the PLC to instruct the PLC what actions to take upon encountering particular input signals or conditions. In response to these input signals provided by input modules, the PLC derives and generates output signals which are transmitted to various output modules (output devices) to control the process. For example, the PLC issues output signals to open or close a relay, raise, or lower temperature, adjust pressure, or control the speed of a conveyer, as well as many other possible control functions. Programmable logic controllers generally include a central processing unit which is coupled to a main bus into which a plurality of input modules and output modules are coupled. Input expansion boxes and output expansion boxes are usually connected to this main bus to facilitate the coupling of several input and output modules to the main bus of the controller. Modern input and output modules are often rather complex in that they may contain a microprocessor and require substantial setup data from the user. A hand held programmer is generally used to configure such modules and to provide information about the modules to the programmable logic controller. This is a time consuming process in which the user is prompted with a series of questions by the hand held programmer and is required to provide answers which constitute configuration setup information. That is, the user interface which prompts the user with module setup questions is actually located in the hand held programmer software or the control program software for the PLC. Unfortunately, for this reason, in such PLC systems, the software which controls the PLC or the software which controls the hand held programmer must generally be rewritten to accommodate each new input module or output module which is developed. An illustrative method of the present invention seeks to provide a method for configuring a programmable logic controller which simplifies the setup of smart input and output modules for the PLC user. In accordance with one aspect of the present invention, a method is provided for configuring a module which is coupled to a programmable logic controller, the controller including a memory and being capable of executing a control program to control a process. The controller having stored therein an initial configuration file which specifies an initial configuration for the module, a programming unit (60) being connected to the controller and including a keyboard (65) for inputting manual commands to the controller and a display (70) for displaying configuration data, said method comprising the steps of: transmitting (220), by said controller, the initial configuration file from the controller to the module and designating the initial configuration file as a current configuration file; characterized by transmitting (225) by the module, of module specific information stored in memory in the module to said programming unit; displaying (230), by the programming unit display, the module specific information stored in memory (102) in the module, the module specific information comprising data required for configuring the module; and modifying (240), by the keyboard of the programming unit, the current configuration file in the module in response to the module specific information displayed in said displaying step. In accordance with another aspect of the present invention, a method is provided for configuring a module which is coupled to a programmable logic controller, the controller including a memory and being capable of executing a control program to control a process, the controller including an initial configuration file which specifies an initial configuration for the module. A programmable unit (60) being connected to the controller and including a keyboard (65) for inputting manual commands to the controller and a display (70) for displaying configuration data, said method comprising the steps of: determining (205), by the controller, if a particular module is coupled to the controller; transmitting (220), by the controller, of an initial configuration file from the controller to the particular module, said initial configuration file being stored in the particular module and being designated as the current configuration file (95), said transmitting step being performed only if said determining step confirms that the particular module is coupled to the controller, characterized by, transmitting (225), by the particular module, of module specific information stored in memory (102) in the particular module to said programming unit; displaying 230, by the programming unit display, of the module specific information stored in memory in the particular module; inputting commands (240) from the programming unit keyboard for modifying the current configuration file in response to the module specific information displayed in said displaying step; providing, by the particular module, of module specific control data to the controller for enabling control of the particular module by the controller; and if the step of determining confirms that a particular module is not coupled to the controller, establishing (215) a configuration file in the controller for the missing particular module and allowing entry of data into the configuration file from the programming unit so that the controller can execute control programs for operation testing without the missing particular module. The present invention may be better understood by referring to the following description and accompanying drawings in which: FIG. 1 is a block diagram of a programmable logic controller on which a method of the present invention may be practised; FIG. 2 is a block diagram of a smart module; and FIG. 3 is a flowchart detailing the steps employed in a method of the present invention. FIG. 1 shows a block diagram representation of a programmable logic controller system 10 on which a method of the invention may be practiced. System 10 includes a programmable logic controller (PLC) 15 including a central processing unit (CPU) 20 coupled to a main bus 25. A clock 30 is coupled to CPU 20 to provide a time base thereto. A read only memory (ROM) 35 is coupled to main bus 25 to provide CPU 20 with permanent storage in the conventional fashion. A random access memory (RAM) 40 is coupled to main bus 25 to provide memory space for CPU 20 to conduct PLC operations and store user programs. A hand held programmer (HHP) 60 is coupled to main bus 25 to enable the user to input information into PLC 15. Programmer 60 includes a keyboard 65 through a serial port 45 on which the user types input information and further includes a display 70 to permit the user to view the input information while the input information is being keyed into keyboard 65. A plurality of input ports are coupled to main bus 25 of PLC 15 via one or more input expansion boxes such as input expansion boxes 75 and 80 which are coupled to main bus 25 as shown in FIG. 1. More specifically, expansion box 75 includes a plurality of input ports in the form of bus connector slots (not shown) for receiving respective input modules or cards 75A, 75B and 75C therein, each module having a port address associated therewith. Although for purposes of illustration, input expansion box 75 is shown as including three input modules 75A, 75B, and 75C, in actual practice box 75 could accommodate more input modules by employing expansion boxes with more slots (input ports) than shown. Each of input modules 75A, 75B, and 75C is coupled to a respective input circuit 77A, 77B, and 77C. Input circuits 77A, 77B, and 77C sense respective conditions and generate input signals which are reported to the input modules respectively coupled thereto. The actual input points monitored by a control program in PLC 15 are located at these input circuits 77A, 77B, and 77C, respectively or are coupled thereto. In a fashion similar to expansion box 75, expansion box 80 includes a plurality of inputs or slots into which input modules cards 80A, 80B, and 80C are pluggable. A plurality of input circuits 82A, 82B, and 82C are coupled to input modules 80A, 80B, and 80C, respectively, such that information sensed at the respective input points associated with input circuits 82A, 82B, and 82C is provided to input modules 80A, 80B, and 80C for transmission to and processing by PLC 15. A plurality of output ports are coupled to main bus 25 of PLC 15 via one or more output expansion boxes such as output expansion boxes 85 and 90 which are coupled to main bus 25. That is, in a manner similar to that of input expansion box 75, output expansion box 85 includes a plurality of output ports in the form of bus connector slots (not shown) for receiving respective output modules 85A, 85B, and 85C therein, each output module having a respective port address associated therewith. Although for example purposes, output expansion box 85 is shown as including three output modules 85A, 85B, and 85C. In actual practice, output expansion box 85 may include a greater number of slots to accommodate a correspondingly greater number of output modules. Each of output modules 85A, 85B and 85C produces a respective output control signal which is processed by an output circuit and then used to control or drive a particular device. More specifically, each of output modules 85A, 85B and 85C is coupled to a respective output circuit 87A, 87B, and 87C. Output circuits 87A, 87B, and 87C may be alternatively referred to as amplifiers or device drivers which amplify the level of the output control signals which provide up to a level sufficient to drive the particular controlled device (not shown) coupled to the output circuit. The actual output points controlled by the control program in PLC 15 are located at these output circuits 87A, 87B, and 87C, respectively or are coupled thereto. In a manner similar to output expansion box 85, output expansion box 90 includes a plurality of outputs or slots into which output cards 90A, 90B, and 90C are pluggable. A plurality of output circuits 92A, 92B, and 92C are coupled to output cards 90A, 90B, and 90C, respectively, such that the control signals associated with output circuits 90A, 90B, and 90C are provided to output cards 90A, 90B, and 90C to facilitate control of the devices coupled to the output points associated with such output circuits. It will be recalled from the earlier discussion that a control program is provided to PLC 15 to control the operation of PLC with respect to a particular controlled process. PLC 15 is not limited to executing a particular control program. Rather, different control programs may be loaded at different times into PLC 15 to enable PLC 15 to monitor various input points and to issue output control signals to various output points to permit control of different controlled processes. The illustrative embodiment of the invention is concerned with the configuration of so called "smart I/0 modules", namely those modules including a microprocessor requiring specific configuration and status monitoring by the user, and which only communicate on main I/0 bus 25. Module 75A will be considered to be such a smart module. One example of such a smart module 75A is the high speed counter module described and claimed in a copending US patent application entitled "Reconfigurable Counter Apparatus And Method Of Operation Thereof", (30GF-1008) in which is disclosed a reconfigurable counter which includes first and second memories coupled via a common bus to a microprocessor which controls the process of configuring and reconfiguring the counter. A programmable hardware array, coupled to the microprocessor, is capable of being programmed to emulate a plurality of different counter types. The first memory stores a plurality of different counter configuration profiles, each of which corresponds to a different type counter configuration. In one or more of the selected counter types, different counter modes such as an up-down counter mode, pulse direction counter mode and A quad B counter modes are available. When the user indicates a selected counter profile to the microprocessor, the microprocessor writes the corresponding counter configuration profile from the first memory into the programmable hardware array using the parameters or modes of operation stored in the second memory until such time as the user indicates the choice of another counter profile to the microprocessor. Appropriate signals from a programmable logic controller can instruct the high speed counter to be configured as 1) 4 low complexity Type A counters, each of which may be configured as an up counter or a down counter; or 2) 2 medium complexity Type B counters; or 3) 1 high complexity Type C counter. In conventional PLC systems, all communications with the hand held programmer 60 are generally done through the PLC CPU. This places a very heavy burden on the hand held programmer software and control program software since the user interface, namely all programming, editing, data monitoring and configuration screens must be generated by such software. In other words, the user interface is largely provided by the hand held programmer software and the control program software so as to undesirably load down such software. In accordance with the present illustrative method of the present invention, most of this interface software required for configuration and status monitoring in the hand held programmer software or the control program software is advantageously eliminated by locating module specific information in a smart module such as module 75A. As will be seen subsequently, if a module is not present in a particular slot, provision is made for the user to manually construct a generic configuration file in PLC 15. In one embodiment of the invention, the protocol established for communicating between PLC 15 and smart module 75A is selected such that messages sent by PLC 15 to smart module 75A are fixed in length so that module 75A knows ahead of time how many bytes are to be transferred to it in a particular message. However, messages sent from module 75A back to PLC 15 are variable in length in one embodiment of the invention. It is noted that when PLC 15 is first powered on and initialized, a configuration file which is contained in PLC 15 is transmitted to smart module 75A to instruct module 75A what initial configuration to assume. This configuration file is stored in smart module 75A and smart module 75A assumes the configuration specified in this initial configuration file which was received from PLC 15. As will be discussed subsequently, the user can employ the illustrative method of the present invention to then modify this initial configuration by using hand held programmer 60. The configuration which module 75A possesses at a particular point in time is later referred to as the "current configuration". For purposes of configuring smart module 75A and for determining the status of smart module 75A, smart module data items are referenced by hand held programmer 60 as a list of parameters stored in module 75A. More specifically, as seen in the representation of smart module 75A in FIG. 2, smart module 75A includes two of such parameter lists, namely a module configuration information list 95 and a module status information list 100. Each of the parameters in configuration list 95 and status list 100 is assigned a unique number. Configuration list 95 and status list 100 are stored in a random access memory (RAM) 102 which is situated within smart module 75A. Module 75A includes an input/output port 104 for coupling module 75A to bus 25 via input expansion box 75. In the illustrative method of the present invention, when hand held programmer 60 is used either to program a particular module 75A with configuration information or to monitor the status of such module, programmer 60 sends a data request to module 75A using such selected unique parameter numbers as desired. In response, module 75A returns the parameter data stored in module 75A corresponding to these particular parameter numbers. Additionally, in response, module 75A also sends hand held programmer 60 display 70 information which describes how the returned parameter data should be displayed on the hand held programmer screens. Moreover, when appropriate in response to the above discussed data request, module 75A sends high and low limits on the data for a particular parameter and any ASCII descriptors required. Therefore, hand held programmer 60 need not be informed as to the specifics about the structure of module 75A or how module 75A is configured. Rather, smart module 75A sends this module specific configuration information to hand held programmer 60 to aid the user in setting the configuration of module 75A. In the illustrative method of the present invention, PLC 15 is capable of sending the following commands to module 75A: 1) Request Configuration Data 2) Send Configuration File. 3) Request Configuration File 4) Request Status Data 5) Send Individual Configuration Parameter 6) Send Parameter Number More specifically, the following Table 1 lists these commands adjacent each command's associated hexadecimal code. The above commands are now discussed. The REQUEST CONFIGURATION DATA command is sent by PLC 15 to request the current configuration stored in smart module 75A. More specifically, the parameters which PLC 15 desires are requested from smart module 75A one data value at a time. The response from smart module contains the desired configuration data, an ASCII string to be displayed on hand held programmer 60, information with respect to the format in which the data is to be displayed, and the length of the data in bits. This screen information which is specific to module 75A is provided to hand held programmer 60 for display to the user as an aid to the user in configuring module 75A. Range of value information may also be sent from module 75A to programmer 60 for display to aid the user. The REQUEST CONFIGURATION DATA command is used in conjunction with the SEND PARAMETER NUMBER command. That is, hand held programmer 60 first sends the desired parameter number to smart module 75A and then transmits a REQUEST CONFIGURATION FILE or REQUEST STATUS DATA command. Smart module 75A then uses the parameter number which it received from programmer 60 to determine the particular data item to be returned to programmer 60 in a response. In other words, smart module 75A sends a data item back to programmer 60 which corresponds to the parameter number which programmer 60 sent to module 75A in the REQUEST CONFIGURATION DATA command which was first sent. The SEND CONFIGURATION FILE command is used by PLC 15 to send the configuration data to smart module 75A. This configuration file is sent to the smart module 75A by PLC 15 at the time PLC 15 is powered up and initialized. CPU 20 sends a module configuration file to smart module 75A only if module 75A contains valid data in its RAM 102. It is seen from Table 1 that two different byte length SEND CONFIGURATION FILE commands are provided for use according to the complexity of the configuration desired for smart module 75A. The REQUEST CONFIGURATION FILE command is sent by PLC 15 to smart module 75A to request the configuration data from smart module 75A. When smart module 75A receives this command, module 75A sends PLC 15 the present configuration file contained therein. Again, it is seen from Table 1 that two different byte length REQUEST CONFIGURATION FILE commands are provided for use according to the complexity of the configuration desired for smart module 75A. The REQUEST STATUS DATA command is sent by PLC 15 to smart module 75A to request status display data from module 75A. This REQUEST STATUS DATA command operates similarly to the configuration request/response sequence described above. However, when module 75A receives such a REQUEST STATUS DATA command, it may reference a different list of parameters, namely status parameters. In a manner similar to the configuration commands discussed earlier, the SEND PARAMETER NUMBER command must precede the REQUEST STATUS DATA command to inform module 75A exactly which states data to send PLC 15 from status list 102. If, at initial power up, PLC 15 finds that no smart module is present in a particular slot in an expansion box, the present embodiment still provides the user with a way to create or edit a configuration file for that module which is not in place. When the user selects the module configuration mode and directs hand held programmer 60 to a particular unoccupied slot and no module is found to be present in that slot, then the creation of a generic smart module configuration file commences. In more detail, PLC 15 makes the determination of whether or not a smart module is present in a selected slot in the following manner. At initial power up of PLC 15, PLC 15 compares the module type in the initial configuration file in PLC 15 with the actual module type of the smart module selected for configuration. If a match does not occur between the module type in the initial configuration file in PLC 15 and the module type in the selected slot, then it is assumed that the slot is empty or that the wrong board is in such slot. This comparison occurs before the remainder of the configuration file is loaded from PLC 15 into smart module 75 at power up time. If the above described mismatch is found, then the user is given an opportunity to manually, and without prompting by module specific information, enter the configuration of the module by specifying inputs %I and %AI, and output %Q and %AQ to create a generic configuration file. The first line in such generic configuration file is the board ID (identification number) followed by a module type ID (identification number). This module type ID identifies the type of smart module. The aforementioned manually provided (non-prompted) %I and %AI input information and %Q and %AQ output information follows the board ID and type ID in the generic configuration file. This generic configuration process is recommended primarily for the skilled module programmer because it is performed without the benefit of the aforementioned module specific information being displayed to aid module configuration by the user. That is, in this case, hand held programmer 60 will not be provided with the "help" module specific information contained in the smart module, since the module was found not to be present in the selected slot. Thus, the help text string for each parameter used as a prompt does not appear on the hand held programmer's display 65. Moreover, the help valid data range information does not appear on display 65. However, if after power up, PLC 15 determines that the module type in the initial configuration file in PLC 15 matches the module type on the smart module in the selected slot, then it is determined that a smart module is present in the selected slot. In this case, the helpful module specific information contained in smart module 75A is then provided to hand held programmer 60 for display to aid the user in configuring smart module 75A as was described earlier. FIG. 3 is a flow chart which summarizes the operation of the illustrative method of the present invention. PLC 15 is powered on and initialized at block 200. A determination is made at decision block 205 whether or not the presently indicated slot contains a smart module. To determine this information, the user instructs PLC 15 that it should read an indicated slot in which the smart module 75A is said to reside. If it is determined that a smart module 75A is not present in the indicated slot, then an "EMPTY" message is displayed at block 210 and the user is given the opportunity to create a generic configuration file as per block 215, as was described earlier. However, if it is determined that a smart module 75A is present in the indicated slot, then PLC 15 sends an initial configuration file to smart module 75A as per block 220, such configuration file now being designated the current configuration file. Then smart module 75A sends module specific information to hand held programmer 60 at block 225. At block 230, programmer 60 displays this module specific information to the user to aid the user in adjusting the configuration of smart module 75A. In response to the displayed module specific information, the user keys information into hand held programmer 60 to modify the current configuration file at block 240. The foregoing has described a method for configuring a smart module which is coupled to a programmable logic controller. The disclosed method desirably simplifies the setup of input and output modules for the PLC user. Moreover, the method permits a smart module to be configured in such a manner that the PLC software and hand held programmer software need not be rewritten for each new input module or output module.

Claims: A method for configuring a module (75A) which is coupled to a programmable logic controller (15), the controller including a memory (35,40) and being capable of executing a control program to control a process, the controller having stored therein an initial configuration file which specifies an initial configuration for the module, a programming unit (60) being connected to the controller and including a keyboard (65) for inputting manual commands to the controller and a display (70) for displaying configuration data, said method comprising the steps of: transmitting (220), by said controller, the initial configuration file from the controller to the module and designating the initial configuration file as a current configuration file; characterized by transmitting (225) by the module, of module specific information stored in memory in the module to said programming unit; displaying (230), by the programming unit display, the module specific information stored in memory (102) in the module, the module specific information comprising data required for configuring the module; and modifying (240), by the keyboard of the programming unit, the current configuration file in the module in response to the module specific information displayed in said displaying step. A method for configuring a module (75A) adapted for connection to a programmable logic controller (15), the controller including a memory (35,40) and being capable of executing a control program to control a process, the controller including an initial configuration file which specifies an initial configuration for the module, a programmable unit (60) being connected to the controller and including a keyboard (65) for inputting manual commands to the controller and a display (70) for displaying configuration data, said method comprising the steps of: determining (205), by the controller, if a particular module is coupled to the controller; transmitting (220), by the controller, of an initial configuration file from the controller to the particular module, said initial configuration file being stored in the particular module and being designated as the current configuration file (95), said transmitting step being performed only if said determining step confirms that the particular module is coupled to the controller, characterized by, transmitting (225), by the particular module, of module specific information stored in memory (102) in the particular module to said programming unit; displaying 230, by the programming unit display, of the module specific information stored in memory in the particular module; inputting commands (240) from the programming unit keyboard for modifying the current configuration file in response to the module specific information displayed in said displaying step; providing, by the particular module, of module specific control data to the controller for enabling control of the particular module by the controller; and if the step of determining confirms that a particular module is not coupled to the controller, establishing (215) a configuration file in the controller for the missing particular module and allowing entry of data into the configuration file from the programming unit so that the controller can execute control programs for operation testing without the missing particular module.

Inventors: SEXTON DANIEL WHITE, SEXTON, DANIEL WHITE
Applicants: GE FANUC AUTOMATION INC, GE FANUC AUTOMATION NORTH AMERICA, INC.
Application year: 1990
Main classification: G05B19
IPC codes: G06F9, G05B19, G05B9