Object-oriented programmable controller6868538Abstract An apparatus having a programmable processor and a memory for performing a plurality of user-selectable control functions includes a database for storing a plurality of items associated with each of the control functions. The items include, for each function, at least one procedure for performing an action associated with the control function and a specification of at least one state associated with the control function. The apparatus further includes software routines stored on the memory and adapted to be executed by the processor that facilitate selection of a procedure in the database, that access the database and cause performance of the selected procedure to achieve the state specified therein, and that monitor at least one resource associated with the action of the procedure and, based thereon, determine whether the specified state has been achieved. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
TABLE I
Function Blocks
Action Handles simple assignment statements using a defined
expression capability
ADD Simple Add function with extensible inputs
AI FF Standard Analog Input
AI Lite A scaled back version of the FF analog input
AI HART The FF Standard Analog Input with some extra ability
to handle HART devices
AND Simple And function with extensible inputs
AO FF Standard Analog Output (From FF standard
specification)
Arithmetic FF Standard Arithmetic Block (From FF standard
specification)
BDE_TRIGGER Simple bi-directional edge trigger
BIASGAIN FF Standard Bias/Gain (From FF standard
specification)
CALC/LOGIC Advanced calculation and logic block that has its own
language as well as the ability to handle simple ST
(1131). It has extensible inputs, extensible outputs,
and the ability to create temporary variables
Condition Handles simple condition statements using a defined
expression capability
Counter Simple up/down counter that handles several different
Accumulation methods
CTLSEL FF Standard Control Selector (From FF standard
specification)
DI FF Standard Discrete Input (From FF standard
specification)
DI Lite A scaled back version of the FF discrete input
DIVIDE Simple Divide
DO FF Standard Discrete Output (From FF standard
specification)
DT FF Standard Deadtime with advanced control research
implemented (From FF standard specification)
DtoI A boolean fan in that converts up to 16 discrete inputs
to a 16-bit integer value and that has some special
abilities for capturing input patterns
FILT Simple filter
H/L MON LIMIT Simple high/low signal monitor and limiter
INTEGRATOR FF Standard Integrator block (From FF standard
specification)
ItoD Boolean fan-out that takes a 16-bit integer and
translates it into 16 discrete outputs
L/L FF Standard Lead-Lag with 2 additional types of
equations to select (From FF standard specification)
LOOP An I/O and control block with the abilities of AI, PID,
and AO rolled into one block
LOOPD An I/O and control block with the abilities of DI,
Device Control, and DO rolled into one block
MAN FF Standard Manual Loader (From FF standard
specification)
MULTIPLEX Simple multiplexor with extensible inputs
MULTIPLY Simple multiply with extensible inputs.
NDE_TRIGGER Simple negative edge trigger
NOT Simple not
OFF_DELAY Simple off-delay timer
ON_DELAY Simple on-delay timer
OR Simple logical or with extensible inputs
P/PD FF Standard P/PD (From FF standard specification)
PDE_TRIGGER Simple positive directional edge trigger
PERIOD Simple monitor that triggers when an input is true for
a specified period
PI FF Standard Pulse Input (From FF standard
specification)
PID FF Standard PID with many additions including the
ability to choose algorithm type, form, and structure
(From FF standard specification)
RAMP Simple ramp generator
RATELIM Simple rate limiter generator
RATIO FF Standard Ratio block (From FF standard
specification)
RETENTIVE Simple retentive timer
RS Simple reset dominant flip-flop
RUNAVE Simple running average calculator
SCALER Simple scaler
SIGGEN Generates square waves, sine waves, random waves,
or any combination of the three
SIGNALCHAR FF Standard Signal Characterizer (From FF standard
specification)
SIGSEL Simple signal selector
SPLITTER FF Standard Splitter (From FF standard specification)
SR Simple set dominant flip-flop
SUBTRACT Simple subtract block
TP Simple timed pulse block
TRANSFER Simple transfer block
XOR Simple exclusive or block
At a definition and usage level of abstraction 530, the configuration architecture 500 includes definitions 532 and usages. The definitions 532 and usages, in combination, define the algorithm and the interface for objects including function blocks, control modules, equipment modules, links and attributes. The definitions 532 define algorithms and interfaces for function blocks, modules, links and attributes. Usages are objects and classes at the definition and usage level of abstraction 530 that represent the usage of one definition within another. At an instance level of abstraction 540, the configuration architecture 500 includes instances, which are "tagged" items within the configuration. Plant areas 542, modules 544, attributes 546, and process input/output (PIO) blocks 548 are tagged instances. Instances are defined according to the definitions 532. Each of the plant areas 542 represents a geographical or logical segmentation of a process site class 512. All objects and classes at the instance level of abstraction 540 are defined throughout the plant area level so that all module instances have a 0 or 1 association with one of the plant areas 542. To be installed in a run-time system, the module instances must have a 1 association, meaning that the module is viewed as being contained by or scoped in this context of a plant area. A module instance 544 is an installable object that is associated with a specific object of plant equipment. An attribute instance 546 is a visible parameter in a module instance 544, a plant area instance 542 or other device. An attribute instance 546 may be used for an input signal, an output signal, data storage or the like. At a device level of abstraction 550, the configuration architecture 500 includes devices 552 such as controllers, smart devices and consoles, and input/output (IO) devices 560 such as a PIO block, and the like, which represent physical process control equipment in the physical plant. A PIO block is an abstraction that represents various high density and low density conventional I/O devices including Hart, Fieldbus and other I/O devices that are interfaced with the configuration architecture 500. High or low density relates to the number of channels on an I/O card. For example, 8 channels are typical on a low density card while a high density card may have 32 channels. The devices 552 are process control equipment in the configuration architecture 500 and include objects such as controllers, I/O devices, consoles and the like. The I/O devices 560 are the physical PIO devices in the configuration architecture 500. A smart device is a field device that can transmit and receive digital data pertaining to the device, including data relating to device calibration, configuration, diagnostics and maintenance. Typically, the smart device is also adapted to transmit a standard analog signal that is indicative of information including, for example, a process value measured by a field device. Examples of smart field devices include field devices which follow a HART protocol, a Fieldbus protocol, a Modbus protocol and a device net protocol. Various hierarchical relationships among system objects are implemented to facilitate navigation through the process control environment 100 by different users and to accomplish different tasks. Four different hierarchical relationships are defined including control, control system, operations and physical plant hierarchies. A specific system object may be implemented in multiple hierarchical systems. The control hierarchy is a subset of a standard SP88 hierarchy and has system objects including site, physical area, equipment module, control module and control element objects. The control hierarchy is used to organize control operations and to define the scope of named objects. A user interacts with the control hierarchy on the basis of a site instance, equipment module definitions, control module definitions, a plant area instance, equipment module instances, control module instances, display module instances, and PIO module/block instances having signal tags. The control system hierarchy includes operator/configuration stations, host computers, controllers, I/O devices, smart devices, gateways and the like, which are associated using various network standards including ACN, PCN and other I/O network standards. In one embodiment, the ACN hardware includes standard 10-base-T ethernet communication ports and a workstation contains standard Ethernet 10-base-T interface cards and software drivers. A user interacts with the control system hierarchy on the basis of a defined site instance, a network definition, a defined network instance, devices, and subsystems such as files, cards, channels, controllers, operation stations, and Fieldbus segments. The ACN includes communication functionality at two levels, a remote object communications (ROC) level and a low level communications level. ROC level controls the interface between the programmed applications and the ACN communications system. The low level communications support the interface with the TCP/IP sockets and the actual transmission of messages. ROC are system operations supporting communication of objects in the process control environment 100 and, particularly, supporting communication between objects whether the objects reside in the same device or in remote devices. The ROC communication level supports communications message services including request/response, unsolicited reporting, event/alarm reporting and broadcast message service. Request/response is a service by which applications send messages to a remote device and receive a response from the device. Unsolicited reporting is a service for periodically sending updated data to a remote device. Unchanged data is not reported. Event/alarm reporting is a guaranteed delivery message service which is used for the transmission of events, alarms and other vital information for delivery to a remote device. The broadcast message service is used to send messages to all programmed application devices on the communications network. The ROC level also sets communications policies for the communications subsystem. This means that it is responsible for managing what messages are sent and when as well as how incoming messages are processed. Communications flow control is also the responsibility of the ROC. Low level communications support is included for device connection management, ACN redundancy and communications systems diagnostics. Device connection management establishes a communications connection between two devices and manages the transmission of messages between the two devices. ACN Redundancy handles the detection of communications link failures, controls the switch from one link to another and tracks the status of communication links between a host device and connected remote devices. Communications subsystem diagnostics tracks communication integrity and statistical information and responds to requests for communications diagnostic data. Device connection management in an ACN communications system supports both user datagram protocol (UDP) and TCP type device connections. UDP connections are used for normal real time data transfers between devices and TCP connections are used for special applications using a streaming protocol such as file transfers, device flash downloads, and the like. Communications between devices is managed by a device connection object. The device connection object transmits data and maintains the status of the communications links between two communicating devices. All normal device connection message traffic is directed through a single UDP communications port. A device connection object starts the communications system by creating the communication socket associated with this UDP port as well as creating the queues needed for management of the device connection message traffic. The device connection object receives all incoming messages on a device connection communications socket and routes messages to the proper device connection instance for processing. The device connection object handles timing functions of device connections, including notifying device connection instances when messages time out waiting to be acknowledged, when communications link checks are due and when device connection resyncs have timed out. UDP type communications are used for the transfer of real-time data among devices. The ROC subsystem passes messages to a UDP device connection for transmission to a destination device. A pool of message buffers is created on startup of each device. The message pool is used for all data transferred between devices to prevent the communications subsystem from exhausting memory and ensuring that no other task exhausts memory, thereby preventing the communication subsystem from running. Communication flow control is implemented in the Device Connection Object. If the number of message buffers in the communications buffer pool reaches a predefined low level, all remote devices are inhibited from sending messages until the low buffer problem is resolved in the affected device preventing loss of messages. TCP-type communications are used for applications using a streaming-type protocol such as file transfers and device flash downloads. TCP-type connections are temporary connections established for the duration of the applications needs and terminated once the application has completed a communications task. For reasons of interoperability, compatibility, and availability, a TCP/IP protocol stack is employed. The TCP/IP stack supplies a connection-oriented byte stream protocol (e.g., TCP) and a connectionless message oriented protocol (e.g., UDP). The device connection supports request/response messages, unsolicited data, and event and alarm data between devices. The communication system maintains the device connection through one of two available communications links in the event of a single communications failure, such as cable fault. Detection of a fault and switching to an alternate communications path transpires in a short deterministic time span, which may be less than about one second. The operations hierarchy is defined for a particular set of users, specifically operators and maintenance engineers, generally for the purpose of accessing displays, reports, and other informational items. A user interacts with the operations hierarchy on the basis of a site instance, user group definitions, a plant area instance, equipment module instances, control module instances, display instances, and report instances. The physical plant hierarchy is defined for a particular set of users, specifically maintenance engineers and technicians, typically for the purpose of determining physical relationships among objects and navigating maintenance information between plant instruments and equipment. A user interacts with the physical plant hierarchy on the basis of a site instance, a maintenance area instance, a plant area instance, room instances, cabinet instances, node/device instances and display instances. The system objects that are implemented in the multiple hierarchical systems are arranged into a plurality of subsystems including control, process I/O, control system hardware, redundancy management, event/alarm management, history services, process graphics, diagnostics presentation, user environment, management organization and field management system (FMS) subsystems. The control subsystem includes routines for configuring, installing and executing control modules and equipment modules. The process I/O subsystem is a uniform interface to devices including HART, Fieldbus, conventional I/O and other input/output systems. The control system hardware subsystem defines a control system topology, devices within the topology, and capabilities and functions of the devices. The control system hardware subsystem also includes objects and data structures for accessing device level information indicative of status and diagnostics. The redundancy management subsystem establishes a redundant context between primary and secondary control applications and manages switching in context between the primary and secondary control applications. The redundancy management subsystem also maintains and monitors redundant context diagnostic information including state information and data latency information. Network redundancy is accomplished using two separate Ethernet communications links or networks. The primary communication link is the preferred communications path. The secondary link is only used if the primary link has failed. Communications switchovers are performed on a per device basis. For example, if device A is communicating with devices B and C and the primary link to device C fails, device A continues to communicate with device B on the primary link but switches to the secondary link to communicate with device C. Each Ethernet link is a separate dedicated network having a dedicated set of IP addresses and a subnet mask. The device connection object manages redundant communications including controlling when to switch to the secondary link and when to switch back to the primary link. Each device in the process control system tracks the communication status of all current links to remote devices by periodically sending link test messages when no other communication is occurring, to check the status of the communication links to each device. Redundancy switchovers are performed on a device connection basis. The event/alarm management subsystem configures, monitors, and supplies notification of significant system states, acknowledgments and priority calculations. The history services subsystem stores and retrieves process and event information. The process graphics subsystem supplies user-defined views for display and operator interfacing to the defined system architecture. The diagnostics presentation subsystem furnishes displays of diagnostic information, typically at the request of a user. The user environment subsystem supplies a user interface, allowing a user to enter commands to control operation of the process control environment 100. The management organization subsystem sets an organizational structure of the process control environment 100 including specification of site, area, primitives, access to user libraries, and location of defined objects and instances. The FMS supplies user interfaces, views, and organization structure for the configuration, installation and monitoring of HART and Fieldbus devices. A Fieldbus device implements localized control of a process within the process, in contrast to the more conventional approach of controlling device functions from a main or centralized digital control system. A Fieldbus device achieves localized control by including small localized controller/multiplexers 110 which are closely associated with field devices within the Fieldbus device. The small localized controllers of a Fieldbus implement standardized control functions or control blocks which operate on the field devices within the Fieldbus device and which also operate on other smart field devices that are connected to the Fieldbus device. Thus, the process control environment 100 implements smart field device standards, such as the Fieldbus H1 standard, Profibus standard, CAN standard and other bus-based architecture standards so that communications and control among devices, particularly Fieldbus devices, are performed so that Fieldbus-type control operations are transparent to a user. The process control environment 100 allows attachment to a substantially unlimited number and type of field devices including smart devices, such as Fieldbus and HART devices, and conventional non-smart devices. Control and communication operations of the various numbers and types of devices are advantageously performed simultaneously and in parallel. The process control environment 100 implements and executes a standard set of function blocks or control functions defined by a standard Fieldbus protocol, such as the Fieldbus H1 standard, so that Fieldbus-type control is achieved with respect to non-Fieldbus-type devices. In addition, the process control environment 100 enables Fieldbus devices to implement the standard set of function blocks and control functions. Advantageously, the process control environment 100 implements an overall strategy as if all connected devices are Fieldbus devices. This implementation is achieved, in part, by the usage of a function block as a fundamental building block for control structures. These function blocks are defined to create control structures for all types of devices. The process control environment 100 implements an overall user-developed control strategy through the definition of function blocks and control modules by downloading or installing specific portions of the control strategy into smart devices and non-smart devices. Thereafter, the smart devices automatically perform the downloaded portions of the overall strategy independent of other control system operations. For example, the portions of the control strategy downloaded or installed into the devices operate independently of and in parallel with the control operations of the controller/multiplexers 110 and the workstations, while other control operations manage the smart devices and implement other portions of the control strategy. In effect, the process control environment 100 implements a control strategy using the controller/multiplexers 110 within the smart devices. An example of a block diagram defining a function block 522 is illustrated in FIG. 8. Specifically, FIG. 8 depicts an elemental function block definition 600 that is defined to contain only primitive objects. The elemental function block definition 600 defines a sum function and includes a "+" primitive 610, a first input attribute 612, which is a first parameter 614 applied to the primitive 610, and a second input attribute 622, which is a second parameter 624 applied to the primitive 610. The primitive 610 produces a result that is supplied as an output attribute 630. In this example, the elemental function block definition 600 is a block definition that is created and named SUM. A second example of a block diagram defining a function block 522 is illustrated in FIG. 9. Specifically, FIG. 9 depicts a composite function block definition 700 that is defined to contain one or more elemental function blocks 600 and, optionally, one or more primitive objects. The composite function block definition 700 defines a composite sum function and includes a first SUM elemental function block 710 and a second SUM elemental function block 712, each of which is the same as the SUM elemental function block 600 illustrated in FIG. 8. The composite function block 700 has a first input attribute 720 and a second input attribute 722, which are respective first and second parameters 724 and 726 applied to the first SUM elemental function block 710. The first elemental function block 710 produces a result that is applied to the second SUM elemental function block 712 as a first parameter 730. The composite function block 700 has a third input attribute 728 that is a second parameter 732 applied to the second SUM elemental function block 712. The second SUM elemental function block 712 produces a result that is supplied as an output attribute 734. In this example, the composite function block definition 700 is a block definition that is created and named SUM3. An example of a block diagram defining a control module 440 is illustrated in FIG. 10. Specifically, FIG. 10 depicts a control module definition 800 that contains various input attributes 810, elemental function blocks 820, a first SUM3 composite function block 830 and a second SUM3 composite function block 832. The exemplary control module 800 includes five input attributes 810, which are connected to five respective elemental function blocks 820, three of which are parameters applied to the first SUM3 composite function block 830. The first SUM3 composite function block 830 produces a result that is supplied as a parameter to the second SUM3 composite function block 832 in combination with parameters supplied by the remaining two elemental function blocks 820. The second SUM3 composite function block 832 produces a result that is supplied as an output attribute 840. In this example, the control module 800 is a control module definition that is created and named CM1. Examples of a module instance of the module instances 544, specifically a control module instance, are illustrated in FIG. 11. Control module instances 910 and 920 are created in accordance with the CM1 control module definition so that each of the control module instances 910 and 920 includes five input attributes 912 and 922, respectively, that correspond to the five input attributes 810 illustrated in FIG. 10. Each of the control module instances 910 and 920 also includes one output attribute 914 and 924, respectively, that corresponds to the output attribute 840 shown in FIG. 10. In this example, the control module instances 910 and 920 are control module instances that are created and tagged CALC1 and CALC2, respectively. Using a definition editor, a system user creates and names definitions, such as the SUM elemental function block definition, the SUM3 composite function block definition and the CM1 control module definition. Then, using a module editor, the system user creates and tags instances, such as the CALC1 and CALC2 control module instances. Referring to FIG. 12, a flow diagram illustrates an example of control module execution at run-time. A run-time program includes a scheduler routine. Scheduler routines are well-known in the computing arts. In step 1010, the scheduler routine requests execution of a composite control module such as, for example, the composite control module 440 with tag CM1 illustrated in FIG. 10. In step 1012, the CM1 composite control module 440 initiates transfer of the input attributes 820, causing any associated links or attribute associations to transfer in a step 1014. A database definition typically refers to associations while a runtime definition relates to links. In steps 1016 through 1056, the CM1 composite control module 440 requests each elemental function block 820, first SUM3 composite function block 830 and second SUM3 composite block 832, to execute in turn. Specifically, in step 1016, the CM1 composite control module 440 requests each elemental function block 820 to execute. In step 1018, the elemental function blocks 820 initiate transfer of input attributes such as, for example, the first input attribute 612 shown in FIG. 8. In step 1020, the input attributes of the elemental function blocks 820 request loading of values from the links transferred in step 1014. In step 1022, the links copy values from source attributes to destination attributes and in step 1024 the elemental function blocks 820 execute block algorithms. Upon completion of block algorithm execution, the elemental function blocks 820 initiate transfer of output attributes in step 1026 such as, for example, output attribute 630 shown in FIG. 8. In step 1028, the CM1 composite control module 440 requests first SUM3 composite function block 830 to execute and in step 1030, first SUM3 composite function block 830 initiates transfer of input attributes such as, for example, input attributes 722, 724 and 726 shown in FIG. 9, from the elemental function blocks 820. In step 1032, first SUM3 composite function block 830 requests internal function blocks such as, for example, the first SUM elemental function block 710 and the second SUM elemental function block 712 shown in FIG. 9, to execute in turn. First SUM elemental function block 710 reads input attributes, executes a block algorithm and sets an output attribute in step 1034. Second SUM elemental function block 712 reads input attributes, executes a block algorithm and sets an output attribute in step 1036. First SUM3 composite function block 830 initiates transfer of output attributes in step 1038, and the output attribute of first SUM3 composite function block 830 requests an associated link to copy the value from the output attribute in step 1040. In step 1042, the CM1 composite control module 440 requests second SUM3 composite function block 832 to execute. In step 1044, second SUM3 composite function block 832 initiates transfer of input attributes from the links connected to the first SUM3 composite function block 830 output attributes. In step 1046, second SUM3 composite function block 832 requests internal function blocks, for example, the first SUM elemental function block 710 and the second SUM elemental function block 712 shown in FIG. 9, to execute in turn. First SUM elemental function block 710 reads input attributes, executes a block algorithm and sets an output attribute in step 1048. Second SUM elemental function block 712 reads input attributes, executes a block algorithm and sets an output attribute in step 1050. Second SUM3 composite function block 832 initiates transfer of output attributes in step 1052, and the output attribute of second SUM3 composite function block 832 requests an associated link to copy the value from the output attribute in step 1054. In step 1056, the CM1 composite control module 440 initiates transfer of output attributes and output attribute 840 requests a link from second SUM3 composite function block 832 to copy the value of the second SUM3 composite function block 832 output attributes. In some embodiments, output function blocks push output values to a user-configured PIO block attribute (not shown). Thus, PIO attributes are pulled by function blocks while output function blocks push output values to PIO Block attributes. Similarly, input function blocks pull input attribute values from PIO Block attributes. A user defines a module control strategy by specifying function blocks that make up control modules and determine the control strategy. The user modifies or debugs a module control strategy by adding, modifying and deleting function blocks, configuring parameters associated with the function blocks and creating a view to new attributes. By defining function blocks and control modules, a user-defined control strategy, application program or diagnostic program is represented as a set of layers of interconnected control objects identified as modules. A layer of the control strategy includes a set of modules which are interconnected in a user-specified manner. A module typically includes an algorithm for performing a specific function and display components which are used to display information to a user. A module is optionally represented to include a set of input and output connections for connecting to other modules and may be considered to be a black box which performs a specified function and that is connected to other modules via specified input and output connections. Referring to FIG. 13, a display screen serves as a flow chart which illustrates an example of a module or application program LOOPSIM 1060 at a highest layer of a control structure. The illustrated layer of the LOOPSIM 1060 application program includes an input attribute (AIN) module 1062 called Al1, a deadtime module 1064, a proportional, integral, differential (PID) control module 1066, an output attribute (AOUT) module 1068 and a simulate module 1070. Each of the illustrative modules includes named input connections and output connections that are connected to the other modules via lines. The set of modules, the input connections and the output connections of the set of modules, and the interconnections between modules define the operation of the LOOPSIM 1060 application. At a lowest level, a module is a set of interconnected function blocks. At higher levels, a module is a set of interconnected submodules which, in turn, may include a further set of submodules. For example, the PID control module 1066 is typically a set of interconnected submodules which perform the different functions included in a PID functionality. The input and output connections of the PID module 1066 are an input connection and an output connection of one or more of the submodules within a next lower layer of the PID module 1066. The submodules in the PID module 1066 optionally include other input and output connections sufficient to define the interconnections between the submodules. An application, a module or a submodule, at any module level, is optionally modified by a user to perform a slightly different function or to perform the same function in a different manner. Thus, a user optionally modifies the module, thereby modifying the control structure, in a desired manner. Specifically, a user optionally adds input and output connections to modules and extends the input and output connections of a module to a higher level module to customize modules for various applications. For example, a user may optionally add a new input connection or output connection to the PID module 1066, which causes the input connection and output connection to appear as input and output connections to the PID module 1066. The process control environment facilitates the definition and modification of the control structure by furnishing editing operations in a plurality of control languages including IEC-1131 standard languages such as Field Blocks, Sequential Function Charts (SFC), Ladder Logic and Structured Text. Accordingly, different types of users, from different control backgrounds use the different languages to write different modules for implementing the same or different applications. Control modules are specified to have several advantageous characteristics. Some control modules allow direct access to attributes. For example, some attributes, such as heavy attributes, support direct (maximum performance) communications. Direct communications are advantageously used for connecting function blocks and control modules, supporting event/alarm detection, and high performance trending, for example. Some attributes are created automatically upon definition of a control module with a user having the option to promote or force a parameter to be exposed as an attribute of a control module. Other parameters are made accessible through a module, such as a control module, an equipment module, a PIO block, or a device, which contains the parameter but direct communications performance of the attributes does not warrant the overhead incurred in supplying-this performance. These parameters are advantageously accessed to supply information relating to control system tuning, debugging and maintenance. In some embodiments, these parameters are accessed by a general purpose parameter browser applications, which use services provided by tagged containers to reveal attributes, invokeable services, and subcomponents within the containers. Referring to FIG. 14, a block diagram illustrates an object-oriented method for installing a PIO attribute block into a PIO 1120 device through the operation of the control subsystem. A block of defined objects 1110 includes a site object 1112, a controller device 1114, a controller I/O subsystem 1116, a PIO interface device 1118 and the PIO device 1120. Prior to installation of the PIO device 1120, the controller I/O subsystem 1116 is previously created. The PIO device 1120 is also previously created, either by installation or downloading. The block of defined objects 1110 directs a detail pointer 1122 to a list of block definitions 1124 to specify a particular type of object to be created by a create pointer 1126 that directs the operation of a create block 1128. The block definitions 1124 includes a PIO input attributes (AIN) block definition, either as hardwired or by previous installation. Attributes of the specified object are set by a user through the operation of an editor 1130. Prior to installation of the PIO device 1120, an input attribute (AIN) block 1132 does not exist. Prior to installing the AIN block 1132, a user creates the PIO device 1120 then sets up initial values for AIN block attributes using the editor 1130. The user also sets a period for view parameter acquisition. The AIN block 1132 is saved and then installed. Referring to FIG. 15, a block diagram illustrates an object-oriented method for linking a control module input attribute to a PIO attribute. Prior to linking of the control module input attribute to the PIO attribute, the PIO block AIN 1220 is previously installed and the control module 1210 is also installed. The user specifies that a PIOIN attribute 1212 of the control module 1210 is connected to an attribute input process variable PV 1214 and requests that a link be made. A link 1216 is made as the control module finds the PIOIN attribute and returns a corresponding attribute index, locates PIO AIN in a plant area, finds the process variable PV attribute and returns a corresponding attribute index, instructs the run-time linker 1216 to create a link with a source at the process variable (PV) 1214 and a destination at the PIOIN attribute 1212, and creates the link and connects the link 1216. At end of a download, links are resolved by the linked objects. Referring to FIG. 16, a block diagram illustrates an object-oriented method for linking a control module output attribute (AOUT) 1312 attribute to a PIO output attribute (PIOAOUT) 1320. A control module 1310 is previously installed and the control module output attribute (AOUT) 1312 is installed within the control module 1310. The user specifies that the control module output attribute (AOUT) 1312 is connected to the a PIO output attribute (PIOAOUT) 1320. The link is made as the run-time implementation of the control module 1310 is sent a message to form the connection, the control module 1310 finds the AOUT attribute, requests location of the PIOAOUT attribute 1320, creates a link 1322 and connects the AOUT attribute 1312 and the PIOAOUT attribute 1320 to the link 1322. Referring to FIG. 17, a block diagram illustrates an object-oriented method for reading values of contained PIO attributes. A PIO block 1410 is previously installed and an output attribute (AOUT) 1412 is previously installed within the PIO block 1410. A user requests a detailed view of the block in which all attribute values are displayed. The detailed display includes one or more sets of display groups, also called view definitions, associated with the PIO block 1410. A proxy is previously established for the PIO Block 1410. A user requests detail for the output attribute (AOUT) 1412. Attribute names and values for the AOUT block are presented by an application program requesting a proxy client routine to access a view, an AOUT proxy client setting a return view definition and creating an attribute proxy object, and the application program requesting the AOUT proxy client to read out values for attributes named with granted privileges. The application program formats and displays the data. Display group parameters are part of an I/O block definition and are, therefore, not configurable. Display groups are defined for attributes and information is advantageously updated while a PIO block is not linked since display groups and view groups control updating of non-linked PIO attributes associated with a block. The process control environment 100 implements an overall strategy as if all connected devices are Fieldbus devices not only by the usage of a function block as a fundamental building block for control structures but also by implementing an I/O architecture that treats Fieldbus and nonFieldbus devices in the same manner. The fundamental character of the I/O architecture is based on instrument signal tags (ISTs) that furnish user-configurable names for all I/O signals including Fieldbus and nonFieldbus I/O signals. From the perspective of a user, an IST binds a user-defined name to a signal type, to a specific signal in the I/O subsystem, to a signal path including an attribute and to a set of signal property settings. ISTs are not installed in the same manner as other system objects are installed. Instead, signal properties inherent to the IST tag are combined with I/O port and I/O device properties that are made available when an I/O card is installed. The combination of IST, I/O port and I/O device properties furnish information for creating a PIO function block in the run-time system. The signal path from ISTs is included in the script that defines I/O Function Blocks during installation of a module. To communicate throughout the process control environment 100, an I/O type function block uses an I/O reference definition. An IST satisfies the specification for an I/O reference. Conventional I/O devices, such as MTL devices supplied by Measurement Technologies Limited of the United Kingdom, have an IST for each channel. Hart and Fieldbus I/O devices may include an IST for each distinct 110 signal on a port or in a field device. IST names have system-wide scope and share the name space of modules, devices, and areas. In large systems, ISTs typically correspond to instrument signal names on instrumentation drawings. In small systems, formal instrument drawings may not exist so that no obvious IST names are inferred. Typically, ISTs are automatically generated as cards are configured based on a device hierarchy path representing a controller node, I/O subsystem, card and port so that arbitrary IST names are avoided. For multiple-signal I/O devices, an IST is automatically created for only a single primary signal. In addition to automatic IST creation, a user may also create ISTs using an "Assign . . . " menu available from the Explorer Node/IOsubsys/Port/Device tree with a Port or Device selected or using a "New . . . " menu available from the Explorer IST tree. ISTs have a signal type property to ensure compatibility between the I/O signal and the I/O function block or blocks that accesses the I/O signal. Signal type is one of: AIN, AOUT, DIN, DOUT, PCIN, PCOUT. ISTs have a set of signal-related attributes specific to the signal type (e.g., EU0 and EU100 for a MOMENTARY, AIN or LATCHED for a DOUT, etc.). All signal sources with the same signal type have the same set of signal attributes. All other properties of the I/O subsystem objects are held-in card, port, or device attributes. Fully configured ISTs have a fully qualified path to a corresponding signal in the I/O system, e.g., "CON1/IO1/S01/C01/FIELD_VAL." An IST may be created without a defined path defined so that module configuration may be completed before I/O structure details are fully defined. Modules with I/O function blocks using ISTs with no defined path may be configured and installed, but the run-time system must deal appropriately with missing I/O paths of missing ISTs on I/O function blocks. A signal source has no more than one IST and attempts to configure more than one IST with the same path are rejected. A user may delete an IST, thereby deleting associated signal properties and possibly leaving some unresolvable IST references in I/O function blocks. A deleted IST does not affect card/port/device properties with a normal display of the IST on the Port/Device in the Explorer tree indicating no associated IST. I/O-interface function blocks have at least one IST-Reference property. An IST-Reference property is either left blank to indicate that the function block does not connect to a IST, or is designated with a valid IST name. An IST-Reference property in an I/O function block is compatible with exactly one IST signal type. For example, the IST-Reference in the AI function block has an IST with a signal type "AIN" only. Several I/O function blocks are compatible with the same IST signal type. For compatibility with Fieldbus I/O function block definitions, Fieldbus I/O function blocks have attributes such as XD_SCALE and OUT_SCALE, which overlap with some of the signal properties in ISTs. When a valid IST-Reference is made, the configured values of these overlapped function block attributes are ignored in the run-time system and the corresponding properties from the IST are used instead. An engineer configuring Fieldbus I/O function blocks uses an indication of ignored attributes when a IST reference is in place. Such an indication is typically presented on a display as grayed out and non-editable text with values copied from the IST. The I/O function block holds a private setting for the ignored attributes, which are typically downloaded and promptly overridden. If the IST-Reference is removed, the setting for these attributes retains utility. I/O cards, ports and devices are incorporated into a configuration by a user operating a user interface, either the Explorer.TM. or the Module Definition Editor. The channels on conventional I/O cards are called ports and are treated as I/O ports so that special case terminology for conventional I/O is avoided. The user interface also allows a user to delete I/O cards, ports or devices. Multiple I/O card types are supported including, for example, 8-chan MTL Al, 8-chan MTL AO, 8-chan MTL DI, 8-chan MTL DO, 4-chan MTL Thermocouple/RTD, 8-chan HART input, 8-chan HART output, and 4-chanSolenoid. Some I/O card types have a combination of I/O port types on the same I/O card. Deletion of an I/O card deletes all subordinate ports. Deletion of an I/O port deletes all subordinate devices. Deletion of I/O ports or I/O devices does not delete related instrument signal tags (ISTs), but the path of the IST path to the associated I/O signal no longer is operable. If another I/O port or I/O device is created which has the same path, the IST automatically rebinds to the I/O port or I/O device, so long as the signal type is compatible. A user can initiate the Install of an I/O subsystem, which installs or reinstalls all I/O cards defined in the Subsystem. The user can initiate the install of a single I/O card, which installs the card properties and all properties for subordinate I/O ports and I/O devices. The Explorer.TM. and the Module Definition Editor configure the I/O subsystem by accessing current signal values, status, and selected properties that are directly addressable as attributes in the I/O subsystem. The user displays a graphic indicative of the current status of cards, ports, devices, and signal values and status by accessing the respective cards, ports, devices and signal values and status using device hierarchy attribute path addressing (for example, "CON1/IO1/C01/P01/FIELD_VAL"). I/O subsystem attributes are communicated using the physical device path (for example, CON1/IO1/C01/P01/D01/FIELD_VAL) for addressing in communications between devices. Communication of I/O subsystem attributes is advantageously used to transmit attributes from a controller/multiplexer 110 to one or more of the workstations 102, 104, 106 for display and from a first to a second controller/multiplexer 110 for virtual I/O handling. Referring to FIG. 18, a block diagram illustrates an organization of information for an instrument signal tag. A system IST table 1510 contains information relating to an IST including path information and pointers to a system object. A first pointer 1512 designates a signal type which points to an attribute signal table 1520 and a second pointer 1514 designates an entry in the attribute signal table 1520. Accessing information using device hierarchy attribute addressing advantageously allows system diagnostic displays to be designed and built for system integration checkout before control module work is complete. Device hierarchy attribute addressing also supports direct addressing of I/O signals from modules, bypassing the use of I/O function blocks and avoiding I/O function block behavior. I/O card, I/O port and I/O device identifiers are generally defined automatically according to slot position information and the like. Referring to FIG. 19, a flow diagram illustrates a method for bootstrap loading a control system throughout a network in the process control environment 100, including the operations of assigning the controller/multiplexers 110 to a set of IP addresses, a node name and other startup information that is not stored in flash ROMs of the controller/multiplexer 110. A process 1600 for assigning internet protocol (IP) addresses to a controller upon its initial bootup includes the step of associating a MAC address in a Boot server, a Windows NT.TM. workstation, with a controller/multiplexer name 1610. The MAC address alone designates the controller/multiplexer identity. In step 1612, the name of the controller/multiplexer is assigned an arbitrary device ID, and an ACN link number and a PCN network number that are determined by the cable attached to the controller/multiplexer. In step 1614, an IP address of a device is calculated from the device ID, the ACN link number and the PCN network number. In step 1616, a UDP datagram, which designates default primary and secondary IP addresses that are reserved for booting nodes and includes the controller/multiplexer MAC address in the UDP user data, is broadcast to a special UDP reserved boot port using the default primary IP address for the source address on the primary interface. In step 1618, the boot server matches the MAC address with the assigned name and IP addresses, and broadcasts the assigned name and IP addresses with an echo of the MAC address to the UDP boot port. By broadcasting, the problem of doing any routing or ARP static entry manipulation is avoided. In step 1620, the controller/multiplexer receives the datagram, checks the MAC address, and if the MAC address matches, sets the IP addresses and saves the node name and device ID. If the datagram is not received, the procedure is repeated using the secondary interface through the operation of branch step 1622. In step 1624, the controller/multiplexer, using the new address, sends a message to the boot server saying indicating that the controller/multiplexer is operational. In step 1626, a user enters a device name, the device MAC address, the ACN link number and the PCN network number. The device ID can be automatically assigned by configuration software. The communications subsystem calculates the three IP addresses of the device from the configured ACN link number, the PCN network number and the assigned device ID. In step 1628, controller/multiplexer or I/O card software is flash downloaded over the ACN network by passing messages and S-Record files between devices on the ACN. Referring to FIG. 20, an object communication diagram illustrates a method for creating a device connection for the active, originating side of a connection. An application program in either a workstation or a controller/multiplexer requests access to an attribute which is contained in another device. A UDP communications connection to the other device is established by the communication services so that the attribute can be accessed. Creation of a device connection spans two separate application programs. The application program initiates the connection by requesting data located in another device and the remote object communications (ROC) services application program that actually sends the messages to the other device. If no connection exists when the ROC services process is ready to send a message to a device, the ROC services create a connection to that device. Prior to creating the device connection, a device to be connected has a valid device table containing the source device, is operating and includes an object RtDeviceConnection which monitors messages on the device connection port. After the device connection is created, a connection is established between the two devices and an RtDeviceConnection instance is created in the active device to handle the connection. In step 1710, an application program sends a message getContainer to object RtSite, which returns the object ID of the module found or created. In step 1712, object RtSite sends a Locate message to an object RtPlantArea, which locates the module and returns its object ID. In step 1714, the object RtSite sends a GetDevice message to an object RtDevice which returns the object ID of the device containing the module. In step 1716, assuming that a proxy for the remote device does not exist, the object RtDevice sends a Create message to an object a RtDeviceProxy. In step 1718, the object RtDeviceProxy creates an instance of an object of a RtDeviceProxy using a template RtNew. In step 1720, the object RtDeviceProxy asks an object RtDeviceConnection to GetDeviceConnectionIndex, which returns the index of the device name in the device connection table managed by an object RtDeviceConnection. In step 1722, the object RtDeviceProxy registers the pointer to the RtDeviceProxy instance for the connected device by sending a RegisterPointer message to an object RtRegistry and returns the device proxy object ID to the object RtDevice. In step 1724, an object RtPlantArea sends a Create message to an object RtModuleProxyClient to create a proxy client for the remote module. In step 1726, the object RtModuleProxyClient sends a Create message to an object RtModuleProxyServer to create a proxy server for the module in the remote device. In step 1728, the object RtModuleProxyServer builds a create proxy server message and asks an object RtRocReqRespService to SendRequest to the remote device. In step 1730, the object RtRocReqRespService appends the message to the outbound message queue for the ROC communications services process to send to the remote device. In step 1732, the object RtRocReqRespService in the ROC comm services process issues a RemoveFirst command to the outbound message queue and gets the create proxy server message. In step 1734, the RtRocReqRespService object sends the message by issuing a sendMsg command to a aRtDeviceProxy instance for the destination device. In step 1736, the aRtDeviceProxy instance issues a GetDeviceConnection command to the RtDeviceConnection to get the object ID for the RtDeviceConnection instance for the destination device. Assuming that a device connection does not already exist, in step 1738, the object RtDeviceConnection performs a createDeviceConnection. In step 1740, the object RtDeviceConnection creates an instance of RtDeviceConnection using template RtNew. In step 1742, the object RtDeviceConnection registers the pointer to the RtDeviceConnection instance by sending a RegisterPointer message to the object RtRegistry and returns the device connection object ID to the object RtDeviceConnection. In step 1744, the object RtDeviceConnection sends a startActiveConnection message to the aRtDeviceConnection instance and the aRtDeviceConnection instance performs the necessary steps to establish the connection to the other device. In step 1746, the RtDeviceProxy instance issues a sendMsg to the aRtDeviceConnection instance to send the create server message to the remote device. In step 1748, the aRtDeviceConnection instance sends the message to the remote device over the newly created connection. Referring to FIG. 21, an object communication diagram illustrates a method for creating a device connection for the passive, listening side of a connection. A request to establish a device connection is received from another workstation or controller/multiplexer. The communications services establishes a UDP communications connection with the requesting device. Previous to creation of the connection, a device to be connected to is operating and contains an object aRtDeviceConnection which is ready to establish a connection. The object RtDevice Connection exists in the device and is listening for input messages in the form of a sync request. After the connection is created, a connection is established between the two devices and an RtDeviceConnection instance is created in the passive device to handle the connection. In step 1810, the object RtDeviceConnection receives a sync request message from a remote device and in step 1812, the object RtDeviceConnection sends a Create message to the object RtDeviceConnection to create a connection to the requesting device. Assuming that a device connection does not already exist, the object RtDeviceConnection performs a createDeviceConnection in step 1814. In step 1816, the object RtDeviceConnection creates an instance of RtDeviceConnection using the template RtNew. In step 1818, the object RtDeviceConnection registers the pointer to the RtDeviceConnection instance by sending a RegisterPointer message to the RtRegistry and returns the device connection object ID to the object RtDeviceConnection. In step 1820, the object RtDeviceConnection sends a Create the message to object RtDeviceProxy to create a device proxy for the requesting device. In step 1822, the object RtDeviceProxy creates an instance of RtDeviceProxy using the template RtNew. In step 1824, the object RtDeviceProxy sends a GetDeviceConnectionIndex message to the object RtDeviceConnection to have the index of the device in the device connection table managed by RtDeviceConnection for later use. In step 1826, the object RtDeviceProxy registers the pointer to the RtDeviceProxy instance by sending a RegisterPointer message to the RtRegistry and returns the device proxy object ID to RtDeviceConnection. In step 1828, the object RtDeviceConnection passes the sync request message to the aRtDeviceConnection instance for processing via the handleInboundMessage method and in step 1830, the object aRtDeviceConnection sends a sync response message back to the remote device to indicate successful completion of the Device Connection creation. Referring to FIG. 22, an object communication diagram illustrates a method for sending request/response messages between devices. The remote object communications (ROC) service in one device sends a request message to the ROC service in another device. The request message is processed and a response message is sent back to the originating device. Prior to sending messages, a UDP device connection is established between devices. Following the sending of request/response messages between devices, a response message from a remote device has been received and is ready for processing by ROC services. In step 1910, a read attribute request is issued by an application program to an aRtDeviceProxy instance associated with a remote device. In step 1912, the aRtDeviceProxy instance builds a request message to be sent to the remote device to read the attribute value and asks the RtRocReqRespService to send the message using the SendRequest method. In step 1914, the object RtRocReqRespService sends the message to the instance of RtDeviceConnection associated with the connection to the remote device using the send_msg method. In step 1916, the instance of RtDeviceConnection then transmits the message to the remote device over the device connection. In step 1918, the instance of RtDeviceConnection in the remote device receives the message and requests the RtRocRouter class to route the message to the correct inbound message service. In step 1920, the object RtRocRouter determines that the message is a request/response message and requests object RtRocReqRespService to ProcessInboundReqResp. After the message is processed by the ROC services and the message consumer a response message is built, in step 1922 the object RtRocRqstRespService sends the response message to the originating device using the SendResponse method. In step 1924, the outbound message queue processing of RtRocReqRespService sends the response message to the instance of RtDeviceConnection associated with the connection to the source device using the send_msg method. In step 1926, the instance of RtDeviceConnection then transmits the response message back to the original device. In step 1928, the instance of RtDeviceConnection in the original device receives the message and requests the RtRocRouter class to route the message to the correct inbound message service. In step 1930, the object RtRocRouter determines that the message is a request/response message and requests RtRocReqRespService to ProcessInboundReqResp. Referring to FIG. 23, an object communication diagram illustrates a method downloading a network configuration. A user, following completion of the device configuration for a system, initiates a download to a controller/multiplexer. A device table configuration script is built by the configuration application. Using communications services, the configuration application establishes a device connection with the controller multiplexer to receive the download and sends a download script to the controller device. The controller/multiplexer receives the download script messages and processes the device table. In step 2010, a configuration download application program builds ROC script download messages containing the device table download script. In step 2012, the download application issues a GetDevice message to RtDevice to get the Object ID for the RtDeviceProxy of the remote device. In step 2014, the RtDeviceProxy does not yet exist and, as a result, a create message is sent to RtDeviceProxyC to create the necessary device proxy object. In step 2016, RtDeviceProxyC sends a GetDeviceConnIndex message to RtDeviceConnection to get the index of the device connection for the remote device in the device connection table. In step 2018, the device connection does not yet exist so aRtDeviceConnection object is created to manage the connection to the remote device. A lookup is performed in the database to find the remote device entry. The device communications data (for example, ID and IP Addresses) is retrieved from the database and a new entry is added to the configuration devices connection table. This connection is marked permanent in the connection table because the device initiated the connection. In step 2020, a startActiveConnection message is sent to the aRtDeviceConnection object to establish a connection to the remote device. In step 2022, the aRtDeviceConnection sends an RtSyncMessage to the remote device. In step 2024, the remote device receives the RtSyncMessage and attempts to find an entry in the device connection table for the sending device. In step 2026, no entry is found so a new entry is added to the device connection table for the sending device and aRtDeviceConnection object is created to handle the connection in the receiving device. In step 2028, a RtSyncReplyMessage is created and sent back to the sending device containing the device connection index from the device table. The device connection is now established and ready to send and receive messages. In step 2030, the RtDeviceProxyC sends a create RtDeviceProxyS message to the remote device. In step 2032, the RtDeviceProxyS is created in the remote device. In step 2034, the download application sends the download scripts to the remote device via RtRocReqRespServices using the SendMsg call. In step 2036, RtCommScriptDownload receives the Device Table script and processes each device table item and stores the data in a database Registry used to hold configuration data. For the controller/multiplexers this processing is used to create RtDeviceConnection objects and add the objects to the device connection table, allowing the memory to be acquired on download rather than subsequently. The control studio object system 130 enables a user to add objects to diagrams, drag and drop objects between diagrams and third party applications, cut and paste objects between diagrams and other applications and install process control environments depicted by the diagrams having the objects to the process control environment. Referring to FIG. 24, the main control window of the control studio object system 130 includes textual pull down menus 3402, pictographic menu 3404, a stencil portion presentation 3406 and a diagram portion screen presentation 3408. Stencil items 3420 are displayed within the stencil portion presentation 3406. The user's diagram of the process control environment design is presented in the diagram portion screen presentation. This diagram of the process control design environment is referred to as the process control environment view. Each of the presentations in the main window is re-sizable and relocatable by the user in accordance with known windowing techniques. The control studio object system 130 tracks the location and size of the panes of the main window by maintaining persistent object data including coordinates within the two-dimensional display, as well as style and other information. When designing a process control environment, a user simply actuates a stencil item from the stencil portion presentation 3406, drags the actuated stencil item to a desired location within the diagram portion screen presentation 3408 and drops the actuated stencil item in a desired location. Control studio object system 130 then creates a diagram item that allows the diagram to create an object with all of the information necessary for configuring a process control environment. Because the stencil items are objects which include all of the necessary information for the diagram to configure a process control environment, when the process control environment design is completed within the diagram portion, this design may be directly downloaded to the appropriate portions of the process control environment. Referring to FIGS. 25A-25F, the process of installing a completed process control diagram to a node is shown. More specifically, as shown in FIG. 25A, when a user wishes to install a process control diagram to a node, the user selects the Install to Node item from the File menu as illustrated. The choices presented to the user are whether to install the entire module or just the changes since the last install operation was performed. When the user selects install Entire Module, a window is presented that informs the user that the module has not been assigned to a node and asks whether the user wishes to install the module to a node (see FIG. 25B). Next the user is presented with a list of nodes from which the user selects the appropriate node for configuring (see FIG. 25C). After the user selects the node for configuring, the user is presented with a window asking whether the user wishes to update the module (see FIG. 25D). The user is then requested to name the module (see FIG. 25E). After the user selects or generates a name, the user is asked whether the user is sure that the user wishes to perform the install procedure (see FIG. 25F). By answering yes, the control studio object system 130 automatically performs the install to the selected module. The control studio object system 130 may be implemented using the Foundation classes version 4.0 of the Microsoft developers kit for Visual C++ for Windows NT version 3.51. FIGS. 26-31 show the classes of control studio object system and how these classes descend from various Foundation classes. Referring to FIG. 26, control studio object system 130 (of FIG. 3) includes a plurality of classes which descend from and are related to the foundation class CMDIChildWnd 3602. Class CMdeMDIChildWnd 3604 descends from class CMDIChildWnd 3602. Class CSplitChildWnd 3606 descends from class CMDIChildWnd 3604. Classes CStencilView 3608, CSplitterWnd 3610 and CDiagramOcxView 3612 are aggregated with class CSplitChildWnd 3606. Classes CStencil View 3608 and CDiargramOCXView 3612 descend from foundation class CFormView 3614. Class CMDIChildWnd 3602 is a frame window for a child window of a multiple document interface application. Class CMdeMDIChildWnd 3604 removes the title text from the screen presentation. Class CSplitChildWnd 3606 provides management of its children in a split window fashion as is known in the art. Class CStencilView 3608 maintains a CList stencil control and manages the stencil user interface of the stencil portion. Class CDiagramOcxView 3612 manages the diagram user interface of the diagram portion and contains an instance of a diagram old custom control (OCX). Class CSplitterWnd 3610 is a foundation class which controls splitting panes as is well known in the art. Class CFormView 3614 is a foundation class for containing control classes. Referring to FIG. 27, control studio object system 130 (of FIG. 3) includes a plurality of classes which descend from and are related to the foundation classes class CListCtrl 3702 and CImageList 3704. More specifically, class CStencilListCtrl 3706 descends from class CListCtrl 3702. Class CStencilView 3712 is aggregated with CStencilListCtrl 3706. Classes CFbStencilView 3708 and CSfcStencilView 3710 descend from class CStencilView 3712. Foundation class CImageList 3704, class CStencilItem 3714 and class CStencilDropTarget 3716 are associated with Class CStencilListCtrl 3706. Class CStencilDropTarget 3716 descends from class COleDropTarget 3718. Class CStencilItem 3714 descends from foundation class CObject 3720. Class CListCtrl 3702 is a foundation class that encapsulates the functionality of a list view control. Class CImageLst 3704 is a foundation class that encapsulates the functionality of an image list. Class CStencilListCtrl 3706 manages stencil items, provides a view of the stencil items and provides the drag source capability. Class CFBStencil View 3708 controls the stencil or stencils used for creating function block diagrams. Class CSfcStencilView 3710 controls the stencil or stencils used for creating SFC diagrams. CStencilItem 3714 contains the drag/drop information for a single item in the stencil list control. CStencilDropTarget 3716 controls drag and drop notification messages for class CStencilListCtrl 3706. COleDropTarget 3718 is a foundation class which encapsulates the functionality of dropping in a drag/drop operation. Referring to FIGS. 28A and 28B, control studio object system 130 (of FIG. 3) includes a plurality of classes which descend from the foundation class CObject 3802. More specifically, classes CItwtBase 3804 descends from class CObject 3802. Classes CItwtAttribute 3806, CItwtUsage 3808, CLtwtSfcStepData 3810, CLtwtSFCTransistionData 3812 and CLtwtGraphic 3814 descends from class CItwtBase 3804. Each of these classes represent different types of diagram items that may be used in a drag and drop operation. Class GLtwtUsageAll 3822 descend from class CLtwtUsage 3808. Classes CLtwtUsageConnectorAttrs 3820 and GLtwtUsageAll 3822 are also aggregated with class CLtwtAttribute 3806. Class CLtwtConnNameAttrName 3826 is aggregated with class CLtwtUsageAll 3822. Class CLtwtSfcStepsAndActions 3830 descends from class CLtwtSfcStepData 3810. Class CLtwtSfcStepActionData 3832 is aggregated with class CLtwtSfcStepsAnd Actions 3830. Classes CLtwtComment 3840 and CLtwtBox 3842 descend from class CLtwtGraphic 3814. Class CLtwtAttribute 3806 stores data from the database or written into the database about attributes. Class CLtwtUsage 3808 is a light weight data holder for usage information which is used to transfer data between the database and applications; this class is primarily used by function block diagrams, but sequential function chart algorithms use this class in a limited manner. Class CLtwtUsageAll 3822 is a subclass of CLtwtUsage class 3808 and contains additional information, including a list of input and output CLtwtConnNameAttrName objects and a list of CLtwtAttributes objects; this class is used in drag and drop to set any attribute or connection overrides that a user may have made to a specific usage. Class CLtwtSfcStepData 3810 is a light weight data holder which represents a step in a sequential function chart algorithm. Class CLtwtGraphic 3814 implements behavior common to all graphic objects, such as boxes and comments. Class CLtwtSfcStepActionData 3832 is a representation of a single sequential function chart action. Class CLtwtStepsAll 3830 is a specific representation of a step that contains actions used for drag and drop. Class CLtwtBox 3842 is a subclass of CLtwtGraphic 3814 which represents a database object, which in turn represents a box or a rectangle on an algorithm. Class CLtwtComment 3840 is a subclass of CLtwtGraphic 3814 which represents a database object, which in turn represents text a user has entered on an algorithm. Class CLtwtBase 3804 is an abstract base class which provides a way to manage a representation of those database objects which can appear on a diagram. Class CLtwtSFCTransistionData 3812 is a representation of a transition object in an SFC algorithm. Class CLtwtConnNameAddrName 3826 is a representation of an attribute and the name of the connector associated with the attribute; only certain attributes have connectors associated with them. Referring to FIG. 29, control studio object system 130 (of FIG. 3) includes a plurality of classes which also descend from the foundation class CObject 3802 and which relate to connecting other items. More specifically, class CLtwtConnectionBase 3904 descends from class CObject 3802. Classes CLtwtSFCConnection 3906 and CLtwtFBCConnection 3908 descend from class CLtwtConnectionBase 3904. Class CLtwtConnectionBase 3904 is a representation of a connection object. In the preferred embodiment, the two types of connection objects are function block or sequential function chart connections. CLtwtSFCConnection 3906 provides a representation of a connection on a sequence function chart algorithm in the database. Class CLtwtFBConnection 3908 provides a representation of a connection on a function block algorithm in the database. Referring to FIG. 30, control studio object system 130 (of FIG. 3) includes a class which descends from the foundation class COleDropTarget 4002. More specifically, class CDiagramDropTarget 4004 descends from foundation class COleDropTarget 4002. Classes CDiagramCtrl 4006 and CClipboardFormats 4008 are aggregated with class CDiagramDropTarget 4004. Class CDiagramCtrl 4006 descends from class COleControl 4010. CDiargramCtrl 4006 is aggregated with class CDiagramOcxView 4012. Class CDiagramCtrl 4006 provides a graphical representation and a means of manipulation of objects for the function block and sequential function chart algorithm; this class is an OLE control class. Class CDiagramDropTarget 4004 represents the target window of a diagram drag and drop operation; this class determines whether to accept any data dropped onto it and invokes the OnDrop method of the CDiagramCtrl object (which in turn fires the OnDrop event to the container which actually creates the dropped obje | ||||||
