throbber
a2) United States Patent
`US 6,874,148 Bl
`(10) Patent No.:
`Mar.29, 2005
`(45) Date of Patent:
`Richardsonet al.
`
`US006874148B1
`
`(54)
`
`(75)
`
`(73)
`
`SYSTEM AND METHOD FOR EXPORTING A
`GRAPHICAL PROGRAM TO A SHARED
`LIBRARY
`
`Inventors: Greg Richardson, Round Rock, TX
`(US); Steve Rogers, Austin, TX (US)
`
`Assignee: National Instruments Corporation,
`Austin, TX (US)
`
`(*)
`
`Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`US.C. 154(b) by 525 days.
`
`(21)
`
`Appl. No.: 09/594,226
`
`(22)
`
`Filed:
`
`Jun. 14, 2000
`
`61)
`
`(52)
`(58)
`
`(56)
`
`Int. C17 occ G06F 3/00; GO6F 9/44;
`GO06F 9/46; GO6F 13/00
`US. Che cence 719/328; 719/331; 717/107
`Field of Search .........0.......00. 719/310, 311-316,
`719/328-331; 717/100-113, 162-167, 133,
`144, 157; 709/331, 332; 345/762, 763,
`TT, 967
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,146,593
`5,163,130
`5,860,004
`5,883,639
`6,064,812
`6,102,965
`6,189,138
`6,351,778
`6,389,588
`
`9/1992 Brandle et al.
`A *
`........... 709/328
`A * 11/1992 Hullot wee 345/763
`
`1/1999 Fowlowet al. 0.0... 717/109
`A *
`3/1999 Walton et al. 00... 345/473
`A *
`A
`5/2000 Parthasarathyet al.
`A
`8/2000 Dyeetal.
`Bi *
`2/2001 Fowlowetal. ............. 717/107
`Bi *
`2/2002 Ortonetal.
`
`5/2002 Wadhwaetal. ............ 717/106
`Bl *
`
`
`OTHER PUBLICATIONS
`
`Munro, Writing DLLs for Windowsusing Visual Basic, part
`1, PC Magazine, v11, n11,p. 379(6).*
`LabVIEW Function Reference Manual, Aug. 1993 Edition,
`pp 10-11 and 10-12.
`LabVIEW CodeInterface Reference Manual, Dec. 1993.
`
`* cited by examiner
`Primary Examiner—Meng-Al T. An
`Assistant Examiner—Diem Cao
`(74) Attorney, Agent, or Firm—Meyertons Hood Kivlin
`Kowert & Goetzel, P.C.; Jeffrey C. Hood; Jason L. Burgess
`(57)
`ABSTRACT
`
`System and method for enabling a program to call into
`graphical program code via a shared library. A graphical
`programming system may export a graphical program to a
`shared library, such as a Windows Dynamic Link Library
`(DLL), Unix Shared Library, etc. A program, e.g. a text-
`based program, may then use the shared library to call into
`the graphical program. Graphical programs or subprograms
`may have associated inputs or outputs of various data types.
`Whencreating a shared library, a functional interface speci-
`fying parameterized versions of these inputs and outputs
`may be specified, either automatically or interactively. A
`program maythen utilize this functional interface to con-
`struct an appropriate call
`into the shared library. A user
`interface enabling users to specify the mapping of graphical
`program inputs and outputs onto parameters of the func-
`tional interface is described. Multiple graphical programsor
`subprograms maybe exported to a sharedlibrary. The shared
`library may include an entry point function associated with
`each graphical program or subprogram. When a program
`calls into the entry point associated with a particular graphi-
`cal program, the entry point function may manipulate or
`copy the parameters passed by the calling program into a
`representation expected by the graphical program.
`
`38 Claims, 11 Drawing Sheets
`
`user chooses a graphical program to export to
`
`a shared library 200
`
`user specifies desired functionalinterface forthe shared
`library entry point for the graphical program code
`202
`
`
`
`
`|graphical programming environmentcreates the shared
`library, in response to a request by the user
`204DEE
`
`Program performsa call into the shared library in
`accordance with the specified functionalinterface
`206
`
`eeeeentry pointfunction transforms parameters into the
`
`appropriate data typesor formats expected by the
`graphical program code and copiesthe parameters into
`the locations expected by the graphical program code
`
`ee
`entry point function calls graphical program code
`210
`ft
`graphical program code executes
`212
`
`Google Exhibit 1062
`Google v. VirtaMove
`
`Google Exhibit 1062
`Google v. VirtaMove
`
`

`

`U.S. Patent
`
`Mar.29, 2005
`
`Sheet 1 of 11
`
`US 6,874,148 B1
`
`oo”
`
`
`
`spieoguonisinbow
`
`vib
`
`
`
`BEL—-,Buluojipuod@uonisinboy
`9z1jeubis
`ebeu|©zel$2
`
`vEL
`
`9El
`
`VbSls
`
`jonUODuoROWY<2OSI
`
`paseg-sajndwoy
`
`SJUSWTUSU]
`
`
`
`SalJepuHwun
`
`
`
`
`

`

`U.S. Patent
`
`Mar.29, 2005
`
`Sheet 2 of 11
`
`US 6,874,148 B1
`
`uonoW
`
`|jU0DEL
`
`aunjesedwa|
`
`eiNsselda
`
`Wr
`
`al‘Sis
`
`8t1
`
`Puonsinboy
`
`eGbew)&
`
`vel
`
`sninwips
`
`joquoD
`
`—og
`
`arsjeubis
`velEfspseogvel
`
`c8bHy9Z|
`Guluon|puod
`
`BeQ-u-Bnid
`
`uonisinboy
`
`WOdPIsl4
`
`
`
`

`

`U.S. Patent
`
`Mar.29, 2005
`
`Sheet 3 of 11
`
`US 6,874,148 B1
`
`Aowsy\ule
`
`991
`
`JayjouyU04
`
`KowayyNdd
`
`vol
`
`é9Lsng}sOH
`
`
`
`Ja[jO1UODsng
`
`o9gL
`
`
`
`SISSEYD[XA
`
`ST
`
`¢Old
`
`LLSngaid9D
`
`PLL
`
`XW
`
`98L
`
`uonisinbow)es3calo8t
`Ws!JEDdidAUQPJeHoaplACJeyeq
`
`OZLsnguolsuedxy
`
`BOL
`
`
`
`
`

`

`U.S. Patent
`
`Mar. 29,2005
`
`Sheet 4 of 11
`
`US 6,874,148 B1
`
`user choosesa graphical program to export to
`a sharedlibrary
`200
`
`user specifies desired functional interface for the shared
`library entry point for the graphical program code
`202
`
`graphical programming environmentcreates the shared
`library, in response to a request by the user
`204
`
`_|FIG. 3A
`graphical program code executes
`
`program performsacall into the sharedlibrary in
`accordancewith the specified functional interface
`206
`
`entry point function transforms parameters into the
`appropriate data types or formats expected by the
`graphical program code and copies the parameters into
`the locations expected by the graphical program code
`208
`
`entry point function calls graphical program code
`210
`
`

`

`U.S. Patent
`
`Mar. 29,2005
`
`Sheet 5 of11
`
`US 6,874,148 B1
`
`(f) Ruild Application or Shared Library COLL) - New script *
`
`Target
`
`Saurce Files | VI Settings | Application Settings |
`
`Installer Settings |
`
`Build target
`Application nane
`Dertinazion directcry
`Support fle directory
`
`uild Optians
`
`|
`
`Fharod Library (DLL!
`[sharedib.ai
`q fe:\TENPano
`2 [c:\TEM>\appidata
`
`& Single application containngall VT<
`£ Small application wih external Fle far subvie
`
`[— Co not compress application
`Faster toad
`ti
`hines
`(Faster load
`on slow machine:)
`
`LLB For other files
`
`3% c:\ TEMPyapp\data lib
`
`Gar |
`ae i
`
`|
`
`Add Exported VI...
`Add Dynamic 47...
`Add Support File...
`Add Diractory Contante...
`
`Target
`
`Source Files
`
`| VI Settings | Application Settings |
`
`Installer Settings |
`
`(SgeaeeRea
`W My Scope Read Waveform.vi
`My Scope Configurs Yertca.vt
`
`Source file path
`
`1 Prvswerewinda\SampleVisiMySwitchGetPath.vi
`
`7
`
`FIG. 4B
`
`|
`|
`|
`|
`
`|
`
`|
`
`RemoveFie
`
`Define YI Prototype...
`
`CisstomDestinations ..
`
`

`

`U.S. Patent
`
`Mar. 29, 2005
`
`Sheet6 of 11
`
`US 6,874,148 B1
`
`(>[| LN) [Spt AppicationFont —_~]
`
`|
`
`Index|
`4
`
`|
`
`Waveform Point|
`ooo
`
`FIG. 5A
`
`
`
`FIG. 5B
`
`

`

`U.S. Patent
`
`Mar. 29,2005
`
`Sheet 7 of11
`
`US 6,874,148 B1
`
`user specifies entry point function name
`220
`
`222
`
`user defines parameters for entry point function,
`naming and ordering the parameters as desired
`
`user selects a particular parameter
`224
`
`
`
`
`
`
`
`
`
`
`
`
`graphical programming environmentdisplays
`mapping information for the selected parameter
`226
`
`
`
`user associates the parameter with the
`appropriate input and/or output of the
`graphical program
`228
`
`
`
`
`
`
`
`user specifies desired data type mapping
`information for the parameter, if necessary
`
`
`230
`
`
`
`FIG. 6
`
`

`

`U.S. Patent
`
`Mar. 29, 2005
`
`Sheet 8 of 11
`
`US 6,874,148 B1
`
`iS Define VI Prototype
`
`Fa
`
`Function Name
`7 SwitchGetPath

`& Standard CallingConventions
`Calling Convertions
`
`Parameters
`
`return value
`channel2
`
`Coe
`
`[eIe)
`
`‘urrent Parameter
`Name fans
`
`Param Typs
`|
`¥I Output
`Pass By j
`Length Input
`Length Outpct
`
`f
`
`Output
`pathlist
`C String Pointer
`lon
`len2
`
`7
`=]
`J

`J
`
`Function Frototype:
`pid MySvitchGetPath(LStrHandle “channel2, LStrHandk “channelt, int32 vi,
`CStr pathtist, int32 len, intaz “lenz)
`
`
`
`FIG. 7
`
`

`

`U.S. Patent
`
`Mar.29, 2005
`
`Sheet 9 of 11
`
`US 6,874,148 B1
`
`
`
`ZOE
`
`vOE
`
`
`
`
`
`wesBoudyeolydes6
`
`poveys 00€
`pareus
`
`
`
`
`uoNeWwojuy;bue}@pooajqe}noexaweJsGoidjeoiydes6
`.Oe8“OldAveiqypeseys=\
`90€pOE
`
`
`apooaiqeynoexawesHodjeordesB
`
`apoojuiodAnusAeiqi
`
`
`apoojuiodAnusAveiqy
`
`00€
`
`
`
`

`

`U.S. Patent
`
`Mar. 29,2005
`
`Sheet 10 of 11
`
`US 6,874,148 B1
`
`CodeView Debug Information
`
`COFF Symbols
`
`COFF Line Numbers
`
`
` Sections
`
`Section Table (array of
`IMAGE_SECTION_
`HEADERs)
`
`|
`
`Data Directory
`
`|
`
`IMAGE_NT_
`HEADERS
`
`Offset 0
`
`IMAGE_OPTIONAL
`_HEADER
`eee
`IMAGE_FILE_HEADER
`"PE\O\O"-
`MZ
`Ww
`i
`
`PE Signature
`MS-DOS Header
`_
`H
`
`FIG. 9
`(PRIOR ART)
`
`

`

`U.S. Patent
`
`Mar. 29,2005
`
`Sheet 11 of 11
`
`US 6,874,148 B1
`
`program Calls into shared library entry point function
`400
`
`entry point function transforms and copies parameters
`402
`|
`
`406
`
`entry point function calls into runtime system, specifying
`the graphical program to be executed
`404
`
`runtime system manages execution of graphical
`program
`
`FIG. 10
`
`

`

`US 6,874,148 B1
`
`1
`SYSTEM AND METHOD FOR EXPORTING A
`GRAPHICAL PROGRAM TO A SHARED
`LIBRARY
`
`FIELD OF THE INVENTION
`
`The present invention relates to the field of graphical
`programming, and moreparticularly to a system and method
`for enabling a program to call into graphical program code
`via a shared library.
`DESCRIPTION OF THE RELATED ART
`
`text-based programming lan-
`Traditionally, high level
`guages have been used by programmers in writing applica-
`tions programs. Many different high level programming
`languages exist, including BASIC, C, FORTRAN,Pascal,
`COBOL, ADA, APL, etc. Programs written in these high
`level languagesare translated to the machine languagelevel
`by translators known as compilers or interpreters. The high
`level programming languages in this level, as well as the
`assembly language level, are referred to as text-based pro-
`gramming environments.
`Increasingly computers are required to be used and pro-
`grammed by those whoare not highly trained in computer
`programming techniques. When traditional text-based pro-
`gramming environments are used, the user’s programming
`skills and ability to interact with the computer system often
`become a limiting factor in the achievement of optimal
`utilization of the computer system.
`There are numerous subtle complexities which a user
`must master before he can efficiently program a computer
`system in a text-based environment. The task of program-
`ming a computer system to model or implement a process
`often is further complicated by the fact that a sequence of
`mathematical formulas, mathematical steps or other proce-
`dures customarily used to conceptually model a process
`often does not closely correspond to the traditional text-
`based programming techniques used to program a computer
`system to model such a process. In other words, the require-
`ment
`that a user program in a text-based programming
`environmentplaces a level of abstraction betweenthe user’s
`conceptualization of the solution and the implementation of
`a method that accomplishes this solution in a computer
`program. Thus, a user often must substantially master dif-
`ferent skills in order to both conceptually model a system
`and then to program a computer to model that system. Since
`a user often is not fully proficient in techniques for pro-
`gramming a computer system in a text-based environmentto
`implement his model, the efficiency with which the com-
`puter system can beutilized to perform such modeling often
`is reduced.
`
`
`
`Examples of fields in which computer systems are
`employed to model and/or control physical systems are the
`fields of instrumentation, process control,
`industrial
`automation, and simulation. Computer modeling or control
`of devices such as instruments or industrial automation
`
`hardware has becomeincreasingly desirable in view of the
`increasing complexity and variety of instruments and
`devices available for use. However, due to the wide variety
`of possible testing/control situations and environments, and
`also the wide array of instruments or devices available,it is
`often necessary for a user to develop a program to control a
`desired system. As discussed above, computer programs
`used to control such systems had to be written in conven-
`tional
`text-based programming languages such as,
`for
`example, assembly language, C, FORTRAN, BASIC, or
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`Pascal. Traditional users of these systems, however, often
`were not highly trained in programming techniques and, in
`addition,
`traditional
`text-based programming languages
`were not sufficiently intuitive to allow users to use these
`languages without training. Therefore, implementation of
`such systems frequently required the involvement of a
`programmer to write software for control and analysis of
`instrumentation or industrial automation data. Thus, devel-
`opment and maintenance of the software elements in these
`systems often proved to be difficult.
`U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,
`301; and 5,301,336; among others, to Kodoskyet al disclose
`a graphical system and method for modeling a process,Le.,
`a graphical programming environment which enables a user
`to easily and intuitively model a process. The graphical
`programming environmentdisclosed in Kodoskyet al can be
`considered the highest and most intuitive way in which to
`interact with a computer. A graphically based programming
`environment can be represented at a level above text-based
`high level programming languages such as C, Pascal, etc.
`The method disclosed in Kodosky et al allows a user to
`construct a diagram using a block diagram editor, such that
`the diagram created graphically displays a procedure or
`method for accomplishing a certain result, such as manipu-
`lating one or more input variables to produce one or more
`output variables. In response to the user constructing a data
`flow diagram or graphical program using the block diagram
`editor, data structures are automatically constructed which
`characterize an execution procedure which corresponds to
`the displayed procedure. The graphical program may be
`compiled or interpreted by a computer. Therefore, a user can
`create a computer program solely by using a graphically
`based programming environment. This graphically based
`programming environment may be usedfor creating virtual
`instrumentation systems,
`industrial automation systems,
`modeling processes, and simulation, as well as for any type
`of general programming.
`Therefore, Kodosky et al teaches a graphical program-
`ming environment wherein a user places or manipulates
`icons in a block diagram using a block diagram editor to
`create a data flow “program.” A graphical program for
`controlling or modeling devices, such as instruments, pro-
`cesses or industrial automation hardware, maybereferred to
`as a virtual instrument (VI). In creating a virtual instrument,
`a user may create a front panel or user interface panel. The
`front panel includes various user interface elements or front
`panel objects, such as controls or indicators, that represent or
`display the respective input and output that will be used by
`the graphical program or VI, and may include other icons
`which represent devices being controlled. The front panel
`may be comprised in a single window of user interface
`elements, or may comprise a plurality of individual windows
`each having a user interface element, wherein the individual
`windows mayoptionally be tiled together. Whenthe controls
`and indicators are created in the front panel, corresponding
`icons or terminals may be automatically created in the block
`diagram by the block diagrameditor. Alternatively, the user
`can place terminal icons in the block diagram which may
`cause the display of corresponding front panel objects in the
`front panel, either at edit time orlater at run time. As another
`example,
`the front panel objects, e.g.,
`the GUI, may be
`embedded in the block diagram.
`During creation of the graphical program, the user may
`select various function nodes or icons that accomplish his
`desired result and connect the function nodes together. For
`example, the function nodes may be connected in a data flow
`or control flow format. The function nodes may be con-
`
`

`

`US 6,874,148 B1
`
`3
`4
`graphical program code via a shared library. A user may
`nected between the terminals of the respective controls and
`indicators. Thus the user may create or assemble a data flow
`utilize a graphical programming system to create a graphical
`program, referred to as a block diagram, representing the
`program and may then export this graphical program to a
`graphical data flow which accomplishes his desired process.
`shared library. The graphical programming system may
`The assembled graphical program may then be compiled or
`support
`the creation of any of various types of shared
`interpreted to produce machine language that accomplishes
`libraries, such as a Windows Dynamic Link Library (DLL),
`the desired method or process as shown in the block dia-
`a Unix or Linux Shared Library, a Macintosh Code
`gram.
`Fragment, etc. A program enabled to interface with the type
`A user may input data to a virtual instrument using front
`of shared library created by the graphical programming
`panel controls. This input data may propagate through the
`system may then use the shared library to call into the
`data flow block diagram or graphical program and appear as
`graphical program. For example, the graphical programming
`changes on the output
`indicators.
`In an instrumentation
`system may create a Windows DLL,andatext-based C
`application, the front panel can be analogized to the front
`program running on the Windows environment may load
`panel of an instrument. In an industrial automation applica-
`and use the DLL.
`tion the front panel can be analogized to the MMI (Man
`Machine Interface) of a device. The user may adjust the
`controls on the front panel to affect the input and view the
`output on the respective indicators. Alternatively, the front
`panel may be used merely to view the input and output, and
`the input may not be interactively manipulable by the user
`during program execution.
`Thus, graphical programming has become a powerfultool
`available to programmers. Graphical programming environ-
`ments such as the National Instruments LabVIEW product
`have become very popular. Tools such as LabVIEW have
`greatly increased the productivity of programmers, and
`increasing numbers of programmers are using graphical
`programming environments to develop their software appli-
`cations.In particular, graphical programmingtools are being
`used for test and measurement, data acquisition, process
`control, man machine interface (MMI), supervisory control
`and data acquisition (SCADA)applications, simulation, and
`machine vision applications, among others.
`As the use of graphical programming hasincreased,it has
`become more important to enable graphical programs to
`interface with other types of executable code. One common
`wayfor interfacing between different portions of executable
`code is to use a standard shared library. Many computing
`platforms support standard shared libraries. For example, the
`Windows platform supports Dynamic Link Libraries
`(DLLs), the Unix platform supports Shared Libraries, and
`the Macintosh platform supports Code Fragments. Many
`programming environments, including text-based program-
`ming environments, support the creation and use of these
`types of standard shared libraries.
`Somecurrent graphical programming environments pro-
`vide a node for calling a standard shared library from within
`a graphical program. In this way, graphical programs can
`utilize other types of executable code, including code cre-
`ated from a text-based programming language. However,it
`is often desirable to provide the reverse functionality, in
`which another program can call into a graphical program
`using a shared library. Previous approaches to enabling
`graphical programsto be called using sharedlibraries suffer
`from various drawbacks. For example, one approach in
`current use for the Windowsplatform is to create a DLL that
`has entry points that call a graphical program indirectly by
`interfacing with an ActiveX out-of-process server, where
`this ActiveX server is operable to invoke the desired graphi-
`cal program. However, calling a graphical program using
`this method may be inefficient, since a process switch is
`involved. Also, this approach may require programmers to
`understand various aspects of the ActiveX framework. Thus,
`it may be desirable to enable programmers to call into
`graphical program code more easily and efficiently.
`SUMMARYOF THE INVENTION
`
`Graphical programs or subprograms may have associated
`inputs or outputs of various data types. When creating a
`shared library from a graphical program, a functional inter-
`face specifying parameterized versions of these inputs and
`outputs may be specified, either automatically or interac-
`tively. A program may then utilize this functional interface
`to construct an appropriate call into the shared library. For
`example, for a graphical program with an integer input and
`an integer output, a C-style functional interface may be
`specified, such as:
`int Funcname(int inputParm);
`A user interface enabling users to specify the mapping of
`graphical program inputs and outputs onto parameters of the
`functional interface is described.
`A user may specify multiple graphical programs or sub-
`programs to export to a shared library. The shared library
`may include an entry point function associated with each
`graphical program or subprogram. When a program calls
`into the entry point associated with a particular graphical
`program, the entry point function may manipulate or copy
`the parameters passed by the calling program. For example,
`a graphical program mayrepresentor store a particular data
`type differently than the calling program or the shared
`library specification. Thus,
`the entry point function may
`perform any necessary operationsto transform the parameter
`into the format expected by the graphical program. The entry
`point function may also copy parameters into a location
`expected by the graphical program, such as a parameter table
`associated with the graphical program.
`The entry point function may then call into the graphical
`program code. In one embodiment, a runtime execution
`system associated with the graphical programming system
`used to create the shared library may manage the execution
`of the graphical program code.
`Thus, the present invention allows a graphical program to
`be exported to a shared library, thereby enabling any pro-
`gram able to access a shared library to be able to access a
`graphical program through a shared library.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A better understanding of the present invention can be
`obtained when the following detailed description of the
`preferred embodimentis considered in conjunction with the
`following drawings, in which:
`FIGS. 1A and 1B illustrate representative instrumentation
`and process control systems including various I/O interface
`options;
`FIG. 2 is a block diagram of the computer system of
`FIGS. 1A and 1B;
`FIG. 3A is a flowchart diagram illustrating one embodi-
`ment of a method for creating a shared library including
`graphical program code;
`
`The problems outlined above may in large part be solved
`by a system and method for enabling a program to call into
`
`

`

`US 6,874,148 B1
`
`5
`FIG. 3B is a flowchart diagram illustrating one embodi-
`ment of a method for using a shared library to invoke a
`graphical program;
`FIGS. 4A and 4B illustrate one embodiment of a user
`interface for creating a shared library;
`FIGS. 5A and 5B illustrate an exemplary graphical pro-
`gram andits user interface;
`TIG. 6 is a flowchart diagram illustrating one embodiment
`of a methodfor specifying a functional interface for a shared
`library entry point function for a graphical program;
`FIG. 7 illustrates an exemplary user interface for speci-
`fying a functional interface for a shared library entry point
`function for a graphical program;
`FIG. 8 illustrates one embodiment of creating a shared
`library including graphical program code;
`FIG. 9 (prior art) illustrates various elements of a 32-bit
`Windows DLL;
`FIG. 10 is a flowchart diagram illustrating an embodiment
`in which a runtime execution system managesthe execution
`of a graphical program invoked via a shared library.
`While the invention is susceptible to various modifica-
`tions and alternative forms, specific embodiments thereof
`are shownby wayof example in the drawings and are herein
`described in detail. It should be understood, however, that
`the drawings and detailed description thereto are not
`intended to limit
`the invention to the particular form
`disclosed, but on the contrary, the intention is to coverall
`modifications, equivalents and alternatives falling within the
`spirit and scope of the present invention as defined by the
`appended claims.
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`FIGS. 1A and 1B—Instrumentation and Industrial Automa-
`
`tion Systems
`FIGS. 1A and 1B illustrate exemplary systems that may
`store or execute graphical programs for instrumentation,
`process control, or other purposes. These programs may of
`course be stored in or used by other types of systems as
`desired. In accordance with the present system and method,
`code associated with the graphical programs may be
`included in a shared library that may be called by other
`programs, as described below.
`FIG. 1A illustrates an instrumentation control system 100.
`The system 100 comprises a host computer 102 which
`connects to one or more instruments. The host computer 102
`comprises a CPU, a display screen, memory, and one or
`more input devices such as a mouseor keyboard, as shown.
`The host computer 102 connects through the one or more
`instruments to analyze, measure, or control a unit undertest
`(UUT) or process 150.
`The host computer 102 may execute a graphical program
`which interacts with or controls the one or more instruments.
`
`The one or more instruments may include a GPIB instru-
`ment 112 and associated GPIB interface card 122, a data
`acquisition board 114 and associated signal conditioning
`circuitry 124, a VXI instrument 116, a PXI instrument 118,
`a video device 132 and associated image acquisition card
`134, a motion control device 136 and associated motion
`control interface card 138, and/or one or more computer
`based instrument cards 142, among other types of devices.
`The GPIB instrument 112 is coupled to the computer 102
`via the GPIB interface card 122 provided by the computer
`102. In a similar manner, the video device 132 is coupled to
`the computer 102 via the image acquisition card 134, and the
`motion control device 136 is coupled to the computer 102
`
`10
`
`15
`
`20
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`through the motion control interface card 138. The data
`acquisition board 114 is coupled to the computer 102, and
`may interface through signal conditioning circuitry 124 to
`the UUT. The signal conditioning circuitry 124 preferably
`comprises an SCXI (Signal Conditioning eXtensions for
`Instrumentation) chassis comprising one or more SCXI
`modules 126.
`The GPIB card 122, the image acquisition card 134, the
`motion control interface card 138, and the DAQ card 114 are
`typically plugged in to an I/O slot in the computer 102, such
`as a PCI bus slot, a PC Card slot, or an ISA, EISA or
`MicroChannel bus slot provided by the computer 102.
`However, these cards 122, 134, 138 and 114 are shown
`external to computer 102 for illustrative purposes.
`The VXI chassis or instrument 116 is coupled to the
`computer 102 via a VXI bus, MXIbus,or other serial or
`parallel bus provided by the computer 102. The computer
`102 preferably includes VXIinterface logic, such as a VXI,
`MXIor GPIB interface card (not shown), which interfaces
`to the VXI chassis 116. The PXI chassis or instrument is
`preferably coupled to the computer 102 through the com-
`puter’s PCI bus.
`A serial instrument (not shown) may also be coupled to
`the computer 102 through a serial port, such as an RS-232
`port, USB (Universal Serial bus) or IEEE 1394 or 1394.2
`bus, provided by the computer 102. In typical instrumenta-
`tion control systems an instrument will not be present of
`each interface type, and in fact many systems may only have
`one or more instruments of a single interface type, such as
`only GPIB instruments.
`The instruments are coupled to the unit under test (UUT)
`or process 150, or are coupled to receive field signals,
`typically generated by transducers. The system 100 may be
`used in a data acquisition and control application, in a test
`and measurement application, a process control application,
`or a man-machine interface application.
`FIG. 1B illustrates an exemplary industrial automation
`system 160. The industrial automation system 160 is similar
`to the instrumentation or test and measurement system 100
`shownin FIG. 1A. Elements which are similar or identical
`to elements in FIG. 1A have the samereference numerals for
`
`convenience. The system 160 comprises a computer 102
`which connects to one or more devices or instruments. The
`
`computer 102 comprises a CPU, a display screen, memory,
`and one or more input devices such as a mouse or keyboard
`as shown. The computer 102 connects through the one or
`more devices to a process or device 150 to perform an
`automation function, such as MMI
`(Man Machine
`Interface), SCADA (Supervisory Control and Data
`Acquisition), portable or distributed data acquisition, pro-
`cess control, advanced analysis, or other control. In FIG. 1B,
`the computer 102 may execute a graphical program that is
`involved with the automation function performed by the
`automation system 160. Similarly as noted above with
`reference to FIG. 1A,
`the graphical program may be
`included in a shared library that may be called by other
`programs.
`The one or more devices may include a data acquisition
`board 114 and associated signal conditioning circuitry 124,
`a PXI instrument 118, a video device 132 and associated
`image acquisition card 134, a motion control device 136 and
`associated motion control
`interface card 138, a fieldbus
`device 170 and associated fieldbus interface card 172, a PLC
`(Programmable Logic Controller) 176, a serial instrument
`182 and associated serial interface card 184, or a distributed
`data acquisition system, such as the Fieldpoint system
`available from National Instruments, among other types of
`devices.
`
`

`

`US 6,874,148 B1
`
`10
`
`15
`
`20
`
`25
`
`30
`
`8
`7
`The DAQcard 114, the PXI chassis 118, the video device
`FIG. 2—Computer System Block Diagram
`FIG. 2 is an exemplary block diagram of the computer
`132, and the image acquisition card 136 are preferably
`system illustrated in FIGS. 1A and 1B. It is noted that any
`connected to the computer 102 as described above. The
`type of computer system configuration or architecture can be
`serial instrument 182 is coupled to the computer 102 through
`used in conjunction with the system and method described
`a serial interface card 184, or through a serial port, such as
`herein, as desired, and FIG. 2 illustrates a representative PC
`an RS-232 port, provided by the computer 102. The PLC
`embodiment.It is also noted that the computer system may
`176 couples to the computer 102 through a serial port,
`be a general purpose computer system suchasillustrated in
`Ethernet port, or a proprietary interface. The fieldbus inter-
`FIGS. 1A and 1B, a computer implemented on a VXI card
`face card 172 is preferably comprised in the computer 102
`installed in a VXI chassis, a computer implemented on a PXI
`and interfaces through a fieldbus network to one or more
`fieldbus devices. Each of the DAQ card 114,the serial card
`card installed in a PXI chassis, or other types of embodi-
`ments. The elements of a computer not necessary to under-
`184, the fieldbus card 172, the image acquisition card 134,
`stand the present invention have been omitted for simplicity.
`and the motion control card 138 are typically plugged in to
`The computer 102 includesat least one central processing
`an I/O slot
`in the computer 102 as described above.
`However, these cards 114, 184, 172, 134, and 138 are shown
`unit or CPU 160 which is coupled to a processor or host bus
`162. The CPU 160 may beany of various types, including
`external to computer 102 for illustrative purposes. In typical
`an x86 processor, e.g., a Pentium class, a PowerPC
`industrial automation systems a device will not be present of
`processor,
`a CPU from the SPARC family of RISC
`each interface type, and in fact many systems mayonly have
`processors, as well as others. Main memory 166 is coupled
`one or more devices of a single interface type, such as only
`to the host bus 162 by means of memory controller 164. The
`PLCs. The devices are coupled to the device or process 150.
`main memory 166 may store one or more computer pro-
`Referring again to FIGS. 1A and 1B, the computer system
`gramsor libraries according to the present invention. The
`102 preferably includes a memory medium on whichsoft-
`main memory 166 also stores operating system software as
`ware according to the present invention may be stored. The
`well as the software for operation of the computer system,
`memory medium

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket