WO1992015068A1 - Computer control system for generating geometric designs - Google Patents

Computer control system for generating geometric designs Download PDF

Info

Publication number
WO1992015068A1
WO1992015068A1 PCT/US1992/000859 US9200859W WO9215068A1 WO 1992015068 A1 WO1992015068 A1 WO 1992015068A1 US 9200859 W US9200859 W US 9200859W WO 9215068 A1 WO9215068 A1 WO 9215068A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
values
axes
stored
axis
Prior art date
Application number
PCT/US1992/000859
Other languages
French (fr)
Inventor
James E. Trounson
Original Assignee
Incontrol, Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24630673&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=WO1992015068(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Incontrol, Inc. filed Critical Incontrol, Inc.
Publication of WO1992015068A1 publication Critical patent/WO1992015068A1/en

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4142Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by the use of a microprocessor
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/19Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path
    • G05B19/21Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path using an incremental digital measuring device
    • G05B19/25Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path using an incremental digital measuring device for continuous-path control
    • G05B19/251Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path using an incremental digital measuring device for continuous-path control the positional error is used to control continuously the servomotor according to its magnitude
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4097Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by using design data to control NC machines, e.g. CAD/CAM
    • G05B19/4099Surface or curve machining, making 3D objects, e.g. desktop manufacturing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4144Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by using multiplexing for control system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34086At fixed periods pulses from table drive plural axis in unison
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34089Parametric, polynomial representation of path per axis as function of time
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34213Same microprocessor for data input and for servocontrol
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34236Multiplex for servos, actuators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34279Pc, personal computer as controller
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34359Real time based interrupt to control axis, other function
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/35Nc in input of data, input till input file format
    • G05B2219/35321Display only tool locus, dynamic
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/37Measurements
    • G05B2219/37525Mean, average values, statistical derived values
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/41Servomotor, servo controller till figures
    • G05B2219/41408Control of jerk, change of acceleration
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/42Servomotor, servo controller kind till VSS
    • G05B2219/42064Position, speed and acceleration
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/42Servomotor, servo controller kind till VSS
    • G05B2219/42237Pwm pulse width modulation, pulse to position modulation ppm
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/42Servomotor, servo controller kind till VSS
    • G05B2219/42244Enter acceleration, jerk, generator outputs acceleration, speed, position by integration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the present invention is directed to a computer control system for generating geometric designs in a tangible form.
  • the invention is directed to a servo control system for machine tools which cut or form pieces of material, such as metal or wood, into desired geometric shapes.
  • CNC or DNC systems Computer Numerical Control or Direct Numerical Control
  • machine tools equipped with CNC systems have become an integral part of modern mass production technology.
  • CAM CAM
  • DNC direct machine tool control
  • All active components and functions are contained within a central computational resource which is shared among all motors in the system.
  • a central computational resource which is shared among all motors in the system.
  • the concept of using one microprocessor for all system functions In other words, no active components are dedicated specifically to only one motor. Rather, the motors are all controlled, in a coordinated and integrated fashion, by a central computational resource.
  • Figure 4 is a flow chart illustrating the Path Construction Task
  • the basic system configuration of the machine tool controller comprises a personal computer having a motherboard 10 which houses a CPU 12.
  • An interface card 14 is plugged into one of the expansion slots 16 on the motherboard, for communication with the CPU.
  • the interface card 14 has I/O ports 17 which enable it to communicate with external power boards 18.
  • One power board is associated with each axis under the control of the servo system.
  • Connected to each power board is a motor 20 which provides the driving force for the axis, and an encoder 22 which provides motor position and/or velocity feedback information.
  • the CPU 12 of the personal computer such as an 80386-based personal computer, is the only "active component" in the system.
  • the interface card 14 includes up/down counters 23 which accumulate pulses from the optical encoders 22 attached to the motors, to allow the microprocessor 12 to read the position of the motors 20.
  • the interface hardware also includes counters 24 which accumulate pulses, the frequency of which are proportional to current in the motors.
  • the interface hardware includes counters 25 which are loaded by the CPU to send a fixed PWM (pulse width modulated) signal to the power boards.
  • Another counter 26 within the interface card circuitry is loaded with a value which thereafter causes the card to produce a fixed frequency pulse that is used to signal interrupts to the computer, for requesting servo control updates.
  • a deadman timer 27 on the interface card is periodically loaded by the CPU. If it is not reloaded periodically, PWM signals and control interrupts are automatically shut off as a safety feature. To sequentially access each axis, a pointer latch
  • the system software operates under an operating system appropriate to the personal computer in which it is installed, such as MS DOS (Microsoft Disk Operating
  • the highest priority task in the system is the low level servo control loop.
  • a computationally efficient and dynamically stable algorithm at this level, to control the motors, is a prerequisite to a low-cost and workable CNC system.
  • a preferred algorithm is depicted in the flow chart of Figure 3.
  • a particular advantage of this algorithm is that, when written in assembly language, it requires only a small fraction of the system computing resources. Running on a 25 MHz 386 PC, for example, one cycle of the servo algorithm executes in 40 to 50 microseconds. When controlling 6 axes at a rate of 1000 times per second, this requires only 240 to 300 microseconds out of every 1000 micro seconds (1/1000 second) or 25 to 30% of the microprocessor's computing power.
  • Step 1 Push Registers and Increment ...
  • the state of the processor is saved so it knows where and how to return after the interrupt routine has been serviced.
  • the next axis in sequence is selected for control.
  • Step 4 Compute backlash compensation.
  • Step 5 Compute actual motor velocity ... If the motor is turning clockwise, backlash compensation encoder counts are added to the desired position count. Otherwise, nothing is added.
  • PE position error
  • VE velocity error
  • the center count value begins at 128 (zero power) and is adapted every control cycle in the following fashion: if control response > 0 then the center count is increased, for example by 1 if control response ⁇ 0 then the center count is decreased.
  • Path Tables which contain values describing the tool path. These are the values which are used in Step 3 of the Low Level Servo Loop to perform the recursive addition.
  • An example of the Path Tables which are created in the Path Construction Task is illustrated in Figure 5.
  • two Path Tables are constructed, and the microprocessor toggles between them after 100 cycles of the Low Level Servo Loop routine has been implemented for all six axes.
  • the values stored in Path Table #1 are used for the first 100 cycles of control for each axis
  • the values in Path Table #2 are used for the second 100 control cycles for each axis, and so forth.
  • six independent axes of motion are controlled by the microprocessor 12.
  • each Path Table contains six values for each of the four parameters of desired position, velocity, acceleration and jerk.
  • Each stored value comprises two parts, a number of whole encoder counts W, and a number of fractional encoder counts F.
  • the velocity value 36 for the axis under control is added to the position value 34
  • the acceleration value 38 is added to the velocity value 36
  • the jerk value 40 is added to the acceleration value 38.
  • the new desired position value which is computed by adding the velocity value 36 to the previously stored position value 34 is then used throughout the rest of the cycle for controlling the position of the motor during that control cycle.
  • Step 50 the registers are popped (Step 50) and the microprocesser returns to the foreground routine until the next interrupt occurs.
  • the Path Construction Task uses the list as described with reference to Figure 6, to guide it through a sequence of cutting operations which will produce an actual machined part.
  • CAD computer assisted manufacturing

Abstract

A servo control system for a machine tool or the like requires only a single computational resource, such as a microprocessor (12) to provide coordinated control along multiple axes. No active control mechanism is required for any axis outside of the single resource. A real time multitasking approach enables the single resource to control multiple axes of motion, with the control of each individual axis being carried out by means of simple, yet effective, routines that conserve computing power. The routines also facilitate the generation of geometric designs in other media, such as the display of such shapes on a video screen or via a printer.

Description

COMPUTER CONTROL SYSTEM FOR GENERATING GEOMETRIC DESIGNS
Background of the Invention
The present invention is directed to a computer control system for generating geometric designs in a tangible form. In one preferred embodiment, the invention is directed to a servo control system for machine tools which cut or form pieces of material, such as metal or wood, into desired geometric shapes.
Since the 1950's, servo control systems have been used for the control of machine tools, to automate repetitive machine operations. At first, these systems were large, complex, inflexible and expensive; operating in many ways like a player piano, with programs stored on paper tape. Over the years, these systems have evolved into powerful, reliable and reasonably priced fixtures of industry. Servo controls now integrated with computer technology are referred to as CNC or DNC systems (Computer Numerical Control or Direct Numerical Control) . Along with production lines and the concept of interchangeable parts, machine tools equipped with CNC systems have become an integral part of modern mass production technology. Even though CNC systems are highly economical for mass production of machined components, the vast majority of machine tools worldwide are still operated by hand. The reason for this apparent contradiction is that most machine tools are not used for mass production. Rather, they are used for prototyping, repair, or small quantity production.
If a machine is used to make large quantities of a single component, the time spent writing a CNC program and setting up the machine is quickly recovered during actual production. If the user is only interested in one sample of a part, however, he can typically make that one sample faster with manual control than he can program the CNC. The obstacles to using prior CNC systems for small quantity production are the rigid demarcations between the stages leading to actual production on CNC machine tool systems. The desired part must first be designed, this design must then be translated into a "tool path" which will cut the part, and finally this tool path must be translated into codes (sometimes known as G-codes) for use by the CNC system. This three-step process is typically carried out by different people using different equipment in each step.
It is one objective of the present invention to provide automation techniques which allow small quantity production on machine tools and other equipment to be substantially improved, compared to either traditional manual or traditional CNC approaches. At present, about
95% of all machine tools are manual, so that more than 95% of machine operators are using manual machines (since one operator can sometimes service more than one CNC machine) . A main objective of the present invention is to substantially improve the productivity of this large majority of operators. The direct value of such improved productivity will be very large and its "economic ripple effect" could be even larger.
There are several million manual machine tools in place worldwide. The techniques disclosed herein are applicable to the majority of these machines by means of adding or "retrofitting" computer control systems, which embody the principles of the present invention, to these machines. Although the present invention is directed primarily toward automation of existing and/or new manual equipment, the techniques disclosed herein will also benefit CNC machine tools used for mass production.
Part of the resistance to using CNC machines in the past for small quantity production is due to the large amount of processing power that is required. In conventional machine control environments, a large amount of processing power is required, and different parts of the manufacturing process are frequently carried out in different locations. Due to the distributed nature of tasks, computer aided drawing (CAD) or CAD/CAM (computer assisted manufacturing) operations are carried out on one processor and CNC operations are carried out with the use of several other processors. Typically, CNC systems have allocated one processor per motor being controlled, with each motor providing the driving force along one axis of machine operation. In addition, conventional CNC systems require another processor to coordinate the activities of these motor controllers, plus a processor to handle the user interface. No known multi-axis CNC system operates with a single central computational resource and without individual active axis controllers, which may be active analog feedback loops or digital feedback loops.
To enable manual machine tools to be automated in a manner which adapts them to be reliably and economically used for small quantity part production, two objectives are desireable. First, all of the tasks which were heretofore carried out in a distributed manner should be integrated into a single system that is controlled by one user through a consistent interface. Secondly, a control system should be available that provides coordinated control of movement along multiple axes in an economical manner with small processing power requirements.
The present invention is particularly directed to the latter of these two main objectives. V
Summary of the Invention
In achieving the desired objective of an economical control system with low processing power requirements, the present invention provides a combination of electronic hardware, a microprocessor (preferably embodied in a conventional personal computer) , and control software blended together with unique systems integration techniques. When attached to a machine tool, the result is an integrated, interactive and intuitive system; capable of component design (CAD) , tool path generation
(CAM) , and direct machine tool control (DNC) by one person at one work station with a consistent user interface.
All active components and functions are contained within a central computational resource which is shared among all motors in the system. At the heart of this invention is the concept of using one microprocessor for all system functions. In other words, no active components are dedicated specifically to only one motor. Rather, the motors are all controlled, in a coordinated and integrated fashion, by a central computational resource.
A good example of a central computational resource is a personal computer (PC) . A modern personal computer might consist of an 80386 central processing unit (CPU) with or without an 80387 numeric coprocessor, both available from Intel Corporation. The personal computer also typically includes a keyboard subsystem, a disk controller subsystem, and a screen display subsystem (all subsystems could incorporate a microprocessor dedicated to those functions) . Although the PC may contain several microprocessors, it is programed as and functions as a single computational resource.
Modern PC's contain "expansion slots" which are used to add functionality to the PC. There are in fact many examples of commercially available motor control systems which plug into a PC's expansion slot and which contain active components dedicated to controlling one motor each. The applicability of these systems is limited, however due to high cost, difficulty of programming, and great difficulty in achieving the required variety of tightly coordinated motion required of precision machine tool controllers.
In the present invention, the control processor is shared among the many different tasks required of the system by a technique of real time multitasking. By performing all system functions on one computer with one central computational resource, the barriers between the above described stages of component production are more easily and effectively broken down. By using one CPU, one memory space, one display screen, one user input device, and one disk drive system, data from any of the different stages of operation is directly accessible to any other part of the system, and coordinated movement along each of multiple axes of motion is produced.
Brief Description of the Drawings
Figure 1 is a block diagram of the hardware configuration for a multiple-axis servo control system; Figure 2 is a block diagram of the system software architecture;
Figure 3 is a flow chart of the Low Level Servo Loop algorithm;
Figure 4 is a flow chart illustrating the Path Construction Task;
Figure 5 is an example of the Path Tables stored in the memory of the computer; Figure 6 is an illustration of an exemplary second- order curve along which a machine tool is controlled to move;
Figure 7 is an illustration of the parametric representation of the curve of Figure 6 along one axis; and
Figure 8 is a more detailed illustration of the first three data points on the curve of Figure 7.
Description of the Illustrated Embodiment
The following is a description of one embodiment of the system concept behind the present invention. In this embodiment, the central computational resource comprises a microprocessor which forms part of a personal computer (PC) , and is used to control motion along six independent axes. These axes could be the respective axes of relative movement between a cutting tool and a workpiece in a CNC machine tool, for example. Many other similar and useful embodiments, such as robotics or dedicated automation equipment, should become apparent to those skilled in the art.
Referring to the block diagram of Figure 1, the basic system configuration of the machine tool controller comprises a personal computer having a motherboard 10 which houses a CPU 12. An interface card 14 is plugged into one of the expansion slots 16 on the motherboard, for communication with the CPU. The interface card 14 has I/O ports 17 which enable it to communicate with external power boards 18. One power board is associated with each axis under the control of the servo system. Connected to each power board is a motor 20 which provides the driving force for the axis, and an encoder 22 which provides motor position and/or velocity feedback information. The CPU 12 of the personal computer, such as an 80386-based personal computer, is the only "active component" in the system. In the context of the present invention, the term "active" denotes a component or circuit which receives feedback information, processes it and carries out the operations necessary to complete a feedback loop. Thus, in the present invention the processor 12 does everything from closing all low level servo control loops to the highest level user interface functions. The user interface is a form of active feedback loop in which the computer enables the user to go from where he is to where he wants to be. Since the processor handles all active functions, there are no master/slave processors, no analog servo loops, no interprocessor communications, and no data format translations that are used or required.
Many of the specific values given in the following example are for the sake of clarity and to facilitate an understanding of the invention. The system in many cases could be operated successfully over a range of such values. The system could also operate successfully with 80286 or 80486 microprocessors which are generally software compatible with the 80386 microprocessor. The system could also be converted to work with 68000, 68020, 68030, and 68040 series microprocessors (manufactured by Motorola) , other personal computers, or custom designed systems based on an architecture similar to modern personal computers.
Apart from the CPU 12, the major elements of the servo system are the hardware which provides communication between the CPU and the motor, and the software for controlling the CPU. These latter two elements are described in greater detail hereinafter. HARDWARE The electronic hardware implements several input and output functions, in addition to controlling power to the motors, but performs no active functions in the sense of closing servo loops. The following describes the function of the circuits on the interface card 14 and the power boards 18, which constitute the hardware component.
The interface card 14 includes up/down counters 23 which accumulate pulses from the optical encoders 22 attached to the motors, to allow the microprocessor 12 to read the position of the motors 20. The interface hardware also includes counters 24 which accumulate pulses, the frequency of which are proportional to current in the motors. In addition, the interface hardware includes counters 25 which are loaded by the CPU to send a fixed PWM (pulse width modulated) signal to the power boards. Another counter 26 within the interface card circuitry is loaded with a value which thereafter causes the card to produce a fixed frequency pulse that is used to signal interrupts to the computer, for requesting servo control updates. A deadman timer 27 on the interface card is periodically loaded by the CPU. If it is not reloaded periodically, PWM signals and control interrupts are automatically shut off as a safety feature. To sequentially access each axis, a pointer latch
(not shown) on the interface card is rippled each time a PWM count is loaded into one of the counters 25. The output from this pointer latch indicates which one of the six axes is to receive the PWM signal. The amount of I/O space that is required is thereby reduced because all sets of I/O ports are at the same physical address for the CPU, but are individually selected via the pointer latch. The electronic hardware on the power boards 18 converts the logic level PWM signal to a high voltage PWM signal at current levels necessary to run DC motors, for example, by means of power transistors in an "H" bridge configuration, or a three-phase bridge for operating a brushless motor. The power electronic circuit on each power board performs a "break before make" function on the power bridge, does a current-to-frequency conversion, and verifies that the PWM signal frequency is within an acceptable range. Circuitry for carrying out these operations is conventional, and is therefore not described in further detail herein.
SOFTWARE
The system software operates under an operating system appropriate to the personal computer in which it is installed, such as MS DOS (Microsoft Disk Operating
System) for example. With reference to the software system architecture diagram of Figure 2, the software is divided into four distinct tasks. These tasks are:
Name Priority Rate Low level servo loop 28 highest 6000 Hz
Mouse monitoring 29 2nd 60 Hz
Path construction 30 3rd 10 Hz
User interface 31 lowest foreground Three of these tasks (28, 29 and 30) are invoked periodically through hardware generated interrupt requests, which occur at the rates shown in the "Rate" column in the above table for the example described herein. The fourth task 31 is the foreground task which operates whenever no hardware interrupts are pending or active. All of the tasks have access to a common shared memory 32. The net result is a smoothly operating system over which the operator has immediate control and seldom waits for the system to process data. Even while extended cutting operations are being carried out by a machine tool under control of the system, other parts can be concurrently designed or other operations on the part being cut can be concurrently programmed, for example. If any one task required too much computing power, the system would not work as a whole.
Servo Loop Control
The highest priority task in the system is the low level servo control loop. A computationally efficient and dynamically stable algorithm at this level, to control the motors, is a prerequisite to a low-cost and workable CNC system. A preferred algorithm is depicted in the flow chart of Figure 3. A particular advantage of this algorithm is that, when written in assembly language, it requires only a small fraction of the system computing resources. Running on a 25 MHz 386 PC, for example, one cycle of the servo algorithm executes in 40 to 50 microseconds. When controlling 6 axes at a rate of 1000 times per second, this requires only 240 to 300 microseconds out of every 1000 micro seconds (1/1000 second) or 25 to 30% of the microprocessor's computing power.
Since all of the servo loops are serviced sequentially by one processor, they are all inherently synchronized to each other. This is particularly significant since the primary objective of any CNC system is to produce coordinated motion among all of the axes.
In the example presented herein, the control of each axis is updated 1000 times per second. Thus, when controlling six axes, the Servo Control Loop shown in Figure 3 is accessed 6000 times per second. The accessing of this control loop is carried out in response to an interrupt request (IRQ) , which is generated by the counter 26 in the interface card 14 at a rate of 6KHz. Once an // interrupt occurs, the operation of the Servo Control Loop is carried out as follows:
Step 1 - Push Registers and Increment ... The state of the processor is saved so it knows where and how to return after the interrupt routine has been serviced. In addition, the next axis in sequence is selected for control.
Step 2 - Read Encoder ... A 32-bit count which represents actual motor armature position, in units of "encoder counts", is read from the counter 23 on the interface card 14. Typically the encoder might produce 2000 pulses per revolution. When geared to a 5 thread per inch (2 threads/cm) ball screw with a 2.5:1 ratio, each pulse represents .000040 inch (1.6 x 10"5 cm) of travel of the machine tool along the associated axis.
Step 3 - Perform Recursive Addition ... During each control cycle the processor must determine a desired motor position in units of encoder counts (position count) . If one axis were to require constant velocity, this is achieved by adding a constant number of encoder counts (velocity count) to the desired encoder position count each control cycle. If the motor is required to remain stationary, then the velocity count is zero. By extension this concept can be extended to higher order terms. If constant acceleration is required, during each control cycle an acceleration count is added to the velocity count which is in turn added to the position count. This technique can be extended to jerk (rate of change of acceleration) and beyond. This approach allows a continuous polynomial function to be exactly reconstructed in a piecewise fashion using only addition instructions. By contrast, if polynomials had to be solved every control cycle using floating point multiplication, not enough Id computing power would remain from a 386-based PC to run the rest of the system.
The particular values for position, velocity, acceleration and jerk, which are to be recursively added, are stored in Path Tables A in the memory of the microprocessor. The manner in which these values are derived is explained in greater detail hereinafter with reference to Figures 4 and 5.
Step 4 - Compute backlash compensation. Step 5 - Compute actual motor velocity ... If the motor is turning clockwise, backlash compensation encoder counts are added to the desired position count. Otherwise, nothing is added.
Step 6 - Subtract actual from desired position counts and velocity counts ... This provides position count error and velocity count error.
Step 7 - Compute the servo feedback response ... The PWM (pulse width modulated) count loaded into the counter 25 is an 8-bit count which can range from 0 to 255. 0 represents full power clockwise, 255 full power counterclockwise, and 128 is zero power. More particularly, the PWM signal is a binary "low/high" signal. When this signal is in one state, e.g. high, power flows in one direction to the motor. When the signal is in the other state, power flows to the motor in the opposite direction. The particular number that is stored in the counter 25 determines the ratio of these two levels to one another during a cycle of the signal. For example, a value of O indicates that the PWM signal remains in the low state to provide full power clockwise, 255 indicates that the signal remains in the high state to provide full power counterclockwise, and 128 indicates that the signal alternates between the two states evenly. /3
The PWM count value (motor power) is computed in the following manner: control response = (Gl * PE)-(G2 * VE) PWM count = center count + control response where Gl and G2 are gain values,
PE is position error, and VE is velocity error. The center count value begins at 128 (zero power) and is adapted every control cycle in the following fashion: if control response > 0 then the center count is increased, for example by 1 if control response < 0 then the center count is decreased.
The net result of this calculation is an adaptive response where the center count closely approximates the PWM count which would have provided the average power demanded by the motor over the p svious several control cycles. This is a very simple but effective control algorithm which is almost unconditionally stable, rejects disturbances very robustly, and produces "zero following error".
Once the PWM count value is determined it is written to the PWM counter 25 on the interface board.
Step 8 - End loop ... If axes 1 through 5 have just been completed, then the registers are popped and the processor returns back to the operation it left to service the interrupt. If axis 6 has been completed then the control cycle count is incremented.
If the control cycle count is less than 100 then the registers are popped and the microprocessor returns to its previous task. If the control cycle count equals 100 then the Path Construction Task (Figure 4) , which is responsible for toggling path tables, computing new recursive coefficients, and loading them into tables, is H called up. This task requires between 5 and 35 subsequent control cycle periods (5 to 35 ms out of 100 ms) to complete, depending on the nature of the path being followed. This one interrupt does not return for several milliseconds, but interrupts are enabled and subsequent control cycle interrupts do interrupt this routine before it returns.
Path Construction Task The Path Construction Task is invoked as described in Step 8 above, and is illustrated in Figure 4. This routine is technically invoked by the Low Level Servo Loop hardware interrupt once out of every 600 interrupts (10 times per second) . The purpose of this task is to read actions which have been stored in memory, convert these to detailed tool path descriptions, and to convert these tool path descriptions into path tables used by the low level servo loop in the recursive addition step. The exact tool path is determined by the sequence of the actions combined with the value of the variables which describe each action.
The end products of the Path Construction Task are Path Tables which contain values describing the tool path. These are the values which are used in Step 3 of the Low Level Servo Loop to perform the recursive addition. An example of the Path Tables which are created in the Path Construction Task is illustrated in Figure 5. In practice, two Path Tables are constructed, and the microprocessor toggles between them after 100 cycles of the Low Level Servo Loop routine has been implemented for all six axes. In other words, the values stored in Path Table #1 are used for the first 100 cycles of control for each axis, the values in Path Table #2 are used for the second 100 control cycles for each axis, and so forth. In lt the example described herein, six independent axes of motion are controlled by the microprocessor 12. Accordingly, each Path Table contains six values for each of the four parameters of desired position, velocity, acceleration and jerk. Each stored value comprises two parts, a number of whole encoder counts W, and a number of fractional encoder counts F. Each time the recursive addition step 3 of the Low Level Servo Loop is implemented, the velocity value 36 for the axis under control is added to the position value 34, the acceleration value 38 is added to the velocity value 36, and the jerk value 40 is added to the acceleration value 38. The new desired position value which is computed by adding the velocity value 36 to the previously stored position value 34 is then used throughout the rest of the cycle for controlling the position of the motor during that control cycle.
Although the motor encoders 22 only produce integral numbers of pulses in representing actual motor positions, the fractional values F for desired position velocity, acceleration and jerk are stored in the tables to provide continued accuracy over multiple iterations of the recursive addition process.
After 100 cycles of operation of the low level servo control algorithm for each axis (600 cycles total) , the microprocessor toggles to the other Path Table (Step 42, Figure 4) , to access updated information which is used to control the motion along the respective axes for the next 100 cycles. During this time, the values in the previously used Path Table are updated for subsequent use in the next group of 100 control cycles.
The manner in which the Path Construction Task of Figure 4 operates to derive the particular values that are stored in the Path Table is explained with respect to It
Figures 6-8. To facilitate an understanding of the principles presented herein, the following example of the generation of data pertaining to a second order curve, i.e. a two-dimensional curve, is given. The extrapolation of these principles to third and higher order curves, as well as additional axes, will be readily apparent to those of ordinary skill in the art.
An example of a path that might be followed by a cutting tool during operation is illustrated in Figure 6. This path is two dimensional in nature, and can be defined by two parametric second order polynomials corresponding to two axes, x and y. Such a curve might be defined and stored in the memory 32 by the user through a CAD program, for example, which is preferably included within the User Interface Task 31.
In the implementation of the present invention, the polynomials which define the curve are converted into recursive values for position, velocity, acceleration and jerk (if appropriate) for each axis, which are stored in the Path Tables of Figure 5. To perform such a conversion, a series of time points t0-t18 are labeled on the curve. The placement of these points is arbitrary and suitably chosen by the user to optimize the machine operation to the available computing power. Essentially, each point represents a fixed period of time. In the present example, each point is representative of 1/20th of a second. The total number of points therefore represents the amount of time it takes the machine tool to transcribe the illustrated path. Thus, with 18 time points as shown, the machine tool would transcribe this path in slightly less than one second.
Once the time points have been placed on the curve, their coordinate values (X., Y.) are stored in the memory 32. The microprocessor 12 then transforms them into a II parametric representation for each axis of motion. The parametric representation of the curve for the x axis is illustrated in Figure 7. In the graph illustrated in this figure, the horizontal axis represents time and the vertical axis represents position along the x axis. For each of the time points tn along the curve of Figure 6, its x-axis value is plotted in the parametric representation of Figure 7. Thus, at time t0 the value X0 is plotted, at time t- the value X, is plotted, etc. The resulting curve represents the path of motion that is taken along the x axis to transcribe the curve. A similar such parametric representation is made for the y axis values.
As noted above, the distance between two adjacent time points is representative of 1/20th of a second. Therefore, any three consecutive data points along the parametric representation is indicative of 1/lOth of a second, which is the length of time that the Low Level Servo Task operates before calling for an updated Path Table. Thus, for each Path Table, the data represented by the parametric curve along three consecutive points is used to determine the stored values.
An expanded view of a portion of Figure 7, illustrating the curve between the first three data points Q, XJ and X2, is illustrated in Figure 8, and represents 1/lOth of a second. The curve defined by passing through these three points can be represented as the unique second order polynomial x = a + bt + ct2. Since the values for x are known for each of t0, tx and t2, the coefficients a, b and c can be readily determined (Step 44, Figure 4). Using these coefficients, the desired x position value at any given instant in time can be computed. Since the Low Level Servo Task is carried out for each axis at a rate of 1000 times per second, the Iff desired x position is thus calculated for each of the first three thousandths of a second. These calculations are carried out as follows:
Figure imgf000020_0001
where t0 = 0, t- = 1/1000 of a second and t2 = 2/1000 of a second. From these values the desired values for velocity and acceleration can also be computed as follows (Step 46) :
Once each of these values has been computed, the values for Q, V0 and a0 are stored in the Path Table at the appropriate locations corresponding to position, velocity and acceleration, respectively, for the x axis (Step 48) . These values are subsequently processed during each recursive addition step in the Low Level Servo routine, as described previously. This technique can be extended to higher order curves in a straightforward manner by computing additional values for x, v, a and j (if appropriate) for subsequent time periods.
Once the Path Construction Task completes the table, the registers are popped (Step 50) and the microprocesser returns to the foreground routine until the next interrupt occurs.
User Interface Task
The User Interface Task (UIT) 31 is the foreground task. Although it does not form a part of the servo control loop, it will be described for completeness of understanding. Essentially, this task is a CAD/CAM system with features which allow the operator to have control ή over the operation of motor controls that operate in the background. The UIT is the section of software which the CPU executes when no other tasks are pending or executing. It appears to the user that the UIT is running all the time. The maximum amount of time spent away from this task to perform one of the other routines is about 35 milliseconds. The response delay associated with this interruption is not perceptible to the user. This task monitors the keyboard and manages the text and graphics screens available to the user as part of the CAD/CAM package.
The part of the UIT which handles the geometric computations for the two-dimensional graphics display is called the graphics engine. The graphics engine code is very similar to code in the Path Construction Task called the execution engine, which handles the geometric computation for the three dimensional tool path. These two engines can be similar because most geometries occur in two dimensions, not three. Because this engine code uses many global variables, it would be difficult to make it reentrant (interruptible) . It is therefore preferably duplicated in both the Path Construction Task and the UIT so that the execution engine can run concurrently with the graphics engine. This means to the user that the system can be used to program one set of operations while it is executing another.
The UIT is a software loop which updates the screen every cycle and monitors the keyboard and mouse. The worst case loop time is about 1/3 second while the software is interactively drawing long, complex curves or large diameter circles. The UIT's primary function is to create a sequenced list of operations which define the shape of the desired article. The overall program uses this list in two ways: 1. The UIT uses this list (or parts of it) to display on the screen a representation which enables a user to visualize what a part looks like;
2. The Path Construction Task uses the list as described with reference to Figure 6, to guide it through a sequence of cutting operations which will produce an actual machined part.
One of the major obstacles to direct use of CAD data by CNC systems is that the purpose of CAD is to represent parts design to people either on a computer screen or on paper. The sequence of drawing such a representation is unimportant to the human viewer who only looks at a CAD drawing after all entities in the drawing have been drawn. Therefore CAD systems make no effort to keep track of drawing sequence. It turns out that the data which underlies CAD drawings contains much of the same information necessary to perform cutting operations to actually make the desired part. The primary objective of computer assisted manufacturing (CAM) is to "fill in" cutting operations implied by the CAD data and to put all operations into a usable sequence.
In the CAD/CAM UIT which forms part of the preferred embodiment of the present invention, all drawing and editing that is done during the design phase produces data that describes a sequence of operations and all information necessary to "fill in" cutting details such as pocket routines, tool compensation, and so on. This sequence information is maintained with the CAD data.
Since conventional CAD programs do not keep track of sequence, each entity they keep in the underlying data base must contain redundant information. For example a line must store both end points. When two lines are meant to connect, they are both in random locations in the data base, and if the user wants to move that connecting point, somehow the two end points must be matched and both moved.
In the present invention, by keeping track of sequence, only one point per line must be stored because the end of the previous line segment (or other operation) is the beginning of the next. In this way no data must be matched by the system because no redundant data is required (or allowed) . Since the data is sequenced and none is redundant, it is possible for the user to intelligently view this data in text rather than graphical form. This alternate "view" of the data turns out to be very useful and easier to work with in many cases. Such an approach allows the user to switch very rapidly between a graphical and textual view of the underlying CAD data, add or edit data in either view, and have the new data instantly reflected in both views. Preferably, entities are numbered in both views so they may be related back and forth.
The same techniques used to define and reconstruct paths of motion, as described above, c uld also be applied to computer graphics. For example, curves which represent objects on a screen could be defined and reconstructed with the recursive technique that describes a multi-order function. Fonts for character display could be computed, displayed, and printed much more quickly, making WYSIWYG (what you see is what you get) formats more practical. Likewise colors or shades in objects or areas of the screen could be so represented. These techniques could be applied to the way objects change from screen to screen in computer animation. In such a case, the parametric step size would be the pixel dimension or printer dot spacing rather than the servo update time used in motion control. The mathematics are identical and thus should be apparent to those skilled in the art. Similarly, the concept of recursive path definition can be used as the basis for interprocessor communication within a motion control system which uses one processor per axis. With this approach, multiple processing units can be synchronized to follow complex, coordinated paths. The recursive addition techniques for defining a geometric shape allow faster drawing of complex shapes and do so with a minimum of stored data, and therefore can be considered a data compression and expansion technique. It is also possible to represent changing pitch in sounds (speech, music, etc.) with these recursive techniques. The purpose could be data compression for storage or transmission (e.g., for HDTV broadcast and display). Also the data reduction made possible by these techniques can make speech or image recognition algorithms faster or simpler by "filtering" large amounts of data down to computationally manageable levels.
Thus, it will be appreciated that the present invention is not limited to the specific embodiment described herein to facilitate an understanding of the principles of the invention. Rather, the invention has applicability in a wide range of fields and is limited only by the scope of the claims appended hereto.

Claims

OSWHAT IS CLAIMED IS:
1. A servo system for controlling the formation of geometric shapes in materials by moving a tool relative to a workpiece along multiple axes of movement, comprising: a plurality of motors respectively associated with said multiple axes, each of said motors providing relative movement between the tool and the workpiece along an associated one of said axes; a plurality of feedback devices respectively associated with said plurality of motors for providing feedback information indicative of at least one of the position and velocity of the tool along an associated axis; and a single computational resource for receiving feedback information from each of said feedback devices and controlling the operation of each of said motors to provide coordinated relative movement between the tool and the workpiece along each of said multiple axes.
2. The servo system of claim 1 wherein said single computational resource comprises a single microprocessor.
3. The servo system of claim 1 wherein said computational resource produces said coordinated relative movement of the tool by controlling said motors in a cyclic manner, wherein each cycle comprises a sequential reading of feedback information and generation of a motor control signal for each of the axes being controlled.
4. A method for providing coordinated movement of a device along multiple axes of motion by means of a single computational resource, comprising the steps of: a) determining desired movement of the device along each of said axes of motion for successive increments of time; b) carrying out one cycle of control for one of said increments of time, said cycle including the steps of: i) determining at least one of a desired position and desired velocity of the device along one of said axes; ii) detecting at least one of the actual position and actual velocity of the device along said one axis; iii) calculating at least one of a position error and a velocity error along said one axis for said increment of time; iv) generating a control signal to produce movement along said one axis that is effective to reduce said error; and v) sequentially repeating steps i, ii and iii for each of the other axes; and c) repeating step b for each of the successive increments of time.
5. The method of claim 4 wherein said control signal is a pulse width modulated signal.
6. The method of claim 5 wherein said step of generating a control signal includes the steps of: determining a center value indicative of the average width of the pulse width modulated signal over plural previous cycles of operation; -*. __ computing a response based on said error and detecting whether said response is less than or greater than a reference value; increasing said center value when said response is greater than said reference value and decreasing said center value when said response is less than said reference value; and summing said center value and said response to determine the width of said pulse width modulated signal.
7. The method of claim 4 wherein said step of determining desired movement includes the steps of: parametrically representing the path of movement of the device along one axis for successive periods of time; determining the coefficients of a polynomial which describes at least a portion of said parametric representation; computing recursive values for at least position and velocity at the beginning of a period of time from said coefficients; and storing said recursive values in a table.
8. The method of claim 7 further including the steps of computing a recursive value for acceleration from said coefficients, and storing said value in said table.
9. The method of claim 8 further including the steps of computing a recursive value for change of acceleration from said coefficients, and storing said value in said table.
10. The method of claim 8 further including the step of computing desired position for successive increments of time by cyclically summing said stored velocity value with said stored position value, to compute a new position value, summing said stored acceleration value with said stored velocity value to compute a new velocity value, and updating said table with said new values.
11. A method for generating a geometric design in a tangible form, comprising the steps of: parametrically representing the design along respective axes for successive units of measure, where each axis corresponds to a dimension of the design; for each axis, determining the coefficients of a polynomial which describes at least a portion of the parametric representation; for each axis, computing from said coefficients recursive values for at least position and change of position per unit of measure; storing said recursive values in a table; recursively summing the stored values for successive units of measure to compute new position values; and representing each of the position values along the respective axes in a tangible media.
12. The method of claim 11 further including the steps of computing a second order value for change of position from said coefficients, and storing said value in said table.
13. The method of claim 12 wherein said recursive summing step includes the step of computing desired positions for successive units of measure by cyclically summing said stored change of position value with said stored position value, to compute a new position value, #7 summing said stored second order value with said stored change of position value to compute a new change of position value, and updating said table with said new values.
14. The method of claim 11 wherein said tangible media is a block of formable material and said representing step comprises removing some of the material from the block, with a tool, at locations determined by said position values.
15. The method of claim 14 wherein said units of measure comprise increments of time.
16. The method of claim 11 wherein said tangible media is a display screen comprised of pixels and said representing step comprises changing the display values of pixels which are determined by said position values, to provide a visible representation of the design on the screen.
17. The method of claim 16 wherein said units of measure are proporitional to the spacing between pixels on said display screen.
[received by the International Bureau on 29 July 1992 (29.07.92); original claims 5,614,16 and 17 cancelled; original claims 1,4 renumbered as claims 6 and 11 amended; claim 15 renumbered as claim 14; new claims 4,5 and 15-18 added; other claims unchanged (6 pages)]
1. A system for controlling the formation of geometric shapes in materials by moving a tool relative to a workpiece along multiple axes of movement, comprising: means defining data representative of geometric shapes to be cut or otherwise formed in materials; means for converting said data into a description of a path to be followed by the tool and storing said description; a plurality of motors respectively associated with said multiple axes, each of said motors providing relative movement between the tool and the workpiece along an associated one of said axes; a plurality of feedback devices respectively associated with said plurality of motors for providing feedback information indicative of at least one of the actual position and velocity of the tool along an associated axis; and a single computational resource for controlling said data defining means and said data converting means, for receiving feedback information from each of said feedback devices, and for controlling the operation of each of said motors to provide coordinated relative movement between the tool and the workpiece along each of said multiple axes in accordance with said stored path description.
2. The servo system of claim 1 wherein said single computational resource comprises a single microprocessor.
3. The servo system of claim 1 wherein said computational resource produces said coordinated relative movement of the tool by controlling said motori in a cyclic manner, wherein each cycle comprises a sequential reading of feedback information and generation of a motor control signal for each of the axes beinz controlled. 4. The system of claim 3 wherein said data comprises a sequence of operations which define said geometric shape, and said data converting means processes said sequence of operations to produce a table that describes the movement of the tool along each axis, relative to the workpiece, for each cycle of operation.
5. The system of claim 1 wherein said data defining means includes a user interface by means of which a user communicates with said single computational resource to define and/or modify geometric shapes, and wherein said single computational resource stores said data in response to communications received from a user through said user interface.
6. A method for providing coordinated movement of a device along multiple axes of motion by means of a single computational resource, comprising the steps of: a) determining desired movement of the device along each of said axes of motion for successive increments of time; b) carrying out one cycle of control for one of said increments of time, said cycle including the steps of: i) determining, on the basis of said desired movement, at least one of a desired position and desired velocity of the device along one of said axes; ii) detecting at least one of the actual position and actual velocity of the device along said one axis; iii) calculating at least one of a position error and a velocity error along said one axis for said increment of time; iv) generating a pulse-width modulated control signal to produce movement along said one axis that is effective to reduce said error by: determining a center value indicative of the average width of the pulse-width modulated signal over plural previous cycles of operation; computing a response based on said error and detecting whether said response is less than or greater than a reference value; increasing said center value when said response is greater than said reference value and decreasing said center value when said response is less than said reference value; and summing said center value and said response to determine the width of said pulse-width modulated signal; and v) sequentially repeating steps i, ii and iii for each of the other axes; and c) repeating step b for each of the successive increments of time.
7. The method of claim 6 wherein said step of determining desired movement includes the steps of: parametrically representing the path of movement of the device along one axis for successive periods of time; determining the coefficients of a polynomial which describes at least a portion of said parametric representation; computing recursive values for at least position and velocity at the beginning of a period of time from said coefficients; and storing said recursive values in a table.
8. The method of claim 7 further including the steps of computing a recursive value for acceleration from said coefficients, and storing said value in said table.
9. The method of claim 8 further including the steps of computing a recursive value for change of acceleration from said coefficients, and storing said value in said table.
10. The method of claim 8 further including the step of computing desired position for successive increments of time by cyclically summing said stored velocity value with said stored position value, to compute a new position value, summing said stored acceleration value with said stored velocity value to compute a new velocity value, and updating said table with said new values.
11. A method for controlling a cutting tool to generate a geometric design in a block of formable material, comprising the steps of: parametrically representing the design along respective axes for successive units of measure, where each axis corresponds to a dimension of the design; for each axis, determining the coefficients of a polynomial which describes at least a portion of the parametric representation; for each axis, computing from said coefficients recursive values for at least position and change of position per unit of measure; storing said recursive values in a table; recursively summing the stored values for successive units of measure to compute new position values; and moving the tool to locations determined by each of the position values along the respective axes to thereby remove some of the material at said locations and provide a tangible representation of said design.
12. The method of claim 11 further including the steps of computing a second order value for change of position from said coefficients, and storing said value in said table.
13. The method of claim 12 wherein said recursive summing step includes the step of computing desired positions for successive units of measure by cyclically summing said stored change of position value with said stored position value, to compute a new position value, summing said stored second order value with said stored change of position value to compute a new change of position value, and updating said table with said new values.
14. The method of claim 11 wherein said units of measure comprise increments of time.
15. A method for producing a multi-axial, tangible representation of a geometric shape in a medium, comprising the steps of: establishing a geometric shape to be represented; defining a parametric representation of each axial component of the geometric shape for successive units of measure; for each axial component, determining and storing recursive values for position and change of position per unit of measure which describe at least a portion of the parametric representation; recursively summing the stored values to compute successive position values; and controlling a device, which produces a tangible representation in said medium, in accordance with said successive position values to thereby generate said geometric shapes in said medium.
16. The method of claim 15 wherein said device is a cutting tool which moves relative to a block of formable material along axes of motion that correspond to the axial components of the geometric shape, and said controlling step includes moving said device along said axes to successive locations corresponding to said successive position values.
17. The method of claim 16 wherein said units of measure comprise units of time.
18. The method of claim 15 wherein said device comprises a display screen comprised of pixels and said controlling step includes changing the display values of pixels whose locations correspond to said position values, to provide a visible representation of the geometric shape on the screen.
PCT/US1992/000859 1991-02-15 1992-02-13 Computer control system for generating geometric designs WO1992015068A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65585791A 1991-02-15 1991-02-15
US655,857 1991-02-15

Publications (1)

Publication Number Publication Date
WO1992015068A1 true WO1992015068A1 (en) 1992-09-03

Family

ID=24630673

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1992/000859 WO1992015068A1 (en) 1991-02-15 1992-02-13 Computer control system for generating geometric designs

Country Status (3)

Country Link
US (1) US5926389A (en)
AU (1) AU1359892A (en)
WO (1) WO1992015068A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0626687A1 (en) * 1993-05-27 1994-11-30 Sony Corporation Optical disk apparatus utilizing memory allocation
EP0722580A1 (en) * 1993-10-07 1996-07-24 Omax Corporation Motion control with precomputation
WO1997044717A1 (en) * 1996-05-23 1997-11-27 Thomas Knauf Digital method of regulating linear regulation processes, in particular suitable for rapidly and precisely regulating the position and rotational speed of electric motors
WO1998015880A1 (en) * 1996-10-08 1998-04-16 Siemens Aktiengesellschaft Method and control structure for controlling moments in numerically controlled elastic (and therefore oscillation-capable) multiple mass systems

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206219A1 (en) 1995-05-30 2006-09-14 Brown David W Motion control systems and methods
US5691897A (en) 1995-05-30 1997-11-25 Roy-G-Biv Corporation Motion control systems
US20010032278A1 (en) * 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
KR100314748B1 (en) 1999-05-03 2001-11-23 양재신 A numerical control device and method for displaying three dimensional graphics in real time
US6922607B2 (en) * 2000-12-06 2005-07-26 Tsunehiko Yamazaki Numerically controlled method
JP3592628B2 (en) * 2000-12-06 2004-11-24 恒彦 山崎 Numerical control method
US7904194B2 (en) 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
US7069108B2 (en) * 2002-12-10 2006-06-27 Jostens, Inc. Automated engraving of a customized jewelry item
US7145300B2 (en) * 2003-05-05 2006-12-05 International Rectifier Corporation Multi-axis AC servo control system and method
US20060064503A1 (en) 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
US8027349B2 (en) 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
JP4256353B2 (en) * 2005-02-17 2009-04-22 ファナック株式会社 Servo control device and servo system adjustment method
SG160423A1 (en) * 2005-03-23 2010-04-29 Hurco Co Inc Method of tolerance-based trajectory planning and control
DE602006002912D1 (en) * 2005-04-13 2008-11-13 Fanuc Ltd Numerical control
US20070142966A1 (en) * 2005-12-20 2007-06-21 Khalid Mirza Process for moving a robot
US8024068B2 (en) 2006-08-04 2011-09-20 Hurco Companies, Inc. Machine tool control system
EP2049958B1 (en) * 2006-08-04 2012-09-19 Hurco Companies Inc. System and method for tool use management
US8725283B2 (en) * 2006-08-04 2014-05-13 Hurco Companies, Inc. Generalized kinematics system
US7933677B2 (en) * 2006-08-04 2011-04-26 Hurco Companies, Inc. System and method for surface finish management
US7856285B2 (en) 2007-01-18 2010-12-21 Jostens, Inc. System and method for generating instructions for customization
MX2009009622A (en) 2007-03-12 2009-12-01 Jostens Inc Method for embellishment placement.
US8977377B2 (en) 2010-02-25 2015-03-10 Jostens, Inc. Method for digital manufacturing of jewelry items
KR101538729B1 (en) * 2010-10-25 2015-07-22 마키노 밀링 머신 주식회사 Tool path generation method and tool path generation device
US9208265B2 (en) 2011-12-02 2015-12-08 Jostens, Inc. System and method for jewelry design
WO2013192219A2 (en) * 2012-06-19 2013-12-27 D.P. Technology Corp. Cam integrated cnc control of machines
TW201409194A (en) * 2012-08-22 2014-03-01 Chiuan Yan Technology Co Ltd Reset controller of alignment mechanism
US9582615B2 (en) 2013-01-16 2017-02-28 Jostens, Inc. Modeling using thin plate spline technology
USD789228S1 (en) 2013-11-25 2017-06-13 Jostens, Inc. Bezel for a ring
US10386817B1 (en) * 2015-09-11 2019-08-20 Haas Automation, Inc. Multi-core processing machine tool control system
KR102079499B1 (en) * 2015-10-20 2020-02-21 엘에스산전 주식회사 A method of independent control period allocation of axis in the PLC positioning system
CN106364157B (en) * 2016-09-30 2018-07-10 武汉菲仕运动控制系统有限公司 A kind of iron-printing machine control system
TWI806875B (en) 2017-06-15 2023-07-01 詹姆斯 艾德蒙 三世 楚朗森 Computer implemented method, nontransitory computer-readable medium, computer controlled apparatus, and workstation for machining workpiece
JP6791900B2 (en) 2018-04-19 2020-11-25 ファナック株式会社 Control device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4639653A (en) * 1985-04-15 1987-01-27 Applied Microbotics Corporation Method and apparatus for performing work in a three dimensional space
US4768847A (en) * 1983-08-18 1988-09-06 Yokogawa Electric Corporation Hologram scanner
US4777603A (en) * 1985-03-08 1988-10-11 Cybermation, Inc. Controller for multiple-axis machine
US4876494A (en) * 1986-11-20 1989-10-24 Unimation, Inc. Position and velocity feedback system for a digital robot control

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829419A (en) * 1970-12-28 1989-05-09 Hyatt Gilbert P Microcomputer control of machines
US4794540A (en) * 1986-06-18 1988-12-27 Mts Systems Corporation Iterative spline function controlled positioning mechanism
US4786847A (en) * 1986-11-20 1988-11-22 Unimation Inc. Digital control for multiaxis robots

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4768847A (en) * 1983-08-18 1988-09-06 Yokogawa Electric Corporation Hologram scanner
US4777603A (en) * 1985-03-08 1988-10-11 Cybermation, Inc. Controller for multiple-axis machine
US4639653A (en) * 1985-04-15 1987-01-27 Applied Microbotics Corporation Method and apparatus for performing work in a three dimensional space
US4876494A (en) * 1986-11-20 1989-10-24 Unimation, Inc. Position and velocity feedback system for a digital robot control

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0626687A1 (en) * 1993-05-27 1994-11-30 Sony Corporation Optical disk apparatus utilizing memory allocation
US5570330A (en) * 1993-05-27 1996-10-29 Sony Corporation Optical disk apparatus utilizing exclusively allocated servo signal processing registers
EP0722580A1 (en) * 1993-10-07 1996-07-24 Omax Corporation Motion control with precomputation
EP0722580A4 (en) * 1993-10-07 1998-05-13 Omax Corp Motion control with precomputation
WO1997044717A1 (en) * 1996-05-23 1997-11-27 Thomas Knauf Digital method of regulating linear regulation processes, in particular suitable for rapidly and precisely regulating the position and rotational speed of electric motors
WO1998015880A1 (en) * 1996-10-08 1998-04-16 Siemens Aktiengesellschaft Method and control structure for controlling moments in numerically controlled elastic (and therefore oscillation-capable) multiple mass systems
US6341244B1 (en) 1996-10-08 2002-01-22 Siemens Aktiengesellschaft Method and control structure for controlling moments in numerically controlled elastic (and therefore oscillation-capable) multiple mass systems

Also Published As

Publication number Publication date
AU1359892A (en) 1992-09-15
US5926389A (en) 1999-07-20

Similar Documents

Publication Publication Date Title
US5926389A (en) Computer control system for generating geometric designs
Lin Real-time surface interpolator for 3-D parametric surface machining on 3-axis machine tools
Koren Interpolator for a computer numerical control system
KR100217524B1 (en) Free-form curve intrpolation method and apparatus
Koren et al. Reference-pulse circular interpolators for CNC systems
US5282150A (en) Statistical processor
JP4644490B2 (en) System and method for drawing complex n-curves for direct control of tool motion
CN102809945A (en) Movement planning method for numerical control processing, movement planner and application thereof
US4581698A (en) Method and system for generating interpolation pulses
JP2820994B2 (en) Dynamic simulation method
Proctor et al. Open architectures for machine control
CN108873790B (en) SOPC multi-axis linkage motion controller and control system based on FPGA
Omirou NC machining for revolved and swept surfaces with free-form profiles
CN1083750C (en) Machine tool controller system
JPH0658603B2 (en) Trajectory interpolation method for automatic machines
Linkens et al. μψ (muPSI)-a microcomputer simulation language with computer control capabilities
JP2949594B2 (en) Video display device
Steiger Smooth continuous path motion generation for stepping motor driven manipulators
JPH05108593A (en) Neuro development supporting device
Masood et al. Techniques used in the simulation and control of PROTEC computer numerically controlled (CNC) machine software
Tsai Real-Time CNC Interpolators for precision machining of complex shapes with Pythagorean-hodograph curves
JP3225634B2 (en) How to create display screen display data
Staley et al. Computer-aided design of curved surfaces with automatic model generation
JPS62105203A (en) Interpolating method for numerical controller
Zwoll et al. Direct numerical control of machine tools in a nuclear research center by the CAMAC system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AT AU BB BG BR CA CH DE DK ES FI GB HU JP KP KR LK LU MG MW NL NO PL RO RU SD SE

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE BF BJ CF CG CH CI CM DE DK ES FR GA GB GN GR IT LU MC ML MR NL SE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: CA

122 Ep: pct application non-entry in european phase