The present invention relates to process models used by simulation, optimization and related applications. More particularly, the invention relates to a method and apparatus for translating process models and related configurations so as to facilitate usage of the translated models by different simulation applications or other application programs.
Complex industrial systems such as, for example, power generation systems and chemical, pharmaceutical and refining processing systems, have experienced a need to operate ever more efficiently in order to remain competitive. This need has resulted in the development and deployment of process modeling systems. These modeling systems are used to construct a process model, or flowsheet, of an entire processing plant using equipment or component models provided by the modeling system. These process models are used to design and evaluate new processes, redesign and retrofit existing process plants, and optimize the operation of existing process plants.
Simulation of complex industrial systems has been effected by using numerical models representative of the physical characteristics of such systems to identify and understand the factors contributing to behavior of the system. Any system that can be quantitatively described using equations and rules can be simulated. Multiple vendors offer a number of modeling systems capable of being used to effect a number of different types of simulation and related operations such as, for example, steady-state simulation, dynamic simulation, optimization, and data-reconciliation. Dynamic process simulation generally involves simulating the performance of a proposed or existing plant or industrial process characterized by a performance that changes over time. One objective in modeling such a system is to understand the way in which it is likely to change so that the behavior of the system may be predicted and ways of improving the behavior through design or control modifications may be identified.
Traditionally, only steady-state simulators have been employed to evaluate process designs. However, many design decisions require knowledge of the transient response and interactions of the process. As a consequence, in recent years steady state simulators have been used to quickly and efficiently evaluate a broad range of possible designs. A dynamic simulator has then been employed if necessary in order to rigorously evaluate the final design candidates. By using a dynamic simulator to screen the final steady-state designs, the likelihood is increased that dynamic operation of the implemented process will not behave unexpectedly.
Existing simulation systems generally store their respective configurations in the form of text files, XML files, databases or some proprietary binary structures. In spite of these differences, all such systems are believed to include certain fundamental information required to model a unit, flowsheet or an entire process. In this regard existing simulation applications require the development of proprietary process models structured in accordance with the requirements of the applicable application. Unfortunately, this effectively precludes interchangeably using process models across different modeling systems. For example, process models developed for simulation applications are precluded from being used in connection with dynamic simulation applications, and vice-versa. As a consequence, the typically substantial investment made in developing models for a given system is prevented from being leveraged across other modeling systems.
The present invention provides a translation system sufficiently flexible to enable process models developed for various modeling systems to be translated into formats consistent with the specifications of other modeling systems. The translation system of the invention thus facilitates preservation of the investment made in developing models of a particular type (e.g., steady-state) by facilitating their translation to a different type (e.g., dynamic). The inventive translation system may also be utilized to enable process models developed for the modeling system of a particular vendor to be translated into a form required for use within the modeling system of a different vendor. In this way the present invention allows the modeling system best suited for a given application to be selected irrespective of the extent of prior investment in developing existing models and personnel expertise.
In one respect the present invention pertains to a method for process model translation. The method includes generating a common process model based upon a first process model capable of being utilized by a first simulation program. A second process model is then generated based upon the common process model, the second process model being capable of being utilized by a second simulation program.
In another aspect the present invention is directed to a method for process model translation pursuant to which information from a first process model capable of being used by a first simulation program is transferred to a common process model. The method further includes generating a second process model capable of being used by a second simulation program. The generation process includes estimating, based upon the information within the common process model, data required during operation of a second simulation program. In addition, the generation process includes inserting representations of one or more units of equipment into the common process model.
The present invention also pertains to a process model translation framework in communication with a steady-state process model database and a dynamic process model database. The translation framework includes a steady-state process model objects holder disposed to interface with the steady-state process model database, and a dynamic process model objects holder disposed to interface with said dynamic process model database. The translation framework also includes a translation-layer objects holder operatively coupled to the steady-state process model objects holder and the dynamic process model objects holder, the translation-layer objects holder defining a common process model.
In yet another aspect the present invention is directed to a translator module configured to translate a first process model useable by a first simulation program into a second process model useable by a second simulation program. The translator module includes a model subsystem disposed to define a plurality of equipment models corresponding to equipment units referenced in a flowsheet produced by the first simulation program. In this regard the model subsystem defines at least first and second equipment models based upon one of the equipment units. The translator module further includes a validation subsystem configured to perform a validation operation with respect to the plurality of equipment models. In addition, the translator module includes a streams subsystem configured to store a plurality of stream objects based upon information defined within first process model and to create at least one additional stream for providing a connection between the at least first and second equipment models.
For a better understanding of the nature of the features of the invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings, in which:
One motivation for the development of the common process model 110 of the embodiment of
Turning now to
The common process models embodied by the first and second translation-layer process models 320, 340 may be structured in a variety of ways. For example, one approach is to permit the applicable source application (e.g., steady-state simulation program 120 or dynamic simulation program 130) to determine the nature of the common process model(s) within the translation layer 308. This is represented in
A second approach to defining the translations to and from the common process model(s) within the translation layer 308 affords less structural flexibility. In this approach the common process model(s) are structured so as to closely reflect a physically realizable arrangement of elements rather than to mimic the structure utilized by the applicable steady-state or dynamic simulation application. That is, in this second approach the assumed basis for the common process model(s) within the translation layer 308 is the physical configuration of the equipment included within the plant or process being modeled. Since an actual physical valve does not receive multiple feed streams and does not perform a phase separation upon exit, the second translation-layer process model 340 provides the only possible representation of a physically realizable collection of elements within the translation layer 308. Accordingly, this second approach to process model translation definition permits only a forward translation path 304a′/304b′ using the translation-layer process model 340, and reverse path of either 306a/306b′ or 306a/306b″.
The employment of largely physically-based process models within the translation layer 308 provides certain collateral benefits. Among these is that a consistent basis is provided for making decisions with respect to the location (i.e., within the common process model(s) of the translation model or within the dynamic/steady-state models peculiar to simulation applications) of components. For example, consider the case in which it is desired to replace the valve in the process models of
In this case various options exist for effecting this translation, a number of which are discussed below.
As is discussed below, the present invention may be utilized to provide a seamless import capability between steady-state and dynamic simulation programs. This permits importing of a process model for a flowsheet developed using a steady-state simulation program into a dynamic simulation environment, and vice-versa. In a particular implementation the steady-state simulation program 120 may comprise the Pro/II™ simulation application (“P2”) and the dynamic simulation program 130 may comprise the DYNSIM™ simulation application, each of which are available from SimSci-Esscor™ unit of Invensys Systems, Inc.
Turning now to
The system 500 may include a local area network (LAN) 502 that is connectable to other networks 104, including other LANs or portions of the Internet or an intranet, through a router 506 or similar mechanism. One example of such a LAN 502 may be a process control network to which process control devices, such as process controller 514, and plant sensors 507 are connected. Process control networks are well known in the art and are used to automate industrial tasks. The network 504 may be a corporate computing network, including possible access to the Internet, to which other computers and computing devices physically removed from the process 501 are connected. In one embodiment, the LANs 502, 504 conform to Transmission Control Protocol/Internet Protocol (TCP/IP) and Common Object Request Broker Architecture (COBRA) industry standards. In alternative embodiments, the LANs 502, 504 may conform to other network standards, including, but not limited to, the International Standards Organization's Open Systems Interconnection, IBM's SNA®, Novell's Netware®, and Banyon VINES®.
The system 500 includes a server 508 that is connected by network signal lines to one or more clients 512. In an exemplary embodiment the server 508 includes a UNIX or Windows NT-based operating system. The server 508 and clients 512 may be uniprocessor or multiprocessor machines, and may otherwise be configured in a wide variety of ways to operate consistent with the teachings of the present invention. The server 508 and clients 512 each include an addressable storage medium such as random access memory and may further include a nonvolatile storage medium such as a magnetic or an optical disk.
The system 500 also includes a storage medium 510 that is connected to the process control network 502 or corporate control network 504. In the exemplary embodiment the storage medium 510 may be configured as a database from which data can be both stored and retrieved. The storage medium 510 is accessible by devices, such as servers, clients, process controllers, and the like, connected to the process control network 502 or the corporate control network 504.
Suitable servers 508 and clients 512 include, without limitation, personal computers, laptops, and workstations. The signal lines may include twisted pair, coaxial, telephone lines, optical fiber cables, modulated AC power lines, satellites, and other data transmission media known to those of skill in the art. A given computer may function both as a server 508 and as a client 512. Alternatively, the server 508 may be connected to the other network 504 different from the LAN 502. Although particular computer systems and network components are shown, those of skill in the art will appreciate that the present invention also works with a variety of other networks and components.
Access to the GUI 602, as well as other architectural objects to be discussed in detail below, are through the optional module interface 604. In one embodiment, the module interface 604 is the Interface Definition Language (IDL) as specified in the CORBA/IIOP 2.2 specification. In one embodiment, the module interface 604 provides a uniform interface to the architectural objects, such as the GUI 602. The module interface 604 allows the actual implementation of the architectural objects, such as the GUI 602, to be independent of the surrounding architecture, such as the operating system and network technology. One of ordinary skill in the art will recognize that the module interface 604 may conform to other standards, or even be non-existent.
Referring again to
The modeling engine framework 708 is an interpretive layer providing user-friendly access to the modeling engine 704. In one embodiment, the modeling engine framework 708, working in conjunction with the GUI 602, provides a user the ability to add new unit models, modify existing unit models, and generally interact with the modeling engine 704 without having to know the specifics of the modeling engine 704.
A unit represents a device that may be found in a process plant. The unit may be a process or an on-process unit. A process unit is an item of operating hardware such as a heat exchanger, a compressor, an expander, a firebox, a pipe, a splitter, a pump, and the like. As mentioned above, each unit is represented by a generally nonlinear model characterized by one or more parameters. Each parameter of a given model will typically pertain to mass or energy transfer characteristics of the equipment unit represented by the model. Some or all of these parameters may be considered maintenance parameters, and will generally be considered as such to the extent that monitoring the changes in their respective values over time may enable inference of the condition of the applicable unit of equipment.
A non-process unit is something other than an item of operating hardware. For example, a non-process unit may be a penalty. A penalty unit assigns a progressively increasing weight to a measured output temperature value beyond the optimum output temperature. For example, the penalty unit may account for the increased cleanup costs associated with operating the furnace at a higher than optimum output temperature. Another example of a non-process unit may be a measurement from measuring devices such as flow meters, thermocouples, and pressure gauges.
In one embodiment, each unit typically has one or more entry or exit ports and is associated with a model. The model is a collection of variables and equations, collectively known as a calculation block. A unit model represents the operation of the unit in terms of its associated calculation block. As an example, an equation for a measurement unit may be:
ModelVariable−Scan−Offset==0
where ModelVariable is a calculated value, Scan is a measured value, and Offset is the difference between ModelVariable and Scan. The above equation contains three variables: ModelVariable, Scan and Offset.
As another example, the equations for a pump unit may be:
PresRise−Product:Pres+Feed:Pres==0, and
Head*GravConst*Feed:Prop[“WtDens”]−1000*PresRise==0
where PresRise is a rise in pressure, Product:Pres is an output pressure, Feed:Pres is an input pressure, Head is a liquid height within a tank connected to the pump, GravConst is the gravity constant, Feed:Prop[“WtDens”] is a weight density of the liquid in the tank, and the PresRise is a rise in pressure of the pump. In the first equation, PresRise, Prod:Pres, and Feed:Pres are variables. In the second equation, Head, Feed:Prop[“WtDens”], and PresRise are variables. GravConst is a parameter, and thus requires a value to be assigned before the equation may be solved.
A stream is used to connect a unit's entry or exit port to another unit's exit or entry port respectively. Furthermore, a feed stream is connected to the unit's entry port, whereas a product stream is connected to the unit's exit port. A stream model may have associated equations and variables. For example, a simplified stream model may be represented as follows:
y=ax+b
where “y” is a measurement that is allowed to assume values within a predefined range, and “x”, “a” and “b” are parameters representative of equipment condition (i.e., “a” and “b” will generally change over time due to equipment wear), and “x” is a calculated value. During the reconciliation operation, the values of “y”, “a” and “b” and similar values within all other equipment models of the applicable process are allowed to change until the overall process model reflects that mass and energy balance has been achieved throughout the process.
In one exemplary embodiment, multi-dimensional data structures are used to store individual units and streams, and their associated variables and equations. The data structures may also store other information such as, but not limited to, the type of unit or stream, whether a variable requires a user-provided value, the variable's lower bound, upper bound, solution value, or status. One of ordinary skill in the art will recognize that the data structures may be in the form of an array, linked list, or as elements within other data structures.
The flowsheet manager 804 provides access to instances of unit models, stream models, and other information associated with a flowsheet model. In the exemplary embodiment the steady-state process model database 140 is stored in the storage medium 510. The flowsheet manager 804 may then communicate with the model 140 within the storage medium 510 to provide a user access to the information contained therein in a manageable format. Further details regarding creation, modification and alteration of flowsheet models are provided in, for example, copending U.S. patent application Ser. No. 09/193,414, filed Nov. 17, 1998 and entitled INTERACTIVE PROCESS MODELING SYSTEM; U.S. Pat. No. 6,442,515, which is entitled PROCESS MODEL GENERATION INDEPENDENT OF APPLICATION MODE; and U.S. Pat. No. 6,323,882, which is entitled METHOD AND SYSTEMS FOR A GRAPHICAL REAL TIME FLOW TASK SCHEDULER, each of which is hereby incorporated by reference in its entirety.
The model generator 902 creates a math model of the flowsheet for input to the solution engine 710. In the exemplary embodiment, the math model is a large set of equations and variables that comprehensively models all or part of the process 501. The math model will typically be in the form of a matrix which represents the equations contained in the flowsheet model in the form f(x)=0. Standard equations and variables associated with a corresponding unit model or stream model are provided in a previously compiled standard library 908. The equations may comprise mass, material, equilibrium, thermodynamic, and physical property related equations applicable to all or part of the process 501.
Turning now to
The common process model 110 also includes a holder 1016 of dynamic simulation objects (“DS holder”) corresponding to the equipment models included within the dynamic process model database 150. Since in the embodiment of
Referring again to
The model subsystem 780 is disposed to handle the equipment models specified in the flowsheet produced by the steady-state simulator program 120. Specifically, the subsystem 780 will determine the number of units represented in the steady-state process model database 140. It will then transfer all such units from the steady-state process model database 140 into corresponding objects within the P2 holder 1004. If the framework does not support a particular unit, an error will be issued. The subsystem 780 will then either notify the user and terminate or log the error and continue. Once all of the units have been placed into corresponding holder objects within the P2 holder 1004, the subsystem 780 will notify the validation subsystem 790 so as to cause a validation operation to be performed. The validation subsystem 790 will check for incomplete or inconsistent input (e.g., two consecutive units with the same or increasing pressure). If the validation operation performed by the validation subsystem 790 is unsuccessful, an error message is generated.
Once the validation subsystem 790 successfully completes the above validation operation, the model subsystem 780 will review the objects within the P2 holder 1004 and determine which common process model objects within the TL holder 1008 should be used for mapping. As was mentioned above, each object within the P2 holder 1004 unit may be mapped into one or more common process model units contained within the TL holder 1008. Once any additional common process model units have been inserted in order to ensure proper dynamic simulation, all the inserted units and the “original” common process model units between which they are inserted are logged for use by the streams subsystem 782 and the graphics subsystem 786.
The streams subsystem 782 is designed to perform three main tasks. First, all of the streams defined within the steady-state process model database 140 are read and their associated data, including connectivity information, is stored. In the exemplary embodiment stream objects represented within the P2 holder 140 will generally map in a one-to-one manner to corresponding objects within the DS holder 1016. Any streams not connected at a source must create a source model and set that as the stream source point. A source created in this way must also be initialized properly using the stream data. If the stream includes assay data, it must be translated appropriately in terms of pseudo-component compositions to be set on the source. It may be necessary to access the thermodynamics subsystem 784 to handle assay information.
If the model subsystem 780 has logged any newly-created common process model units, it is possible that it may have create additional streams to connect these newly-created units. In the exemplary embodiment the names of these streams are derived from the stream that connected to the original common process model units. The component and thermodynamics slates of the newly-created streams would need to be consistent across the connected units.
The thermodynamics subsystem 784 performs various thermodynamics evaluations on the basis of slates of equipment components and methods utilized by the steady-state simulation program 120. In embodiments in which the steady-state simulation program 120 comprises the Pro/II program identified above, a single component slate and a method slate are specified for each equipment unit present within the applicable steady-state flowsheet. The thermodynamics subsystem 784 first gathers information from the steady-state flowsheet concerning the defined components and methods. It will then create method slates, one corresponding to each method slate used by the steady-state simulation program 120. A single component slate corresponding to the slate defined by the steady-state simulation program 120 is also created. Since the size of component slate can adversely affect the performance of the dynamic simulation program 130, in certain implementations it may be beneficial to split the component slates and thereby form multiple slates for use in different parts of a flowsheet. The thermodynamics subsystem 784 may also review the composition to check if a component has a zero or insignificant composition throughout the flowsheet. In this case, user may be notified and offered removal of that component from the component slate. Finally, the thermodynamics subsystem 784 may also be configured to assist the stream subsystem 782 in using the assay information in the stream data.
The graphics subsystem 786 is concerned with translation of the graphical aspects of a given flowsheet. During operation, the graphics subsystem 786 reads data from the steady-state process model database 140 in order to determine the relative locations of the equipment units. It then uses this information to set the same information within the graphics portion of the dynamic process model database 150. The graphics subsystem 786 will also review the inserted models logged by the model subsystem 780. Using the graphics information on the original units of insertion, it will specify the relative locations (or hints) for the newly inserted units.
The flowsheet subsystem 788 is disposed handle all the tasks that are not handled by any specific subsystem. This may include setting units from block diagrams to be set for export to different flowsheets, getting and setting information on trends and profiles, any user preferences that can be globally supported, and flowsheet solution status.
The validation subsystem 790 is configured to provide consistency and error checking for various parts of the flowsheet data and in the various stages of mapping. Inconsistencies may include unsupported units, unsupported thermodynamics options, increasing pressure in the flow direction (e.g., when there is no pump, compressor or similar equipment), and the existence of two pressure-node equipment units next to each other.
As shown in
Referring now to
Turning now to
Translator Engine 1510—represents the top-level driver for the translator module 760, and will be the main .exe file.
Translator Utilities 1520—includes common utilities and base classes used by the translator engine 1510; the other packages “P2”, “DS”, “TL”; and the unit-specific packages. These utilities will be distributed as a single DLL.
ITFCoordinator 1530—the abstract base class defining the functional interface to the single coordinator object. An abstract base class is used to reduce link-time dependencies between the different DLL and EXE components of the Translator Engine 1510. The engine-specific and unit-specific layers may save references to this pointer.
TFCoordinator 1540—the singleton class which is the “Coordinator” object. It inherits from ITFCoordinator 1530. The coordinator is responsible for driving the entire translation process through its various stages. In the exemplary embodiment the pointer of the TFCoordinator 1540 should not itself be used directly in the engine-specific DLLs or the unit-specific DLLs. Instead, those layers should use the abstract base class ITFCoordinator 1530. The purpose of this is to reduce compile and link-time dependencies between the DLLs in the Translator Engine 1510.
ITFAccess 1550—the abstract base class defining the functional interface to product-specific access DLLs.
ITFHolder 1560—the abstract base class defining the functional interface to holder objects. Generic holder objects are used to transiently hold process simulation data in memory in a variety of engine-specific schemas. In general, a holder object has several maps of name/value pairs of data. A simplified interface to name/value pairs provides consistent data access for all the various products during the translation process.
TFMapper 1570—Note that this is a base class, not an interface like the others. This object serves both as the base class for all unit operation mapper classes in the system, and it also has some common utility base methods used during the step of mapping attributes from the source object to the destination object. Two important operations defined by this base class are mapUnit( )and mapAttributes( ).
Validation Algorithm 1580—represents the common utilities and/or classes for performing validation on the translated simulation data.
P2Access 1522—inherited from ITFAccess, this class contains the common utilities for interacting with the COM interface of PRO/II (P2OLEDBS) and extracting data.
P2BaseHolder 1532—inherited from ITFHolder, this class is used for two purposes. First, it serves as the base class for more specific unit-operation holder objects and contains the common implementation for P2Holder objects for all unit operations. (In fact, all P2Holder objects for every unit operation are instances of this class.) Second, a single instance of this specific class is used as a “container” object to manage all of the individual holder objects for the steady-state simulation.
P2TLBaseMapper 1542—inherited from TFMapper, this class is used for two purposes. First, it serves as the base class for unit-specific mapper classes from the steady-state simulation environment to the Translation Layer. Second, a single instance of this specific class is used (by calling the getUnitMapper(const char *unitClass) method) to access the specific derived class mapper for a specific unit operation class.
DSAccess 1524—inherited from ITFAccess, this class contains the common utilities for interacting with the CORBA interface of external programs and saving data to the database and the states.dat file.
DSBaseHolder 1534—inherited from ITFHolder, this class is used for two purposes. First, it serves as the base class for more specific unit-operation holder objects and contains the common implementation for DSHolder objects for all unit operations. (In fact, in the exemplary embodiment all DSHolder objects for every unit operation are instances of this class.) Second, a single instance of this specific class is used as a “container” object to manage all of the individual holder objects for the dynamic simulation program 130.
TLDSBaseMapper 1544—inherited from TFMapper, this class is used for two purposes. First, it serves as the base class for unit-specific mapper classes from the Translation Layer to the dynamic simulation environment. Second, a single instance of this specific class is used (by calling the getUnitMapper(const char *unitClass) method) to access the specific derived class mapper for a specific unit operation class.
TLAccess 1526—inherited from ITFAccess, this class contains the common utilities for interacting with the “translation layer” data model used during translation.
TLBaseHolder 1536—inherited from ITFHolder, this class is used for two purposes. First, it serves as the base class for more specific unit-operation holder objects and contains the common implementation for TLHolder objects for all unit operations. (In fact, all TLHolder objects for every unit operation are instances of this class). Second, a single instance of this specific class is used as a “container” object to manage all of the individual holder objects for the translation layer.
TLTLBaseMapper 1546—inherited from TFMapper, this class is used for two purposes. First, it serves as the base class for unit-specific mapper classes from the Translation Layer to other objects in the same Translation Layer. Second, a single instance of this specific class is used (by calling the getUnitMapper(const char *unitClass) method) to access the specific derived class mapper for a specific unit operation class. In the exemplary embodiment “TL-TL” mapper objects are utilized when “new” unit operations are introduced during the validation process. As was discussed above, the translator module 760 may need to add new unit operations to a given flowsheet being translated from a steady-state to a dynamic simulation environment (e.g., adding a valve between two pressure nodes). In this example, the new valve must be initialized and therefore requires a mapper object to map attributes from the already-existing units/streams to the new valve unit. Since all these operations are being performed on the “TL” data model, it results in a “TL-TL” mapper being used to map a TL stream to a TL valve.
This package represents one method of bundling one or more unit operation mappers into a single DLL. In this particular example, it is assumed that all of the specific holder and mapper classes for the “Valve” for the steady-state and dynamic simulation programs have been combined into a single DLL. In commercial implementations, it is expected that steady-state and dynamic simulation classes for several unit operations will be combined into a single DLL. Some of the more complex unit operations may be broken out into their individual DLLs to allow easier updates and fixes.
P2ValveHolder 1528—this is shown as an actual class inherited from P2BaseHolder, but in fact this is actually an instance of P2BaseHolder which has been initialized with specific name/value attribute data for the valve. The other unit operations will be handled this way—they will not have individual C++ classes but will be instances of the P2BaseHolder class. (Of course, if a specific unit operation requires more complex handling, it may be implemented as a separate class inheriting from P2BaseHolder.)
P2TLValveMapper 1538—this is the actual mapper class for the valve from the steady-state schema to the “Translation Layer” schema. It has actual implementations for the two basic mapping operations: mapUnit( )and mapAttributes( ).
DSValveHolder 1548—this is shown as an actual class inherited from DSBaseHolder, but in fact this is actually an instance of DSBaseHolder which has been initialized with specific name/value attribute data for the valve. The other unit operations will be handled this way—they will not have individual C++ classes but will be instances of the DSBaseHolder class. (Of course, if a specific unit operation requires more complex handling, it may be implemented as a separate class inheriting from P2BaseHolder.)
TLDSValveMapper 1558—this is the actual mapper class for the valve from the “Translation Layer” schema to the dynamic simulation schema. It has actual implementations for the two basic mapping operations: mapUnit( )and mapAttributes( ).
This package represents an alternate method of bundling one or more unit operation mappers into a single DLL. In this particular example, it is assumed that all of the specific holder and mapper classes for translation of the “Valve” from the “Translation Layer” to/from the steady-state simulation environment have been combined into a single DLL.
RMValveHolder 1590—this is shown as an actual class inherited from RMBaseHolder (not shown in the diagram), but in fact this is actually an instance of RMBaseHolder which has been initialized with specific name/value attribute data for the valve. The other unit operations will be handled this way—they will not have individual C++ classes but will be instances of the RMBaseHolder class. (Of course, if a specific unit operation requires more complex handling, it may be implemented as a separate class inheriting from RMBaseHolder.)
RMTLValveMapper 1592—this is the actual mapper class for the valve from the steady-state simulation schema to the “Translation Layer” schema. It has actual implementations for the two basic mapping operations: mapUnit( )and mapAttributes( ).
TLRMValveMapper 1594—this is the actual mapper class for the valve from the “Translation Layer” schema to the steady-state simulation schema. It has actual implementations for the two basic mapping operations: mapUnit( )and mapAttributes( ).
The flow diagram 1600 illustrates the flexibility afforded by the layered approach characterizing embodiments of the invention. In particular, connection to a given modeling system is facilitated by three system-specific modules: the access object 1522, unit holders 1528, 1532 and unit mappers 1538, 1542. The access object 1522 allows model information to be retrieved from the source modeling system and deposited with the target modeling system, irrespective of the archival medium (text, xml, database, binary). Unit holders are disposed to hold model data in the source/target system specific format. Unit mappers are configured to translate the data in the unit holders to/from the common layer holders. In order to enable this translation to occur in an environment including such dissimilar system-specific modules, measures are taken to effectively standardize the interfaces of such modules. This is illustrated by
Turning now to
The validation set forth below is specific to a particular dynamic simulation program or other product. In the case of the above-referenced DYNSIM™ product, the validation procedure includes adding a valve if two units of type “pressure” are connected together. The stream connectivity information gathered above is used for this purpose.
In the exemplary embodiment validation operations are performed both in connection with mapping of steady-state simulation data to the translation layer (TL) and subsequent mapping from the translation layer to the dynamic simulation environment. In particular, when translating steady-state process model information into the common process model of the translation layer, the P2Mapper 1118 is configured to ensure that the TL data deposited in the translation layer is in a valid and complete format. In this regard the TL is considered to be in a valid and complete format to the extent it will provide sufficient information for creation of a corresponding process model within a dynamic simulation program or other application. Finally, when translating from the TL to a dynamic simulation or other application, the DSAccess subsystem 1130 is operative to validate and manipulate, if necessary, its copy of the data (DSHolders 1016) such that the newly-created dynamic process model file is valid and complete relative to the requirements of the dynamic simulation or other application. These validation operations may be further understood with reference to the following Examples:
In translating attributes in a unit operation from one product to another, a simple text file may be used by the mapper objects (e.g., P2Mapper, DSMapper) referenced in the examples above. Each of these text files, or Unit Operation Translation Files, may be denoted as “XXYYUnitMap.txt,” where XX is the source product code (e.g., P2), YY is the target product code (e.g., DS), and “Unit” is the name of the source product unit class that will be translated. An exemplary format for this file will be as shown in Example (6):
[MAPUNIT] Section
The purpose of this optional section is to specify the unit mapping, either one-to-one or one-to-many.
[TargetUnitClass] Section
This section defines the mapping of attributes from the source unit to the target unit. The file will contain one or more [TargetUnitClass] sections. The actual name inside the square brackets will be the actual unit class name that the unit is being mapped to. For example, if the section is describing the mapping of attributes from a P2 “Stream” object to a TL “Source” object, the section will be named [Source] (and it will be inside the text file P2TLStream.txt).
The [TargetUnitClass] section will contain several lines of data describing the attribute mapping as shown in Example (6).
All lines between Pass=1 and Pass=2 will be executed before the TFMapper method customMapAttributes( ). All lines after Pass=2 will be executed after customMapAttributes( ). If neither Pass=1 nor Pass=2 is specified, then all lines are considered as Pass=1. If Pass=2 is specified but Pass=1 is not, then all lines between [TargetUnitClass] and Pass=2 are considered Pass=1.
It is observed that Example (9) contains multiple mappings in the same text file. The first mapping defines the manner in which P2 “Stream” attributes should be mapped onto a TL “Stream”. For example, the P2 attribute “TotalMolarRate” will be copied to the TL Stream attribute “Molar Flow”. The second section defines how P2 “Stream” attributes should be mapped onto TL “Source” units. For example, the P2 attribute “Temperature” will be copied to the TL Source attribute “Temperature”.
Although the following describes the user views associated with the translation of a steady-state flowsheet and its importation into a dynamic simulation environment, the present invention is equally applicable to the reverse translation process.
Turning now to
As may be appreciated with reference to
The following includes pseudocode corresponding to implementations of various interfaces (i.e., ITFAccess, ITFHolder) and of a mapper (i.e., TFMapper) identified in
The basic interfaces are implemented as C++ abstract base classes.
Defines access to product-specific initialization and utilities.
class TFMapper
The following includes pseudocode descriptive of the flowsheet translation and validation process of the present invention illustratively represented by
1. Load data into P2Holders (as described previously)
2. Map from P2Holders to TLHolders
3. Map Data from TLHolders To DSHolders
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the invention. In other instances, well-known circuits and devices are shown in block diagram form in order to avoid unnecessary distraction from the underlying invention. Thus, the foregoing descriptions of specific embodiments of the present invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, obviously many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the following Claims and their equivalents define the scope of the invention.
This application is a Continuation of and claims priority to U.S. Utility Patent application Ser. No. 11/045,804, entitled METHOD AND APPARATUS FOR TRANSLATION OF PROCESS MODELS TO FACILITATE USAGE BY PLURAL SIMULATION APPLICATIONS, filed on Jan. 28, 2005, which claims priority under 35 U.S.C. §119(e) to U.S. provisional application Serial No. 60/540,219 entitled METHOD AND APPARATUS FOR TRANSLATION OF PROCESS MODELS TO FACILITATE USAGE BY PLURAL SIMULATION APPLICATIONS, filed Jan. 29, 2004, which is herein incorporated by reference in its entirety. This application is also related to application Ser. No. 09/195,420, filed on Nov. 17, 1998, now U.S. Pat. No. 6,442,515.
Number | Date | Country | |
---|---|---|---|
60540219 | Jan 2004 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11045804 | Jan 2005 | US |
Child | 12987941 | US |