← Back to Patent Explorer
US5691897A Expired / Lapsed US ⏱️ 0.0 years remaining

Motion control systems

Assignee: Automation Middleware Solutions Inc
•
Filing: 1995-05-30
•
Granted: 1997-11-25
•
Expires: 2015-05-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A system for motion control in which an application is developed that is independent from the actual motion control hardware used to implement the system. The system comprises a software system that employs an application programming interface comprising component functions and a service provider interface comprising driver functions. A system programmer writes an application that calls the component functions. Code associated with the component functions relates these functions to the driver functions. A hardware designer writes driver code that implements the driver functions on a given motion control hardware product. The driver functions are separated into core and extended driver functions. All software drivers implement the core driver functions, while the software drivers need not contain code for implementing the extended driver functions. If the software driver does not contain code to implement an extended driver function, the functionality of the extended driver function is obtained through a combination of core driver functions. The system programmer may also select one or more streams that allow the control commands to be communicated to, and response data to be communicated from, motion control hardware.

Inventors

  • 👤 David W. Brown
  • 👤 Jay S. Clark

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 22:07
CPC Classifications
G; G05; G05B; G05B19/00; G05B19/02; G05B19/18; G05B19/19; G05B19/416; G05B2219/00; G05B2219/20; G05B2219/23; G05B2219/23262; G05B2219/23265; G05B2219/30; G05B2219/34; G05B2219/34208; G05B2219/34216; G05B2219/34263; G05B2219/34287; G05B2219/36; G05B2219/36035; G05B2219/36036; G05B2219/36037; G05B2219/43; G05B2219/43167; Y; Y02; Y02P; Y02P90/00; Y02P90/02

Claims Analysis

Total Claims: 28
Claim 1
Independent Claim 298 words
A method of moving an object in a desired manner, comprising the steps of: defining a set of motion control operations, where each motion control operation is either a primitive operation that is necessary to perform motion control and that cannot be simulated using other motion control operations or a non-primitive operation that does not meet the definition of a primitive operation; defining a core set of core driver functions, where each core driver function identifies one of the primitive operations; defining an extended set of extended driver functions, where each extended driver function identifies one of the non-primitive operations; defining a set of component functions; providing component code for each of the component functions, where the component code cross-references at least some of the component functions with at least some of the driver functions; developing a set of software drivers, where (i) each software driver is developed for a motion control device in a supported group of motion control devices and (ii) each software driver comprises driver code for implementing the motion control operations associated with at least some of the driver functions; providing an application program comprising a series of component functions, where the application program defines the motion steps necessary to move the object in the desired manner; selecting one motion control device from the group of supported motion control devices; attaching the object to the selected motion control device; selecting from the set of software drivers the software driver developed for the selected motion control device; generating control commands based on the component functions of the application program, the component code of the component functions, and the driver code of the selected software driver; and operating the selected motion control device based on the control commands to move the object in the desired manner.
Claim 2
Independent Claim 298 words
A method of moving an object in a desired manner, comprising the steps of: defining a set of motion control operations, where each motion control operation is either a primitive operation that is necessary to perform motion control and that cannot be simulated using other motion control operations or a non-primitive operation that does not meet the definition of a primitive operation; defining a core set of core driver functions, where each core driver function identifies one of the primitive operations; defining an extended set of extended driver functions, where each extended driver function identifies one of the non-primitive operations; defining a set of component functions; providing component code for each of the component functions, where the component code cross-references at least some of the component functions with at least some of the driver functions; developing a set of software drivers, where (i) each software driver is developed for a motion control device in a supported group of motion control devices and (ii) each software driver comprises driver code for implementing the motion control operations associated with at least some of the driver functions; providing an application program comprising a series of component functions, where the application program defines the motion steps necessary to move the object in the desired manner; selecting one motion control device from the group of supported motion control devices; attaching the object to the selected motion control device; selecting from the set of software drivers the software driver developed for the selected motion control device; generating control commands based on the component functions of the application program, the component code of the component functions, and the driver code of the selected software driver; and operating the selected motion control device based on the control commands to move the object in the desired manner.
Claim 3
Dependent Claim 33 words
A method as recited in claim 1, in which the step of providing the set of software drivers comprises the step of developing driver code to implement all of the core driver functions.
Claim 4
Dependent Claim 36 words
A method as recited in claim 2, in which the step of developing the set of software drivers further comprises the step of developing driver code to implement at least some of the extended driver functions.
Claim 5
Dependent Claim 69 words
A method as recited in claim 3, in which: non-supported extended driver functions are extended driver functions having no driver code associated therewith; and the step of generating control commands comprises the step of generating the control commands based on the driver code associated with a combination of the core driver functions to emulate the motion control operations associated with at least some of the non-supported extended driver functions.
Claim 6
Dependent Claim 64 words
A method as recited in claim 4, in which the step of generating the control commands further comprises the steps of: developing an extended function pointer table that maps the non-supported extended driver functions to the combination of core driver functions employed to emulate the non-supported extended functions; and generating the control commands further based on the contents of the extended function pointer table.
Claim 7
Dependent Claim 67 words
A method as recited in claim 5, in which the extended function pointer table contains pointers for both supported and non-supported extended driver functions, where the pointers for the supported extended driver functions point to driver code for implementing the supported extended driver functions and the pointers for the non-supported extended driver functions point to the combination of core driver functions that emulate the non-supported extended functions.
Claim 8
Dependent Claim 50 words
A method as recited in claim 1, further comprising the step of: determining a first unit system employed by the software drivers; wherein the step of generating the control commands further comprises the step of converting a second unit system employed by the application program into the first unit system.
Claim 9
Dependent Claim 92 words
A method as recited in claim 1, further comprising the steps of: providing a plurality of destinations of control commands; providing a plurality of streams, where each stream contains transmit stream code that determines how the control commands are to be transferred to at least one of the destinations of control commands; selecting at least one of the destinations of control commands; and transferring the control commands to the selected destination of control commands based on the transmit stream code contained by the stream associated with the selected destination of control commands.
Claim 10
Dependent Claim 55 words
A method as recited in claim 8, in which certain of the destinations of control commands generate response data, the method further comprising the steps of: providing response stream code for the streams associated with the destinations of control commands that generate response data; and processing the response data based on the response stream code.
Claim 11
Independent Claim 175 words
A method of moving an object in a desired manner, comprising the steps of: defining a first set of first driver functions and a second set of second driver functions, where each first driver function is identifies an incremental motion step performed by motion control devices and each second driver function identifies a plurality of such incremental motion steps; providing a plurality of software drivers, where each software driver comprises driver code and is provided for a motion control device selected from a group of supported motion control devices; providing an application program comprising a sequence of program instructions; selecting a motion control device from the supported group of motion control devices; mounting the object on the selected motion control device; selecting the software driver provided for the selected motion control device; generating control commands based on the application program, the first and second driver functions, and the driver code of the selected software driver; and operating the selected motion control device based on the control commands to move the object in the desired manner.
Claim 12
Independent Claim 175 words
A method of moving an object in a desired manner, comprising the steps of: defining a first set of first driver functions and a second set of second driver functions, where each first driver function is identifies an incremental motion step performed by motion control devices and each second driver function identifies a plurality of such incremental motion steps; providing a plurality of software drivers, where each software driver comprises driver code and is provided for a motion control device selected from a group of supported motion control devices; providing an application program comprising a sequence of program instructions; selecting a motion control device from the supported group of motion control devices; mounting the object on the selected motion control device; selecting the software driver provided for the selected motion control device; generating control commands based on the application program, the first and second driver functions, and the driver code of the selected software driver; and operating the selected motion control device based on the control commands to move the object in the desired manner.
Claim 13
Dependent Claim 33 words
A method as recited in claim 10, in which the step of providing the set of software drivers comprises the step of developing driver code to implement all of the first driver functions.
Claim 14
Dependent Claim 36 words
A method as recited in claim 11, in which the step of developing the set of software drivers further comprises the step of developing driver code to implement at least some of the second driver functions.
Claim 15
Dependent Claim 71 words
A method as recited in claim 12, in which: non-supported second driver functions are second driver functions having no driver code associated therewith; and the step of generating control commands comprises the step of generating the control commands based on the driver code associated with a combination of the first driver functions to emulate the plurality of incremental motion steps identified by at least some of the nonsupported second driver functions.
Claim 16
Dependent Claim 64 words
A method as recited in claim 13, in which the step of generating the control commands further comprises the steps of: developing an extended function pointer table that maps the non-supported extended driver functions to the combination of core driver functions employed to emulate the non-supported extended functions; and generating the control commands further based on the contents of the extended function pointer table.
Claim 17
Dependent Claim 67 words
A method as recited in claim 14, in which the extended function pointer table contains pointers for both supported and non-supported extended driver functions, where the pointers for the supported extended driver functions point to driver code for implementing the supported extended driver functions and the pointers for the non-supported extended driver functions point to the combination of core driver functions that emulate the non-supported extended functions.
Claim 18
Dependent Claim 50 words
A method as recited in claim 10, further comprising the step of: determining a first unit system employed by the software drivers; wherein the step of generating the control commands further comprises the step of converting a second unit system employed by the application program into the first unit system.
Claim 19
Independent Claim 262 words
A method of generating a sequence of control commands for controlling a motion control device to perform a given series of motion steps based on an application program defining the given series of motion steps, the method comprising the steps of: defining a set of motion control operations, where each motion control operation is either a primitive operation that is necessary to perform motion control and that cannot be simulated using other motion control operations or a non-primitive operation that does not meet the definition of a primitive operation; defining a core set of core driver functions, where each core driver function identifies one of the primitive operations; defining an extended set of extended driver functions, where each extended driver function identifies one of the non-primitive operations; defining a set of component functions; providing component code for each of the component functions, where the component code cross-references at least some of the component functions with at least some of the driver functions; developing a set of software drivers, where (i) each software driver is developed for a motion control device in a supported group of motion control devices and (ii) each software driver comprises driver code for implementing the motion control operations identified by at least some of the driver functions; selecting one motion control device from the group of supported motion control devices; selecting from the set of software drivers the software driver developed for the selected motion control device; and generating control commands based on the application program, the component code, and the driver code of the selected software driver.
Claim 20
Independent Claim 262 words
A method of generating a sequence of control commands for controlling a motion control device to perform a given series of motion steps based on an application program defining the given series of motion steps, the method comprising the steps of: defining a set of motion control operations, where each motion control operation is either a primitive operation that is necessary to perform motion control and that cannot be simulated using other motion control operations or a non-primitive operation that does not meet the definition of a primitive operation; defining a core set of core driver functions, where each core driver function identifies one of the primitive operations; defining an extended set of extended driver functions, where each extended driver function identifies one of the non-primitive operations; defining a set of component functions; providing component code for each of the component functions, where the component code cross-references at least some of the component functions with at least some of the driver functions; developing a set of software drivers, where (i) each software driver is developed for a motion control device in a supported group of motion control devices and (ii) each software driver comprises driver code for implementing the motion control operations identified by at least some of the driver functions; selecting one motion control device from the group of supported motion control devices; selecting from the set of software drivers the software driver developed for the selected motion control device; and generating control commands based on the application program, the component code, and the driver code of the selected software driver.
Claim 21
Dependent Claim 33 words
A method as recited in claim 17, in which the step of providing the set of software drivers comprises the step of developing driver code to implement all of the core driver functions.
Claim 22
Dependent Claim 36 words
A method as recited in claim 18, in which the step of developing the set of software drivers further comprises the step of developing driver code to implement at least some of the extended driver functions.
Claim 23
Dependent Claim 70 words
A method as recited in claim 19, in which: non-supported extended driver functions are extended driver functions having no driver code developed therefor; and the step of generating control commands comprises the step of generating the control commands based on the driver code of a combination of the core driver functions to emulate the plurality of incremental motion steps identified by at least some of the non-supported extended driver functions.
Claim 24
Dependent Claim 64 words
A method as recited in claim 20, in which the step of generating the control commands further comprises the steps of: developing an extended function pointer table that maps the non-supported extended driver functions to the combination of core driver functions employed to emulate the non-supported extended functions; and generating the control commands further based on the contents of the extended function pointer table.
Claim 25
Dependent Claim 67 words
A method as recited in claim 21, in which the extended function pointer table contains pointers for both supported and non-supported extended driver functions, where the pointers for the supported extended driver functions point to driver code for implementing the supported extended driver functions and the pointers for the non-supported extended driver functions point to the combination of core driver functions that emulate the non-supported extended functions.
Claim 26
Dependent Claim 50 words
A method as recited in claim 17, further comprising the step of: determining a first unit system employed by the software drivers; wherein the step of generating the control commands further comprises the step of converting a second unit system employed by the application program into the first unit system.
Claim 27
Dependent Claim 92 words
A method as recited in claim 17, further comprising the steps of: providing a plurality of destinations of control commands; providing a plurality of streams, where each stream contains transmit stream code that determines how the control commands are to be transferred to at least one of the destinations of control commands; selecting at least one of the destinations of control commands; and transferring the control commands to the selected destination of control commands based on the transmit stream code contained by the stream associated with the selected destination of control commands.
Claim 28
Dependent Claim 55 words
A method as recited in claim 24, in which certain of the destinations of control commands generate response data, the method further comprising the steps of: providing response stream code for the streams associated with the destinations of control commands that generate response data; and processing the response data based on the response stream code.

References Cited (Backward Citations)

US4937737A Cited
US5095445A Cited
US5126932A Cited
US5126932B1 Cited
US5245703A Cited
US5247650A Cited
US5175817A Cited
US5491813A Cited
US5453933A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-11-24 2001-05-26 2001-11-25 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-11-24 2005-05-26 2005-11-25 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-11-24 2009-05-26 2009-11-25 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag