Data processing: generic control systems or specific application – Specific application – apparatus or process – Product assembly or manufacturing
Reexamination Certificate
1997-12-19
2001-07-10
Gordon, Paul P. (Department: 2121)
Data processing: generic control systems or specific application
Specific application, apparatus or process
Product assembly or manufacturing
C709S241000, C709S241000, C717S152000
Reexamination Certificate
active
06259958
ABSTRACT:
TECHNICAL FIELD OF THE INVENTION
The present invention is directed, in general, to computing and processing systems and, more specifically, to a call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets and a real time plant control system employing the system or the method.
BACKGROUND OF THE INVENTION
Automated process control systems include a comprehensive set of control algorithms, or software-definable process control routines, to control and monitor various processes within, for instance, a manufacturing facility. The software for such control systems is frequently implemented using programming languages, such as “C++,” that embody an object-oriented design methodology that employs a “Kernel” subsystem which manages execution of and interaction between various “application objects;” an application object is a software construct that may contain an algorithm used, for example, to control the operation of an actuator in a processing facility.
Within object-oriented software systems, the nature of the linking mechanism which joins application objects to the Kernel, and to each other, is very important; a linking mechanism may be either “static” or “dynamic.” Generally, if a static linking mechanism is employed, software code modules are bound to each other rigidly and early in the software system development life-cycle. In addition, with a static linking mechanism, application objects typically cannot be changed or added independently of the Kernel or of each other; for example, if the Kernel changes, the application objects are re-released when the Kernel is released and, if any of the application objects are changed, the Kernel is re-released when the application objects are released.
In contrast to static linking mechanisms, if a dynamic linking mechanism is employed, software code modules are typically bound to each other later on in the software development life-cycle, e.g., at the time when an application configuration is loaded. In addition, using a dynamic linking mechanism, application objects can be changed or added independently of changes to the Kernel or other application objects; e.g., changes to the Kernel are not accompanied by releases of already existing application objects and should not force such a release and changes to application objects do not force release of the Kernel.
Within programming and execution environments, such as C++, both static and dynamic linking mechanisms are typically supported. The support for both types of linking mechanisms, however, is generally limited within a consistent tool set offered by a single vendor, which requires that the Kernel and the application objects be compiled and linked using a single vendor's tool, regardless of whether the linking mechanisms employed are static, dynamic, or some combination of both types. Examples of static and dynamic linking mechanisms of application objects may be found in well known technologies, such as the “Component Object Model” by Microsoft® and the “Common Object Request Broker Architecture” by Object Management Group; it is believed, however, that the foregoing software technologies do not provide for seamless calling of either static or dynamic linked application objects across heterogeneous tool sets.
When process controllers are implemented under an object-oriented software paradigm using a programming language such as C++, the software design and development has additional requirements. For example, the software for a process controller must be maintained and possibly even enhanced over an extended period of time. Additionally, modifications to the software might have to be accomplished using personnel working independently and geographically separate from each other. Furthermore, the lifetime of the product may exceed the lifetime of the software development tools used, necessitating the introduction of a new software tool set without invalidating existing application object software.
Accordingly, what is needed in the art is an improved object-oriented controller design that supports both static and dynamic linking mechanisms; more particularly, what is needed in the art are means to support dynamic linking of application objects that are robust against changes in software tools used to maintain and modify controller software.
SUMMARY OF THE INVENTION
To address the above-discussed deficiencies of the prior art, it is a primary object of the present invention to provide a way of allowing dynamic linked application objects to interact with a kernel without regard to the identity of the tool set employed to develop the dynamic linked application object.
In the attainment of the above primary object, the present invention provides, for use within a computer-based digital control system, a calling mechanism and method for allowing both dynamic linked application objects and static linked application objects created with heterogeneous development tool sets to interact with a kernel of the system or each other. In one embodiment, the calling mechanism includes: (1) a dynamic link interface that employs only standards-based software calls to allow the dynamic linked application objects to interact with the kernel, (2) a static link interface that employs at least one non-standard software call to allow the static link application objects to interact with the kernel and (3) at least one call router, operative to manage software calls among the kernel, the dynamic link application objects and the static link application objects, that detects software call types and routes the software calls to a selected one of the dynamic link interface and the static link interface based on the software call types.
The present invention therefore provides two distinct interfaces for software calls: (1) a standards-based interface to guarantee compatibility with later-developed dynamic linked application objects (based on the fact that all development tool sets for a given language include standard calls) and (2) an interface containing at least one nonstandard call such that static linked application objects can avail themselves of more advanced calls specific to a given tool set. The present invention also discerns call types and route calls to one of the interfaces as a function thereof. The software calls may originate in any one of the kernel, the dynamic linked application objects and the static linked application objects and may terminate in any one of the kernel, the dynamic linked application objects and the static linked application objects.
In one embodiment of the present invention, the standards-based software calls are based on American National Standards Institute (ANSI) standards. Those skilled in the art are familiar with ANSI-standard languages. In one embodiment, the standards-based software calls are C language calls. In a related embodiment, the at least one nonstandard call is a C++ language call. C is one language subject to ANSI standards. C++ is not standardized in all its features, but affords attractive programming features. Of course, the present invention can operate with other standards-based and nonstandard languages.
In one embodiment of the present invention, the call router detects the software call types by detecting an interface pointer structure (IPS) pointer associated with each of the dynamic linked application objects. In an embodiment to be illustrated and described, the structure and function of IPS pointers will be set forth in detail. Of course, the call router may detect software call types by another means.
The foregoing has outlined rather broadly the features and technical advantages of the present invention so that those skilled in the art may better understand the detailed description of the invention that follows. Additional features and advantages of the invention will be described hereinafter that form the subject of the claims of the invention. Those skilled in the art should appreciate that they may readily use t
Chernoquzov Alexander V.
Narayan Shashank S.
Ollikainen Matti H.
Rehikainen Hannu J.
Salpakari Pekka M.
Gordon Paul P.
Hitt Chwang & Gaines
Honeywell International , Inc.
LandOfFree
Call mechanism for static and dynamic linked functions... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Call mechanism for static and dynamic linked functions..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Call mechanism for static and dynamic linked functions... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2537206