IP Library Granted Patent US 8,073,557
Granted Patent B2
US 8,073,557 · App. 12/406,921 · Granted Dec 6, 2011

Motion control systems

Assignee: ROY-G-BIV Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,073,557
App. No.
12/406,921
Granted
Dec 6, 2011
Kind
B2
Abstract

A motion control system comprising an application program, a plurality of motion controllers, a set of software drivers, and a motion component. Each software driver exposes a service provider interface comprising a set of driver functions. Driver code of at least one software driver associates at least one driver function with at least one control command. The motion component exposes an application programming interface comprising a set of component functions and component code associates at least one of the component functions with at least one of the driver functions. The at least one selected software driver generates at least one control code from the motion controller language associated with the at least one selected motion controller based on the at least one component function called by the application program, the component code, and the driver code of the at least one selectable software driver.

Claims (184)

1. A motion control system, comprising:

an application program comprising at least one call to at least one component function;

a plurality of motion controllers, where

each of the motion controllers is capable of causing a motion control operation,

a plurality of motion controller languages are associated with the plurality of motion controllers,

each motion controller language comprises control commands, where at least one control command is capable of processing information associated with the movement of an object, and

at least one of the plurality of motion controller languages is associated with at least one of the motion controllers;

a set of software drivers each comprising driver code, where

each software driver is associated with at least one of the plurality of motion controller languages,

each software driver exposes a service provider interface comprising a set of driver functions, where

the driver functions are independent of the plurality of motion controller languages,

at least one driver function is an extended driver function that is associated with a non-primitive motion operation that can be performed using at least one primitive motion operation, where the at least one primitive motion operation cannot be performed using a combination of primitive or non-primitive motion operations,

at least one driver function is a core driver function that is associated with a primitive motion operation,

the driver code of at least one software driver associates at least one driver function with at least one control command of the at least one motion controller language associated with at least one of the software drivers, and

at least one selected software driver is associated with at least one selected motion controller;

a motion component comprising component code, where the motion component exposes an application programming interface comprising a set of component functions, where

each component function is implemented by component code, and

at least the component code is independent of the plurality of motion controller languages, and

the component code associates at least one of the component functions with at least one of the driver functions; whereby

the at least one selected software driver generates at least one control code from the motion controller language associated with the at least one selected motion controller based on the at least one component function called by the application program, the component code, and the driver code of the at least one selectable software driver.

2. A motion control system as recited in claim 1 , in which:

the component code associates at least one component function with a plurality of core driver functions; and

the component code associates at least one component function with one of the core driver functions.

3. A motion control system as recited in claim 1 , in which:

the component code implements at least one extended driver function by associating at least one component function with a plurality of core driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

4. A motion control system as recited in claim 1 , in which:

the component code emulates at least one extended driver function by associating at least one component function with a plurality of the core driver functions;

the component code implements at least one extended driver function by associating at least one component function with one of the extended driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

5. A motion control system as recited in claim 1 , in which the application program further comprises at least one call to a component function comprising at least one parameter, where:

the at least one parameter is associated with a data item associated with the selected motion controller; and

the at least one parameter is passed from the application program to the selected software driver by the motion component.

6. A motion control system as recited in claim 1 , in which the software drivers are binary modules.

7. A motion control system as recited in claim 1 , in which the software drivers conform to the service provider interface such that the software drivers may be interchanged without changing the component code.

8. A motion control system as recited in claim 1 , further comprising a plurality of streams, where each stream contains transmit stream code that determines how control commands are transmitted to a destination of control commands.

9. A motion control system as recited in claim 8 , in which the destination of the control commands is the at least one selected motion controller.

10. A motion control system as recited in claim 8 , where in at least one stream is a stream binary module that can be interchanged with other stream binary modules without changing the software driver that uses the stream.

11. A motion control system as recited in claim 8 , in which the destination of the control commands is a file.

12. A motion control system as recited in claim 1 , in which:

the motion component is a component binary module;

the software drivers are driver binary modules; and

the driver binary modules may be interchanged without changing the component binary module.

13. A motion control system as recited in claim 1 , wherein the control commands of each of the plurality of motion controller languages comprise binary codes.

14. A motion control system as recited in claim 1 , in which the component code uses a function table that associates at least one of the component functions with at least one of the driver functions.

15. A motion control system as recited in claim 13 , in which the function table is a function pointer table.

16. A motion control system, comprising:

an application program comprising at least one call to at least one component function;

a plurality of motion control devices, where

a plurality of unique controller languages are associated with the plurality of motion control devices,

each controller language comprises at least some control commands for processing information associated with motion control devices, and

each of the motion control devices comprises

a controller capable of generating electrical signals based on at least one control command of the controller language associated with the motion control device, and

a mechanical system capable of causing a motion control operation based on electrical signals generated by the controller,

a set of software drivers each comprising driver code, where

each software driver is associated with at least one of the plurality of controller languages, and

each software driver exposes a service provider interface defining a set of driver functions, where

the driver functions are independent of the plurality of controller languages,

at least one driver function is an extended driver function that is associated with a non-primitive motion operation that can be performed using at least one primitive motion operation, where the at least one primitive motion operation cannot be performed using a combination of primitive or non-primitive motion operations,

at least one driver function is a core driver function that is associated with a primitive motion operation,

the driver code of at least one software driver associates at least one driver function with at least one control command of the at least one controller language associated with at least one of the software drivers, and

at least one selected software driver is associated with at least one selected motion control device;

a motion component comprising component code, where the motion component exposes an application programming interface comprising a set of component functions, where

each component function is implemented by component code,

at least the component code is independent of the plurality of controller languages, and

the component code associates at least one of the component functions with at least one of the driver functions;

wherein

the at least one selected software driver generates at least one control command in the controller language associated with the at least one selected motion control device based on the calls to component functions of the application program, the component code, and the driver code of the at least one selected software driver.

17. A motion control system as recited in claim 16 , in which:

the component code associates at least one component function with a plurality of core driver functions; and

the component code associates at least one component function with one of the core driver functions.

18. A motion control system as recited in claim 16 , in which:

the component code implements at least one extended driver function by associating at least one component function with a plurality of core driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

19. A motion control system as recited in claim 16 , in which:

the component code emulates at least one extended driver function by associating at least one component function with a plurality of the core driver functions;

the component code implements at least one extended driver function by associating at least one component function with one of the extended driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

20. A motion control system as recited in claim 16 , in which the application program further comprises at least one call to a component function comprising at least one parameter, where:

the at least one parameter is associated with a data item associated with the at least one selected motion control device; and

the at least one parameter is passed from the application program to the at least one selected software driver by the motion component.

21. A motion control system as recited in claim 16 , in which the software drivers are binary modules.

22. A motion control system as recited in claim 16 , in which the software drivers conform to the service provider interface such that the software drivers may be interchanged without changing the component code.

23. A motion control system as recited in claim 16 , further comprising a plurality of streams, where each stream contains transmit stream code that determines how control commands are transmitted to a destination of control commands.

24. A motion control system as recited in claim 23 , in which the destination of the control commands is the at least one selected motion control device.

25. A motion control system as recited in claim 23 , where in at least one stream is a stream binary module that can be interchanged with other stream binary modules without changing the software driver that uses the stream.

26. A motion control system as recited in claim 23 , in which the destination of the control commands is a file.

27. A motion control system as recited in claim 16 , in which:

the motion component is a component binary module;

the software drivers are driver binary modules; and

the driver binary modules may be interchanged without changing the component binary module.

28. A motion control system as recited in claim 16 , wherein the control commands of each of the plurality of controller languages comprise binary codes.

29. A motion control system as recited in claim 16 , in which the component code uses a function table that associates at least one of the component functions with at least one of the driver functions.

30. A motion control system as recited in claim 29 , in which the function table is a function pointer table.

31. A motion control system, comprising:

an application program comprising at least one call to at least one component function;

a plurality of motion controllers, where

each of the motion controllers is capable of causing a motion control operation,

a plurality of sets of control commands are associated with the plurality of motion controllers,

each set of control commands comprises at least one control command that is capable of processing information associated with the movement of an object, and

at least one of the plurality of sets of control commands is associated with each of the motion controllers;

a set of software drivers each comprising driver code, where

each software driver is associated with at least one of the plurality of sets of control commands,

at least one selected software driver is associated with at least one selected motion controller;

each software driver exposes a service provider interface defining a set of driver functions, where

the driver functions are independent of the plurality of sets of control commands,

at least one driver function is an extended driver function that is associated with a non-primitive motion operation that can be performed using a combination of primitive motion operations, where primitive motion operations cannot be performed using a combination of primitive or non-primitive motion operations,

at least one driver function is a core driver function that is associated with a single one of the primitive motion operations, and

the driver code of at least one software driver associates at least one driver function with at least one control command of the at least one set of control commands associated with at least one of the software drivers, and

a motion component comprising component code, where the motion component exposes an application programming interface comprising a set of component functions, where

each component function is implemented by component code,

at least the component code is independent of the plurality of sets of control commands, and

the component code associates at least one of the component functions with at least one of the driver functions; whereby

the at least one selected software driver generates a sequence of one or more control commands from the set of control commands associated with the at least one selected controller based on the calls to component functions of the application program, the component code, and the driver code of the at least one selected software driver.

32. A motion control system as recited in claim 31 , in which:

the component code associates at least one component function with a plurality of core driver functions; and

the component code associates at least one component function with one of the core driver functions.

33. A motion control system as recited in claim 31 , in which:

the component code implements at least one extended driver function by associating at least one component function with a plurality of core driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

34. A motion control system as recited in claim 31 , in which:

the component code emulates at least one extended driver function by associating at least one component function with a plurality of the core driver functions;

the component code implements at least one extended driver function by associating at least one component function with one of the extended driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

35. A motion control system as recited in claim 31 , in which the application program further comprises at least one call to a component function comprising at least one parameter, where:

the at least one parameter is associated with the at least one selected motion controller; and

the at least one parameter is passed from the application program to the at least one selected software driver by the motion component.

36. A motion control system as recited in claim 31 , in which the software drivers are binary modules.

37. A motion control system as recited in claim 31 , in which the software drivers conform to the service provider interface such that the software drivers may be interchanged without changing the component code.

38. A motion control system as recited in claim 31 , further comprising a plurality of streams, where each stream contains transmit stream code that determines how control commands are transmitted to a destination of control commands.

39. A motion control system as recited in claim 38 , in which the destination of the control commands is the at least one selected motion controller.

40. A motion control system as recited in claim 38 , where in at least one stream is a stream binary module that can be interchanged with other stream binary modules without changing the software driver that uses the stream.

41. A motion control system as recited in claim 38 , in which the destination of the control commands is a file.

42. A motion control system as recited in claim 31 , in which:

the motion component is a component binary module;

the software drivers are driver binary modules; and

the driver binary modules may be interchanged without changing the component binary module.

43. A motion control system as recited in claim 31 , wherein the control commands of each of the plurality of controller languages comprise binary codes.

44. A motion control system as recited in claim 31 , in which the component code uses a function table that associates at least one of the component functions with at least one of the driver functions.

45. A motion control system as recited in claim 43 , in which the function table is a function pointer table.

46. A motion control system, comprising:

an application program comprising at least one call to at least one component function;

a plurality of controllers, where

each of the controllers is capable of causing a motion control operation,

a plurality of sets of control commands are associated with the plurality of controllers,

each set of control commands comprises at least one control command that is capable of processing information associated with the movement of an object, and

at least one of the plurality of sets of control commands is associated with each of the controllers;

a set of software drivers each comprising driver code, where

each software driver is associated with at least one of the plurality of sets of control commands,

at least one selected software driver is associated with at least one selected controller;

each software driver exposes a service provider interface defining a set of driver functions, where

the driver functions are independent of the plurality of sets of control commands,

at least one driver function is an extended driver function that is associated with a non-primitive motion operation that can be performed using a combination of primitive motion operations, where primitive motion operations cannot be performed using a combination of primitive or non-primitive motion operations,

at least one driver function is a core driver function that is associated with a single one of the primitive motion operations, and

the driver code of at least one software driver associates at least one driver function with at least one control command of the at least one set of control commands associated with at least one of the software drivers, and

a motion component comprising component code, where the motion component exposes an application programming interface comprising a set of component functions, where

each component function is implemented by component code,

at least the component code is independent of the plurality of sets of control commands, and

the motion component uses a function table to associate at least one of the component functions with at least one of the driver functions, and

whereby

the at least one selected software driver generates at least one control command from the set of control commands associated with the at least one selected controller based on the calls to component functions of the application program, the component code, and the driver code of the at least one selected software driver.

47. A motion control system as recited in claim 46 , in which the motion component uses a function table to associate at least one component function with a plurality of core driver functions.

48. A motion control system as recited in claim 46 , in which:

the component code implements at least one extended driver function by associating at least one component function with a plurality of core driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

49. A motion control system as recited in claim 46 , in which:

the component code emulates at least one extended driver function by associating at least one component function with a plurality of the core driver functions;

the component code implements at least one extended driver function by associating at least one component function with one of the extended driver functions; and

the component code implements at least one core driver function by associating at least one component function with one of the core driver functions.

50. A motion control system as recited in claim 46 , in which the application program further comprises at least one call to a component function comprising at least one parameter, where:

the at least one parameter is associated with a data item associated with the at least one selected controller; and

the at least one parameter is passed from the application program to the at least one selected software driver by the motion component.

51. A motion control system as recited in claim 46 , in which the software drivers are binary modules.

52. A motion control system as recited in claim 46 , in which the software drivers conform to the service provider interface such that the software drivers may be interchanged without changing the component code.

53. A motion control system as recited in claim 46 , further comprising a plurality of streams, where each stream contains transmit stream code that determines how control commands are transmitted to a destination of control commands.

54. A motion control system as recited in claim 53 , in which the destination of the control commands is the at least one selected controller.

55. A motion control system as recited in claim 53 , where in at least one stream is a stream binary module that can be interchanged with other stream binary modules without changing the software driver that uses the stream.

56. A motion control system as recited in claim 53 , in which the destination of the control commands is a file.

57. A motion control system as recited in claim 46 , in which:

the motion component is a component binary module;

the software drivers are driver binary modules; and

the driver binary modules may be interchanged without changing the component binary module.

58. A motion control system as recited in claim 46 , wherein the control commands of each of the plurality of controller languages comprise binary codes.

59. A motion control system as recited in claim 46 , in which the function table is a function pointer table.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: ROY-G-BIV CORPORATION
To: AUTOMATION MIDDLEWARE SOLUTIONS, INC.
Reel/Frame 035734/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2009
From: BROWN, DAVID W.; CLARK, JAY S.
To: ROY-G-BIV CORPORATION
Reel/Frame 022884/0157 →
Continuity (16)
Continuation 10316451 · Dec 10, 2002
Continuation In Part 10021669 · Dec 10, 2001
Continuation 09191981 · Nov 13, 1998
Continuation 08656421 · May 30, 1996
Continuation In Part 08454736 · May 30, 1995
Continuation In Part 09795777 · Feb 27, 2001
Continuation 09205627 · Dec 3, 1998
Continuation 09191981 · Nov 13, 1998
Continuation 08656421 · May 30, 1996
Continuation In Part 08454736
Continuation In Part 09633633 · Aug 7, 2000
Continuation 09191981
Continuation 08656421
Continuation In Part 08454736
Provisional Application 60067466 · Dec 4, 1997
Related Publication 20090271007A1 · Oct 29, 2009