The purpose of a motion control device is to move an object in a desired manner. The basic components of a motion control device are a controller and a mechanical system. The mechanical system translates signals generated by the controller into movement of an object.
While the mechanical system commonly comprises a drive and an electrical motor, a number of other systems, such as hydraulic or vibrational systems, can be used to cause movement of an object based on a control signal. Additionally, it is possible for a motion control device to comprise a plurality of drives and motors to allow multi-axis control of the movement of the object.
The present invention is of particular importance in the context of a mechanical system including at least one drive and electrical motor having a rotating shaft connected in some way to the object to be moved, and that application will be described in detail herein. But the principles of the present invention are generally applicable to any mechanical system that generates movement based on a control signal. The scope of the present invention should thus be determined based on the claims appended hereto and not the following detailed description.
In a mechanical system comprising a controller, a drive, and an electrical motor, the motor is physically connected to the object to be moved such that rotation of the motor shaft is translated into movement of the object. The drive is an electronic power amplifier adapted to provide power to a motor to rotate the motor shaft in a controlled manner. Based on control commands, the controller controls the drive such that the object is moved in the desired manner.
These basic components are normally placed into a larger system to accomplish a specific task. For example, one controller may operate in conjunction with several drives and motors in a multi-axis system for moving a tool along a predetermined path relative to a workpiece.
Additionally, the basic components described above are often used in conjunction with a host computer or programmable logic controller (PLC). The host computer or PLC allows the use of a high-level programming language to generate control commands that are passed to the controller. Software running on the host computer is thus designed to simplify the task of programming the controller.
Companies that manufacture motion control devices are, traditionally, hardware oriented companies that manufacture software dedicated to the hardware that they manufacture. These software products may be referred to as low level programs. Low level programs usually work directly with the motion control command language specific to a given motion control device. While such low level programs offer the programmer substantially complete control over the hardware, these programs are highly hardware dependent.
In contrast to low-level programs, high-level software programs, referred to sometimes as factory automation applications, allow a factory system designer to develop application programs that combine large numbers of input/output (I/O) devices, including motion control devices, into a complex system used to automate a factory floor environment. These factory automation applications allow any number of I/O devices to be used in a given system, as long as these devices are supported by the high-level program. Custom applications, developed by other software developers, cannot be developed to take advantage of the simple motion control functionality offered by the factory automation program.
Additionally, these programs do not allow the programmer a great degree of control over the each motion control device in the system. Each program developed with a factory automation application must run within the context of that application.
In this overall context, a number of different individuals are involved with creating and operating a motion control system dedicated to performing a particular task. Usually, these individuals have specialized backgrounds that enable them to perform a specific task in the overall process of creating a motion control system. The need thus exists for systems and methods that facilitate collaboration between individuals of disparate, complimentary backgrounds who are cooperating on the development and operation of motion control systems.
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 additionally 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 is also of particular importance in the context of a motion control system in which multiple programming languages and language variants are used. As discussed above, companies that manufacture motion control devices are, traditionally, hardware oriented companies that manufacture low-level software products dedicated to the hardware that they manufacture. As generally described above, low-level programs usually work directly with the motion control command language specific to a given motion control device. While such low-level programs offer the programmer substantially complete control over the hardware, these programs are highly hardware dependent.
In contrast to low-level programs, high-level software programs, referred to sometimes as factory automation applications, allow a factory system designer to develop application programs that combine large numbers of input/output (I/O) devices, including motion control devices, into a complex system used to automate a factory floor environment. These factory automation applications allow any number of I/O devices to be used in a given system, as long as these devices are supported by the high-level program. Custom applications, developed by other software developers, cannot be developed to take advantage of the simple motion control functionality offered by the factory automation program.
Additionally, these programs do not allow the programmer a great degree of control over the each motion control device in the system. Each program developed with a factory automation application must run within the context of that application.
The present invention also optionally has more specific application to an environment in which a general motion device is used to implement an application program written for a CNC device. The principles of the present invention are, however, generally applicable to any target motion control device that generates movement based on an application program.
A typical motion control system created for a particular task may use one or more application programs written in any number of different programming languages. The need thus exists for systems and methods that facilitate the generation of motion control commands in a multi-language environment. In addition, because of the relatively low cost of controllers for general motion devices, the need exists for systems and methods that convert programs written for CNC devices into control commands for general motion devices.
As described above, motion control application is software that defines a sequence of motion steps required to perform a motion task. A motion controller is hardware and software that, in combination with a motion control device, is capable of converting motion commands into physical movement of an object. The term motion controller will be used herein to include the motion control device.
Typically, the motion commands executed by a motion controller are proprietary. The combination of a motion control software application and one or more motion controllers will be referred to herein as a motion control system.
In many cases, motion control software applications are specifically written for one or more proprietary motion controller. Therefore, if one or more new motion controllers are to be used in place of one or more original motion controllers, a motion control software application written for the original motion controller(s) must be rewritten to accommodate the new motion controller(s). A motion control software application written for one or more proprietary controllers is referred to as hardware dependent.
In general, hardware dependence is undesirable because the owner of the motion control system must either commit to the vendors of the proprietary controllers or discard the motion control application when a new motion controller is used.
The need thus further exists for systems and methods that may be used to facilitate the writing of motion control applications that are hardware independent.