US20020156872A1 - Systems and methods for transmitting motion control data - Google Patents
Systems and methods for transmitting motion control data Download PDFInfo
- Publication number
- US20020156872A1 US20020156872A1 US10/039,147 US3914702A US2002156872A1 US 20020156872 A1 US20020156872 A1 US 20020156872A1 US 3914702 A US3914702 A US 3914702A US 2002156872 A1 US2002156872 A1 US 2002156872A1
- Authority
- US
- United States
- Prior art keywords
- xmc
- module
- soap
- data
- schema
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13004—Programming the plc
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/24—Pc safety
- G05B2219/24142—Program has a protected, independent part and a free programmable part
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Definitions
- the present invention relates to systems and methods for transmitting motion control data and, more particularly, to systems and methods for facilitating the transmission of motion control data from a data source to a known or unknown client motion control device through a communications network.
- Motion control systems are often used in industrial settings to perform repetitive, well-defined tasks such as welding, parts assembly, and the like. Motion control systems have also been used in non-industrial settings in the form of toys, appliances, and the like for residential use.
- Motion control data is a set of instructions conventionally written in a hardware dependent software language, but systems and methods now exist for creating hardware independent motion control data.
- application program will be used to refer to a particular set of motion control data.
- application programmer or “programmer” will be used to refer to the person who writes the application program.
- Motion control systems typically employ a motion control device that converts the motion control data into physical movement. Often, the motion control device is connected to a general purpose computer that stores application programs and transfers these programs to the motion control device. In the following discussion, the person responsible for a given motion control device will be referred to as the system operator.
- the details of the motion control system can be either known or unknown.
- the application programmer may or may not know the details of the communications network over which the motion control data is transferred.
- One scenario of particular relevance to the present invention is the situation in which an application programmer writes an application program for a given motion task where the programmer does not know or does not want to be limited to the details of a particular motion control system.
- the details of the software platform and motion control device(s) may be unknown to the programmer, or the system operator may wish to have the flexibility to change one or both of the software platform and motion control device in the future.
- the present invention may be embodied as a system for transferring a service request between a client application and a motion control system using a communications network.
- the system comprises a client build module and a service request format module.
- the client build module builds a service request envelope for containing the service request.
- the service request is associated with a service performed by the motion control system.
- the service request envelope may be transmitted across the communications network.
- the service request format module extracts the service request from the service request envelope and transmits the service request to the motion control system.
- FIGS. 1 A-C are block diagrams illustrating the basic environment in which the motion control server system of the present invention to be used;
- FIG. 1 is a module interaction map depicting the interaction of the primary modules of one exemplary server system of the present invention
- FIG. 2 is a scenario map illustrating the service discovery process implemented by the server system of FIG. 1;
- FIG. 3 is a scenario map illustrating the machine configuration process implemented by the server system of FIG. 1;
- FIG. 4 is a scenario map illustrating the machine monitoring process implemented by the server system of FIG. 1;
- FIG. 5 is a scenario map illustrating the machine control process implemented by the server system of FIG. 1;
- FIG. 6 is a module interaction map depicting the interaction of the primary modules of a data format module portion of the server system of FIG. 1;
- FIG. 7 is an interface map illustrating the interface of the data format module of FIG. 6;
- FIG. 8 is an object interaction map illustrating the interaction of the modules of the data format module of FIG. 6;
- FIG. 9 is a scenario map illustrating the schema activation process implemented by the data format module of FIG. 6;
- FIG. 10 is a scenario map illustrating the schema data query process implemented by the data format module of FIG. 6;
- FIG. 11 is a scenario map illustrating the schema data set process implemented by the data format module of FIG. 6;
- FIG. 12 is a scenario map illustrating the schema adding process implemented by the data format module of FIG. 6;
- FIG. 13 is a scenario map depicting the basic transfer of a service request from a client application and the server system of FIG. 1;
- FIG. 14 is a scenario map depicting the use of packet processing to transfer a service request response from the server system of FIG. 1 to a client application;
- FIG. 15 is a scenario map depicting one exemplary initial connection process implemented by the server system of FIG. 1;
- FIG. 16 is a scenario map depicting one exemplary method call process implemented by the server system of FIG. 1;
- FIG. 17 is a scenario map depicting another initial connection process implemented by the server system of FIG. 1;
- FIG. 18 is a scenario map depicting another exemplary method call process implemented by the server system of FIG. 1;
- FIG. 19 is a module interaction map depicting the interaction of the primary modules of a service request format module of the server system of FIG. 1;
- FIG. 20 is a module interaction map depicting the interaction of the primary modules of the service request format module of the server system of FIG. 1;
- FIG. 21 is a scenario map depicting the initialization process implemented by the service request format module of FIG. 20;
- FIG. 22 is a scenario map depicting the service request transfer process implemented by the service request format module of FIG. 20.
- FIG. 23 is a scenario map depicting the clean-up process implemented by the service request format module of FIG. 20.
- the present invention may be embodied as a motion control server system comprising a number of modules.
- the overall environment in which the present invention is typically used will first be described. Following that will be a detailed discussion of the interaction of the various modules that form one exemplary embodiment of the present invention.
- the exemplary embodiment operates in a number of scenarios, and a number of these scenarios will then be described.
- certain components of the exemplary motion control server system, and typical use scenarios for these components will be described in further detail.
- FIGS. 1A of the drawing depicted at 20 a therein is a motion control server system constructed in accordance with, and embodying, the principles of the present invention.
- the exemplary motion control server system 20 a is configured to transmit motion control data between a data source 22 and a motion control system 24 through a communications system 26 .
- the motion control data is represented by an application program 28 comprising methods, function calls, and/or data.
- the exemplary motion control server system 20 a comprises a service request format module 30 and a data format module 32 .
- the service request format module 30 converts service requests (methods and/or function calls) of the application program 28 between a network service request format and a native service request format defined by the motion control system 24 .
- the data format module 32 converts data sets transferred between the source 22 and the motion control system 24 between a network data format and a native data format defined by the motion control system 24 .
- FIGS. 1B and 1C indicate that some benefits of the present invention may be obtained by using either one of the service request format module 30 and the data format module 32 .
- FIG. 1B Depicted in FIG. 1B is an alternative exemplary motion control server system 20 b that employs only the data format module 32
- FIG. 1C depicts yet another exemplary motion control server system employing only the service request format module 30 .
- FIG. 1 depicted at 20 therein is one preferred embodiment of a motion control server system of the present invention.
- the motion control server system 20 will be described herein in the context of one exemplary data source 22 , motion control system 24 , and communications system 26 .
- the present invention may be embodied in forms appropriate for other data sources, motion control systems, and communications systems.
- the preferred motion control server system 20 comprises a number of optional modules that are not necessary to carry out the principles of the present invention in a basic form.
- the motion control server system 20 Two sets of terminology will be used with reference to the motion control server system 20 .
- the first set is generic and is applicable to any environment in which a motion control server system of the present invention may be used.
- the second is specific to the exemplary motion control server system 20 and the data source 22 , motion control system 24 , and communications system 26 in connection with which the server system 20 is used.
- the major elements will be initially identified using the generic terminology, with the specific terminology being identified in parenthesis. After this initial introduction, both sets of terminology will be used interchangeably.
- the exemplary motion control server system (XMC Internet Connect system) 20 comprises both the service request format module (XMC SOAP Engine) 30 and data format module (XMC XML Engine) 32 .
- the exemplary server system 20 comprises two optional modules: a data caching module (XMC SQL Store) 40 and method discovery module (XMC DynaDiscovery) 42 .
- XMC SQL Store data caching module
- XMC DynaDiscovery method discovery module
- These modules 30 , 32 , 40 , and 42 are optimized to connect the data source (client machine or device) 22 to a motion services module (XMC Motion Services) 50 forming a part of the motion control system 24 over the communications system (Internet) 26 .
- the XMC Motion Services module 50 is a hardware independent connection to the underlying motion control hardware system (not shown).
- the exemplary XMC Motion Services module 50 is described in detail in one or more of the following U.S. Pat. Nos. 5,691,897, 5,867,385, and 6,209,037 B1 and will not be described herein in further detail.
- the exemplary XMC SOAP Engine module 30 is based on an industry standard technology referred to as SOAP (Simple Object Access Protocol).
- SOAP is an internet enabled communication protocol used to communicate in a platform and operating system independent manner with systems across the Internet. SOAP thus allows software applications to talk to one another in a manner that is independent of the communication connection or platform on which each application may be running. SOAP frees each application to run on the platform best suited for the application yet communicate with other systems as needed in a manner that connects all applications seamlessly.
- SOAP itself is based on two other industry standard technologies: HTML and XML. HTML defines an industry standard communication protocol for transferring data and instructions between applications connected to a network, while XML defines the structure of the data packets sent between such applications. SOAP, HTML, and XML are well-known and will not be described herein in further detail.
- the XMC XML Engine module 32 is used to translate network (XML) data sets into native (motion control) operations that are defined by and run on the XMC Motion Service 50 (also referred to as the native system).
- the XMC XML Engine 32 is used to query data from the native system 50 and build XML data sets that are returned to the calling client application 28 .
- the XMC SQL Store module 40 is used to cache data queried from the XMC XML Engine 32 (or directly from the native XMC Motion Services module 50 ).
- the exemplary XMC SQL Store module 40 caches data in database module 44 (SQL database or other database such as Microsoft Access or Oracle, etc.).
- the XMC DynaDiscovery module 42 is used to ‘discover’ the services supported by both the XMC XML Engine 32 and native XMC Motion Service module 50 .
- the exemplary method discovery module 42 is based on the industry standard DISCO (Discovery of Web Services) protocol.
- the server system 20 uses the motion services (XMC Motion Services) module 50 , motion drivers (XMC Driver) 52 , a process control (XMC OPC) module 54 , a packet processing (ROPE) module 56 , and a data management (Biztalk Server system 2000) module 58 .
- XMC Motion Services Motion Services
- XMC Driver motion drivers
- XMC OPC process control
- ROPE packet processing
- Ziztalk Server system 2000 data management
- the XMC Motion Services module 50 controls the motion control device to perform operations such as querying data, setting data, and performing actions to occur (like live physical moves).
- the XMC Motion Services module 50 is a hardware independent technology that supports many different hardware based and software based motion controllers.
- the present invention may, however, be embodied without the motion services module 50 or its equivalent in a hardware dependent manner.
- the motion services module 50 defines a group of supported motion control devices.
- One XMC Driver 52 is specifically written for each of the supported motion devices based on interfaces defined by the motion services module 50 .
- the motion drivers 52 are known and will also not be described herein in detail.
- the exemplary process control module 54 is a standard OPC (OLE for Process Control) server used to query and set data sets using the OPC protocols as defined by the OLE for Process Control Foundation.
- OPC OLE for Process Control
- the exemplary packet processing module 56 is a DLL module released by Microsoft and referred to as ROPE (Remote Object Proxy Engine).
- the ROPE module is specifically designed to build and parse SOAP data packets.
- the exemplary data management module 58 is or may be the Microsoft BizTalk 2000 server.
- the Biztalk 2000 server is used to map data between XML Schemas, set up data agreements between companies, and manage data connections between organizations.
- FIG. 1 further illustrates that the exemplary server system 20 employs a number of ‘schemas’ that are passed between modules.
- a ‘schema’ is a data format specification for XML data. Each schema determines how data following the protocol of the schema is organized.
- the exemplary server system 20 makes use of the following schemas: motion control (XMC) schemas 60 , process control (OPC) schemas 62 , database management (SQL) schemas 64 , and third party schemas 66 such as the OMAC schema.
- XMC motion control
- OPC process control
- SQL database management
- third party schemas 66 such as the OMAC schema.
- the XMC schemas are defined to support configuration data, system state data, motion meta program data, and actions defined by the XMC Motion Services module 50 .
- the OPC Schema is an XML schema designed to support OPC servers.
- the SQL Schema is an XML schema designed to describe SQL data sets queried from a SQL database.
- the OMAC Schema is designed to support data sets developed by the OMAC group.
- One of the functions of the Microsoft BizTalk Server system 2000 module 58 is to map between schemas. Many groups and organizations will develop various data schemas that meet their particular needs. The Microsoft BizTalk Server system 2000 module 58 is capable of mapping between the schemas developed by different groups and organizations.
- the services that service offers are determined or “discovered”. Before discovering what a single web service can do, the web server is queried to determine what the web services that it offers.
- the optional method discovery module 42 is used to discover the services available from the motion services module 50 using one or more of a plurality of protocols such as the Dynamic Web Discovery (DISCO) protocol, SNMP, LDAP, and the like.
- DISCO Dynamic Web Discovery
- SNMP SNMP
- LDAP LDAP
- the exemplary XMC DynaDiscovery module 42 uses the DISCO protocol because the DISCO protocol is based on XML, which allows a very thin client to use the discovery service.
- FIG. 2 of the drawing illustrates the steps that occur when the exemplary server system 20 uses the method discovery module 42 to discover the services available from the motion services module 50 .
- the client application (or machine or device) 28 queries the motion control server system 20 for the services provided. This request may go through the BizTalk Server 58 or directly to the SOAP enabled server module 30 .
- the BizTalk Server 58 maps the request to the appropriate format supported by the SOAP enabled server 30 and passes the request on to the SOAP server 30 .
- the BizTalk server 58 may also just pass the request straight through to the SOAP server if no mapping is needed.
- the XMC SOAP server 30 uses the ROPE module 56 to parse out the request.
- the XMC SOAP server module 30 could also use its own native parsing, but the use of the ROPE module 56 is preferred.
- the XMC SOAP Server 30 next uses the XMC DynaDiscovery module 42 to determine what services are available on the local motion services module 50 .
- Communication between the module 42 and the module 50 may be direct or may utilize an industry standard interface protocol such as a DCOM enabled connection; the interface protocol is schematically indicated by reference character 70 in FIG. 2.
- the XMC DynaDiscovery module 42 Upon receiving the request, the XMC DynaDiscovery module 42 queries all modules that it ‘knows about’. Such modules typically include or define type libraries (TLB) 72 that define the offered services. The exemplary module 42 thus examines the Type Libraries 72 to ‘discover’ the services that they offer. Upon discovering the available services, the DynaDiscovery module 42 dynamically builds an SDL (Services Description Language) data set and returns it to the requesting SOAP server 30 . When dynamic discovery is not used, the SDL file is a static file that resides on the SOAP enabled server.
- TLB type libraries
- the client application program 28 may perform any of the operations offered by the module 50 . When working with motion systems, these operations usually fall into one of three categories: configuration, monitoring/diagnostic, and actions. Each of these actions will be discussed in more detail below.
- Configuration operations are used to configure the underlying motion system. For example, servo gains, velocities and accelerations may be set when performing configuration situations.
- Configuration settings are usually separated into two categories: Initialization and Live Settings.
- Initialization configuration properties are usually set once when the machine first initialized.
- Live settings are changed dynamically to affect how the machine operates. The scenario discussed applies to changing both types of configuration settings.
- FIG. 3 depicted therein is a scenario map depicting the process of making configuration settings.
- the client application 28 sends the configuration change request (along with all data needed to make the change) to the server system 20 .
- This request may be sent to a BizTalk Server 58 or directly to the XMC SOAP Server 30 , depending on the Schema used.
- the BizTalk server 58 maps the data received from original schema to one of the schemas supported on the SOAP enabled server system 20 ; the Biztalk server 58 then sends the request on to the XMC SOAP Engine server 30 .
- the XMC SOAP Engine 30 optionally but preferably uses the ROPE module 56 to parse the request.
- the XMC SOAP Engine 30 passes the request data to the XMC XML Engine 32 .
- the XMC XML Engine 30 configures the underlying native system (in this case the XMC Motion Service 50 ).
- the XMC SOAP Engine 30 may communicate with the XMC XML Engine 32 either locally or across a DCOM connection 70 .
- the XMC XML Engine 32 either uses the XMC OPC Server 54 to configure the native system 50 or configures the XMC Motion Services 50 directly.
- the XMC XML Engine 32 may also use any other module to carry out the request as long as the XMC XML engine 32 has support for the external module's schema installed.
- the XMC OPC server 54 then changes the configuration data as specified in the request made to it by the XMC XML Engine 32 .
- the XMC Motion Services 50 uses the current XMC Driver 52 to change the settings on the target motion hardware.
- Monitoring/Diagnostic operations are used to query the system for information. For example when monitoring the system the current motor positions, velocities etc. may be monitored to see what the machine is doing. When performing diagnostic operations, the actual state of the machine (such as the programs that reside on the hardware) may be queried. This information may be displayed to the user running the client, used for immediate analysis, or stored for future analysis. Machine diagnostics is similar to monitoring the machine except that a higher level of data detail is usually queried. The following scenario applied to both monitoring and querying diagnostic information from the machine.
- the client application 28 may use one of various different schemas.
- the data, configured according to the schema used, is sent to XMC SOAP Engine 30 either directly or indirectly through the BizTalk Server 58 .
- the BizTalk Server 58 receives the request, it either directs the request to the XMC SQL Store module 40 or directly to the XMC SOAP Engine 30 , depending on the schema mapping used and whether or not data caching is used.
- the XMC SQL Store module 40 queries the SQL database 44 (or any other database used) for the data. To update the cache, the XMC SQL Store module 40 either directly queries the XMC XML Engine 32 or uses the XMC SOAP Engine 30 to query the XMC XML Engine 32 for the data to be cached.
- the XMC SOAP Engine 30 uses the ROPE engine 56 to parse the request and then either directly queries data specified in the request from the XMC Motion Services module 50 , or routes the request to the XMC XML Engine 32 .
- the XMC XML Engine 32 determines the data schema used and then either routes the request to the XMC Motion Services module 50 either directly or indirectly through the XMC OPC Server 54 . If the XMC OPC Server 54 is used, it directly queries the data from the XMC Motion Services. The XMC Motion Services module 50 then uses the XMC Driver 52 to query the data from the target motion hardware.
- Action operations cause the machine to do things such as run programs or make moves.
- the machine may be directed to move to its home state.
- the scenario depicted in FIG. 5 describes the process of performing such control operations.
- the client application 28 requests the machine control operation to be performed and passes all parameter data needed. This request is sent to the SOAP Enabled Server 30 directly or indirectly through the BizTalk Server 58 .
- the client application 28 may use one or more of various schemas to describe the operation to be performed.
- the BizTalk server 58 will, if necessary, map from the original schema used by the client application 28 to a different schema supported by the motion server system 20 . Once properly mapped, the request is passed to the XMC SOAP Engine 30 .
- the exemplary XMC SOAP Engine uses the ROPE module 56 to parse the request and determine what service operation is to be performed. As discussed above, the use of the ROPE module 56 is not required but is preferred.
- the XMC SOAP Engine 30 sends the request to the XMC Motion Services module 50 for processing either directly or indirectly through the XMC XML Engine 32 .
- this communication may be on a local machine or may occur across a DCOM connection 70 (or even to another SOAP Engine if appropriate).
- the XMC XML Engine 32 connects with the XMC Motion Services module 50 to perform the requested machine control operations.
- the XMC Motion Services module 50 uses the selected XMC Driver 52 to direct the target hardware to perform the desired machine control operations.
- the data format, or XMC XML Engine, module 32 acts as a container for multiple schemas, both XMC XML and non-XMC XML Schemas.
- the XMC XML Engine thus forms a schema repository that is available to other components of the system 20 such as the service request format module 30 or the data management module 58 .
- the XMC XML Engine 32 uses polymorphism to work with each schema in the same manner.
- Each schema itself is the definition of a data set used to either query or set motion configuration data and motion properties, or cause motion actions on the target machine.
- the XMC XML Engine 32 is designed to be a ‘middle-ware’ component that translates data between a native system and XML. In the exemplary system 20 , this translation is bi-directional. Translations from the XML data format to the data format of the native motion services module 50 are used to change configuration data and properties and to cause actions. Translations from the native data format of the motion services module 50 to XML data format are used when querying configuration data or properties.
- FIG. 6 is a module interaction map illustrating the interaction of the XMC SOAP Engine 30 and the XMC XML Engine 32 when the SOAP Engine 30 calls methods on the XML Engine 32 .
- the methods called allow the XMC SOAP Engine 30 to query and set data or cause other actions on the native system implemented by the XMC Motion Services module 50 .
- the XMC XML Engine 32 may work with several native systems.
- FIG. 6 illustrates that the XMC XML Engine 32 also can work with the XMC OPC component 54 to query/set data sets using the OLE for Process Control data formats.
- XMC Soap Engine 30 Even though only the XMC Soap Engine 30 is displayed as the only client, many other clients could use the XMC XML Engine 32 .
- a Microsoft BizTalk server 58 might be used to query specific data from the XMC XML Engine 32 and then map that data into a completely different schema, such as the OMAC data schema 66 .
- FIG. 6 illustrates that the exemplary XMC XML Engine module 32 interacts with the XMC SOAP Engine 30 , the XMC Motion Services module 50 , and the XMC OPC module 54 .
- the XMC XML Engine module 32 is used to build data sets based on the active XML Schema 60 .
- this engine 54 translates data sets received and enables requested operations, such as setting configuration or property data, to be performed by the native motion control system 24 .
- FIG. 7 depicted at 80 therein is an interface map for the XMC XML Engine module 32 .
- the exemplary XMC XML Engine module 32 implemented as a COM component that houses several objects. Each object exposes one or more OLE interfaces.
- FIG. 7 illustrates that the XMC XML Engine module 32 houses two primary objects: the SchemaContainer object 82 and SchemaEnum objects 84 .
- the XMC XML Engine 32 supports several default Schema objects 86 , although an infinite number of external Schema objects can be supported.
- the SchemaContainer object 82 is used because it aggregates to the active Schema object.
- the SchemaEnum object 84 is used to enumerate across all Schema objects installed.
- the SchemaContainer object 82 manages all Schema objects installed and is the main object used by the client applications 28 .
- the container 82 stores all Schema objects 86 , one of which is designated as the active schema.
- the SchemaContainer object 82 contains the IXMCSchemaContainer interface, the IXMCPersistSchemaContainer interface, and the IXMCSchema interface.
- the IXMCSchemaContainer interface is used to add/remove schema objects and get access to the schema enumeration. In addition, this interface allows the caller to activate one schema or another.
- the IXMCPersistSchemaContainer interface is used to persist all information with regard to the schema collection, including the active schema.
- the IXMCSchema interface is an aggregation of the active schema object's IXMCSchema interface.
- the SchemaEnum object is responsible for enumerating across the set of installed schema objects and contains the IXMCEnumSchema interface.
- the IXMCEnumSchema interface is a standard COM enumeration interface.
- the Schema objects are responsible for implementing the specific schema supported.
- the schema object is responsible for translating Native System data into the XML data set defined by the schema.
- XML data sets may be translated and used to change configuration and property settings in the native system.
- XML data sets may be translated and used to cause actions on the native system such as physical moves.
- the Schema objects define the IXMCSchema interface and IPersist interface.
- the IXMCSchema interface allows clients to Set and Query data sets based on the XML schema supported.
- FIG. 8 illustrates how the COM components making up the XMC XML Engine interact to service client requests with data supported by several different schemas.
- the Schema Container object 82 is the main object that manages all other objects. Client applications may interact with each object directly at times, but the Schema Container object 82 is one of the first that the client application will encounter.
- the Schema Container object 82 gives the client application access to the Schema Enumerator object 84 used to enumerate across all schema objects 86 installed. Access to the Schema Enumerator object 84 is useful when working with several different schemas at the same time or when browsing the set of installed schemas. For example, if the Schema Container object 82 has schemas installed that support OPC, XMC and OMAC objects or data sets 86 , the enumerator object 84 allows the calling application to enumerate across each of these objects 86 .
- the client application may also install new Schemas 86 and set the active schema out of those installed. Specifying the one of the schema 86 as the active schema directs the Schema Container 82 to aggregate the IXMCSchema interface from the specified active schema object so that the active schema 86 may be used in future data query/set/action operations.
- Specifying, selecting, or “activating” a schema is the process of directing the Schema Container to make a schema in a group of previously installed schema the active schema.
- the ‘active’ state means that the Schema Container 82 aggregates the specified schema's IXMCSchema interface so that all calls to the Schema Container 82 appears to be housing this object; in actuality, the Schema Container routs the interface to the actual schema object.
- the calling client application 28 using the XMC XML Engine 32 calls the Schema Container object 82 and directs the object 82 to specify one of the support schema as the active schema.
- a special ID, GUID, text name, or some other unique identifier may identify each schema. This identifier is used to tell the Schema Container which schema to activate.
- the Schema Container 82 uses its internal Schema Enumerator 84 to query for the specified schema. If the specified schema is not found an error is returned.
- the Schema Container 82 Upon finding the target schema, the Schema Container 82 aggregates the IXMCSchema interface of the activated Schema object 86 , making it appear to the client application 28 that the Schema Container 82 actually implements the activated Schema object 86 .
- the client application 28 may choose to query data from the active schema. Such a query may be used to query all configuration settings on a machine or query the overall state of the machine.
- FIG. 10 illustrates the steps that take place when querying, data.
- the client application 28 queries the Schema Container 82 for the data from the active Schema object. Upon receiving the request, the request actually routes directly to the active Schema object 86 through the aggregated IXMCSchema interface.
- the Schema object 86 queries the native system (in this case the XMC Motion Server 50 ) for all data needed to fill out the data request.
- the data required to fill out the data request is then packaged into an XML data packet as specified by the supported Schema.
- the XML data packet is then passed back to the calling client application 28 .
- the native system configuration and properties may also be set or actions may be performed. Setting data on the native system is very similar to the reverse of the querying process.
- FIG. 11 illustrates the steps that occur when setting data on the native system.
- the client application sends a ‘set’ request to the Schema Container 82 , making sure to pass the XML data packet specifying the data to be set.
- the call is routed directly to the active Schema object 86 through the aggregated connection to the active Schema's IXMCSchema interface.
- the Schema object then parses the XML data packet based on the Schema that it supports.
- the Schema object 86 directs the native system (in this case the XMC Motion Server 50 ) to set all data items specified. If an action is requested, the Schema object 86 would parse the data packet pulling from it the data parameters to pass along to the native system 50 when directing it to perform the action requested. The action requested would be specified as part of the data packet. For example, an action identifier may be used to specify an operation to perform from a set of supported operations.
- the system 20 Upon completing the request, the system 20 returns the status (success or failure) of the operation to the client application 28 .
- FIG. 12 illustrates the steps that occur when adding new schema support to the Schema Container.
- the client application must request the Schema Container 82 to add a new schema 86 , making sure to specify the CLSID (or other identifier) of the schema and URL (or other location identifier) identifying the location of the new Schema object 86 .
- the Schema Container 82 Upon receiving the request, the Schema Container 82 creates an instance of the new Schema object 86 and adds it to its list of supported schemas. When persisting its information, the Schema Container 82 saves the schema identifier and location so that it can later load the schema object.
- This section shows several example schemas, each of which would be supported by one or more Schema objects 86 .
- the XMC configuration schema describes all data used to configure an XMC software system.
- the XMC Meta Program schema describes data making up a meta program which is a hardware independent motion control program.
- the XMC System State schema is used to query/set all aspects of the motion control system.
- non XMC schemas may also be supported.
- This section shows OLE for Process Control schemas designed for motion.
- the XMC OPC schema is actually an OPC schema designed for XMC data that is formatted specifically for an OPC server.
- This section contains further description of the SOAP (Simple Object Access Protocol), how SOAP is implemented in the context of the data server system 20 , and how to setup the service request format module 30 in the context of the XMC SOAP Engine.
- SOAP Simple Object Access Protocol
- the client application sends an HTML ‘POST’ instruction containing an XML ‘SOAP Envelope’.
- the XML Soap Envelope defines the operation to be performed.
- FIG. 13 depicted therein is the basic HTML Soap request as implemented using the data server system 20 of the present invention.
- the data server system 20 To operate over a communications network 24 such as the Internet, the data server system 20 must be capable of receiving Internet/Web requests.
- FIG. 1 illustrates this capability by an Internet information application programming interface (IIAPI) 74 .
- FIG. 13 illustrates that the interface 74 is defined by an information server module 76 ; in the exemplary system 20 , the information server module 76 is formed by a Microsoft Internet Information Server (IIS) based server installed with the XMC SOAP Engine 30 .
- IIS Microsoft Internet Information Server
- the information server module 76 Upon receiving a request, the information server module 76 passes the request to the XMC Soap Engine 30 , which in turn performs the requested motion operation. Once complete, the Server responds with a HTML header and XML ‘SOAP Envelope’ that describes the results of the operation.
- ROPE Remote Object Proxy Engine
- HTML/XML SOAP data packets sent to the server system 20 when requesting operations.
- ROPE parses the responses retrieved from the server system 20 . While optional, the use of the ROPE technology is preferred.
- FIG. 14 illustrates the process of using ROPE technology for parsing of packets sent to and retrieved from the server system 20 .
- ROPE builds and sends the same HTML ‘POST’ instruction with the same SOAP Envelope containing the XML data describing the requested operations and any parameters used.
- SOAP Pipeline When making a SOAP request, a particular sequence of steps must be performed to carry out the request. This sequence of steps forms what will be referred to herein as the “SOAP Pipeline”.
- the SOAP Pipeline will be described below from two different perspectives. In the first, the pipeline is described making a SOAP request just using basic HTML on the client side. The second scenario describes making a SOAP request using the Microsoft ROPE technology.
- SOAP requests are available to any client application that supports HTML and XML. This section describes the specific steps taking place when making a basic HTML based SOAP request.
- Initial connection is not required, but is helpful in that establishing an initial connection informs the client machine about the services available on the SOAP Server. If the client is informed in advance about the services that are available, the initial connection step is not necessary.
- the client must build a standard HTML ‘GET’ header used to query the ‘services.xml’ file that contains the ‘Services Description’.
- This is often referred to as the SDL or Services Description Language and is an XML based document that describes the operations available on the SOAP enabled server.
- the file containing the Service Description Language document may be given any name but must be an XML file.
- the client must send the HTML request to the server to query the server for the XML services file.
- the server Upon receiving the request, the server returns the services description (the contents of the services.xml file) to the client.
- the client may then parse the services description to ‘learn’ what services are supported by the SOAP server (including the method and parameter names and types).
- the client 22 Once the client 22 has identified the services available on the SOAP server 30 , the client 22 is ready to make method calls directing the server to perform the supported operations.
- FIG. 16 illustrates the process of making an HTML Method Call.
- the client must first build a standard HTML ‘POST’ header specifying the host and ‘SoapAction’, where the SoapAction includes both the location of the ‘*.SOD’ file and the service requested.
- the SOD file describes the actual COM component that will be used to carry out the operation, whereas the service requested is the method exposed by that component.
- the client application 28 must build the SOAP envelope that describes the service requested. Using XML, the envelope is built to describe the method and all parameter data used to perform the service request.
- the client then sends the request to the SOAP enabled server system 20 , making sure to send the request to the location where the XMC SOAP Engine 30 is installed.
- information server module 76 routes the SOD based request to the XMC SOAP Engine 30 for processing.
- the XMC SOAP Engine 30 uses the ROPE module 56 to load and parse the SOD file to get the component object to use for the request.
- the ROPE module 56 is used to parse the actual XML contained within the request that describes the SOAP operation to be performed (i.e. method name and parameters).
- the XMC SOAP Engine 30 then actually makes the call to the component method passing all parameters sent via the previous SOAP call.
- the XMC SOAP Engine 30 again uses the ROPE module 56 to build the response packet, making sure to build into the packet the results of the component method call. If any data is to be returned (as in the case of querying the component, such as with the XMC XML Engine 32 ), the data is packed into the response SOAP envelope using the ROPE module 56 .
- the ROPE module then sends the response SOAP envelope back to the client application 28 .
- the client application 28 may parse the HTML and XML to get the response results and queried data, if any.
- ROPE Remote Object Proxy Engine
- the initial connection between the client application 28 and the server system 20 is required, for this connection identified for the ROPE module 56 what services are available on the SOAP enabled server system 20 .
- FIG. 17 illustrates the steps that occur when making the initial connection using ROPE.
- the client application 22 loads the service description by passing the services description file (‘services.xml’) URI to the LoadServiceDescription method.
- the SOAPPackager object builds the “get” request and sends this request to the SOAP enabled server system 20 . This is the same get request described in the native HTML initial connection.
- the information server module 76 Upon receiving the request, the information server module 76 responds by sending back the contents of the services.XML file.
- the SOAPPackager object is then used on the client side to parse out the listener information, which is the URI of the services.SOD file on the server module 76 . At this point, the SOAPPackager object has all the information necessary to determine what services are available on the server, along with the specific format of each service.
- the client application 22 is able to use the ROPE 56 to invoke services (make method or service request calls) on the SOAP enabled server system 20 .
- the SOAPPackager object uses the SOAPPackager object to build the payload for the service that is to be called by specifying the ‘method name’ of the service.
- the SOAPPackager object is used to add the parameter data for the method call, if any such parameter data is required.
- the Wire Transfer object is then used to send the header and SOAP envelope containing the service request to the server system 20 , thereby requesting the that the server system 20 instruct the motion control system 24 to perform the contained service request.
- information server module 76 Upon receiving the request, information server module 76 detects the SOD based request and routes the request to the XMC SOAP Engine 30 .
- the XMC SOAP Engine 30 uses the local ROPE module 56 to parse the COM component name from the SOD file as well as parse out the service request information from the XML SOAP envelope contained in the original request.
- the XMC SOAP Engine 30 calls the method on the XMC Motion Server 50 as requested by the service request contained in the original SOAP envelope.
- ROPE module 56 eliminates many of the native HTML based SOAP steps by generating and parsing the SOAP envelope for the programmer.
- the XMC SOAP Engine 30 builds on SOAP technology to obtain the data server system 20 that is enabled for motion-based application.
- the exemplary XMC SOAP Engine 30 extends information server module 76 to support SOAP requests and routes each request appropriately to the method on the component implementing the service requested. The following sections describe how the XMC SOAP Engine 30 performs these tasks to support SOAP requests.
- the XMC SOAP Engine 30 handles SOAP requests received through the Internet 26 . Such requests may originate from any client application 22 or may actually be routed to the XMC SOAP Engine 30 from a BizTalk server 58 .
- the XMC SOAP Engine 30 interacts with several modules in the system 20 as will be described below with reference to FIG. 19.
- the Microsoft BizTalk server 58 may send SOAP requests to the XMC SOAP Engine 30 as well to request data that as necessary to fill out data within supported schemas.
- a BizTalk server 58 may be used to map an OMAC schema 62 to an XMC schema 60 .
- the BizTalk server 58 may query data from the XMC SOAP Engine 30 to fill out the end data mapping.
- the XMC SOAP Engine 30 works with both the XMC XML Engine 32 and with the XMC Motion Server 50 . Data queries and configuration settings are made using the XMC XML Engine 32 , and service requests are carried out directly by the XMC Motion Server 50 or indirectly through the XMC XML Engine 32 .
- the exemplary XMC SOAP Engine 30 comprises several objects. These objects work together to perform each requested SOAP operation. In addition, the XMC SOAP Engine 30 uses the XMC Motion Server 50 to eventually carry out the actual service request, either directly or using the ROPE module 56 .
- the exemplary XMC SOAP Engine 30 is a standard extension module for the Microsoft Internet Information module 74 . As such, the XMC SOAP Engine 30 exposes the GetExtensionVersion, HttpExtensionProc, and TerminateExtension functions. These functions are called by module 74 on each request.
- the XMC SOAP Engine 30 comprises a CsoapApp object 90 , a GetExtensionVersion module 92 , an HTTPExtension module 94 , a TerminateExtension module 96 , a Thread Pool 98 comprising one or more worker threads 98 a, and a CsoapRequest module 100 .
- the CSoapApp object 90 manages each of the extension DLL entry points and routes each request appropriately to either the thread pool 98 or the CSoapRequest object 100 .
- the CsoapApp object 90 is responsible for creating and destroying the worker thread pool 98 .
- the CSoapRequest object 100 is responsible for managing the data describing the actual service request. A new object is created for each service request and passed to a worker thread 98 a for processing.
- the thread pool 98 is a collection of threads 98 a each of which is used to process one service request.
- the ROPE DLL module 56 is used to parse each SOAP envelope and also to build the response SOAP envelopes that are sent back to the client application 28 .
- the XMC Motion Server 50 and XMC XML Engine 32 are used to carry out the requested operations (i.e. data query, configuration setting, or motion action).
- Initialization occurs on the first request when information server module 76 first loads the extension DLL.
- the XMC SOAP Engine 30 When processing a service request, creates a CSoapRequest object 100 and passes it to one of the threads 98 a in the thread-pool 98 for processing. The thread 98 a then in turn directs the specific motion operations to occur on the XMC Motion Server 50 .
- the information server module 76 calls the HttpExtensionProc 94 , passing along all information about the service request. Inside the function call, the CSoapApp object 90 is used to process the request.
- the CSoapApp object 90 When called, the CSoapApp object 90 creates a CSoapRequest object 100 and passes to it the service request information. Next, the CSoapApp object 90 passes the new CSoapRequest object 100 to a free thread 98 a in the thread pool 98 and directs the thread 98 a to start processing the request. To process the request, the worker thread 98 a first accesses the CSoapRequest object 100 passed thereto by the CsoapApp object 90 .
- the worker thread 98 a uses the ROPE module 56 to parse the response and get the PROGID of the designated component to be used to carry out the request.
- the designated object or component specified by the request is accessed from either the XMC Motion Server 50 or the XMC XML Engine 32 , and the appropriate method is called based on the SOAP request. Once the method completes, the result and any data returned is packed into a SOAP response envelope and sent back to the client application 28 .
- the information server module 76 shuts down the XMC SOAP Engine 30 . During this process, the XMC SOAP Engine 30 frees all resources used. This clean-up process will now be described in further detail with reference to FIG. 23.
- the information server module 76 terminates the extension DLL by calling its TerminateExtension function 96 .
- the CSoapApp object 90 destroys the worker thread pool 98 .
- This section describes how to configure (IS for use with the XMC Soap Engine.
- a virtual directory is created where the XMC SOAP engine 30 is to run.
- Application Low IIS Service
- Run the programs in the virtual Protection directory ie the XMC SOAP Engine and all COM components that it uses
- IWAM_ ⁇ machname> user account access level IWAM_ ⁇ machname> user account access level.
- Read Access Enable Turn on read access so that data files (ie the service.xml and service.sod files) can be read.
- Execute Scripts & Executables Allow scripts and executables to Permissions run (ie the XMC Soap Engine and all COM objects that it uses).
- Directory Defaults (Anonymous, Use the default directory security Security Integrated Windows settings. authentication)
- the XMC Soap Engine IIS Extension is installed and several NT services are prepared to run with the XMC Soap Engine 30 .
- the following sections describe each of these tasks. Please note that the virtual directory must be placed on an NTFS file system and the services.xml and services.sod files must be granted both Read and Execute access.
- the ‘Configuration . . .’ button is selected from the ‘Properties’ page for the virtual directory.
- select the ‘Add’ button to add a new mapping.
- This mapping associates the *.sod file extension to the XMC Soap Engine ISAPI Extension DLL. Once mapped, the XMC Soap Engine ISAPI Extension DLL is called by IIS each time IIS encounters a file with the extension sod from within the virtual directory.
- the XMC Soap Engine uses several COM components and NT services. Each of these services should be configured in the following manner to allow proper interaction with the XMC Soap Engine 30 .
- DCOMCNFG.EXE the COM security level on all components as well as on the specific components used by the XMC Soap Engine shall be configured by making the following default properties using DCOMCNFG.EXE: Setting Value Description Enable Distributed COM on this Yes This will allow the NT computer services to talk COM objects. Enable COM Internet Services No Not used. on this computer Default authentication level Connect Default impersonation level Identity
- Each XMC Motion executable must be configured using the DCOMCNFG.EXE utility as well.
- the following XMC binaries must be configured: XMCSRVC.EXE and XMCDBGWN.EXE.
- each and every EXE and DLL used by the XMC Soap Engine must have both Read and Execute file permissions. All server files MUST be installed on a local hard drive for they will be accessed from within the IIS Process, which does not have network access.
- the XMC Service Similar to the IIS Admin Service and World Wide Web service, the XMC Service must be configured to ‘Allow service to interact with the desktop’.
Abstract
A system for transferring a service request between a client application and a motion control system using a communications network. The system comprises a client build module and a service request format module. The client build module builds a service request envelope for containing the service request. The service request is associated with a service performed by the motion control system. In addition, the service request envelope may be transmitted across the communications network. The service request format module extracts the service request from the service request envelope and transmits the service request to the motion control system.
Description
- This application claims priority of U.S. Provisional Patent Application Serial No. 60/260,261, which was filed on Jan. 4, 2001.
- The present invention relates to systems and methods for transmitting motion control data and, more particularly, to systems and methods for facilitating the transmission of motion control data from a data source to a known or unknown client motion control device through a communications network.
- Motion control systems are often used in industrial settings to perform repetitive, well-defined tasks such as welding, parts assembly, and the like. Motion control systems have also been used in non-industrial settings in the form of toys, appliances, and the like for residential use.
- The specific motion task to be performed by a given motion control system is defined by motion control data. Motion control data is a set of instructions conventionally written in a hardware dependent software language, but systems and methods now exist for creating hardware independent motion control data. In the following discussion, the term “application program” will be used to refer to a particular set of motion control data. The terms “application programmer” or “programmer” will be used to refer to the person who writes the application program.
- Motion control systems typically employ a motion control device that converts the motion control data into physical movement. Often, the motion control device is connected to a general purpose computer that stores application programs and transfers these programs to the motion control device. In the following discussion, the person responsible for a given motion control device will be referred to as the system operator.
- In both industrial and non-industrial settings, application programs are often written by the application programmer at a source location and then run on a motion control system at a remote location. In some situations, the application program is transferred from the source to the destination over a communications network such as the Internet.
- From the perspective of the application programmer, the details of the motion control system can be either known or unknown. In addition, the application programmer may or may not know the details of the communications network over which the motion control data is transferred.
- One scenario of particular relevance to the present invention is the situation in which an application programmer writes an application program for a given motion task where the programmer does not know or does not want to be limited to the details of a particular motion control system. In particular, the details of the software platform and motion control device(s) may be unknown to the programmer, or the system operator may wish to have the flexibility to change one or both of the software platform and motion control device in the future.
- The need thus exists for systems and methods that facilitate the transmission of motion control data from a source to a motion control system over a communications network. The present invention is of particular significance when the details of the motion control system are unknown to the application programmer.
- The present invention may be embodied as a system for transferring a service request between a client application and a motion control system using a communications network. The system comprises a client build module and a service request format module. The client build module builds a service request envelope for containing the service request. The service request is associated with a service performed by the motion control system. In addition, the service request envelope may be transmitted across the communications network. The service request format module extracts the service request from the service request envelope and transmits the service request to the motion control system.
- FIGS.1A-C are block diagrams illustrating the basic environment in which the motion control server system of the present invention to be used;
- FIG. 1 is a module interaction map depicting the interaction of the primary modules of one exemplary server system of the present invention;
- FIG. 2 is a scenario map illustrating the service discovery process implemented by the server system of FIG. 1;
- FIG. 3 is a scenario map illustrating the machine configuration process implemented by the server system of FIG. 1;
- FIG. 4 is a scenario map illustrating the machine monitoring process implemented by the server system of FIG. 1;
- FIG. 5 is a scenario map illustrating the machine control process implemented by the server system of FIG. 1;
- FIG. 6 is a module interaction map depicting the interaction of the primary modules of a data format module portion of the server system of FIG. 1;
- FIG. 7 is an interface map illustrating the interface of the data format module of FIG. 6;
- FIG. 8 is an object interaction map illustrating the interaction of the modules of the data format module of FIG. 6;
- FIG. 9 is a scenario map illustrating the schema activation process implemented by the data format module of FIG. 6;
- FIG. 10 is a scenario map illustrating the schema data query process implemented by the data format module of FIG. 6;
- FIG. 11 is a scenario map illustrating the schema data set process implemented by the data format module of FIG. 6;
- FIG. 12 is a scenario map illustrating the schema adding process implemented by the data format module of FIG. 6;
- FIG. 13 is a scenario map depicting the basic transfer of a service request from a client application and the server system of FIG. 1;
- FIG. 14 is a scenario map depicting the use of packet processing to transfer a service request response from the server system of FIG. 1 to a client application;
- FIG. 15 is a scenario map depicting one exemplary initial connection process implemented by the server system of FIG. 1;
- FIG. 16 is a scenario map depicting one exemplary method call process implemented by the server system of FIG. 1;
- FIG. 17 is a scenario map depicting another initial connection process implemented by the server system of FIG. 1;
- FIG. 18 is a scenario map depicting another exemplary method call process implemented by the server system of FIG. 1;
- FIG. 19 is a module interaction map depicting the interaction of the primary modules of a service request format module of the server system of FIG. 1;
- FIG. 20 is a module interaction map depicting the interaction of the primary modules of the service request format module of the server system of FIG. 1;
- FIG. 21 is a scenario map depicting the initialization process implemented by the service request format module of FIG. 20;
- FIG. 22 is a scenario map depicting the service request transfer process implemented by the service request format module of FIG. 20; and
- FIG. 23 is a scenario map depicting the clean-up process implemented by the service request format module of FIG. 20.
- The present invention may be embodied as a motion control server system comprising a number of modules. In the following discussion, the overall environment in which the present invention is typically used will first be described. Following that will be a detailed discussion of the interaction of the various modules that form one exemplary embodiment of the present invention. The exemplary embodiment operates in a number of scenarios, and a number of these scenarios will then be described. Finally, certain components of the exemplary motion control server system, and typical use scenarios for these components, will be described in further detail.
- I. Overview of Motion Control Server System
- Referring initially to FIGS. 1A of the drawing, depicted at20 a therein is a motion control server system constructed in accordance with, and embodying, the principles of the present invention. The exemplary motion control server system 20 a is configured to transmit motion control data between a
data source 22 and amotion control system 24 through acommunications system 26. The motion control data is represented by anapplication program 28 comprising methods, function calls, and/or data. - The exemplary motion control server system20 a comprises a service
request format module 30 and adata format module 32. The servicerequest format module 30 converts service requests (methods and/or function calls) of theapplication program 28 between a network service request format and a native service request format defined by themotion control system 24. Thedata format module 32 converts data sets transferred between thesource 22 and themotion control system 24 between a network data format and a native data format defined by themotion control system 24. - FIGS. 1B and 1C indicate that some benefits of the present invention may be obtained by using either one of the service
request format module 30 and thedata format module 32. Depicted in FIG. 1B is an alternative exemplary motion control server system 20 b that employs only thedata format module 32, while FIG. 1C depicts yet another exemplary motion control server system employing only the servicerequest format module 30. - II. Exemplary Motion Control Server System
- Referring now to FIG. 1, depicted at20 therein is one preferred embodiment of a motion control server system of the present invention. The motion
control server system 20 will be described herein in the context of oneexemplary data source 22,motion control system 24, andcommunications system 26. However, the present invention may be embodied in forms appropriate for other data sources, motion control systems, and communications systems. In addition, the preferred motioncontrol server system 20 comprises a number of optional modules that are not necessary to carry out the principles of the present invention in a basic form. - Two sets of terminology will be used with reference to the motion
control server system 20. The first set is generic and is applicable to any environment in which a motion control server system of the present invention may be used. The second is specific to the exemplary motioncontrol server system 20 and thedata source 22,motion control system 24, andcommunications system 26 in connection with which theserver system 20 is used. In the following discussion, the major elements will be initially identified using the generic terminology, with the specific terminology being identified in parenthesis. After this initial introduction, both sets of terminology will be used interchangeably. - The exemplary motion control server system (XMC Internet Connect system)20 comprises both the service request format module (XMC SOAP Engine) 30 and data format module (XMC XML Engine) 32. In addition, the
exemplary server system 20 comprises two optional modules: a data caching module (XMC SQL Store) 40 and method discovery module (XMC DynaDiscovery) 42. These components allow virtually anyclient application 28 to utilize the underlyingmotion control system 24 regardless of the client application's location, underlying hardware platform, or underlying software operating system. - These
modules motion control system 24 over the communications system (Internet) 26. The XMCMotion Services module 50 is a hardware independent connection to the underlying motion control hardware system (not shown). The exemplary XMCMotion Services module 50 is described in detail in one or more of the following U.S. Pat. Nos. 5,691,897, 5,867,385, and 6,209,037 B1 and will not be described herein in further detail. - The exemplary XMC
SOAP Engine module 30 is based on an industry standard technology referred to as SOAP (Simple Object Access Protocol). SOAP is an internet enabled communication protocol used to communicate in a platform and operating system independent manner with systems across the Internet. SOAP thus allows software applications to talk to one another in a manner that is independent of the communication connection or platform on which each application may be running. SOAP frees each application to run on the platform best suited for the application yet communicate with other systems as needed in a manner that connects all applications seamlessly. SOAP itself is based on two other industry standard technologies: HTML and XML. HTML defines an industry standard communication protocol for transferring data and instructions between applications connected to a network, while XML defines the structure of the data packets sent between such applications. SOAP, HTML, and XML are well-known and will not be described herein in further detail. - The XMC
XML Engine module 32 is used to translate network (XML) data sets into native (motion control) operations that are defined by and run on the XMC Motion Service 50 (also referred to as the native system). In addition, theXMC XML Engine 32 is used to query data from thenative system 50 and build XML data sets that are returned to the callingclient application 28. - The XMC
SQL Store module 40 is used to cache data queried from the XMC XML Engine 32 (or directly from the native XMC Motion Services module 50). The exemplary XMCSQL Store module 40 caches data in database module 44 (SQL database or other database such as Microsoft Access or Oracle, etc.). - The
XMC DynaDiscovery module 42 is used to ‘discover’ the services supported by both theXMC XML Engine 32 and native XMCMotion Service module 50. The exemplarymethod discovery module 42 is based on the industry standard DISCO (Discovery of Web Services) protocol. - As noted in FIG. 1 above, there are also several other modules that optional may be used with or incorporated into the XMC Internet
Connection server system 20. In particular, theserver system 20 uses the motion services (XMC Motion Services)module 50, motion drivers (XMC Driver) 52, a process control (XMC OPC)module 54, a packet processing (ROPE)module 56, and a data management (Biztalk Server system 2000)module 58. - The XMC
Motion Services module 50 controls the motion control device to perform operations such as querying data, setting data, and performing actions to occur (like live physical moves). As generally discussed above, the XMCMotion Services module 50 is a hardware independent technology that supports many different hardware based and software based motion controllers. The present invention may, however, be embodied without themotion services module 50 or its equivalent in a hardware dependent manner. - The
motion services module 50 defines a group of supported motion control devices. OneXMC Driver 52 is specifically written for each of the supported motion devices based on interfaces defined by themotion services module 50. Themotion drivers 52 are known and will also not be described herein in detail. - The exemplary
process control module 54 is a standard OPC (OLE for Process Control) server used to query and set data sets using the OPC protocols as defined by the OLE for Process Control Foundation. - The exemplary
packet processing module 56 is a DLL module released by Microsoft and referred to as ROPE (Remote Object Proxy Engine). The ROPE module is specifically designed to build and parse SOAP data packets. - The exemplary
data management module 58 is or may be theMicrosoft BizTalk 2000 server. TheBiztalk 2000 server is used to map data between XML Schemas, set up data agreements between companies, and manage data connections between organizations. - FIG. 1 further illustrates that the
exemplary server system 20 employs a number of ‘schemas’ that are passed between modules. A ‘schema’ is a data format specification for XML data. Each schema determines how data following the protocol of the schema is organized. Theexemplary server system 20 makes use of the following schemas: motion control (XMC) schemas 60, process control (OPC) schemas 62, database management (SQL) schemas 64, and third party schemas 66 such as the OMAC schema. - The XMC schemas are defined to support configuration data, system state data, motion meta program data, and actions defined by the XMC
Motion Services module 50. The OPC Schema is an XML schema designed to support OPC servers. The SQL Schema is an XML schema designed to describe SQL data sets queried from a SQL database. The OMAC Schema is designed to support data sets developed by the OMAC group. - One of the functions of the Microsoft
BizTalk Server system 2000module 58 is to map between schemas. Many groups and organizations will develop various data schemas that meet their particular needs. The MicrosoftBizTalk Server system 2000module 58 is capable of mapping between the schemas developed by different groups and organizations. - III. Operational Scenarios
- A. Service Discovery
- Before a web service can be used, the services that service offers are determined or “discovered”. Before discovering what a single web service can do, the web server is queried to determine what the web services that it offers. In the
exemplary server system 20, the optionalmethod discovery module 42 is used to discover the services available from themotion services module 50 using one or more of a plurality of protocols such as the Dynamic Web Discovery (DISCO) protocol, SNMP, LDAP, and the like. The exemplaryXMC DynaDiscovery module 42 uses the DISCO protocol because the DISCO protocol is based on XML, which allows a very thin client to use the discovery service. - FIG. 2 of the drawing illustrates the steps that occur when the
exemplary server system 20 uses themethod discovery module 42 to discover the services available from themotion services module 50. First, the client application (or machine or device) 28, queries the motioncontrol server system 20 for the services provided. This request may go through theBizTalk Server 58 or directly to the SOAP enabledserver module 30. - If the request goes to the
BizTalk Server 58, theBizTalk Server 58 maps the request to the appropriate format supported by the SOAP enabledserver 30 and passes the request on to theSOAP server 30. TheBizTalk server 58 may also just pass the request straight through to the SOAP server if no mapping is needed. - Next, upon receiving the request, the
XMC SOAP server 30 uses theROPE module 56 to parse out the request. The XMCSOAP server module 30 could also use its own native parsing, but the use of theROPE module 56 is preferred. - The
XMC SOAP Server 30 next uses theXMC DynaDiscovery module 42 to determine what services are available on the localmotion services module 50. Communication between themodule 42 and themodule 50 may be direct or may utilize an industry standard interface protocol such as a DCOM enabled connection; the interface protocol is schematically indicated byreference character 70 in FIG. 2. - Upon receiving the request, the
XMC DynaDiscovery module 42 queries all modules that it ‘knows about’. Such modules typically include or define type libraries (TLB) 72 that define the offered services. Theexemplary module 42 thus examines theType Libraries 72 to ‘discover’ the services that they offer. Upon discovering the available services, theDynaDiscovery module 42 dynamically builds an SDL (Services Description Language) data set and returns it to the requestingSOAP server 30. When dynamic discovery is not used, the SDL file is a static file that resides on the SOAP enabled server. - After determining what services are available from the
motion services module 50, theclient application program 28 may perform any of the operations offered by themodule 50. When working with motion systems, these operations usually fall into one of three categories: configuration, monitoring/diagnostic, and actions. Each of these actions will be discussed in more detail below. - B. Machine Configuration
- Configuration operations are used to configure the underlying motion system. For example, servo gains, velocities and accelerations may be set when performing configuration situations.
- Configuration settings are usually separated into two categories: Initialization and Live Settings. Initialization configuration properties are usually set once when the machine first initialized. Live settings are changed dynamically to affect how the machine operates. The scenario discussed applies to changing both types of configuration settings.
- Referring now to FIG. 3, depicted therein is a scenario map depicting the process of making configuration settings.
- First, the
client application 28 sends the configuration change request (along with all data needed to make the change) to theserver system 20. This request may be sent to aBizTalk Server 58 or directly to theXMC SOAP Server 30, depending on the Schema used. - If the configuration change request is sent to the
BizTalk Server 58, theBizTalk server 58 maps the data received from original schema to one of the schemas supported on the SOAP enabledserver system 20; theBiztalk server 58 then sends the request on to the XMCSOAP Engine server 30. Upon receiving the SOAP request, theXMC SOAP Engine 30 optionally but preferably uses theROPE module 56 to parse the request. - Next, the
XMC SOAP Engine 30 passes the request data to theXMC XML Engine 32. TheXMC XML Engine 30 configures the underlying native system (in this case the XMC Motion Service 50). TheXMC SOAP Engine 30 may communicate with theXMC XML Engine 32 either locally or across aDCOM connection 70. - Depending on the schema used in the request, the
XMC XML Engine 32 either uses theXMC OPC Server 54 to configure thenative system 50 or configures theXMC Motion Services 50 directly. TheXMC XML Engine 32 may also use any other module to carry out the request as long as theXMC XML engine 32 has support for the external module's schema installed. - If the
XMC OPC Server 54 is used, theXMC OPC server 54 then changes the configuration data as specified in the request made to it by theXMC XML Engine 32. - When requested, the
XMC Motion Services 50 uses thecurrent XMC Driver 52 to change the settings on the target motion hardware. - C. Machine Monitoring/Diagnostics
- Monitoring/Diagnostic operations are used to query the system for information. For example when monitoring the system the current motor positions, velocities etc. may be monitored to see what the machine is doing. When performing diagnostic operations, the actual state of the machine (such as the programs that reside on the hardware) may be queried. This information may be displayed to the user running the client, used for immediate analysis, or stored for future analysis. Machine diagnostics is similar to monitoring the machine except that a higher level of data detail is usually queried. The following scenario applied to both monitoring and querying diagnostic information from the machine.
- Referring now to FIG. 4, the following steps occur when monitoring (or querying diagnostic information from) the machine.
- First the
client application 28 queries the machine (one time, intermittently, or periodically) for the information required. Theclient application 28 may use one of various different schemas. The data, configured according to the schema used, is sent toXMC SOAP Engine 30 either directly or indirectly through theBizTalk Server 58. - If the
BizTalk Server 58 receives the request, it either directs the request to the XMCSQL Store module 40 or directly to theXMC SOAP Engine 30, depending on the schema mapping used and whether or not data caching is used. - If data caching is enabled, the XMC
SQL Store module 40 queries the SQL database 44 (or any other database used) for the data. To update the cache, the XMCSQL Store module 40 either directly queries theXMC XML Engine 32 or uses theXMC SOAP Engine 30 to query theXMC XML Engine 32 for the data to be cached. - When requested, the
XMC SOAP Engine 30 uses theROPE engine 56 to parse the request and then either directly queries data specified in the request from the XMCMotion Services module 50, or routes the request to theXMC XML Engine 32. - If used, the
XMC XML Engine 32 determines the data schema used and then either routes the request to the XMCMotion Services module 50 either directly or indirectly through theXMC OPC Server 54. If theXMC OPC Server 54 is used, it directly queries the data from the XMC Motion Services. The XMCMotion Services module 50 then uses theXMC Driver 52 to query the data from the target motion hardware. - D. Action Operations (Machine Control)
- Action operations cause the machine to do things such as run programs or make moves. For example, the machine may be directed to move to its home state. The scenario depicted in FIG. 5 describes the process of performing such control operations.
- The following steps occur when performing a machine control operation.
- First, the
client application 28 requests the machine control operation to be performed and passes all parameter data needed. This request is sent to the SOAP EnabledServer 30 directly or indirectly through theBizTalk Server 58. Theclient application 28 may use one or more of various schemas to describe the operation to be performed. - If the
BizTalk Server 58 is used, theBizTalk server 58 will, if necessary, map from the original schema used by theclient application 28 to a different schema supported by themotion server system 20. Once properly mapped, the request is passed to theXMC SOAP Engine 30. - When requested, the exemplary XMC SOAP Engine uses the
ROPE module 56 to parse the request and determine what service operation is to be performed. As discussed above, the use of theROPE module 56 is not required but is preferred. - Next, the
XMC SOAP Engine 30 sends the request to the XMCMotion Services module 50 for processing either directly or indirectly through theXMC XML Engine 32. As discussed above, this communication may be on a local machine or may occur across a DCOM connection 70 (or even to another SOAP Engine if appropriate). If used, theXMC XML Engine 32 connects with the XMCMotion Services module 50 to perform the requested machine control operations. - The XMC
Motion Services module 50 uses the selectedXMC Driver 52 to direct the target hardware to perform the desired machine control operations. - IV. Data Format Module
- The data format, or XMC XML Engine,
module 32 acts as a container for multiple schemas, both XMC XML and non-XMC XML Schemas. The XMC XML Engine thus forms a schema repository that is available to other components of thesystem 20 such as the servicerequest format module 30 or thedata management module 58. - Once enabled with several schemas, the
XMC XML Engine 32 uses polymorphism to work with each schema in the same manner. Each schema itself is the definition of a data set used to either query or set motion configuration data and motion properties, or cause motion actions on the target machine. - This section describes the how the XMC XML Engine works internally was well as how it interacts with the modules around it in a software system.
- A. XML Engine Module Interactions
- The
XMC XML Engine 32 is designed to be a ‘middle-ware’ component that translates data between a native system and XML. In theexemplary system 20, this translation is bi-directional. Translations from the XML data format to the data format of the nativemotion services module 50 are used to change configuration data and properties and to cause actions. Translations from the native data format of themotion services module 50 to XML data format are used when querying configuration data or properties. - FIG. 6 is a module interaction map illustrating the interaction of the
XMC SOAP Engine 30 and theXMC XML Engine 32 when theSOAP Engine 30 calls methods on theXML Engine 32. The methods called allow theXMC SOAP Engine 30 to query and set data or cause other actions on the native system implemented by the XMCMotion Services module 50. - As noted above, the
XMC XML Engine 32 may work with several native systems. FIG. 6 illustrates that theXMC XML Engine 32 also can work with theXMC OPC component 54 to query/set data sets using the OLE for Process Control data formats. - Even though only the
XMC Soap Engine 30 is displayed as the only client, many other clients could use theXMC XML Engine 32. For example, aMicrosoft BizTalk server 58 might be used to query specific data from theXMC XML Engine 32 and then map that data into a completely different schema, such as theOMAC data schema 66. - FIG. 6 illustrates that the exemplary XMC
XML Engine module 32 interacts with theXMC SOAP Engine 30, the XMCMotion Services module 50, and theXMC OPC module 54. As generally discussed above, the XMCXML Engine module 32 is used to build data sets based on theactive XML Schema 60. In addition, thisengine 54 translates data sets received and enables requested operations, such as setting configuration or property data, to be performed by the nativemotion control system 24. - Referring now to FIG. 7, depicted at80 therein is an interface map for the XMC
XML Engine module 32. The exemplary XMCXML Engine module 32 implemented as a COM component that houses several objects. Each object exposes one or more OLE interfaces. - FIG. 7 illustrates that the XMC
XML Engine module 32 houses two primary objects: theSchemaContainer object 82 and SchemaEnum objects 84. In addition, theXMC XML Engine 32 supports several default Schema objects 86, although an infinite number of external Schema objects can be supported. When querying and setting schema data, theSchemaContainer object 82 is used because it aggregates to the active Schema object. TheSchemaEnum object 84 is used to enumerate across all Schema objects installed. - The
SchemaContainer object 82 manages all Schema objects installed and is the main object used by theclient applications 28. Thecontainer 82 stores all Schema objects 86, one of which is designated as the active schema. TheSchemaContainer object 82 contains the IXMCSchemaContainer interface, the IXMCPersistSchemaContainer interface, and the IXMCSchema interface. The IXMCSchemaContainer interface is used to add/remove schema objects and get access to the schema enumeration. In addition, this interface allows the caller to activate one schema or another. The IXMCPersistSchemaContainer interface is used to persist all information with regard to the schema collection, including the active schema. The IXMCSchema interface is an aggregation of the active schema object's IXMCSchema interface. - The SchemaEnum object is responsible for enumerating across the set of installed schema objects and contains the IXMCEnumSchema interface. The IXMCEnumSchema interface is a standard COM enumeration interface.
- The Schema objects are responsible for implementing the specific schema supported. To support a schema, the schema object is responsible for translating Native System data into the XML data set defined by the schema. In addition, XML data sets may be translated and used to change configuration and property settings in the native system. And finally, XML data sets may be translated and used to cause actions on the native system such as physical moves.
- The Schema objects define the IXMCSchema interface and IPersist interface. The IXMCSchema interface allows clients to Set and Query data sets based on the XML schema supported.
- The XMC XML Engine object interactions will now be described with reference to FIG. 8. In particular, FIG. 8 illustrates how the COM components making up the XMC XML Engine interact to service client requests with data supported by several different schemas.
- As shown in FIG. 8, the
Schema Container object 82 is the main object that manages all other objects. Client applications may interact with each object directly at times, but theSchema Container object 82 is one of the first that the client application will encounter. - The
Schema Container object 82 gives the client application access to the Schema Enumerator object 84 used to enumerate across all schema objects 86 installed. Access to theSchema Enumerator object 84 is useful when working with several different schemas at the same time or when browsing the set of installed schemas. For example, if theSchema Container object 82 has schemas installed that support OPC, XMC and OMAC objects ordata sets 86, theenumerator object 84 allows the calling application to enumerate across each of theseobjects 86. - From the
Schema Container object 82, the client application may also installnew Schemas 86 and set the active schema out of those installed. Specifying the one of theschema 86 as the active schema directs theSchema Container 82 to aggregate the IXMCSchema interface from the specified active schema object so that theactive schema 86 may be used in future data query/set/action operations. - Specifying, selecting, or “activating” a schema is the process of directing the Schema Container to make a schema in a group of previously installed schema the active schema. The ‘active’ state means that the
Schema Container 82 aggregates the specified schema's IXMCSchema interface so that all calls to theSchema Container 82 appears to be housing this object; in actuality, the Schema Container routs the interface to the actual schema object. - The process of “activating” a schema will now be described in further detail with reference to FIG. 9. Initially, the calling
client application 28 using theXMC XML Engine 32 calls theSchema Container object 82 and directs theobject 82 to specify one of the support schema as the active schema. A special ID, GUID, text name, or some other unique identifier may identify each schema. This identifier is used to tell the Schema Container which schema to activate. - Once notified, the
Schema Container 82 uses itsinternal Schema Enumerator 84 to query for the specified schema. If the specified schema is not found an error is returned. - Upon finding the target schema, the
Schema Container 82 aggregates the IXMCSchema interface of the activatedSchema object 86, making it appear to theclient application 28 that theSchema Container 82 actually implements the activatedSchema object 86. - Once a
schema 86 is activated, theclient application 28 may choose to query data from the active schema. Such a query may be used to query all configuration settings on a machine or query the overall state of the machine. FIG. 10 illustrates the steps that take place when querying, data. - First, the
client application 28 queries theSchema Container 82 for the data from the active Schema object. Upon receiving the request, the request actually routes directly to theactive Schema object 86 through the aggregated IXMCSchema interface. - Based on the schema supported, the
Schema object 86 queries the native system (in this case the XMC Motion Server 50) for all data needed to fill out the data request. The data required to fill out the data request is then packaged into an XML data packet as specified by the supported Schema. The XML data packet is then passed back to the callingclient application 28. - In addition to querying data, the native system configuration and properties may also be set or actions may be performed. Setting data on the native system is very similar to the reverse of the querying process.
- In particular, FIG. 11 illustrates the steps that occur when setting data on the native system.
- First, the client application sends a ‘set’ request to the
Schema Container 82, making sure to pass the XML data packet specifying the data to be set. Upon receiving the request, the call is routed directly to theactive Schema object 86 through the aggregated connection to the active Schema's IXMCSchema interface. The Schema object then parses the XML data packet based on the Schema that it supports. - As data is parsed from the XML data packet (or upon completing the parsing), the
Schema object 86 directs the native system (in this case the XMC Motion Server 50) to set all data items specified. If an action is requested, theSchema object 86 would parse the data packet pulling from it the data parameters to pass along to thenative system 50 when directing it to perform the action requested. The action requested would be specified as part of the data packet. For example, an action identifier may be used to specify an operation to perform from a set of supported operations. - Upon completing the request, the
system 20 returns the status (success or failure) of the operation to theclient application 28. - To use schemas other than the set of default schemas supported by the
XMC XML Engine 32, the client application must add new ones. - FIG. 12 illustrates the steps that occur when adding new schema support to the Schema Container. Initially, the client application must request the
Schema Container 82 to add anew schema 86, making sure to specify the CLSID (or other identifier) of the schema and URL (or other location identifier) identifying the location of thenew Schema object 86. - Upon receiving the request, the
Schema Container 82 creates an instance of thenew Schema object 86 and adds it to its list of supported schemas. When persisting its information, theSchema Container 82 saves the schema identifier and location so that it can later load the schema object. - B. Schema Examples
- This section shows several example schemas, each of which would be supported by one or more Schema objects86.
- 1. XMC Configuration Schema
- The XMC configuration schema describes all data used to configure an XMC software system.
- <?xml version=‘1.0’ encoding=‘UTF-8’?>
- <!ELEMENT XMCConfiguration (Systems)>
- <!ATTLIST XMCConfiguration Version CDATA #IMPLIED>
- <!ELEMENT Systems (System+)>
- <!ATTLIST Systems Count CDATA #IMPLIED>
- <!ELEMENT System (DefUnits, DefMode, SecurityOptions, Drivers)>
- <!ATTLIST System Number CDATA #IMPLIED>
- <!ELEMENT DefUnits (#PCDATA)>
- <!ELEMENT DefMode (#PCDATA)>
- <!ELEMENT SecurityOptions (Security.control, Security.monitoronly)>
- <!ELEMENT Security.control (#PCDATA)>
- <!ELEMENT Security.monitoronly (#PCDATA)>
- <!ELEMENT Drivers (Driver+)>
- <!ATTLIST Drivers Count CDATA #IMPLIED>
- <!ELEMENT Driver (Enabled, Filters, Properties, Streams)>
- <!ELEMENT Filters (Filter*)>
- <!ATTLIST Filters Count CDATA #IMPLIED>
- <!ELEMENT Filter (Streams)>
- <!ELEMENT Properties (Property*)>
- <!ATTLIST Properties Count CDATA #IMPLIED>
- <!ELEMENT Property (Name, Value)>
- <!ELEMENT Streams (Stream*)>
- <!ATTLIST Streams Count CDATA #IMPLIED>
- <!ELEMENT Stream (Enabled, (Stream.PCBus|Stream.TextFile|Stream.DbgMon))>
- <!ELEMENT Stream.PCBus (Port, PortSize)>
- <!ELEMENT Stream.TextFile (FileName)>
- <!ELEMENT Stream.DbgMon EMPTY>
- <!ELEMENT FileName (#PCDATA)>
- <!ELEMENT Name (#PCDATA)>
- <!ELEMENT Value (#PCDATA)>
- <!ELEMENT Enabled (#PCDATA)>
- <!ELEMENT Port (#PCDATA)>
- <!ELEMENT PortSize (#PCDATA)>
- 2. XMC Meta Programs Schema
- The XMC Meta Program schema describes data making up a meta program which is a hardware independent motion control program.
- <?xml version=‘1.0’ encoding=‘UTF-8’?>
- <!ELEMENT XMCMetaProject (Programs)>
- <!ATTLIST XMCMetaProject Version CDATA #IMPLIED>
- <!ELEMENT Programs (Program*)>
- <!ATTLIST Programs Count CDATA #IMPLIED>
- <!ELEMENT Program (Name, Commands)>
- <!ATTLIST Program SystemNum CDATA #IMPLIED>
- <!ELEMENT Commands (Command*)>
- <!ATTLIST Commands Count CDATA #IMPLIED>
- <!ELEMENT Command (Name, Parameters)>
- <!ELEMENT Parameters (Parameter*)>
- <!ATTLIST Parameters Count CDATA #IMPLIED>
- <!ELEMENT Parameter (#PCDATA)>
- <!ATTLIST Parameter Type CDATA #IMPLIED>
- <!ELEMENT Name (#PCDATA)>
- 3. XMC System State Schema
- The XMC System State schema is used to query/set all aspects of the motion control system.
- <?xml version=‘1.0’ encoding-‘UTF-8’?>
- <!ELEMENT XMCState (Configuration, Axes, Programs, RawData, ErrorStatus)>
- <!ATTLIST XMCState Version CDATA #IMPLIED>
- <!ELEMENT Configuration (Config.ActiveCFGFile, Config.ActiveMPFFile)>
- <!ELEMENT Config.ActiveCFGFile (#PCDATA)>
- <!ELEMENT Config.ActiveMPFFile (#PCDATA)>
- <!ELEMENT Axes (Axis+)>
- <!ATTLISTAxes CountCDATA #IMPLIED>
- <!ELEMENT Axis (CommandedData, ActualData, HomingData, Limits, State)>
- <!ATTLIST Axis Index CDATA #IMPLIED>
- <!ELEMENT CommandedData (Commanded.MotionProfile,
- Commanded.Position)>
- <!ELEMENT ActualData (Actual.MotionProfile,
- Actual.MotorPosition,
- Actual.EncoderPosition)>
- <!ELEMENT Commanded.MotionProfile (MotionProfile)>
- <!ELEMENT Homing.MotionProfile (MotionProfile)>
- <!ELEMENT Actual.MotionProfile (MotionProfile)>
- <!ELEMENT HomingData (Homing.MotionProfile,
- Homing.FinalVelocity)>
- <!ELEMENT Homing.FinalVelocity (#PCDATA)>
- <!ELEMENT MotionProfile (Velocity, Acceleration, Deceleration)>
- <!ELEMENT Velocity (#PCDATA)>
- <!ELEMENT Acceleration (#PCDATA)>
- <!ELEMENT Deceleration (#PCDATA)>
- <!ELEMENT Commanded.Position (#PCDATA)>
- <!ELEMENT Actual.Position (#PCDATA)>
- <!ELEMENT Actual.MotorPosition (#PCDATA)>
- <!ELEMENT Actual.EncoderPosition (#PCDATA)>
- <!ELEMENT RawData (RawData.Programs , RawData.Configuration)>
- <!ELEMENT RawData.Programs (#PCDATA)>
- <!ATTLIST RawData.Programs DataSize CDATA #IMPLIED>
- <!ELEMENT RawData.Configuration (#PCDATA)>
- <!ATTLIST RawData.Configuration DataSize CDATA #IMPLIED>
- <!ELEMENT Limits (Limits.IsHit_HWCCW,
- Limits.IsHit_HWCW,
- Limits.IsHit_SWCCW,
- Limits.IsHit_Home,
- Limits.IsHit_SWCW,
- Limits.SWCCWPos,
- Limits.SWCWPos)>
- <!ELEMENT State (IsMoving, IsHoming, IsFaulted)>
- <!ELEMENT IsMoving (#PCDATA)>
- <!ELEMENT IsHoming (#PCDATA)>
- <!ELEMENT IsFaulted (#PCDATA)>
- <!ELEMENT ErrorStatus (Error.Internal, Error.Source)>
- <!ELEMENT Error.Internal (Error)>
- <!ELEMENT Error.Source (Error)>
- <!ELEMENT Error (#PCDATA)>
- <!ATTLIST Error ErrorCode CDATA #IMPLIED>
- <!ELEMENT Programs (Program+)>
- <!ATTLIST Programs Count CDATA #IMPLIED
- ActiveProgram CDATA #IMPLIED>
- <!ELEMENT ActiveProgram (#PCDATA)>
- <!ELEMENT Program (Name)>
- <!ATTLIST Program IsRunning CDATA #IMPLIED
- Index CDATA #IMPLIED>
- <!ELEMENT Name (#PCDATA)>
- 4. XMC OPC Schemas
- In addition to the XMC specific schemas previously described, non XMC schemas may also be supported. This section shows OLE for Process Control schemas designed for motion. The XMC OPC schema is actually an OPC schema designed for XMC data that is formatted specifically for an OPC server.
- <?xml version=‘1.0’ encoding=‘UTF-8’?>
- <!ELEMENT Server (Groups)>
- <!ATTLIST Server Version CDATA #IMPLIED>
- <!ELEMENT Groups (Group+)>
- <!ATTLIST Groups Count CDATA #IMPLIED>
- <!ELEMENT Group (Type, UpdateRate, Items)>
- <!ELEMENT Type (#PCDATA)>
- <!ELEMENT UpdateRate (#PCDATA)>
- <!ELEMENT Items (Count, Item+)>
- <!ATTLIST Items Count CDATA #IMPLIED>
- <!ELEMENT Item (ID , Description , DataType , Data)>
- <!ELEMENT ID (#PCDATA)>
- <!ELEMENT Description (#PCDATA)>
- <!ELEMENT DataType (#PCDATA)>
- <!ELEMENT Data (#PCDATA)>
- <!ELEMENT Count (#PCDATA)>
- V. Service Request Format Module
- This section contains further description of the SOAP (Simple Object Access Protocol), how SOAP is implemented in the context of the
data server system 20, and how to setup the servicerequest format module 30 in the context of the XMC SOAP Engine. - To request an operation in another application, the client application sends an HTML ‘POST’ instruction containing an XML ‘SOAP Envelope’. The XML Soap Envelope defines the operation to be performed.
- Referring initially to FIG. 13, depicted therein is the basic HTML Soap request as implemented using the
data server system 20 of the present invention. To operate over acommunications network 24 such as the Internet, thedata server system 20 must be capable of receiving Internet/Web requests. FIG. 1 illustrates this capability by an Internet information application programming interface (IIAPI) 74. FIG. 13 illustrates that theinterface 74 is defined by aninformation server module 76; in theexemplary system 20, theinformation server module 76 is formed by a Microsoft Internet Information Server (IIS) based server installed with theXMC SOAP Engine 30. - Upon receiving a request, the
information server module 76 passes the request to theXMC Soap Engine 30, which in turn performs the requested motion operation. Once complete, the Server responds with a HTML header and XML ‘SOAP Envelope’ that describes the results of the operation. - In addition to using basic HTML, a data packet processing technology is available from Microsoft Corporation called ‘Remote Object Proxy Engine’ or ROPE. ROPE performs all basic tasks of generating the HTML/XML SOAP data packets sent to the
server system 20 when requesting operations. In addition ROPE parses the responses retrieved from theserver system 20. While optional, the use of the ROPE technology is preferred. - FIG. 14 illustrates the process of using ROPE technology for parsing of packets sent to and retrieved from the
server system 20. ROPE builds and sends the same HTML ‘POST’ instruction with the same SOAP Envelope containing the XML data describing the requested operations and any parameters used. - When making a SOAP request, a particular sequence of steps must be performed to carry out the request. This sequence of steps forms what will be referred to herein as the “SOAP Pipeline”. The SOAP Pipeline will be described below from two different perspectives. In the first, the pipeline is described making a SOAP request just using basic HTML on the client side. The second scenario describes making a SOAP request using the Microsoft ROPE technology.
- A. SOAP Request Using Basic HTML
- SOAP requests are available to any client application that supports HTML and XML. This section describes the specific steps taking place when making a basic HTML based SOAP request.
- Initial connection is not required, but is helpful in that establishing an initial connection informs the client machine about the services available on the SOAP Server. If the client is informed in advance about the services that are available, the initial connection step is not necessary.
- Referring now to FIG. 15, the HTML Connect process will be described in further detail.
- When making the initial connection, following steps take place.
- First, the client must build a standard HTML ‘GET’ header used to query the ‘services.xml’ file that contains the ‘Services Description’. This is often referred to as the SDL or Services Description Language and is an XML based document that describes the operations available on the SOAP enabled server. The file containing the Service Description Language document may be given any name but must be an XML file.
- Next, the client must send the HTML request to the server to query the server for the XML services file. Upon receiving the request, the server returns the services description (the contents of the services.xml file) to the client. The client may then parse the services description to ‘learn’ what services are supported by the SOAP server (including the method and parameter names and types).
- Once the
client 22 has identified the services available on theSOAP server 30, theclient 22 is ready to make method calls directing the server to perform the supported operations. - FIG. 16 illustrates the process of making an HTML Method Call. The client must first build a standard HTML ‘POST’ header specifying the host and ‘SoapAction’, where the SoapAction includes both the location of the ‘*.SOD’ file and the service requested. The SOD file describes the actual COM component that will be used to carry out the operation, whereas the service requested is the method exposed by that component.
- Next, the
client application 28 must build the SOAP envelope that describes the service requested. Using XML, the envelope is built to describe the method and all parameter data used to perform the service request. - The client then sends the request to the SOAP enabled
server system 20, making sure to send the request to the location where theXMC SOAP Engine 30 is installed. Upon receiving the request,information server module 76 routes the SOD based request to theXMC SOAP Engine 30 for processing. - On the Server side, the
XMC SOAP Engine 30 uses theROPE module 56 to load and parse the SOD file to get the component object to use for the request. In addition, theROPE module 56 is used to parse the actual XML contained within the request that describes the SOAP operation to be performed (i.e. method name and parameters). - The
XMC SOAP Engine 30 then actually makes the call to the component method passing all parameters sent via the previous SOAP call. - Next, the
XMC SOAP Engine 30 again uses theROPE module 56 to build the response packet, making sure to build into the packet the results of the component method call. If any data is to be returned (as in the case of querying the component, such as with the XMC XML Engine 32), the data is packed into the response SOAP envelope using theROPE module 56. - The ROPE module then sends the response SOAP envelope back to the
client application 28. Upon receiving the response, theclient application 28 may parse the HTML and XML to get the response results and queried data, if any. - The previous sections have described communicating to a SOAP enabled motion
control server system 20 using native HTML. One skilled in the art will recognize that, in both the general GET and POST operations, the client was required to build the header and SOAP request Envelope as well as parse the SOAP response envelope. The next section describes how using theROPE module 56 simplifies significantly these steps because theROPE module 56 handles all parsing and envelope building programmer. - The Remote Object Proxy Engine (ROPE) was designed specifically to build and parse SOAP envelopes. In addition, ROPE takes care of sending each packet to the server as well as receiving responses from the server. This section describes the same SOAP pipeline but from the perspective of using ROPE instead of native HTML.
- When using ROPE, the initial connection between the
client application 28 and theserver system 20 is required, for this connection identified for theROPE module 56 what services are available on the SOAP enabledserver system 20. - FIG. 17 illustrates the steps that occur when making the initial connection using ROPE.
- First, using the SOAPPackager object, the
client application 22 loads the service description by passing the services description file (‘services.xml’) URI to the LoadServiceDescription method. Internally, the SOAPPackager object builds the “get” request and sends this request to the SOAP enabledserver system 20. This is the same get request described in the native HTML initial connection. - Upon receiving the request, the
information server module 76 responds by sending back the contents of the services.XML file. - The SOAPPackager object is then used on the client side to parse out the listener information, which is the URI of the services.SOD file on the
server module 76. At this point, the SOAPPackager object has all the information necessary to determine what services are available on the server, along with the specific format of each service. - Once the initial connection is made, the
client application 22 is able to use theROPE 56 to invoke services (make method or service request calls) on the SOAP enabledserver system 20. - As shown in FIG. 18, the following steps occur when invoking services using the
ROPE module 56. - Using the SOAPPackager object, the local copy of the service description is loaded (this is the same one previously loaded but cached by ROPE). The SOAPPackager object is then used to build the payload for the service that is to be called by specifying the ‘method name’ of the service. In addition, the SOAPPackager object is used to add the parameter data for the method call, if any such parameter data is required.
- Using the Wire Transfer object, the standard SOAP headers are added to build the actual HTML header and SOAP envelope that will eventually be sent. This is the same HTML ‘POST’ header and SOAP envelope described above with calling methods using native HTML.
- The Wire Transfer object is then used to send the header and SOAP envelope containing the service request to the
server system 20, thereby requesting the that theserver system 20 instruct themotion control system 24 to perform the contained service request. - Upon receiving the request,
information server module 76 detects the SOD based request and routes the request to theXMC SOAP Engine 30. TheXMC SOAP Engine 30 uses thelocal ROPE module 56 to parse the COM component name from the SOD file as well as parse out the service request information from the XML SOAP envelope contained in the original request. - Next, the
XMC SOAP Engine 30 calls the method on theXMC Motion Server 50 as requested by the service request contained in the original SOAP envelope. - All results from the service request (method) invocation and all return data are packed into a response SOAP envelope built by the
ROPE module 56. The response SOAP envelope is the returned to theclient application 22 by the ROPE module at theXMC SOAP Engine 30. Theclient application 22 then uses the SOAPPackager object to parse the response SOAP envelope and make available to theclient application 22 all return parameters contained in the response SOAP envelope. - A close comparison of the steps discussed with reference to FIGS. 16 and 17 indicates that the use of the
ROPE module 56 eliminates many of the native HTML based SOAP steps by generating and parsing the SOAP envelope for the programmer. - With the foregoing understanding of how the
client application 28 interacts with the SOAP enabledserver system 20, the construction and operation of theserver system 20 will now be described in detail. - The
XMC SOAP Engine 30 builds on SOAP technology to obtain thedata server system 20 that is enabled for motion-based application. In particular, the exemplaryXMC SOAP Engine 30 extendsinformation server module 76 to support SOAP requests and routes each request appropriately to the method on the component implementing the service requested. The following sections describe how theXMC SOAP Engine 30 performs these tasks to support SOAP requests. - The
XMC SOAP Engine 30 handles SOAP requests received through theInternet 26. Such requests may originate from anyclient application 22 or may actually be routed to theXMC SOAP Engine 30 from aBizTalk server 58. - In particular, the
XMC SOAP Engine 30 interacts with several modules in thesystem 20 as will be described below with reference to FIG. 19. - Similar to any other SOAP client, the
Microsoft BizTalk server 58 may send SOAP requests to theXMC SOAP Engine 30 as well to request data that as necessary to fill out data within supported schemas. For example, aBizTalk server 58 may be used to map anOMAC schema 62 to anXMC schema 60. When filling out the data in theOMAC schema 62, theBizTalk server 58 may query data from theXMC SOAP Engine 30 to fill out the end data mapping. - In addition, other clients may talk to the
XMC SOAP Engine 30 via the Internet as previously discussed in the sections above describing the SOAP Pipeline. - To fulfill SOAP requests, the
XMC SOAP Engine 30 works with both theXMC XML Engine 32 and with theXMC Motion Server 50. Data queries and configuration settings are made using theXMC XML Engine 32, and service requests are carried out directly by theXMC Motion Server 50 or indirectly through theXMC XML Engine 32. - The exemplary
XMC SOAP Engine 30 comprises several objects. These objects work together to perform each requested SOAP operation. In addition, theXMC SOAP Engine 30 uses theXMC Motion Server 50 to eventually carry out the actual service request, either directly or using theROPE module 56. - The exemplary
XMC SOAP Engine 30 is a standard extension module for the MicrosoftInternet Information module 74. As such, theXMC SOAP Engine 30 exposes the GetExtensionVersion, HttpExtensionProc, and TerminateExtension functions. These functions are called bymodule 74 on each request. - Referring now to FIG. 20 of the drawing, that figure shows that the
XMC SOAP Engine 30 comprises aCsoapApp object 90, a GetExtensionVersion module 92, anHTTPExtension module 94, aTerminateExtension module 96, aThread Pool 98 comprising one ormore worker threads 98a, and aCsoapRequest module 100. - The CSoapApp object90 manages each of the extension DLL entry points and routes each request appropriately to either the
thread pool 98 or theCSoapRequest object 100. In addition, theCsoapApp object 90 is responsible for creating and destroying theworker thread pool 98. - The
CSoapRequest object 100 is responsible for managing the data describing the actual service request. A new object is created for each service request and passed to aworker thread 98 a for processing. - The
thread pool 98 is a collection ofthreads 98 a each of which is used to process one service request. - As generally described above, the
ROPE DLL module 56 is used to parse each SOAP envelope and also to build the response SOAP envelopes that are sent back to theclient application 28. - As generally discussed above, the
XMC Motion Server 50 andXMC XML Engine 32 are used to carry out the requested operations (i.e. data query, configuration setting, or motion action). - Before the
XMC SOAP Engine 30 can be used, it must be initialized. Initialization occurs on the first request wheninformation server module 76 first loads the extension DLL. - The following steps occur during the XMC SOAP Engine Initialization. Upon receiving the first service request, the
information server module 76 loads the extension DLL and calls the GetExtensionVersion module or function 92. Upon receiving this call, theCSoapApp object 90 creates thethread pool 98. - When processing a service request, the
XMC SOAP Engine 30 creates aCSoapRequest object 100 and passes it to one of thethreads 98 a in the thread-pool 98 for processing. Thethread 98 a then in turn directs the specific motion operations to occur on theXMC Motion Server 50. - Referring now to FIG. 22, the following steps occur when the
XMC SOAP Engine 30 processes a SOAP request. - First, upon receiving the SOAP service request, the
information server module 76 calls theHttpExtensionProc 94, passing along all information about the service request. Inside the function call, theCSoapApp object 90 is used to process the request. - When called, the
CSoapApp object 90 creates aCSoapRequest object 100 and passes to it the service request information. Next, the CSoapApp object 90 passes thenew CSoapRequest object 100 to afree thread 98 a in thethread pool 98 and directs thethread 98 a to start processing the request. To process the request, theworker thread 98 a first accesses theCSoapRequest object 100 passed thereto by theCsoapApp object 90. - Next, the
worker thread 98 a uses theROPE module 56 to parse the response and get the PROGID of the designated component to be used to carry out the request. - The designated object or component specified by the request is accessed from either the
XMC Motion Server 50 or theXMC XML Engine 32, and the appropriate method is called based on the SOAP request. Once the method completes, the result and any data returned is packed into a SOAP response envelope and sent back to theclient application 28. - Upon termination of the motion
control server system 20, theinformation server module 76 shuts down theXMC SOAP Engine 30. During this process, theXMC SOAP Engine 30 frees all resources used. This clean-up process will now be described in further detail with reference to FIG. 23. - Initially, upon termination of the motion
control server system 20, theinformation server module 76 terminates the extension DLL by calling itsTerminateExtension function 96. When called, theCSoapApp object 90 destroys theworker thread pool 98. - The following discussion will describe how to setup the
XMC Soap Engine 30 to run with MicrosoftInternet Information Server 76 on aWindows 2000 system. The requirements for the setup process are aWindows NT 2000 Server with NTFS formatted hard drives and Microsoft Internet Information (IIS), version 5.0 or above. Internet Explorer 5.0 or above is recommended but is not required. - This section describes how to configure (IS for use with the XMC Soap Engine. To setup IIS, a virtual directory is created where the
XMC SOAP engine 30 is to run. When creating the virtual directory, the following settings should be followed:Application Low (IIS Service) Run the programs in the virtual Protection directory (ie the XMC SOAP Engine and all COM components that it uses) with the IWAM_<machname> user account access level. Read Access Enable Turn on read access so that data files (ie the service.xml and service.sod files) can be read. Execute Scripts & Executables Allow scripts and executables to Permissions run (ie the XMC Soap Engine and all COM objects that it uses). Directory Defaults (Anonymous, Use the default directory security Security Integrated Windows settings. authentication) - Next, the XMC Soap Engine IIS Extension is installed and several NT services are prepared to run with the
XMC Soap Engine 30. The following sections describe each of these tasks. Please note that the virtual directory must be placed on an NTFS file system and the services.xml and services.sod files must be granted both Read and Execute access. - To setup the XMC Soap Engine ISAPI Extension, the ‘Configuration . . .’ button is selected from the ‘Properties’ page for the virtual directory. On the ‘App Mappings’ tab, select the ‘Add’ button to add a new mapping.
- Browse for the location of the XMCSOAP.DLL and enter the location into the ‘Executable’ field. Make sure the location of the
XMC Soap Engine 30 is the full path of the file on a Local hard drive; the access level at which theengine 30 runs does not have network access. Next, enter ‘*.sod’ as the ‘Extension’. Both the ‘All Verbs’ and ‘Script engine’ check boxes should be selected. - This mapping associates the *.sod file extension to the XMC Soap Engine ISAPI Extension DLL. Once mapped, the XMC Soap Engine ISAPI Extension DLL is called by IIS each time IIS encounters a file with the extension sod from within the virtual directory.
- Both the IIS Admin Service and World Wide Web NT services must have ‘interact with use’ access. To enable each service with this access level, open the ‘Computer Management’ console by selecting the ‘Start|Programs|Administrative Tools|Computer Management’ menu item. From the console, select the ‘Services and Applications|Services’ tree item.
- Next for both the ‘IIS Admin Service’ and ‘World Wide Web’ services, the following steps are performed. First, the service is opened by double clicking. The ‘Log on’ tab is then selected. The ‘Local system account’ radio button is next selected. Finally, the ‘Allow service to interact with the desktop’ check box is selected, just below the ‘Local system account’ radio button
- Since the XMC Soap Engine uses several COM components and NT services. Each of these services should be configured in the following manner to allow proper interaction with the
XMC Soap Engine 30. - Using DCOMCNFG.EXE the COM security level on all components as well as on the specific components used by the XMC Soap Engine shall be configured by making the following default properties using DCOMCNFG.EXE:
Setting Value Description Enable Distributed COM on this Yes This will allow the NT computer services to talk COM objects. Enable COM Internet Services No Not used. on this computer Default authentication level Connect Default impersonation level Identity - In addition, the following default security settings should be made using DCOMCNFG.EXE:
Setting Value Description Default Access None set For extra security, these Permissions will only be set on the specific servers. Default Launch IUSR_<machinename> Internet Web User Permissions (browsing the site) Default Launch IWAM_<machinename> IIS Process access level. Permissions (cont.) - Each XMC Motion executable must be configured using the DCOMCNFG.EXE utility as well. In particular, the following XMC binaries must be configured: XMCSRVC.EXE and XMCDBGWN.EXE.
- All other XMC modules (which are DLLs) will run under the IIS Process security access level.
- For each of the executables listed above, the following security settings should be made using the DCOMCNFG.EXE utility.
Setting Value Description Default Access IWAM_<machinename> Internet Web User Permissions (browsing the site). Default Launch IUSR_<machinename> Internet Web User Permissions (browsing the site) - As a final security check, each and every EXE and DLL used by the XMC Soap Engine (including the XMC Soap Engine) must have both Read and Execute file permissions. All server files MUST be installed on a local hard drive for they will be accessed from within the IIS Process, which does not have network access.
- Similar to the IIS Admin Service and World Wide Web service, the XMC Service must be configured to ‘Allow service to interact with the desktop’.
Claims (1)
1. A system for transferring a service request between a client application and a motion control system using a communications network, comprising:
a client build module for building a service request envelope for containing the service request, where
the service request is associated with a service performed by the motion control system, and
the service request envelope may be transmitted across the communications network;
a service request format module for extracting the service request from the service request envelope and transmitting the service request to the motion control system.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,147 US20020156872A1 (en) | 2001-01-04 | 2002-01-04 | Systems and methods for transmitting motion control data |
US11/375,502 US20100131081A1 (en) | 1995-05-30 | 2006-03-13 | Systems and methods for motion control |
US13/011,753 US20110185371A1 (en) | 1995-05-30 | 2011-01-21 | Systems and Methods for Communicating With Motion Control Systems and Devices |
US13/911,031 US20140018941A1 (en) | 1995-05-30 | 2013-06-05 | Systems and Methods for Communicating with Motion Control Systems and Devices |
US14/531,807 US20150057769A1 (en) | 1995-05-30 | 2014-11-03 | Systems and Methods for Communicating with Motion Control Systems and Devices |
US15/187,324 US9915934B2 (en) | 1999-05-04 | 2016-06-20 | Systems and methods for communicating with motion control systems and devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26006101P | 2001-01-04 | 2001-01-04 | |
US10/039,147 US20020156872A1 (en) | 2001-01-04 | 2002-01-04 | Systems and methods for transmitting motion control data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/353,604 Continuation-In-Part US7024666B1 (en) | 1995-05-30 | 2003-01-28 | Motion control systems and methods |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/454,736 Continuation-In-Part US5691897A (en) | 1995-05-30 | 1995-05-30 | Motion control systems |
US11/375,502 Continuation-In-Part US20100131081A1 (en) | 1995-05-30 | 2006-03-13 | Systems and methods for motion control |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020156872A1 true US20020156872A1 (en) | 2002-10-24 |
Family
ID=22987628
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/039,147 Abandoned US20020156872A1 (en) | 1995-05-30 | 2002-01-04 | Systems and methods for transmitting motion control data |
US15/187,324 Expired - Fee Related US9915934B2 (en) | 1999-05-04 | 2016-06-20 | Systems and methods for communicating with motion control systems and devices |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/187,324 Expired - Fee Related US9915934B2 (en) | 1999-05-04 | 2016-06-20 | Systems and methods for communicating with motion control systems and devices |
Country Status (3)
Country | Link |
---|---|
US (2) | US20020156872A1 (en) |
AU (1) | AU2002251731A1 (en) |
WO (1) | WO2002054184A2 (en) |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084350A1 (en) * | 2001-11-01 | 2003-05-01 | International Business Machines Corporation | System and method for secure configuration of sensitive web services |
US20030154308A1 (en) * | 2002-02-13 | 2003-08-14 | Infowave Software, Inc. | General purpose compression proxy system and method for extensible markup language (XML) documents |
US20030172110A1 (en) * | 2002-12-10 | 2003-09-11 | Oracle International Corporation | Methods and apparatus for invoking a document style server operation using an operation name in a SOAPAction header |
US20030191824A1 (en) * | 2002-04-03 | 2003-10-09 | Raghav Rao | Installation of network services in an embedded network server |
US20040006610A1 (en) * | 2002-07-05 | 2004-01-08 | Anjali Anagol-Subbarao | Architecture and method for configuration validation web service |
US20040201600A1 (en) * | 2001-12-14 | 2004-10-14 | Microsoft Corporation | Methods and system for providing an XML-based interface description language |
US20070061786A1 (en) * | 2004-05-04 | 2007-03-15 | Ling Zhou | Methods and apparatus for modifying process control data |
US20070156862A1 (en) * | 2005-12-27 | 2007-07-05 | Tsutomu Yamada | Computer system |
US20070198709A1 (en) * | 2002-06-28 | 2007-08-23 | Anthony Miologos, Esq. | OPC server redirection manager |
US7330473B1 (en) * | 2002-04-12 | 2008-02-12 | Rockwell Automation Technologies, Inc. | System and methodology providing network data exchange between industrial control components |
US20080077709A1 (en) * | 2006-09-27 | 2008-03-27 | International Business Machines Corporation | Dynamically extening xml-based service through client |
US20080155541A1 (en) * | 2006-12-21 | 2008-06-26 | Ricoh Company, Ltd. | Multi-threaded device and facility manager |
US20080168440A1 (en) * | 2007-01-10 | 2008-07-10 | Ricoh Corporation Ltd. | Integrating discovery functionality within a device and facility manager |
EP1959638A2 (en) * | 2006-12-21 | 2008-08-20 | Ricoh Company, Ltd. | Integrating discovery functionality within a device and facility manager |
US7512906B1 (en) | 2002-06-04 | 2009-03-31 | Rockwell Automation Technologies, Inc. | System and methodology providing adaptive interface in an industrial controller environment |
US7539724B1 (en) | 2002-06-04 | 2009-05-26 | Rockwell Automation Technologies, Inc. | Instant messaging for event notification and exchanging data in an industrial controller environment |
US20090157807A1 (en) * | 1997-10-07 | 2009-06-18 | Brown Stephen J | System and/or method for generating a script relating to a medical task involving motion with a device |
US20090157199A1 (en) * | 1995-05-30 | 2009-06-18 | Brown David W | Motion Control Systems |
US7606890B1 (en) | 2002-06-04 | 2009-10-20 | Rockwell Automation Technologies, Inc. | System and methodology providing namespace and protocol management in an industrial controller environment |
US7904194B2 (en) | 2001-02-09 | 2011-03-08 | Roy-G-Biv Corporation | Event management systems and methods for motion control systems |
US7953769B1 (en) * | 2004-01-21 | 2011-05-31 | Computer Associates Think, Inc. | XML data packaging system and method |
US7970801B1 (en) * | 2004-01-21 | 2011-06-28 | Computer Associates Think, Inc. | Data packaging system and method |
US20110169832A1 (en) * | 2010-01-11 | 2011-07-14 | Roy-G-Biv Corporation | 3D Motion Interface Systems and Methods |
US8027349B2 (en) | 2003-09-25 | 2011-09-27 | Roy-G-Biv Corporation | Database event driven motion systems |
WO2011133905A1 (en) * | 2010-04-22 | 2011-10-27 | OyunStudyosu Ltd. Sti. | Social groups system and method |
US8102869B2 (en) | 2003-09-25 | 2012-01-24 | Roy-G-Biv Corporation | Data routing systems and methods |
US8135481B2 (en) | 2004-05-04 | 2012-03-13 | Fisher-Rosemount Systems, Inc. | Process plant monitoring based on multivariate statistical analysis and on-line process simulation |
US8271105B2 (en) | 1995-05-30 | 2012-09-18 | Roy-G-Biv Corporation | Motion control systems |
US20130073738A1 (en) * | 2002-05-10 | 2013-03-21 | Richard Reisman | Method and Apparatus for Browsing Using Multiple Coordinated Device Sets |
US20140107847A1 (en) * | 2012-10-15 | 2014-04-17 | Delta Electro-Optics (Wujiang) Ltd. | Operating method and operating system for a pcb drilling-milling machine using different motion control products |
US8825183B2 (en) | 2010-03-22 | 2014-09-02 | Fisher-Rosemount Systems, Inc. | Methods for a data driven interface based on relationships between process control tags |
US8881039B2 (en) | 2009-03-13 | 2014-11-04 | Fisher-Rosemount Systems, Inc. | Scaling composite shapes for a graphical human-machine interface |
US9413852B2 (en) | 2012-02-09 | 2016-08-09 | Rockwell Automation Technologies, Inc. | Time-stamping of industrial cloud data for synchronization |
US9438648B2 (en) | 2013-05-09 | 2016-09-06 | Rockwell Automation Technologies, Inc. | Industrial data analytics in a cloud platform |
US9477936B2 (en) | 2012-02-09 | 2016-10-25 | Rockwell Automation Technologies, Inc. | Cloud-based operator interface for industrial automation |
US9703902B2 (en) | 2013-05-09 | 2017-07-11 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial simulation |
US9709978B2 (en) | 2013-05-09 | 2017-07-18 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial automation environment with information overlays |
US9786197B2 (en) | 2013-05-09 | 2017-10-10 | Rockwell Automation Technologies, Inc. | Using cloud-based data to facilitate enhancing performance in connection with an industrial automation system |
US9989958B2 (en) | 2013-05-09 | 2018-06-05 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial automation environment |
US10026049B2 (en) | 2013-05-09 | 2018-07-17 | Rockwell Automation Technologies, Inc. | Risk assessment for industrial systems using big data |
US10496061B2 (en) | 2015-03-16 | 2019-12-03 | Rockwell Automation Technologies, Inc. | Modeling of an industrial automation environment in the cloud |
US11042131B2 (en) | 2015-03-16 | 2021-06-22 | Rockwell Automation Technologies, Inc. | Backup of an industrial automation plant in the cloud |
US11243505B2 (en) | 2015-03-16 | 2022-02-08 | Rockwell Automation Technologies, Inc. | Cloud-based analytics for industrial automation |
US11513477B2 (en) | 2015-03-16 | 2022-11-29 | Rockwell Automation Technologies, Inc. | Cloud-based industrial controller |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016081469A (en) * | 2014-10-22 | 2016-05-16 | ファナック株式会社 | Numerical control unit option function use situation management system |
US10203938B2 (en) * | 2017-04-21 | 2019-02-12 | Accenture Global Solutions Limited | Application engineering platform |
DE102017215449A1 (en) * | 2017-09-04 | 2019-03-07 | Lenze Automation Gmbh | A method of operating an application program for execution on an electrical control apparatus for a drive system, electric control unit, drive system and system |
US10789058B2 (en) * | 2018-05-30 | 2020-09-29 | Microsoft Technology Licensing, Llc | Extensibility of unified platform |
Citations (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4159417A (en) * | 1977-10-28 | 1979-06-26 | Rubincam David P | Electronic book |
US4199814A (en) * | 1977-10-12 | 1980-04-22 | Digitcom, Inc. | Computer numerical control machine tool |
US4800521A (en) * | 1982-09-21 | 1989-01-24 | Xerox Corporation | Task control manager |
US4809335A (en) * | 1985-10-24 | 1989-02-28 | Rumsey Daniel S | Speech unit for dolls and other toys |
US4815011A (en) * | 1986-01-25 | 1989-03-21 | Fanuc Ltd. | Robot control apparatus |
US4829419A (en) * | 1970-12-28 | 1989-05-09 | Hyatt Gilbert P | Microcomputer control of machines |
US4840602A (en) * | 1987-02-06 | 1989-06-20 | Coleco Industries, Inc. | Talking doll responsive to external signal |
US4897835A (en) * | 1985-11-27 | 1990-01-30 | At&E Corporation | High capacity protocol with multistation capability |
US4912650A (en) * | 1986-07-10 | 1990-03-27 | Fanuc Ltd. | Off-line control execution method |
US4923428A (en) * | 1988-05-05 | 1990-05-08 | Cal R & D, Inc. | Interactive talking toy |
US4937737A (en) * | 1985-06-17 | 1990-06-26 | International Business Machines Corporation | Process transparent multi storage mode data transfer and buffer control |
US4987537A (en) * | 1987-05-31 | 1991-01-22 | Nec Corporation | Computer capable of accessing a memory by supplying an address having a length shorter than that of a required address for the memory |
US5005135A (en) * | 1989-03-22 | 1991-04-02 | Cincinnati Milacron, Inc. | Dynamic correction of servo following errors in a computer-numerically controlled system and fixed cycle utilizing same |
US5005134A (en) * | 1987-04-30 | 1991-04-02 | Fanuc Ltd. | Numerical control apparatus with simultaneous function execution |
US5020021A (en) * | 1985-01-14 | 1991-05-28 | Hitachi, Ltd. | System for automatic language translation using several dictionary storage areas and a noun table |
US5095445A (en) * | 1987-03-20 | 1992-03-10 | Canon Kabushiki Kaisha | Data communication system capable of communicating on-line with communication terminal equipment of a plurality of types |
US5120065A (en) * | 1991-02-08 | 1992-06-09 | Hasbro, Incorporated | Electronic talking board game |
US5126932A (en) * | 1988-06-17 | 1992-06-30 | Siemens Corporate Research, Inc. | Method and apparatus for executing a program in a heterogeneous multiple computer system |
US5291416A (en) * | 1991-03-08 | 1994-03-01 | Software Algoritms Incorporated | Event feedback for numerically controlled machine tool and network implementation thereof |
US5382026A (en) * | 1991-09-23 | 1995-01-17 | Hughes Aircraft Company | Multiple participant moving vehicle shooting gallery |
US5390330A (en) * | 1993-02-11 | 1995-02-14 | Talati; Kirit K. | Control system and method for direct execution of software application information models without code generation |
US5390304A (en) * | 1990-09-28 | 1995-02-14 | Texas Instruments, Incorporated | Method and apparatus for processing block instructions in a data processor |
US5392207A (en) * | 1993-08-20 | 1995-02-21 | Allen-Bradley Company, Inc. | Programmable motion controller with graphical programming aid |
US5400345A (en) * | 1992-03-06 | 1995-03-21 | Pitney Bowes Inc. | Communications system to boundary-scan logic interface |
US5402518A (en) * | 1992-07-22 | 1995-03-28 | Pcvoice, Inc. | Sound storage and sound retrieval system having peripheral with hand operable switches |
US5405152A (en) * | 1993-06-08 | 1995-04-11 | The Walt Disney Company | Method and apparatus for an interactive video game with physical feedback |
US5412757A (en) * | 1990-11-28 | 1995-05-02 | Kabushiki Kaisha Toshiba | Fuzzy control system |
US5413355A (en) * | 1993-12-17 | 1995-05-09 | Gonzalez; Carlos | Electronic educational game with responsive animation |
US5491813A (en) * | 1990-02-12 | 1996-02-13 | International Business Machines Corporation | Display subsystem architecture for binding device independent drivers together into a bound driver for controlling a particular display device |
US5493281A (en) * | 1992-09-23 | 1996-02-20 | The Walt Disney Company | Method and apparatus for remote synchronization of audio, lighting, animation and special effects |
US5511147A (en) * | 1994-01-12 | 1996-04-23 | Uti Corporation | Graphical interface for robot |
US5596994A (en) * | 1993-08-30 | 1997-01-28 | Bro; William L. | Automated and interactive behavioral and medical guidance system |
US5600373A (en) * | 1994-01-14 | 1997-02-04 | Houston Advanced Research Center | Method and apparatus for video image compression and decompression using boundary-spline-wavelets |
US5604843A (en) * | 1992-12-23 | 1997-02-18 | Microsoft Corporation | Method and system for interfacing with a computer output device |
US5607336A (en) * | 1992-12-08 | 1997-03-04 | Steven Lebensfeld | Subject specific, word/phrase selectable message delivering doll or action figure |
US5608894A (en) * | 1994-03-18 | 1997-03-04 | Fujitsu Limited | Execution control system |
US5617528A (en) * | 1994-02-04 | 1997-04-01 | Datacard Corporation | Method and apparatus for interactively creating a card which includes video and cardholder information |
US5618179A (en) * | 1992-05-22 | 1997-04-08 | Atari Games Corpooration | Driver training system and method with performance data feedback |
US5623582A (en) * | 1994-07-14 | 1997-04-22 | Immersion Human Interface Corporation | Computer interface or control input device for laparoscopic surgical instrument and other elongated mechanical objects |
US5625821A (en) * | 1991-08-12 | 1997-04-29 | International Business Machines Corporation | Asynchronous or synchronous operation of event signaller by event management services in a computer system |
US5625820A (en) * | 1992-09-30 | 1997-04-29 | International Business Machines Corporation | System managed logging of objects to speed recovery processing |
US5636994A (en) * | 1995-11-09 | 1997-06-10 | Tong; Vincent M. K. | Interactive computer controlled doll |
US5704837A (en) * | 1993-03-26 | 1998-01-06 | Namco Ltd. | Video game steering system causing translation, rotation and curvilinear motion on the object |
US5707289A (en) * | 1994-10-21 | 1998-01-13 | Pioneer Electronic Corporation | Video game system having terminal identification data |
US5724074A (en) * | 1995-02-06 | 1998-03-03 | Microsoft Corporation | Method and system for graphically programming mobile toys |
US5733131A (en) * | 1994-07-29 | 1998-03-31 | Seiko Communications Holding N.V. | Education and entertainment device with dynamic configuration and operation |
US5734373A (en) * | 1993-07-16 | 1998-03-31 | Immersion Human Interface Corporation | Method and apparatus for controlling force feedback interface systems utilizing a host computer |
US5737523A (en) * | 1996-03-04 | 1998-04-07 | Sun Microsystems, Inc. | Methods and apparatus for providing dynamic network file system client authentication |
US5739811A (en) * | 1993-07-16 | 1998-04-14 | Immersion Human Interface Corporation | Method and apparatus for controlling human-computer interface systems providing force feedback |
US5746602A (en) * | 1996-02-27 | 1998-05-05 | Kikinis; Dan | PC peripheral interactive doll |
US5752880A (en) * | 1995-11-20 | 1998-05-19 | Creator Ltd. | Interactive doll |
US5754855A (en) * | 1994-04-21 | 1998-05-19 | International Business Machines Corporation | System and method for managing control flow of computer programs executing in a computer system |
US5764155A (en) * | 1996-04-03 | 1998-06-09 | General Electric Company | Dynamic data exchange server |
US5766077A (en) * | 1995-05-26 | 1998-06-16 | Kabushiki Kaisha Bandai | Game apparatus with controllers for moving toy and character therefor |
US5772504A (en) * | 1995-09-12 | 1998-06-30 | Konami Co., Ltd. | Driving game machine |
US5855483A (en) * | 1994-11-21 | 1999-01-05 | Compaq Computer Corp. | Interactive play with a computer |
US5867385A (en) * | 1995-05-30 | 1999-02-02 | Roy-G-Biv Corporation | Motion control systems |
US5873765A (en) * | 1997-01-07 | 1999-02-23 | Mattel, Inc. | Toy having data downloading station |
US5889672A (en) * | 1991-10-24 | 1999-03-30 | Immersion Corporation | Tactiley responsive user interface device and method therefor |
US5890963A (en) * | 1996-09-30 | 1999-04-06 | Yen; Wei | System and method for maintaining continuous and progressive game play in a computer network |
US5907831A (en) * | 1997-04-04 | 1999-05-25 | Lotvin; Mikhail | Computer apparatus and methods supporting different categories of users |
US5907704A (en) * | 1995-04-03 | 1999-05-25 | Quark, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system including internet accessible objects |
US5914876A (en) * | 1989-06-23 | 1999-06-22 | Mitsubishi Denki Kabushiki Kaisha | Numerical controller having expanded control word set |
US6012961A (en) * | 1997-05-14 | 2000-01-11 | Design Lab, Llc | Electronic toy including a reprogrammable data storage device |
US6020876A (en) * | 1997-04-14 | 2000-02-01 | Immersion Corporation | Force feedback interface with selective disturbance filter |
US6028593A (en) * | 1995-12-01 | 2000-02-22 | Immersion Corporation | Method and apparatus for providing simulated physical interactions within computer generated environments |
US6031973A (en) * | 1996-07-05 | 2000-02-29 | Seiko Epson Corporation | Robot and its controller method |
US6038603A (en) * | 1997-03-25 | 2000-03-14 | Oracle Corporation | Processing customized uniform resource locators |
US6046727A (en) * | 1993-07-16 | 2000-04-04 | Immersion Corporation | Three dimensional position sensing interface with force output |
US6057828A (en) * | 1993-07-16 | 2000-05-02 | Immersion Corporation | Method and apparatus for providing force sensations in virtual environments in accordance with host software |
US6061004A (en) * | 1995-11-26 | 2000-05-09 | Immersion Corporation | Providing force feedback using an interface device including an indexing function |
US6065365A (en) * | 1997-05-08 | 2000-05-23 | Case Corporation | Control lever assembly |
US6070010A (en) * | 1997-07-25 | 2000-05-30 | International Business Machines Corporation | System and method of local data alignment for stack memory |
US6078308A (en) * | 1995-12-13 | 2000-06-20 | Immersion Corporation | Graphical click surfaces for force feedback applications to provide user selection using cursor interaction with a trigger position within a boundary of a graphical object |
US6078968A (en) * | 1997-10-03 | 2000-06-20 | Vicom Systems, Inc. | Platform-independent communications protocol supporting communications between a processor and subsystem controller based on identifying information |
US6080063A (en) * | 1997-01-06 | 2000-06-27 | Khosla; Vinod | Simulated real time game play with live event |
US6169540B1 (en) * | 1995-12-01 | 2001-01-02 | Immersion Corporation | Method and apparatus for designing force sensations in force feedback applications |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6191774B1 (en) * | 1995-11-17 | 2001-02-20 | Immersion Corporation | Mouse interface for providing force feedback |
US6201996B1 (en) * | 1998-05-29 | 2001-03-13 | Control Technology Corporationa | Object-oriented programmable industrial controller with distributed interface architecture |
US6209037B1 (en) * | 1995-05-30 | 2001-03-27 | Roy-G-Biv Corporation | Motion control systems using communication map to facilitating communication with motion control hardware |
US6216173B1 (en) * | 1998-02-03 | 2001-04-10 | Redbox Technologies Limited | Method and apparatus for content processing and routing |
US6219032B1 (en) * | 1995-12-01 | 2001-04-17 | Immersion Corporation | Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface |
US6233545B1 (en) * | 1997-05-01 | 2001-05-15 | William E. Datig | Universal machine translator of arbitrary languages utilizing epistemic moments |
US6243078B1 (en) * | 1998-06-23 | 2001-06-05 | Immersion Corporation | Pointing device with forced feedback button |
US6246390B1 (en) * | 1995-01-18 | 2001-06-12 | Immersion Corporation | Multiple degree-of-freedom mechanical interface to a computer system |
US6247994B1 (en) * | 1998-02-11 | 2001-06-19 | Rokenbok Toy Company | System and method for communicating with and controlling toy accessories |
US6519594B1 (en) * | 1998-11-14 | 2003-02-11 | Sony Electronics, Inc. | Computer-implemented sharing of java classes for increased memory efficiency and communication method |
US6523171B1 (en) * | 1998-12-29 | 2003-02-18 | International Business Machines Corporation | Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL) |
US6528963B1 (en) * | 2000-12-13 | 2003-03-04 | Samsung Electronics Co., Ltd. | Robot and method for controlling motor speed of the robot |
US6542925B2 (en) * | 1995-05-30 | 2003-04-01 | Roy-G-Biv Corporation | Generation and distribution of motion commands over a distributed network |
US6546436B1 (en) * | 1999-03-30 | 2003-04-08 | Moshe Fainmesser | System and interface for controlling programmable toys |
US6571141B1 (en) * | 1995-05-30 | 2003-05-27 | Roy-G-Biv Corporation | Application programs for motion control devices including access limitations |
US6678713B1 (en) * | 1998-04-29 | 2004-01-13 | Xerox Corporation | Machine control using a schedulerlock construct |
US20040019683A1 (en) * | 2002-07-25 | 2004-01-29 | Lee Kuo Chu | Protocol independent communication system for mobile devices |
US6889118B2 (en) * | 2001-11-28 | 2005-05-03 | Evolution Robotics, Inc. | Hardware abstraction layer for a robot |
Family Cites Families (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6337552B1 (en) | 1999-01-20 | 2002-01-08 | Sony Corporation | Robot apparatus |
US4799171A (en) | 1983-06-20 | 1989-01-17 | Kenner Parker Toys Inc. | Talk back doll |
US4577710A (en) | 1983-12-12 | 1986-03-25 | Edward Ruzumna | Apparatus for promoting good health |
US4837719A (en) | 1985-02-19 | 1989-06-06 | Kenneth B. McIntosh | Medication clock |
US5012411A (en) | 1985-07-23 | 1991-04-30 | Charles J. Policastro | Apparatus for monitoring, storing and transmitting detected physiological information |
US5029214A (en) | 1986-08-11 | 1991-07-02 | Hollander James F | Electronic speech control apparatus and methods |
EP0275826A1 (en) | 1986-12-16 | 1988-07-27 | Ciba-Geigy Ag | Control system for a sample preparation system |
US4989253A (en) | 1988-04-15 | 1991-01-29 | The Montefiore Hospital Association Of Western Pennsylvania | Voice activated microscope |
US4962491A (en) | 1988-10-13 | 1990-10-09 | Schaeffer Theodore S | Medicament dispenser and medical information storage apparatus |
US5036462A (en) | 1989-09-29 | 1991-07-30 | Healthtech Services Corp. | Interactive patient assistance and medication delivery systems responsive to the physical environment of the patient |
US5148944A (en) | 1989-09-29 | 1992-09-22 | Health Tech Services Corporation | Interactive medication delivery system for individual pills and caplets |
US5345538A (en) | 1992-01-27 | 1994-09-06 | Krishna Narayannan | Voice activated control apparatus |
US5268837A (en) | 1992-04-23 | 1993-12-07 | Digital Equipment Corporation | Robotics workstation |
US5307263A (en) | 1992-11-17 | 1994-04-26 | Raya Systems, Inc. | Modular microprocessor-based health monitoring system |
US5429140A (en) | 1993-06-04 | 1995-07-04 | Greenleaf Medical Systems, Inc. | Integrated virtual reality rehabilitation system |
JPH06344279A (en) | 1993-06-07 | 1994-12-20 | Hitachi Ltd | Remote operation device and method |
US5453933A (en) | 1993-09-08 | 1995-09-26 | Hurco Companies, Inc. | CNC control system |
US6022315A (en) | 1993-12-29 | 2000-02-08 | First Opinion Corporation | Computerized medical diagnostic and treatment advice system including network access |
US6206829B1 (en) | 1996-07-12 | 2001-03-27 | First Opinion Corporation | Computerized medical diagnostic and treatment advice system including network access |
US5612869A (en) | 1994-01-21 | 1997-03-18 | Innovative Enterprises International Corporation | Electronic health care compliance assistance |
AU2192795A (en) | 1994-03-21 | 1995-10-09 | Ibv Technologies, Inc. | Programmable voice instructed medication delivery and outcomes monitoring system |
US6471420B1 (en) | 1994-05-13 | 2002-10-29 | Matsushita Electric Industrial Co., Ltd. | Voice selection apparatus voice response apparatus, and game apparatus using word tables from which selected words are output as voice selections |
US5553609A (en) | 1995-02-09 | 1996-09-10 | Visiting Nurse Service, Inc. | Intelligent remote visual monitoring system for home health care service |
US7139843B1 (en) | 1995-05-30 | 2006-11-21 | Roy-G-Biv Corporation | System and methods for generating and communicating motion data through a distributed network |
US20100131081A1 (en) | 1995-05-30 | 2010-05-27 | Brown David W | Systems and methods for motion control |
US7137107B1 (en) * | 2003-04-29 | 2006-11-14 | Roy-G-Biv Corporation | Motion control systems and methods |
US6941543B1 (en) | 1995-05-30 | 2005-09-06 | Roy-G-Biv Corporation | Motion control system and method |
US7024666B1 (en) | 2002-01-28 | 2006-04-04 | Roy-G-Biv Corporation | Motion control systems and methods |
US5752976A (en) | 1995-06-23 | 1998-05-19 | Medtronic, Inc. | World wide patient location and data telemetry system for implantable medical devices |
US7553234B2 (en) | 1995-11-22 | 2009-06-30 | Walker Digital, Llc | Method and apparatus for outputting a result of a game via a container |
US5646912A (en) | 1996-01-25 | 1997-07-08 | Cousin; Damon S. | Medication compliance, co-ordination and dispensing system |
US6553410B2 (en) | 1996-02-27 | 2003-04-22 | Inpro Licensing Sarl | Tailoring data and transmission protocol for efficient interactive data transactions over wide-area networks |
WO1997041936A1 (en) | 1996-04-05 | 1997-11-13 | Maa Shalong | Computer-controlled talking figure toy with animated features |
DE19629093C2 (en) | 1996-07-18 | 2000-03-23 | Siemens Ag | Medical therapy and / or diagnostic system |
US5954641A (en) | 1997-09-08 | 1999-09-21 | Informedix, Inc. | Method, apparatus and operating system for managing the administration of medication and medical treatment regimens |
US20010032278A1 (en) | 1997-10-07 | 2001-10-18 | Brown Stephen J. | Remote generation and distribution of command programs for programmable devices |
US6292712B1 (en) | 1998-01-29 | 2001-09-18 | Northrop Grumman Corporation | Computer interface system for a robotic system |
KR100617525B1 (en) | 1998-06-23 | 2006-09-04 | 소니 가부시끼 가이샤 | Robot and information processing system |
US6615091B1 (en) * | 1998-06-26 | 2003-09-02 | Eveready Battery Company, Inc. | Control system and method therefor |
KR100279717B1 (en) | 1998-12-10 | 2001-02-01 | 윤종용 | Remote Control of External Device in Wireless Terminal System Using Short Message Service |
GB2352933A (en) | 1999-07-31 | 2001-02-07 | Ibm | Speech encoding in a client server system |
ATE306096T1 (en) | 1999-08-31 | 2005-10-15 | Swisscom Ag | MOBILE ROBOT AND CONTROL METHOD FOR A MOBILE ROBOT |
US6885898B1 (en) | 2001-05-18 | 2005-04-26 | Roy-G-Biv Corporation | Event driven motion systems |
US20100131078A1 (en) | 1999-10-27 | 2010-05-27 | Brown David W | Event driven motion systems |
CA2625283C (en) | 1999-10-27 | 2012-12-18 | Roy-G-Biv Corporation | Systems and methods for generating and communicating motion data through a distributed network |
US8032605B2 (en) * | 1999-10-27 | 2011-10-04 | Roy-G-Biv Corporation | Generation and distribution of motion commands over a distributed network |
US7103348B1 (en) | 1999-11-24 | 2006-09-05 | Telemessage Ltd. | Mobile station (MS) message selection identification system |
DE19959330A1 (en) | 1999-12-09 | 2001-06-13 | Kuka Roboter Gmbh | Method and device for controlling a robot |
US6292714B1 (en) | 2000-05-12 | 2001-09-18 | Fujitsu Limited | Robot cooperation device, and robot cooperation program storage medium |
JP2001322079A (en) | 2000-05-15 | 2001-11-20 | Sony Corp | Leg type mobile robot and its action teaching method |
CZ20023818A3 (en) | 2000-05-18 | 2003-06-18 | Alaris Meidical Systems, Inc. | System and method for management of information concerning provision of medical care |
US8165867B1 (en) | 2000-09-15 | 2012-04-24 | Fish Robert D | Methods for translating a device command |
KR20020032786A (en) * | 2000-10-27 | 2002-05-04 | 이채홍 | Method and system for servicing of an on-line data recovery |
US20020086706A1 (en) | 2000-11-15 | 2002-07-04 | Ming-Feng Chen | Mobile device server |
US6668043B2 (en) | 2000-11-16 | 2003-12-23 | Motorola, Inc. | Systems and methods for transmitting and receiving text data via a communication device |
JP3594016B2 (en) | 2001-01-30 | 2004-11-24 | 日本電気株式会社 | Robot program execution method, robot system and program processing device |
WO2002071241A1 (en) | 2001-02-09 | 2002-09-12 | Roy-G-Biv Corporation | Event management systems and methods for the distribution of motion control commands |
US7904194B2 (en) * | 2001-02-09 | 2011-03-08 | Roy-G-Biv Corporation | Event management systems and methods for motion control systems |
US6990180B2 (en) | 2001-04-05 | 2006-01-24 | Nokia Mobile Phones Limited | Short voice message (SVM) service method, apparatus and system |
US20020160757A1 (en) | 2001-04-26 | 2002-10-31 | Moshe Shavit | Selecting the delivery mechanism of an urgent message |
US7194412B2 (en) | 2001-07-19 | 2007-03-20 | Overhead Door Corporation | Speech activated door operator system |
US20030045947A1 (en) | 2001-08-30 | 2003-03-06 | The Boeing Company | System, method and computer program product for controlling the operation of motion devices by directly implementing electronic simulation information |
JP2003205483A (en) | 2001-11-07 | 2003-07-22 | Sony Corp | Robot system and control method for robot device |
DE10164496A1 (en) | 2001-12-28 | 2003-07-17 | Siemens Ag | automation system |
US7076332B2 (en) | 2002-01-18 | 2006-07-11 | National Instruments Corporation | System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality |
EP1388769A1 (en) * | 2002-08-05 | 2004-02-11 | Peter Renner | System for automation, surveillance, control, detection of measured values for technical processes |
KR20040042242A (en) | 2002-11-13 | 2004-05-20 | 삼성전자주식회사 | home robot using home server and home network system having the robot |
KR100542340B1 (en) | 2002-11-18 | 2006-01-11 | 삼성전자주식회사 | home network system and method for controlling home network system |
CA2525745C (en) | 2003-05-14 | 2012-10-02 | D-Box Technologies Inc. | Flexible interface for controlling a motion platform |
US8027349B2 (en) | 2003-09-25 | 2011-09-27 | Roy-G-Biv Corporation | Database event driven motion systems |
US20060064503A1 (en) | 2003-09-25 | 2006-03-23 | Brown David W | Data routing systems and methods |
US7949616B2 (en) | 2004-06-01 | 2011-05-24 | George Samuel Levy | Telepresence by human-assisted remote controlled devices and robots |
US8819103B2 (en) * | 2005-04-08 | 2014-08-26 | Palo Alto Research Center, Incorporated | Communication in a distributed system |
WO2007008940A2 (en) | 2005-07-11 | 2007-01-18 | Brooks Automation, Inc. | Intelligent condition-monitoring and dault diagnostic system |
-
2002
- 2002-01-04 WO PCT/US2002/000150 patent/WO2002054184A2/en active Search and Examination
- 2002-01-04 AU AU2002251731A patent/AU2002251731A1/en not_active Abandoned
- 2002-01-04 US US10/039,147 patent/US20020156872A1/en not_active Abandoned
-
2016
- 2016-06-20 US US15/187,324 patent/US9915934B2/en not_active Expired - Fee Related
Patent Citations (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4829419A (en) * | 1970-12-28 | 1989-05-09 | Hyatt Gilbert P | Microcomputer control of machines |
US4199814A (en) * | 1977-10-12 | 1980-04-22 | Digitcom, Inc. | Computer numerical control machine tool |
US4159417A (en) * | 1977-10-28 | 1979-06-26 | Rubincam David P | Electronic book |
US4800521A (en) * | 1982-09-21 | 1989-01-24 | Xerox Corporation | Task control manager |
US5020021A (en) * | 1985-01-14 | 1991-05-28 | Hitachi, Ltd. | System for automatic language translation using several dictionary storage areas and a noun table |
US4937737A (en) * | 1985-06-17 | 1990-06-26 | International Business Machines Corporation | Process transparent multi storage mode data transfer and buffer control |
US4809335A (en) * | 1985-10-24 | 1989-02-28 | Rumsey Daniel S | Speech unit for dolls and other toys |
US4897835A (en) * | 1985-11-27 | 1990-01-30 | At&E Corporation | High capacity protocol with multistation capability |
US4815011A (en) * | 1986-01-25 | 1989-03-21 | Fanuc Ltd. | Robot control apparatus |
US4912650A (en) * | 1986-07-10 | 1990-03-27 | Fanuc Ltd. | Off-line control execution method |
US4840602A (en) * | 1987-02-06 | 1989-06-20 | Coleco Industries, Inc. | Talking doll responsive to external signal |
US5095445A (en) * | 1987-03-20 | 1992-03-10 | Canon Kabushiki Kaisha | Data communication system capable of communicating on-line with communication terminal equipment of a plurality of types |
US5005134A (en) * | 1987-04-30 | 1991-04-02 | Fanuc Ltd. | Numerical control apparatus with simultaneous function execution |
US4987537A (en) * | 1987-05-31 | 1991-01-22 | Nec Corporation | Computer capable of accessing a memory by supplying an address having a length shorter than that of a required address for the memory |
US4923428A (en) * | 1988-05-05 | 1990-05-08 | Cal R & D, Inc. | Interactive talking toy |
US5126932A (en) * | 1988-06-17 | 1992-06-30 | Siemens Corporate Research, Inc. | Method and apparatus for executing a program in a heterogeneous multiple computer system |
US5126932B1 (en) * | 1988-06-17 | 1996-09-24 | Siemens Corp Res Inc | Method and apparatus for executing a program in a heterogeneous multiple computer system |
US5005135A (en) * | 1989-03-22 | 1991-04-02 | Cincinnati Milacron, Inc. | Dynamic correction of servo following errors in a computer-numerically controlled system and fixed cycle utilizing same |
US5914876A (en) * | 1989-06-23 | 1999-06-22 | Mitsubishi Denki Kabushiki Kaisha | Numerical controller having expanded control word set |
US5491813A (en) * | 1990-02-12 | 1996-02-13 | International Business Machines Corporation | Display subsystem architecture for binding device independent drivers together into a bound driver for controlling a particular display device |
US5390304A (en) * | 1990-09-28 | 1995-02-14 | Texas Instruments, Incorporated | Method and apparatus for processing block instructions in a data processor |
US5412757A (en) * | 1990-11-28 | 1995-05-02 | Kabushiki Kaisha Toshiba | Fuzzy control system |
US5120065A (en) * | 1991-02-08 | 1992-06-09 | Hasbro, Incorporated | Electronic talking board game |
US5291416A (en) * | 1991-03-08 | 1994-03-01 | Software Algoritms Incorporated | Event feedback for numerically controlled machine tool and network implementation thereof |
US5625821A (en) * | 1991-08-12 | 1997-04-29 | International Business Machines Corporation | Asynchronous or synchronous operation of event signaller by event management services in a computer system |
US5382026A (en) * | 1991-09-23 | 1995-01-17 | Hughes Aircraft Company | Multiple participant moving vehicle shooting gallery |
US6195592B1 (en) * | 1991-10-24 | 2001-02-27 | Immersion Corporation | Method and apparatus for providing tactile sensations using an interface device |
US5889670A (en) * | 1991-10-24 | 1999-03-30 | Immersion Corporation | Method and apparatus for tactilely responsive user interface |
US5889672A (en) * | 1991-10-24 | 1999-03-30 | Immersion Corporation | Tactiley responsive user interface device and method therefor |
US5400345A (en) * | 1992-03-06 | 1995-03-21 | Pitney Bowes Inc. | Communications system to boundary-scan logic interface |
US5618179A (en) * | 1992-05-22 | 1997-04-08 | Atari Games Corpooration | Driver training system and method with performance data feedback |
US5402518A (en) * | 1992-07-22 | 1995-03-28 | Pcvoice, Inc. | Sound storage and sound retrieval system having peripheral with hand operable switches |
US5493281A (en) * | 1992-09-23 | 1996-02-20 | The Walt Disney Company | Method and apparatus for remote synchronization of audio, lighting, animation and special effects |
US5625820A (en) * | 1992-09-30 | 1997-04-29 | International Business Machines Corporation | System managed logging of objects to speed recovery processing |
US5607336A (en) * | 1992-12-08 | 1997-03-04 | Steven Lebensfeld | Subject specific, word/phrase selectable message delivering doll or action figure |
US5604843A (en) * | 1992-12-23 | 1997-02-18 | Microsoft Corporation | Method and system for interfacing with a computer output device |
US5390330A (en) * | 1993-02-11 | 1995-02-14 | Talati; Kirit K. | Control system and method for direct execution of software application information models without code generation |
US5704837A (en) * | 1993-03-26 | 1998-01-06 | Namco Ltd. | Video game steering system causing translation, rotation and curvilinear motion on the object |
US5405152A (en) * | 1993-06-08 | 1995-04-11 | The Walt Disney Company | Method and apparatus for an interactive video game with physical feedback |
US5739811A (en) * | 1993-07-16 | 1998-04-14 | Immersion Human Interface Corporation | Method and apparatus for controlling human-computer interface systems providing force feedback |
US6057828A (en) * | 1993-07-16 | 2000-05-02 | Immersion Corporation | Method and apparatus for providing force sensations in virtual environments in accordance with host software |
US5734373A (en) * | 1993-07-16 | 1998-03-31 | Immersion Human Interface Corporation | Method and apparatus for controlling force feedback interface systems utilizing a host computer |
US6046727A (en) * | 1993-07-16 | 2000-04-04 | Immersion Corporation | Three dimensional position sensing interface with force output |
US6219033B1 (en) * | 1993-07-16 | 2001-04-17 | Immersion Corporation | Method and apparatus for controlling force feedback interface systems utilizing a host computer |
US5392207A (en) * | 1993-08-20 | 1995-02-21 | Allen-Bradley Company, Inc. | Programmable motion controller with graphical programming aid |
US5596994A (en) * | 1993-08-30 | 1997-01-28 | Bro; William L. | Automated and interactive behavioral and medical guidance system |
US5413355A (en) * | 1993-12-17 | 1995-05-09 | Gonzalez; Carlos | Electronic educational game with responsive animation |
US5511147A (en) * | 1994-01-12 | 1996-04-23 | Uti Corporation | Graphical interface for robot |
US5600373A (en) * | 1994-01-14 | 1997-02-04 | Houston Advanced Research Center | Method and apparatus for video image compression and decompression using boundary-spline-wavelets |
US5617528A (en) * | 1994-02-04 | 1997-04-01 | Datacard Corporation | Method and apparatus for interactively creating a card which includes video and cardholder information |
US5608894A (en) * | 1994-03-18 | 1997-03-04 | Fujitsu Limited | Execution control system |
US5754855A (en) * | 1994-04-21 | 1998-05-19 | International Business Machines Corporation | System and method for managing control flow of computer programs executing in a computer system |
US5623582A (en) * | 1994-07-14 | 1997-04-22 | Immersion Human Interface Corporation | Computer interface or control input device for laparoscopic surgical instrument and other elongated mechanical objects |
US5733131A (en) * | 1994-07-29 | 1998-03-31 | Seiko Communications Holding N.V. | Education and entertainment device with dynamic configuration and operation |
US5707289A (en) * | 1994-10-21 | 1998-01-13 | Pioneer Electronic Corporation | Video game system having terminal identification data |
US5855483A (en) * | 1994-11-21 | 1999-01-05 | Compaq Computer Corp. | Interactive play with a computer |
US6246390B1 (en) * | 1995-01-18 | 2001-06-12 | Immersion Corporation | Multiple degree-of-freedom mechanical interface to a computer system |
US5724074A (en) * | 1995-02-06 | 1998-03-03 | Microsoft Corporation | Method and system for graphically programming mobile toys |
US5907704A (en) * | 1995-04-03 | 1999-05-25 | Quark, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system including internet accessible objects |
US5766077A (en) * | 1995-05-26 | 1998-06-16 | Kabushiki Kaisha Bandai | Game apparatus with controllers for moving toy and character therefor |
US6209037B1 (en) * | 1995-05-30 | 2001-03-27 | Roy-G-Biv Corporation | Motion control systems using communication map to facilitating communication with motion control hardware |
US6571141B1 (en) * | 1995-05-30 | 2003-05-27 | Roy-G-Biv Corporation | Application programs for motion control devices including access limitations |
US6542925B2 (en) * | 1995-05-30 | 2003-04-01 | Roy-G-Biv Corporation | Generation and distribution of motion commands over a distributed network |
US5867385A (en) * | 1995-05-30 | 1999-02-02 | Roy-G-Biv Corporation | Motion control systems |
US5772504A (en) * | 1995-09-12 | 1998-06-30 | Konami Co., Ltd. | Driving game machine |
US5636994A (en) * | 1995-11-09 | 1997-06-10 | Tong; Vincent M. K. | Interactive computer controlled doll |
US6191774B1 (en) * | 1995-11-17 | 2001-02-20 | Immersion Corporation | Mouse interface for providing force feedback |
US5752880A (en) * | 1995-11-20 | 1998-05-19 | Creator Ltd. | Interactive doll |
US6061004A (en) * | 1995-11-26 | 2000-05-09 | Immersion Corporation | Providing force feedback using an interface device including an indexing function |
US6169540B1 (en) * | 1995-12-01 | 2001-01-02 | Immersion Corporation | Method and apparatus for designing force sensations in force feedback applications |
US6219032B1 (en) * | 1995-12-01 | 2001-04-17 | Immersion Corporation | Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface |
US6028593A (en) * | 1995-12-01 | 2000-02-22 | Immersion Corporation | Method and apparatus for providing simulated physical interactions within computer generated environments |
US6078308A (en) * | 1995-12-13 | 2000-06-20 | Immersion Corporation | Graphical click surfaces for force feedback applications to provide user selection using cursor interaction with a trigger position within a boundary of a graphical object |
US5746602A (en) * | 1996-02-27 | 1998-05-05 | Kikinis; Dan | PC peripheral interactive doll |
US5737523A (en) * | 1996-03-04 | 1998-04-07 | Sun Microsystems, Inc. | Methods and apparatus for providing dynamic network file system client authentication |
US5764155A (en) * | 1996-04-03 | 1998-06-09 | General Electric Company | Dynamic data exchange server |
US6031973A (en) * | 1996-07-05 | 2000-02-29 | Seiko Epson Corporation | Robot and its controller method |
US5890963A (en) * | 1996-09-30 | 1999-04-06 | Yen; Wei | System and method for maintaining continuous and progressive game play in a computer network |
US6080063A (en) * | 1997-01-06 | 2000-06-27 | Khosla; Vinod | Simulated real time game play with live event |
US5873765A (en) * | 1997-01-07 | 1999-02-23 | Mattel, Inc. | Toy having data downloading station |
US6038603A (en) * | 1997-03-25 | 2000-03-14 | Oracle Corporation | Processing customized uniform resource locators |
US5907831A (en) * | 1997-04-04 | 1999-05-25 | Lotvin; Mikhail | Computer apparatus and methods supporting different categories of users |
US6020876A (en) * | 1997-04-14 | 2000-02-01 | Immersion Corporation | Force feedback interface with selective disturbance filter |
US6233545B1 (en) * | 1997-05-01 | 2001-05-15 | William E. Datig | Universal machine translator of arbitrary languages utilizing epistemic moments |
US6065365A (en) * | 1997-05-08 | 2000-05-23 | Case Corporation | Control lever assembly |
US6012961A (en) * | 1997-05-14 | 2000-01-11 | Design Lab, Llc | Electronic toy including a reprogrammable data storage device |
US6070010A (en) * | 1997-07-25 | 2000-05-30 | International Business Machines Corporation | System and method of local data alignment for stack memory |
US6078968A (en) * | 1997-10-03 | 2000-06-20 | Vicom Systems, Inc. | Platform-independent communications protocol supporting communications between a processor and subsystem controller based on identifying information |
US6216173B1 (en) * | 1998-02-03 | 2001-04-10 | Redbox Technologies Limited | Method and apparatus for content processing and routing |
US6247994B1 (en) * | 1998-02-11 | 2001-06-19 | Rokenbok Toy Company | System and method for communicating with and controlling toy accessories |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6678713B1 (en) * | 1998-04-29 | 2004-01-13 | Xerox Corporation | Machine control using a schedulerlock construct |
US6201996B1 (en) * | 1998-05-29 | 2001-03-13 | Control Technology Corporationa | Object-oriented programmable industrial controller with distributed interface architecture |
US6243078B1 (en) * | 1998-06-23 | 2001-06-05 | Immersion Corporation | Pointing device with forced feedback button |
US6519594B1 (en) * | 1998-11-14 | 2003-02-11 | Sony Electronics, Inc. | Computer-implemented sharing of java classes for increased memory efficiency and communication method |
US6523171B1 (en) * | 1998-12-29 | 2003-02-18 | International Business Machines Corporation | Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL) |
US6546436B1 (en) * | 1999-03-30 | 2003-04-08 | Moshe Fainmesser | System and interface for controlling programmable toys |
US6528963B1 (en) * | 2000-12-13 | 2003-03-04 | Samsung Electronics Co., Ltd. | Robot and method for controlling motor speed of the robot |
US6889118B2 (en) * | 2001-11-28 | 2005-05-03 | Evolution Robotics, Inc. | Hardware abstraction layer for a robot |
US20040019683A1 (en) * | 2002-07-25 | 2004-01-29 | Lee Kuo Chu | Protocol independent communication system for mobile devices |
Cited By (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157199A1 (en) * | 1995-05-30 | 2009-06-18 | Brown David W | Motion Control Systems |
US8271105B2 (en) | 1995-05-30 | 2012-09-18 | Roy-G-Biv Corporation | Motion control systems |
US8073557B2 (en) | 1995-05-30 | 2011-12-06 | Roy-G-Biv Corporation | Motion control systems |
US20090157807A1 (en) * | 1997-10-07 | 2009-06-18 | Brown Stephen J | System and/or method for generating a script relating to a medical task involving motion with a device |
US7853645B2 (en) | 1997-10-07 | 2010-12-14 | Roy-G-Biv Corporation | Remote generation and distribution of command programs for programmable devices |
US7904194B2 (en) | 2001-02-09 | 2011-03-08 | Roy-G-Biv Corporation | Event management systems and methods for motion control systems |
US20030084350A1 (en) * | 2001-11-01 | 2003-05-01 | International Business Machines Corporation | System and method for secure configuration of sensitive web services |
US7392391B2 (en) * | 2001-11-01 | 2008-06-24 | International Business Machines Corporation | System and method for secure configuration of sensitive web services |
US20040201600A1 (en) * | 2001-12-14 | 2004-10-14 | Microsoft Corporation | Methods and system for providing an XML-based interface description language |
US20030154308A1 (en) * | 2002-02-13 | 2003-08-14 | Infowave Software, Inc. | General purpose compression proxy system and method for extensible markup language (XML) documents |
US20030191824A1 (en) * | 2002-04-03 | 2003-10-09 | Raghav Rao | Installation of network services in an embedded network server |
US7571221B2 (en) * | 2002-04-03 | 2009-08-04 | Hewlett-Packard Development Company, L.P. | Installation of network services in an embedded network server |
US7330473B1 (en) * | 2002-04-12 | 2008-02-12 | Rockwell Automation Technologies, Inc. | System and methodology providing network data exchange between industrial control components |
US20130073738A1 (en) * | 2002-05-10 | 2013-03-21 | Richard Reisman | Method and Apparatus for Browsing Using Multiple Coordinated Device Sets |
US8893212B2 (en) | 2002-05-10 | 2014-11-18 | Convergent Media Solutions Llc | Method and apparatus for browsing using alternative linkbases |
US8850507B2 (en) | 2002-05-10 | 2014-09-30 | Convergent Media Solutions Llc | Method and apparatus for browsing using alternative linkbases |
US9143839B2 (en) * | 2002-05-10 | 2015-09-22 | Convergent Media Solutions Llc | Method and apparatus for browsing using multiple coordinated device sets |
US8914840B2 (en) | 2002-05-10 | 2014-12-16 | Convergent Media Solutions Llc | Method and apparatus for browsing using alternative linkbases |
US8898722B2 (en) | 2002-05-10 | 2014-11-25 | Convergent Media Solutions Llc | Method and apparatus for browsing using alternative linkbases |
US8875215B2 (en) | 2002-05-10 | 2014-10-28 | Convergent Media Solutions Llc | Method and apparatus for browsing using alternative linkbases |
US7539724B1 (en) | 2002-06-04 | 2009-05-26 | Rockwell Automation Technologies, Inc. | Instant messaging for event notification and exchanging data in an industrial controller environment |
US7512906B1 (en) | 2002-06-04 | 2009-03-31 | Rockwell Automation Technologies, Inc. | System and methodology providing adaptive interface in an industrial controller environment |
US7606890B1 (en) | 2002-06-04 | 2009-10-20 | Rockwell Automation Technologies, Inc. | System and methodology providing namespace and protocol management in an industrial controller environment |
US8132127B2 (en) | 2002-06-04 | 2012-03-06 | Rockwell Automation Technologies, Inc. | System and methodology providing adaptive interface in an industrial controller environment |
US10018993B2 (en) | 2002-06-04 | 2018-07-10 | Rockwell Automation Technologies, Inc. | Transformation of industrial data into useful cloud information |
US20070198709A1 (en) * | 2002-06-28 | 2007-08-23 | Anthony Miologos, Esq. | OPC server redirection manager |
US7451215B2 (en) * | 2002-06-28 | 2008-11-11 | Honeywell International Inc. | OPC server redirection manager |
US20040006610A1 (en) * | 2002-07-05 | 2004-01-08 | Anjali Anagol-Subbarao | Architecture and method for configuration validation web service |
US20030172110A1 (en) * | 2002-12-10 | 2003-09-11 | Oracle International Corporation | Methods and apparatus for invoking a document style server operation using an operation name in a SOAPAction header |
US8027349B2 (en) | 2003-09-25 | 2011-09-27 | Roy-G-Biv Corporation | Database event driven motion systems |
US8102869B2 (en) | 2003-09-25 | 2012-01-24 | Roy-G-Biv Corporation | Data routing systems and methods |
US7953769B1 (en) * | 2004-01-21 | 2011-05-31 | Computer Associates Think, Inc. | XML data packaging system and method |
US7970801B1 (en) * | 2004-01-21 | 2011-06-28 | Computer Associates Think, Inc. | Data packaging system and method |
US8533239B2 (en) | 2004-01-21 | 2013-09-10 | Ca, Inc. | Data packaging system and method |
US20110219040A1 (en) * | 2004-01-21 | 2011-09-08 | Computer Associates Think, Inc. | Data packaging system and method |
US8312060B2 (en) * | 2004-05-04 | 2012-11-13 | Fisher-Rosemount Systems, Inc. | Methods and apparatus for accessing process control data |
US20070061786A1 (en) * | 2004-05-04 | 2007-03-15 | Ling Zhou | Methods and apparatus for modifying process control data |
US8086955B2 (en) | 2004-05-04 | 2011-12-27 | Fisher-Rosemount Systems, Inc. | Methods and apparatus for modifying process control data |
US8060834B2 (en) | 2004-05-04 | 2011-11-15 | Fisher-Rosemount Systems, Inc. | Graphics integration into a process configuration and control environment |
US20070130572A1 (en) * | 2004-05-04 | 2007-06-07 | Stephen Gilbert | Methods and apparatus for accessing process control data |
US8127241B2 (en) | 2004-05-04 | 2012-02-28 | Fisher-Rosemount Systems, Inc. | Process plant user interface system having customized process graphic display layers in an integrated environment |
US8000814B2 (en) | 2004-05-04 | 2011-08-16 | Fisher-Rosemount Systems, Inc. | User configurable alarms and alarm trending for process control system |
US8135481B2 (en) | 2004-05-04 | 2012-03-13 | Fisher-Rosemount Systems, Inc. | Process plant monitoring based on multivariate statistical analysis and on-line process simulation |
US8185219B2 (en) | 2004-05-04 | 2012-05-22 | Fisher-Rosemount Systems, Inc. | Graphic element with multiple visualizations in a process environment |
EP2293203A1 (en) * | 2004-05-04 | 2011-03-09 | Fisher-Rosemount Systems, Inc. | Methods and apparatus for querying process control data |
US20070156862A1 (en) * | 2005-12-27 | 2007-07-05 | Tsutomu Yamada | Computer system |
US20080077709A1 (en) * | 2006-09-27 | 2008-03-27 | International Business Machines Corporation | Dynamically extening xml-based service through client |
US7761880B2 (en) * | 2006-09-27 | 2010-07-20 | International Business Machines Corporation | Dynamically extending XML-based service through client |
EP1959638A3 (en) * | 2006-12-21 | 2008-08-27 | Ricoh Company, Ltd. | Integrating discovery functionality within a device and facility manager |
US8112766B2 (en) | 2006-12-21 | 2012-02-07 | Ricoh Company, Ltd. | Multi-threaded device and facility manager |
EP1959638A2 (en) * | 2006-12-21 | 2008-08-20 | Ricoh Company, Ltd. | Integrating discovery functionality within a device and facility manager |
US20080155541A1 (en) * | 2006-12-21 | 2008-06-26 | Ricoh Company, Ltd. | Multi-threaded device and facility manager |
US8321546B2 (en) | 2007-01-10 | 2012-11-27 | Ricoh Company, Ltd. | Integrating discovery functionality within a device and facility manager |
US20080168440A1 (en) * | 2007-01-10 | 2008-07-10 | Ricoh Corporation Ltd. | Integrating discovery functionality within a device and facility manager |
US8881039B2 (en) | 2009-03-13 | 2014-11-04 | Fisher-Rosemount Systems, Inc. | Scaling composite shapes for a graphical human-machine interface |
US20110169832A1 (en) * | 2010-01-11 | 2011-07-14 | Roy-G-Biv Corporation | 3D Motion Interface Systems and Methods |
US8825183B2 (en) | 2010-03-22 | 2014-09-02 | Fisher-Rosemount Systems, Inc. | Methods for a data driven interface based on relationships between process control tags |
WO2011133905A1 (en) * | 2010-04-22 | 2011-10-27 | OyunStudyosu Ltd. Sti. | Social groups system and method |
US9568908B2 (en) | 2012-02-09 | 2017-02-14 | Rockwell Automation Technologies, Inc. | Industrial automation app-store |
US11470157B2 (en) | 2012-02-09 | 2022-10-11 | Rockwell Automation Technologies, Inc. | Cloud gateway for industrial automation information and control systems |
US9477936B2 (en) | 2012-02-09 | 2016-10-25 | Rockwell Automation Technologies, Inc. | Cloud-based operator interface for industrial automation |
US9565275B2 (en) | 2012-02-09 | 2017-02-07 | Rockwell Automation Technologies, Inc. | Transformation of industrial data into useful cloud information |
US9413852B2 (en) | 2012-02-09 | 2016-08-09 | Rockwell Automation Technologies, Inc. | Time-stamping of industrial cloud data for synchronization |
US9568909B2 (en) | 2012-02-09 | 2017-02-14 | Rockwell Automation Technologies, Inc. | Industrial automation service templates for provisioning of cloud services |
US10965760B2 (en) | 2012-02-09 | 2021-03-30 | Rockwell Automation Technologies, Inc. | Cloud-based operator interface for industrial automation |
US10749962B2 (en) | 2012-02-09 | 2020-08-18 | Rockwell Automation Technologies, Inc. | Cloud gateway for industrial automation information and control systems |
US10139811B2 (en) | 2012-02-09 | 2018-11-27 | Rockwell Automation Technologies, Inc. | Smart device for industrial automation |
US9965562B2 (en) | 2012-02-09 | 2018-05-08 | Rockwell Automation Technologies, Inc. | Industrial automation app-store |
US10116532B2 (en) | 2012-02-09 | 2018-10-30 | Rockwell Automation Technologies, Inc. | Cloud-based operator interface for industrial automation |
US20140107847A1 (en) * | 2012-10-15 | 2014-04-17 | Delta Electro-Optics (Wujiang) Ltd. | Operating method and operating system for a pcb drilling-milling machine using different motion control products |
US9703902B2 (en) | 2013-05-09 | 2017-07-11 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial simulation |
US10564633B2 (en) | 2013-05-09 | 2020-02-18 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial automation environment with information overlays |
US9989958B2 (en) | 2013-05-09 | 2018-06-05 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial automation environment |
US9954972B2 (en) | 2013-05-09 | 2018-04-24 | Rockwell Automation Technologies, Inc. | Industrial data analytics in a cloud platform |
US10204191B2 (en) | 2013-05-09 | 2019-02-12 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial simulation |
US10257310B2 (en) | 2013-05-09 | 2019-04-09 | Rockwell Automation Technologies, Inc. | Industrial data analytics in a cloud platform |
US10026049B2 (en) | 2013-05-09 | 2018-07-17 | Rockwell Automation Technologies, Inc. | Risk assessment for industrial systems using big data |
US11295047B2 (en) | 2013-05-09 | 2022-04-05 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial simulation |
US10726428B2 (en) | 2013-05-09 | 2020-07-28 | Rockwell Automation Technologies, Inc. | Industrial data analytics in a cloud platform |
US9786197B2 (en) | 2013-05-09 | 2017-10-10 | Rockwell Automation Technologies, Inc. | Using cloud-based data to facilitate enhancing performance in connection with an industrial automation system |
US10816960B2 (en) | 2013-05-09 | 2020-10-27 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial machine environment |
US9709978B2 (en) | 2013-05-09 | 2017-07-18 | Rockwell Automation Technologies, Inc. | Using cloud-based data for virtualization of an industrial automation environment with information overlays |
US10984677B2 (en) | 2013-05-09 | 2021-04-20 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial automation system training |
US11676508B2 (en) | 2013-05-09 | 2023-06-13 | Rockwell Automation Technologies, Inc. | Using cloud-based data for industrial automation system training |
US9438648B2 (en) | 2013-05-09 | 2016-09-06 | Rockwell Automation Technologies, Inc. | Industrial data analytics in a cloud platform |
US10496061B2 (en) | 2015-03-16 | 2019-12-03 | Rockwell Automation Technologies, Inc. | Modeling of an industrial automation environment in the cloud |
US11409251B2 (en) | 2015-03-16 | 2022-08-09 | Rockwell Automation Technologies, Inc. | Modeling of an industrial automation environment in the cloud |
US11243505B2 (en) | 2015-03-16 | 2022-02-08 | Rockwell Automation Technologies, Inc. | Cloud-based analytics for industrial automation |
US11513477B2 (en) | 2015-03-16 | 2022-11-29 | Rockwell Automation Technologies, Inc. | Cloud-based industrial controller |
US11042131B2 (en) | 2015-03-16 | 2021-06-22 | Rockwell Automation Technologies, Inc. | Backup of an industrial automation plant in the cloud |
US11880179B2 (en) | 2015-03-16 | 2024-01-23 | Rockwell Automation Technologies, Inc. | Cloud-based analytics for industrial automation |
US11927929B2 (en) | 2015-03-16 | 2024-03-12 | Rockwell Automation Technologies, Inc. | Modeling of an industrial automation environment in the cloud |
Also Published As
Publication number | Publication date |
---|---|
AU2002251731A1 (en) | 2002-07-16 |
WO2002054184A2 (en) | 2002-07-11 |
US9915934B2 (en) | 2018-03-13 |
WO2002054184A3 (en) | 2002-10-10 |
US20160299485A1 (en) | 2016-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20020156872A1 (en) | Systems and methods for transmitting motion control data | |
US20150057769A1 (en) | Systems and Methods for Communicating with Motion Control Systems and Devices | |
US6842903B1 (en) | System and method for providing dynamic references between services in a computer system | |
US5973696A (en) | Embedded web server | |
US8151281B2 (en) | Method and system of mapping at least one web service to at least one OSGi service | |
US7325053B2 (en) | Object oriented communication among platform-independent systems over networks using SOAP | |
US6456308B1 (en) | Embedded web server | |
US6480882B1 (en) | Method for control and communication between computer systems linked through a network | |
EP1257914B1 (en) | Self-configurable distributed system | |
US20040021679A1 (en) | Human machine interface | |
US20060253558A1 (en) | Web dispatch service | |
US20070124475A1 (en) | Creating proxies from service description metadata at runtime | |
US20030055862A1 (en) | Methods, systems, and articles of manufacture for managing systems using operation objects | |
WO2000079745A1 (en) | Communications involving disparate protocol, network/bus and device subsystems | |
WO1998002814A1 (en) | Method and apparatus for dynamically brokering object messages among object models | |
JP2004530194A (en) | Method and bridge for combining servers and clients of different object types | |
WO2001073550A2 (en) | System and method of generating and using proxy beans | |
US7191232B2 (en) | Extendable provisioning mechanism for a service gateway | |
US6473759B1 (en) | Method and system for accessing java applications | |
US20020046304A1 (en) | Dynamic class loading | |
US20020069257A1 (en) | Provisioning mechanism for a service gateway | |
US7007094B1 (en) | Object oriented communications system over the internet | |
EP1133102B1 (en) | An interface to a network management system of a communication network | |
US20040230665A1 (en) | Mapping uniform resource locators to object classes and methods | |
Hsu et al. | Widget-based framework for web service discovery on multiple home social network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ROY-G-BIV CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROWN, DAVID W.;REEL/FRAME:012792/0997 Effective date: 20020114 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |